]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test: add unit tests
authorOmri Zeneva <ozeneva@redhat.com>
Mon, 23 May 2022 15:50:05 +0000 (11:50 -0400)
committerOmri Zeneva <ozeneva@redhat.com>
Mon, 13 Jun 2022 06:05:11 +0000 (02:05 -0400)
- 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 <ozeneva@redhat.com>
src/test/rgw/CMakeLists.txt
src/test/rgw/test_rgw_lua.cc

index e8eed91b7878163a423450fa8c47b0172f91c87e..374ea0bd4152766b6fca18e06251e6111bb7b1f3 100644 (file)
@@ -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)
index 86bd79250a64a920371ed6b3814aa77c1ebcbc42..a2430313719d15f1d96783bdd1d36a10f7890880 100644 (file)
@@ -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);
+}