s3/test: use seastar::deferred() to perform cleanup
let's use RAII to remove the object use as a fixture, so we don't leave some object in the bucket for testing. this might interfere with other tests which share the same minio server with the test which fails to do its clean up if an exception is thrown. Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
This commit is contained in:
@@ -98,6 +98,13 @@ SEASTAR_THREAD_TEST_CASE(test_client_put_get_object) {
|
||||
});
|
||||
}
|
||||
|
||||
static auto deferred_delete_object(shared_ptr<s3::client> client, sstring name) {
|
||||
return seastar::defer([client, name] {
|
||||
testlog.info("Delete object: {}\n", name);
|
||||
client->delete_object(name).get();
|
||||
});
|
||||
}
|
||||
|
||||
void do_test_client_multipart_upload(bool with_copy_upload) {
|
||||
const sstring name(fmt::format("/{}/test{}object-{}", tests::getenv_safe("S3_PUBLIC_BUCKET_FOR_TEST"), with_copy_upload ? "jumbo" : "large", ::getpid()));
|
||||
|
||||
@@ -123,6 +130,7 @@ void do_test_client_multipart_upload(bool with_copy_upload) {
|
||||
|
||||
testlog.info("Flush multipart upload\n");
|
||||
out.flush().get();
|
||||
auto delete_object = deferred_delete_object(cln, name);
|
||||
|
||||
testlog.info("Closing\n");
|
||||
close.close_now();
|
||||
@@ -146,9 +154,6 @@ void do_test_client_multipart_upload(bool with_copy_upload) {
|
||||
BOOST_REQUIRE_EQUAL(memcmp(rnd.begin(), s_buf.get() + (chunk_size - align), len - (chunk_size - align)), 0);
|
||||
}
|
||||
}
|
||||
|
||||
testlog.info("Delete object\n");
|
||||
cln->delete_object(name).get();
|
||||
}
|
||||
|
||||
SEASTAR_THREAD_TEST_CASE(test_client_multipart_upload) {
|
||||
@@ -169,6 +174,7 @@ SEASTAR_THREAD_TEST_CASE(test_client_readable_file) {
|
||||
testlog.info("Put object {}\n", name);
|
||||
temporary_buffer<char> data = sstring("1234567890ABCDEF").release();
|
||||
cln->put_object(name, std::move(data)).get();
|
||||
auto delete_object = deferred_delete_object(cln, name);
|
||||
|
||||
auto f = cln->make_readable_file(name);
|
||||
auto close_readable_file = deferred_close(f);
|
||||
@@ -197,9 +203,6 @@ SEASTAR_THREAD_TEST_CASE(test_client_readable_file) {
|
||||
testlog.info("Check bulk read\n");
|
||||
auto buf = f.dma_read_bulk<char>(5, 8).get0();
|
||||
BOOST_REQUIRE_EQUAL(to_sstring(std::move(buf)), sstring("67890ABC"));
|
||||
|
||||
testlog.info("Delete object\n");
|
||||
cln->delete_object(name).get();
|
||||
}
|
||||
|
||||
SEASTAR_THREAD_TEST_CASE(test_client_put_get_tagging) {
|
||||
@@ -209,6 +212,8 @@ SEASTAR_THREAD_TEST_CASE(test_client_put_get_tagging) {
|
||||
auto close_client = deferred_close(*client);
|
||||
auto data = sstring("1234567890ABCDEF").release();
|
||||
client->put_object(name, std::move(data)).get();
|
||||
auto delete_object = deferred_delete_object(client, name);
|
||||
|
||||
{
|
||||
auto tagset = client->get_object_tagging(name).get0();
|
||||
BOOST_CHECK(tagset.empty());
|
||||
@@ -226,5 +231,4 @@ SEASTAR_THREAD_TEST_CASE(test_client_put_get_tagging) {
|
||||
auto tagset = client->get_object_tagging(name).get0();
|
||||
BOOST_CHECK(tagset.empty());
|
||||
}
|
||||
client->delete_object(name).get();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user