From: Omri Zeneva Date: Mon, 23 May 2022 15:50:05 +0000 (-0400) Subject: test: add unit tests X-Git-Tag: v18.0.0~705^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=61054347f32789dd4911e4f5dda254f96f0f916d;p=ceph-ci.git test: add unit tests - added trace initialization - opentelemetry linking when needed - conditional ASSERT on SetBadAttribute, when we don't have opentelemetry (tracing sdk), we expect different result from the execute function. Signed-off-by: Omri Zeneva --- diff --git a/src/test/rgw/CMakeLists.txt b/src/test/rgw/CMakeLists.txt index e8eed91b787..374ea0bd415 100644 --- a/src/test/rgw/CMakeLists.txt +++ b/src/test/rgw/CMakeLists.txt @@ -16,6 +16,10 @@ if(WITH_RADOSGW_LUA_PACKAGES) list(APPEND rgw_libs Boost::filesystem) endif() +if(WITH_JAEGER) + list(APPEND rgw_libs ${jaeger_base}) +endif() + #unittest_rgw_bencode add_executable(unittest_rgw_bencode test_rgw_bencode.cc) add_ceph_unittest(unittest_rgw_bencode) diff --git a/src/test/rgw/test_rgw_lua.cc b/src/test/rgw/test_rgw_lua.cc index 86bd79250a6..a2430313719 100644 --- a/src/test/rgw/test_rgw_lua.cc +++ b/src/test/rgw/test_rgw_lua.cc @@ -157,7 +157,11 @@ auto g_cct = new CephContext(CEPH_ENTITY_TYPE_CLIENT); CctCleaner cleaner(g_cct); +tracing::Tracer tracer; + #define DEFINE_REQ_STATE RGWEnv e; req_state s(g_cct, &e, 0); +#define INIT_TRACE tracer.init("test"); \ + s.trace = tracer.start_trace("test", true); TEST(TestRGWLua, EmptyScript) { @@ -849,3 +853,50 @@ TEST(TestRGWLuaBackground, MultipleStarts) EXPECT_GT(lua_background.get_table_value("hello").size(), value_len); } +TEST(TestRGWLua, TracingSetAttribute) +{ + const std::string script = R"( + Request.Trace.SetAttribute("str-attr", "value") + Request.Trace.SetAttribute("int-attr", 42) + Request.Trace.SetAttribute("double-attr", 42.5) + )"; + + DEFINE_REQ_STATE; + INIT_TRACE; + const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "put_obj", script); + ASSERT_EQ(rc, 0); +} + +TEST(TestRGWLua, TracingSetBadAttribute) +{ + const std::string script = R"( + Request.Trace.SetAttribute("attr", nil) + )"; + + DEFINE_REQ_STATE; + INIT_TRACE; + const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "put_obj", script); + #ifdef HAVE_JAEGER + ASSERT_NE(rc, 0); + #else + ASSERT_EQ(rc, 0); + #endif +} + +TEST(TestRGWLua, TracingAddEvent) +{ + const std::string script = R"( + event_attrs = {} + event_attrs["x"] = "value-x" + event_attrs[42] = 42 + event_attrs[42.5] = 42.5 + event_attrs["y"] = "value-y" + + Request.Trace.AddEvent("my_event", event_attrs) + )"; + + DEFINE_REQ_STATE; + INIT_TRACE; + const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "put_obj", script); + ASSERT_EQ(rc, 0); +}