#include <sstream>
#include <utility>
#include <boost/scoped_ptr.hpp>
+#include <fmt/format.h>
#include "include/err.h"
#include "include/rados/librados.h"
#include "gtest/gtest.h"
#include "test.h"
+#include "crimson_utils.h"
using std::ostringstream;
std::string init()
{
int ret;
- m_pool_name = get_temp_pool_name();
+ auto pool_prefix = fmt::format("{}_", ::testing::UnitTest::GetInstance()->current_test_info()->name());
+ m_pool_name = get_temp_pool_name(pool_prefix);
std::string err = create_one_pool(m_pool_name, &m_cluster);
if (!err.empty()) {
ostringstream oss;
rados_aio_release(my_completion2);
}
+TEST(LibRadosAio, OperateMtime)
+{
+ AioTestData test_data;
+ ASSERT_EQ("", test_data.init());
+
+ time_t set_mtime = 1457129052;
+ {
+ rados_write_op_t op = rados_create_write_op();
+ rados_write_op_create(op, LIBRADOS_CREATE_IDEMPOTENT, nullptr);
+ rados_completion_t completion;
+ ASSERT_EQ(0, rados_aio_create_completion2(nullptr, nullptr, &completion));
+ ASSERT_EQ(0, rados_aio_write_op_operate(op, test_data.m_ioctx, completion,
+ "foo", &set_mtime, 0));
+ {
+ TestAlarm alarm;
+ ASSERT_EQ(0, rados_aio_wait_for_complete(completion));
+ }
+ ASSERT_EQ(0, rados_aio_get_return_value(completion));
+ rados_aio_release(completion);
+ rados_release_write_op(op);
+ }
+ {
+ uint64_t size;
+ timespec mtime;
+ ASSERT_EQ(0, rados_stat2(test_data.m_ioctx, "foo", &size, &mtime));
+ EXPECT_EQ(0, size);
+ EXPECT_EQ(set_mtime, mtime.tv_sec);
+ EXPECT_EQ(0, mtime.tv_nsec);
+ }
+}
+
+TEST(LibRadosAio, Operate2Mtime)
+{
+ AioTestData test_data;
+ ASSERT_EQ("", test_data.init());
+
+ timespec set_mtime{1457129052, 123456789};
+ {
+ rados_write_op_t op = rados_create_write_op();
+ rados_write_op_create(op, LIBRADOS_CREATE_IDEMPOTENT, nullptr);
+ rados_completion_t completion;
+ ASSERT_EQ(0, rados_aio_create_completion2(nullptr, nullptr, &completion));
+ ASSERT_EQ(0, rados_aio_write_op_operate2(op, test_data.m_ioctx, completion,
+ "foo", &set_mtime, 0));
+ {
+ TestAlarm alarm;
+ ASSERT_EQ(0, rados_aio_wait_for_complete(completion));
+ }
+ ASSERT_EQ(0, rados_aio_get_return_value(completion));
+ rados_aio_release(completion);
+ rados_release_write_op(op);
+ }
+ {
+ uint64_t size;
+ timespec mtime;
+ ASSERT_EQ(0, rados_stat2(test_data.m_ioctx, "foo", &size, &mtime));
+ EXPECT_EQ(0, size);
+ EXPECT_EQ(set_mtime.tv_sec, mtime.tv_sec);
+ EXPECT_EQ(set_mtime.tv_nsec, mtime.tv_nsec);
+ }
+}
+
TEST(LibRadosAio, SimpleStatNS) {
AioTestData test_data;
rados_completion_t my_completion;
std::string init()
{
int ret;
- m_pool_name = get_temp_pool_name();
+ auto pool_prefix = fmt::format("{}_", ::testing::UnitTest::GetInstance()->current_test_info()->name());
+ m_pool_name = get_temp_pool_name(pool_prefix);
std::string err = create_one_ec_pool(m_pool_name, &m_cluster);
if (!err.empty()) {
ostringstream oss;
};
TEST(LibRadosAioEC, SimpleWrite) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion;
ASSERT_EQ("", test_data.init());
}
TEST(LibRadosAioEC, WaitForComplete) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion;
ASSERT_EQ("", test_data.init());
}
TEST(LibRadosAioEC, RoundTrip) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion;
ASSERT_EQ("", test_data.init());
}
TEST(LibRadosAioEC, RoundTrip2) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion;
ASSERT_EQ("", test_data.init());
}
TEST(LibRadosAioEC, RoundTripAppend) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion, my_completion2, my_completion3, my_completion4;
ASSERT_EQ("", test_data.init());
ASSERT_EQ(0, rados_aio_create_completion2(nullptr,
nullptr, &my_completion));
- int requires;
- ASSERT_EQ(0, rados_ioctx_pool_requires_alignment2(test_data.m_ioctx, &requires));
- ASSERT_NE(0, requires);
+ int req;
+ ASSERT_EQ(0, rados_ioctx_pool_requires_alignment2(test_data.m_ioctx, &req));
+ ASSERT_NE(0, req);
uint64_t alignment;
ASSERT_EQ(0, rados_ioctx_pool_required_alignment2(test_data.m_ioctx, &alignment));
ASSERT_NE(0U, alignment);
}
TEST(LibRadosAioEC, IsComplete) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion;
ASSERT_EQ("", test_data.init());
}
TEST(LibRadosAioEC, IsSafe) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion;
ASSERT_EQ("", test_data.init());
}
TEST(LibRadosAioEC, ReturnValue) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion;
ASSERT_EQ("", test_data.init());
}
TEST(LibRadosAioEC, Flush) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion;
ASSERT_EQ("", test_data.init());
}
TEST(LibRadosAioEC, FlushAsync) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion;
ASSERT_EQ("", test_data.init());
}
TEST(LibRadosAioEC, RoundTripWriteFull) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion, my_completion2, my_completion3;
ASSERT_EQ("", test_data.init());
}
TEST(LibRadosAioEC, SimpleStat) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion;
ASSERT_EQ("", test_data.init());
TEST(LibRadosAioEC, SimpleStatNS) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion;
ASSERT_EQ("", test_data.init());
}
TEST(LibRadosAioEC, StatRemove) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion;
ASSERT_EQ("", test_data.init());
}
TEST(LibRadosAioEC, ExecuteClass) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion;
ASSERT_EQ("", test_data.init());
}
TEST(LibRadosAioEC, MultiWrite) {
+ SKIP_IF_CRIMSON();
AioTestDataEC test_data;
rados_completion_t my_completion, my_completion2, my_completion3;
ASSERT_EQ("", test_data.init());