diff --git a/scenarios/grpc.js b/scenarios/grpc.js index 973cf25..d2239a4 100644 --- a/scenarios/grpc.js +++ b/scenarios/grpc.js @@ -101,9 +101,9 @@ if (read_vu_count > 0) { const delete_vu_count = parseInt(__ENV.DELETERS || '0'); if (delete_vu_count > 0) { - if (!obj_to_delete_selector) { + if (!obj_to_delete_selector && !obj_list.length) { throw new Error( - 'Positive DELETE worker number without a proper object selector'); + 'Positive DELETE worker number without a proper object selector or any preloaded objects'); } scenarios.delete = { @@ -203,20 +203,27 @@ export function obj_delete() { sleep(__ENV.SLEEP_DELETE); } - const obj = obj_to_delete_selector.nextObject(); - if (!obj) { - if (obj_to_delete_exit_on_null) { - exec.test.abort("No more objects to select"); + if (obj_to_delete_selector) { + const obj = obj_to_delete_selector.nextObject(); + if (!obj) { + if (obj_to_delete_exit_on_null) { + exec.test.abort("No more objects to select"); + } + return; } - return; + const resp = grpc_client.delete(obj.c_id, obj.o_id); + if (!resp.success) { + // Log errors except (2052 - object already deleted) + log.withFields({ cid: obj.c_id, oid: obj.o_id, op : 'DELETE' }).error(resp.error); + return; + } + obj_registry.deleteObject(obj.id); + return } - const resp = grpc_client.delete(obj.c_id, obj.o_id); + const obj = obj_list[Math.floor(Math.random() * obj_list.length)]; + const resp = grpc_client.delete(obj.container, obj.object) if (!resp.success) { - // Log errors except (2052 - object already deleted) - log.withFields({ cid: obj.c_id, oid: obj.o_id }).error(resp.error); - return; + log.withFields({ cid: obj.container, oid: obj.object, op : 'DELETE' }).error(resp.error); } - - obj_registry.deleteObject(obj.id); } diff --git a/scenarios/grpc_car.js b/scenarios/grpc_car.js index d866610..2ea11f2 100644 --- a/scenarios/grpc_car.js +++ b/scenarios/grpc_car.js @@ -107,9 +107,9 @@ const pre_alloc_delete_vus = parseInt(__ENV.PRE_ALLOC_DELETERS || '0'); const max_delete_vus = parseInt(__ENV.MAX_DELETERS || pre_alloc_write_vus); const delete_rate = parseInt(__ENV.DELETE_RATE || '0'); if (delete_rate > 0) { - if (!obj_to_delete_selector) { + if (!obj_to_delete_selector && !obj_list.length) { throw new Error( - 'Positive DELETE worker number without a proper object selector'); + 'Positive DELETE worker number without a proper object selector or any preloaded objects'); } scenarios.delete = { @@ -222,17 +222,26 @@ export function obj_delete() { sleep(__ENV.SLEEP_DELETE); } - const obj = obj_to_delete_selector.nextObject(); - if (!obj) { - return; + if (obj_to_delete_selector) { + const obj = obj_to_delete_selector.nextObject(); + if (!obj) { + return; + } + + const resp = grpc_client.delete(obj.c_id, obj.o_id); + if (!resp.success) { + // Log errors except (2052 - object already deleted) + log.withFields({ cid: obj.c_id, oid: obj.o_id, op : 'DELETE' }).error(resp.error); + return; + } + + obj_registry.deleteObject(obj.id); + return } - const resp = grpc_client.delete(obj.c_id, obj.o_id); + const obj = obj_list[Math.floor(Math.random() * obj_list.length)]; + const resp = grpc_client.delete(obj.container, obj.object) if (!resp.success) { - // Log errors except (2052 - object already deleted) - log.withFields({ cid: obj.c_id, oid: obj.o_id }).error(resp.error); - return; + log.withFields({ cid: obj.container, oid: obj.object, op : 'DELETE' }).error(resp.error); } - - obj_registry.deleteObject(obj.id); } diff --git a/scenarios/local.js b/scenarios/local.js index 7b3f003..3fba345 100644 --- a/scenarios/local.js +++ b/scenarios/local.js @@ -81,9 +81,9 @@ if (read_vu_count > 0) { const delete_vu_count = parseInt(__ENV.DELETERS || '0'); if (delete_vu_count > 0) { - if (!obj_to_delete_selector) { + if (!obj_to_delete_selector && !obj_list.length) { throw new Error( - 'Positive DELETE worker number without a proper object selector'); + 'Positive DELETE worker number without a proper object selector or any preloaded objects'); } scenarios.delete = { @@ -161,17 +161,27 @@ export function obj_read() { } export function obj_delete() { - const obj = obj_to_delete_selector.nextObject(); - if (!obj) { - return; + if (obj_to_delete_selector) { + const obj = obj_to_delete_selector.nextObject(); + if (!obj) { + return; + } + + const resp = local_client.delete(obj.c_id, obj.o_id); + if (!resp.success) { + // Log errors except (2052 - object already deleted) + log.withFields({cid: obj.c_id, oid: obj.o_id}).error(resp.error); + return; + } + + obj_registry.deleteObject(obj.id); + return } - const resp = local_client.delete(obj.c_id, obj.o_id); + const obj = obj_list[Math.floor(Math.random() * obj_list.length)]; + const resp = grpc_client.delete(obj.container, obj.object) if (!resp.success) { - // Log errors except (2052 - object already deleted) - log.withFields({cid: obj.c_id, oid: obj.o_id}).error(resp.error); - return; + log.withFields({cid : obj.container, oid : obj.object, op : 'DELETE'}) + .error(resp.error); } - - obj_registry.deleteObject(obj.id); } diff --git a/scenarios/s3.js b/scenarios/s3.js index 22b031a..da46e16 100644 --- a/scenarios/s3.js +++ b/scenarios/s3.js @@ -100,8 +100,9 @@ if (read_vu_count > 0) { const delete_vu_count = parseInt(__ENV.DELETERS || '0'); if (delete_vu_count > 0) { - if (!obj_to_delete_selector) { - throw 'Positive DELETE worker number without a proper object selector'; + if (!obj_to_delete_selector && !obj_list.length) { + throw new Error( + 'Positive DELETE worker number without a proper object selector or any preloaded objects'); } scenarios.delete = { @@ -201,20 +202,30 @@ export function obj_delete() { sleep(__ENV.SLEEP_DELETE); } - const obj = obj_to_delete_selector.nextObject(); - if (!obj) { - if (obj_to_delete_exit_on_null) { - exec.test.abort("No more objects to select"); + if (obj_to_delete_selector) { + const obj = obj_to_delete_selector.nextObject(); + if (!obj) { + if (obj_to_delete_exit_on_null) { + exec.test.abort("No more objects to select"); + } + return; } - return; + + 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; + } + + obj_registry.deleteObject(obj.id); + return } - const resp = s3_client.delete(obj.s3_bucket, obj.s3_key); + const obj = obj_list[Math.floor(Math.random() * obj_list.length)]; + + const resp = s3_client.delete(obj.bucket, obj.object); if (!resp.success) { - log.withFields({bucket : obj.s3_bucket, key : obj.s3_key, op : 'DELETE'}) - .error(resp.error); - return; + log.withFields({bucket : obj.bucket, key : obj.object, op : 'DELETE'}).error(resp.error); } - - obj_registry.deleteObject(obj.id); } diff --git a/scenarios/s3_car.js b/scenarios/s3_car.js index 2aaa94e..bb888dc 100644 --- a/scenarios/s3_car.js +++ b/scenarios/s3_car.js @@ -108,9 +108,9 @@ const pre_alloc_delete_vus = parseInt(__ENV.PRE_ALLOC_DELETERS || '0'); const max_delete_vus = parseInt(__ENV.MAX_DELETERS || pre_alloc_write_vus); const delete_rate = parseInt(__ENV.DELETE_RATE || '0'); if (delete_rate > 0) { - if (!obj_to_delete_selector) { + if (!obj_to_delete_selector && !obj_list.length) { throw new Error( - 'Positive DELETE worker number without a proper object selector'); + 'Positive DELETE worker number without a proper object selector or any preloaded objects'); } scenarios.delete = { @@ -223,17 +223,27 @@ export function obj_delete() { sleep(__ENV.SLEEP_DELETE); } - const obj = obj_to_delete_selector.nextObject(); - if (!obj) { - return; + if (obj_to_delete_selector) { + const obj = obj_to_delete_selector.nextObject(); + if (!obj) { + return; + } + + 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; + } + + obj_registry.deleteObject(obj.id); + return } - const resp = s3_client.delete(obj.s3_bucket, obj.s3_key); + const obj = obj_list[Math.floor(Math.random() * obj_list.length)]; + + const resp = s3_client.delete(obj.bucket, obj.object); if (!resp.success) { - log.withFields({bucket: obj.s3_bucket, key: obj.s3_key, op: 'DELETE'}) - .error(resp.error); - return; + log.withFields({bucket: obj.bucket, key: obj.object, op : 'DELETE'}).error(resp.error); } - - obj_registry.deleteObject(obj.id); } diff --git a/scenarios/s3_dar.js b/scenarios/s3_dar.js index 5f10bd0..0a72720 100644 --- a/scenarios/s3_dar.js +++ b/scenarios/s3_dar.js @@ -105,7 +105,8 @@ if (registry_enabled ) { const delete_vu_count = parseInt(__ENV.DELETERS || '0'); if (delete_vu_count > 0) { if (!obj_to_delete_selector) { - throw 'Positive DELETE worker number without a proper object selector'; + throw new Error( + 'Positive DELETE worker number without a proper object selector'); } scenarios.delete = { @@ -210,8 +211,18 @@ export function obj_delete() { sleep(__ENV.SLEEP_DELETE); } + if (obj_to_delete_selector) { const obj = obj_to_delete_selector.nextObject(); delete_object(obj) + return + } + + const obj = obj_list[Math.floor(Math.random() * obj_list.length)]; + + const resp = s3_client.delete(obj.bucket, obj.object); + if (!resp.success) { + log.withFields({bucket: obj.bucket, key: obj.object, op : 'DELETE'}).error(resp.error); + } } export function delete_object(obj) {