#include <gtest/gtest.h>
-#include "common/async/context_pool.h"
-#include "common/ceph_context.h"
#include "rgw_common.h"
-#include "rgw_auth_registry.h"
#include "rgw_process_env.h"
#include "rgw_sal_rados.h"
#include "rgw_lua_request.h"
tracing::Tracer tracer;
-inline std::unique_ptr<sal::RadosStore> make_store() {
- auto context_pool = std::make_unique<ceph::async::io_context_pool>(
- g_ceph_context->_conf->rgw_thread_pool_size);
-
- struct StoreBundle : public sal::RadosStore {
- std::unique_ptr<ceph::async::io_context_pool> context_pool;
- StoreBundle(std::unique_ptr<ceph::async::io_context_pool> context_pool_)
- : sal::RadosStore(*context_pool_.get()),
- context_pool(std::move(context_pool_)) {
- setRados(new RGWRados);
- }
- virtual ~StoreBundle() = default;
- };
- return std::make_unique<StoreBundle>(std::move(context_pool));
-};
-
class TestLuaManager : public rgw::sal::StoreLuaManager {
public:
std::string lua_script;
}
#define DEFINE_REQ_STATE RGWProcessEnv pe; \
- auto store = make_store(); \
pe.lua.manager = std::make_unique<TestLuaManager>(); \
RGWEnv e; \
req_state s(g_ceph_context, pe, &e, 0);
DEFINE_REQ_STATE;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
DEFINE_REQ_STATE;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, -1);
}
DEFINE_REQ_STATE;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
DEFINE_REQ_STATE;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
DEFINE_REQ_STATE;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, -1);
}
DEFINE_REQ_STATE;
s.decoded_uri = "http://hello.world/";
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
s.err.err_code = "Bad Request";
s.err.message = "This is a bad request";
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
DEFINE_REQ_STATE;
s.err.message = "this is a bad request";
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
DEFINE_REQ_STATE;
s.host_id = "foo";
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_NE(rc, 0);
}
DEFINE_REQ_STATE;
s.host_id = "foo";
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, -1);
}
DEFINE_REQ_STATE;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, -1);
}
info.owner = rgw_user{"mytenant", "myuser"};
s.bucket.reset(new sal::RadosBucket(nullptr, info));
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
DEFINE_REQ_STATE;
s.init_state.url_bucket = "myname";
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
ASSERT_EQ(s.init_state.url_bucket, "othername");
}
b.name = "myname";
s.bucket.reset(new sal::RadosBucket(nullptr, b));
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_NE(rc, 0);
}
s.generic_attrs["goodbye"] = "cruel world";
s.generic_attrs["ka"] = "boom";
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
s.env.emplace("goodbye", "cruel world");
s.env.emplace("ka", "boom");
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
s.tagset.add_tag("goodbye", "cruel world");
s.tagset.add_tag("ka", "boom");
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
DEFINE_REQ_STATE;
s.tagset.add_tag("hello", "world");
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_NE(rc, 0);
}
s.info.x_meta_map["foo"] = "bar";
s.info.x_meta_map["ka"] = "boom";
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
s.info.x_meta_map["foo"] = "bar";
s.info.x_meta_map["ka"] = "boom";
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
s.info.x_meta_map["f"] = "6";
s.info.x_meta_map["g"] = "7";
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
ASSERT_EQ(s.info.x_meta_map.count("c"), 0);
}
end
)";
- auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_NE(rc, 0);
script = R"(
end
)";
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_NE(rc, 0);
script = R"(
assert(counter == #Request.HTTP.Metadata)
)";
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
s.user_acl.get_acl().add_grant(grant5);
s.user_acl.get_acl().add_grant(grant6_1);
s.user_acl.get_acl().add_grant(grant6_2);
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
s.user.reset(new sal::RadosUser(nullptr, rgw_user("mytenant", "myid")));
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
s.object_acl.get_owner().display_name = "user five";
s.object_acl.get_owner().id = rgw_user("tenant5", "user5");
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
b.name = "my-bucket-name-is-fish";
s.bucket.reset(new sal::RadosBucket(nullptr, b));
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
DEFINE_REQ_STATE;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_NE(rc, 0);
}
s.auth.identity = std::unique_ptr<rgw::auth::Identity>(
new FakeIdentity());
- auto rc = lua::request::execute(store.get(), nullptr, &olog, &s, nullptr, script);
+ auto rc = lua::request::execute(nullptr, &olog, &s, nullptr, script);
EXPECT_EQ(rc, 0);
EXPECT_FALSE(olog.logged); // don't log http_ret=200
s.err.http_ret = 400;
- rc = lua::request::execute(store.get(), nullptr, &olog, &s, nullptr, script);
+ rc = lua::request::execute(nullptr, &olog, &s, nullptr, script);
EXPECT_EQ(rc, 0);
EXPECT_TRUE(olog.logged);
}
class TestBackground : public rgw::lua::Background {
public:
- TestBackground(sal::RadosStore* store, rgw::sal::LuaManager* manager) :
- rgw::lua::Background(store,
+ TestBackground(rgw::sal::LuaManager* manager) :
+ rgw::lua::Background(
g_ceph_context,
manager,
1 /* run every second */) {
TEST(TestRGWLuaBackground, Start)
{
- auto store = make_store();
auto manager = std::make_unique<TestLuaManager>();
{
// ctr and dtor without running
- TestBackground lua_background(store.get(), manager.get());
+ TestBackground lua_background(manager.get());
}
{
// ctr and dtor with running
- TestBackground lua_background(store.get(), manager.get());
+ TestBackground lua_background(manager.get());
lua_background.start();
}
}
RGW[key] = value
)";
- auto store = make_store();
auto manager = std::make_unique<TestLuaManager>();
set_script(manager.get(), script);
- TestBackground lua_background(store.get(), manager.get());
+ TestBackground lua_background(manager.get());
lua_background.start();
WAIT_FOR_BACKGROUND;
EXPECT_EQ(get_table_value<std::string>(lua_background, "hello"), "world");
DEFINE_REQ_STATE;
set_script(pe.lua.manager.get(), background_script);
- TestBackground lua_background(store.get(), pe.lua.manager.get());
+ TestBackground lua_background(pe.lua.manager.get());
lua_background.start();
WAIT_FOR_BACKGROUND;
// to make sure test is consistent we have to pause the background
lua_background.pause();
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "hello"), "from request");
// now we resume and let the background set the value
perfcounter->set(l_rgw_lua_script_ok, 0);
- lua_background.resume(store.get());
+ lua_background.resume(nullptr);
WAIT_FOR_BACKGROUND;
EXPECT_EQ(get_table_value<std::string>(lua_background, "hello"), "from background");
}
end
)";
- auto store = make_store();
auto manager = std::make_unique<TestLuaManager>();
set_script(manager.get(), script);
- TestBackground lua_background(store.get(), manager.get());
+ TestBackground lua_background(manager.get());
lua_background.start();
WAIT_FOR_BACKGROUND;
const auto value_len = get_table_value<std::string>(lua_background, "hello").size();
end
)";
- auto store = make_store();
auto manager = std::make_unique<TestLuaManager>();
set_script(manager.get(), script);
set_read_time(manager.get(), 2);
- TestBackground lua_background(store.get(), manager.get());
+ TestBackground lua_background(manager.get());
lua_background.start();
WAIT_FOR_BACKGROUND;
const auto value_len = get_table_value<std::string>(lua_background, "hello").size();
RGW[key] = value
)";
- auto store = make_store();
auto manager = std::make_unique<TestLuaManager>();
set_script(manager.get(), script);
- TestBackground lua_background(store.get(), manager.get());
+ TestBackground lua_background(manager.get());
lua_background.pause();
lua_background.start();
// make sure no execution occurs
std::this_thread::sleep_for(wait_time*10);
EXPECT_EQ(get_table_value<std::string>(lua_background, "hello"), "");
- lua_background.resume(store.get());
+ lua_background.resume(nullptr);
WAIT_FOR_BACKGROUND;
EXPECT_EQ(get_table_value<std::string>(lua_background, "hello"), "world");
}
end
)";
- auto store = make_store();
auto manager = std::make_unique<TestLuaManager>();
set_script(manager.get(), script);
- TestBackground lua_background(store.get(), manager.get());
+ TestBackground lua_background(manager.get());
lua_background.start();
WAIT_FOR_BACKGROUND;
const auto value_len = get_table_value<std::string>(lua_background, "hello").size();
// no change in len
EXPECT_EQ(value_len, get_table_value<std::string>(lua_background, "hello").size());
perfcounter->set(l_rgw_lua_script_ok, 0);
- lua_background.resume(store.get());
+ lua_background.resume(nullptr);
WAIT_FOR_BACKGROUND;
// should be a change in len
EXPECT_GT(get_table_value<std::string>(lua_background, "hello").size(), value_len);
end
)";
- auto store = make_store();
auto manager = std::make_unique<TestLuaManager>();
set_script(manager.get(), script);
- TestBackground lua_background(store.get(), manager.get());
+ TestBackground lua_background(manager.get());
lua_background.start();
WAIT_FOR_BACKGROUND;
const auto value_len = get_table_value<std::string>(lua_background, "hello").size();
TEST(TestRGWLuaBackground, TableValues)
{
DEFINE_REQ_STATE;
- TestBackground lua_background(store.get(), pe.lua.manager.get());
+ TestBackground lua_background(pe.lua.manager.get());
const std::string request_script = R"(
RGW["key1"] = "string value"
pe.lua.background = &lua_background;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key1"), "string value");
EXPECT_EQ(get_table_value<long long int>(lua_background, "key2"), 42);
TEST(TestRGWLuaBackground, TablePersist)
{
DEFINE_REQ_STATE;
- TestBackground lua_background(store.get(), pe.lua.manager.get());
+ TestBackground lua_background(pe.lua.manager.get());
std::string request_script = R"(
RGW["key1"] = "string value"
pe.lua.background = &lua_background;
- auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key1"), "string value");
EXPECT_EQ(get_table_value<long long int>(lua_background, "key2"), 42);
RGW["key4"] = RGW["key2"]
)";
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key1"), "string value");
EXPECT_EQ(get_table_value<long long int>(lua_background, "key2"), 42);
TEST(TestRGWLuaBackground, TableValuesFromRequest)
{
DEFINE_REQ_STATE;
- TestBackground lua_background(store.get(), pe.lua.manager.get());
+ TestBackground lua_background(pe.lua.manager.get());
lua_background.start();
const std::string request_script = R"(
s.err.ret = -99;
s.err.message = "hi";
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<long long int>(lua_background, "key1"), -99);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key2"), "hi");
TEST(TestRGWLuaBackground, TableInvalidValue)
{
DEFINE_REQ_STATE;
- TestBackground lua_background(store.get(), pe.lua.manager.get());
+ TestBackground lua_background(pe.lua.manager.get());
lua_background.start();
const std::string request_script = R"(
s.tagset.add_tag("key1", "val1");
s.tagset.add_tag("key2", "val2");
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_NE(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key1"), "val1");
EXPECT_EQ(get_table_value<long long int>(lua_background, "key2"), 42);
TEST(TestRGWLuaBackground, TableErase)
{
DEFINE_REQ_STATE;
- TestBackground lua_background(store.get(), pe.lua.manager.get());
+ TestBackground lua_background(pe.lua.manager.get());
std::string request_script = R"(
RGW["size"] = 0
pe.lua.background = &lua_background;
- auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key1"), "string value");
EXPECT_EQ(get_table_value<long long int>(lua_background, "key2"), 42);
RGW["size"] = #RGW
)";
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key1"), "");
EXPECT_EQ(get_table_value<long long int>(lua_background, "key2"), 42);
TEST(TestRGWLuaBackground, TableIterate)
{
DEFINE_REQ_STATE;
- TestBackground lua_background(store.get(), pe.lua.manager.get());
+ TestBackground lua_background(pe.lua.manager.get());
const std::string request_script = R"(
RGW["key1"] = "string value"
pe.lua.background = &lua_background;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key1"), "string value");
EXPECT_EQ(get_table_value<long long int>(lua_background, "key2"), 42);
TEST(TestRGWLuaBackground, TableIterateWrite)
{
DEFINE_REQ_STATE;
- TestBackground lua_background(store.get(), pe.lua.manager.get());
+ TestBackground lua_background(pe.lua.manager.get());
const std::string request_script = R"(
RGW["a"] = 1
pe.lua.background = &lua_background;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(lua_background.get_table_value("c"), TestBackground::empty_table_value);
}
TEST(TestRGWLuaBackground, TableIncrement)
{
DEFINE_REQ_STATE;
- TestBackground lua_background(store.get(), pe.lua.manager.get());
+ TestBackground lua_background(pe.lua.manager.get());
const std::string request_script = R"(
RGW["key1"] = 42
pe.lua.background = &lua_background;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
}
TEST(TestRGWLuaBackground, TableIncrementBy)
{
DEFINE_REQ_STATE;
- TestBackground lua_background(store.get(), pe.lua.manager.get());
+ TestBackground lua_background(pe.lua.manager.get());
const std::string request_script = R"(
RGW["key1"] = 42
pe.lua.background = &lua_background;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
}
TEST(TestRGWLuaBackground, TableDecrement)
{
DEFINE_REQ_STATE;
- TestBackground lua_background(store.get(), pe.lua.manager.get());
+ TestBackground lua_background(pe.lua.manager.get());
const std::string request_script = R"(
RGW["key1"] = 42
pe.lua.background = &lua_background;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
}
TEST(TestRGWLuaBackground, TableDecrementBy)
{
DEFINE_REQ_STATE;
- TestBackground lua_background(store.get(), pe.lua.manager.get());
+ TestBackground lua_background(pe.lua.manager.get());
const std::string request_script = R"(
RGW["key1"] = 42
pe.lua.background = &lua_background;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
}
TEST(TestRGWLuaBackground, TableIncrementValueError)
{
DEFINE_REQ_STATE;
- TestBackground lua_background(store.get(), pe.lua.manager.get());
+ TestBackground lua_background(pe.lua.manager.get());
std::string request_script = R"(
-- cannot increment string values
pe.lua.background = &lua_background;
- auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_NE(rc, 0);
request_script = R"(
RGW.increment("key1")
)";
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_NE(rc, 0);
request_script = R"(
RGW.increment("key1", "kaboom")
)";
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_NE(rc, 0);
}
TEST(TestRGWLuaBackground, TableIncrementError)
{
DEFINE_REQ_STATE;
- TestBackground lua_background(store.get(), pe.lua.manager.get());
+ TestBackground lua_background(pe.lua.manager.get());
std::string request_script = R"(
-- missing argument
pe.lua.background = &lua_background;
- auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_NE(rc, 0);
request_script = R"(
RGW.increment = 11
)";
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
+ rc = lua::request::execute(nullptr, nullptr, &s, nullptr, request_script);
ASSERT_NE(rc, 0);
}
DEFINE_REQ_STATE;
INIT_TRACE;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
DEFINE_REQ_STATE;
INIT_TRACE;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
#ifdef HAVE_JAEGER
ASSERT_NE(rc, 0);
#else
DEFINE_REQ_STATE;
INIT_TRACE;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
)";
DEFINE_REQ_STATE;
- TestBackground lua_background(store.get(), pe.lua.manager.get());
+ TestBackground lua_background(pe.lua.manager.get());
s.host_id = "foo";
pe.lua.background = &lua_background;
lua::RGWObjFilter filter(&s, script);
// memory should be sufficient
s.cct->_conf->rgw_lua_max_memory_per_state = 1024*32;
- auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
// no memory limit
s.cct->_conf->rgw_lua_max_memory_per_state = 0;
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
// not enough memory to start lua
s.cct->_conf->rgw_lua_max_memory_per_state = 2048;
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_NE(rc, 0);
// not enough memory for initial setup
s.cct->_conf->rgw_lua_max_memory_per_state = 1024*16;
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_NE(rc, 0);
// not enough memory for the script
end
)";
s.cct->_conf->rgw_lua_max_memory_per_state = 1024*32;
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_NE(rc, 0);
}
// runtime should be sufficient
s.cct->_conf->rgw_lua_max_runtime_per_state = 1000; // 1 second runtime limit
- int rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ int rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
// no runtime limit
s.cct->_conf->rgw_lua_max_runtime_per_state = 0;
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
// script should exceed the runtime limit
)";
s.cct->_conf->rgw_lua_max_runtime_per_state = 10; // 10 milliseconds runtime limit
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_NE(rc, 0);
s.cct->_conf->rgw_lua_max_runtime_per_state = 0; // no runtime limit
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
// script should exceed the runtime limit
)";
s.cct->_conf->rgw_lua_max_runtime_per_state = 5000; // 5 seconds runtime limit
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_NE(rc, 0);
}
info.owner = rgw_user{"tenant2", "user2"};
s.bucket.reset(new sal::RadosBucket(nullptr, info));
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
s.info.x_meta_map["33"] = "cc";
s.info.x_meta_map["44"] = "dd";
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
+ const auto rc = lua::request::execute(nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}