diff --git a/internal/registry/obj_selector.go b/internal/registry/obj_selector.go index ef9e0d9..6521a55 100644 --- a/internal/registry/obj_selector.go +++ b/internal/registry/obj_selector.go @@ -170,6 +170,7 @@ func (o *ObjSelector) selectLoop() { // no more objects, wait a little; the logic could be improved. select { case <-time.After(time.Second): + println("o.ctx.Done(): ", o.ctx.Done()) case <-o.ctx.Done(): return } diff --git a/internal/s3/client.go b/internal/s3/client.go index 0765807..ac0937c 100644 --- a/internal/s3/client.go +++ b/internal/s3/client.go @@ -108,7 +108,7 @@ func (c *Client) Multipart(bucket, key string, objPartSize, concurrency int, pay func (c *Client) Delete(bucket, key string) DeleteResponse { start := time.Now() - + println("Delete bucket:", bucket, " key:", key) _, err := c.cli.DeleteObject(c.vu.Context(), &s3.DeleteObjectInput{ Bucket: aws.String(bucket), Key: aws.String(key), diff --git a/scenarios/s3_dar.js b/scenarios/s3_dar.js index 34711c5..45e3bec 100644 --- a/scenarios/s3_dar.js +++ b/scenarios/s3_dar.js @@ -71,11 +71,23 @@ if (write_vu_count > 0) { }; } +const read_vu_count = parseInt(__ENV.READERS || '0'); +if (read_vu_count > 0) { + scenarios.read = { + executor : 'constant-vus', + vus : read_vu_count, + duration : `${duration}s`, + exec : 'obj_read', + gracefulStop : '5s', + }; +} + const delete_age = __ENV.DELETE_AGE ? parseInt(__ENV.DELETE_AGE) : undefined; let obj_to_delete_selector = undefined; let obj_to_delete_exit_on_null = undefined; if (registry_enabled && delete_age) { - obj_to_delete_exit_on_null = write_vu_count == 0; + obj_to_delete_exit_on_null = (write_vu_count == 0) && (read_vu_count == 0); + console.debug(`obj_to_delete_exit_on_null: ${obj_to_delete_exit_on_null}`); let constructor = obj_to_delete_exit_on_null ? registry.getOneshotSelector : registry.getSelector; @@ -88,16 +100,7 @@ if (registry_enabled && delete_age) { }); } -const read_vu_count = parseInt(__ENV.READERS || '0'); -if (read_vu_count > 0) { - scenarios.read = { - executor : 'constant-vus', - vus : read_vu_count, - duration : `${duration}s`, - exec : 'obj_read', - gracefulStop : '5s', - }; -} + const delete_vu_count = parseInt(__ENV.DELETERS || '0'); if (delete_vu_count > 0) { @@ -175,12 +178,13 @@ export function obj_read() { if (__ENV.SLEEP_READ) { sleep(__ENV.SLEEP_READ); } - + log.withFields({op : 'obj_read - ENTERED'}).info("INFO"); if (obj_to_read_selector) { const obj = obj_to_read_selector.nextObject(); if (!obj ) { return; } + log.withFields({bucket : obj.s3_bucket, key : obj.s3_key, op : 'READ START'}).info("INFO"); const resp = s3_client.get(obj.s3_bucket, obj.s3_key) if (!resp.success) { log.withFields({bucket : obj.s3_bucket, key : obj.s3_key, status: obj.status, op: `READ`}) @@ -188,7 +192,7 @@ export function obj_read() { } else { obj_registry.setObjectStatus(obj.id, obj.status, 'read'); } - + log.withFields({bucket : obj.s3_bucket, key : obj.s3_key, op : 'READ FINISHED'}).info("INFO"); return } @@ -206,7 +210,7 @@ export function obj_delete() { if (__ENV.SLEEP_DELETE) { sleep(__ENV.SLEEP_DELETE); } - + log.withFields({op : 'obj_delete - ENTERED'}).info("INFO"); const obj = obj_to_delete_selector.nextObject(); delete_object(obj) } @@ -218,13 +222,13 @@ export function delete_object(obj) { } return; } - + log.withFields({bucket : obj.s3_bucket, key : obj.s3_key, op : 'DELETED START'}).info("INFO"); const resp = s3_client.delete(obj.s3_bucket, obj.s3_key); if (!resp.success) { log.withFields({bucket : obj.s3_bucket, key : obj.s3_key, op : 'DELETE'}) .error(resp.error); return; } - + log.withFields({bucket : obj.s3_bucket, key : obj.s3_key, op : 'DELETED SUCCESS'}).info("INFO"); obj_registry.deleteObject(obj.id); } \ No newline at end of file