MXS-2304 Use values instead of pointers in CONFIG_CONTEXT

Simplifies ctor/dtor.
This commit is contained in:
Esa Korhonen
2019-02-19 13:35:22 +02:00
parent 5828c93112
commit 3fa4a85a1e
8 changed files with 143 additions and 178 deletions

View File

@ -48,7 +48,7 @@ int test_validity()
};
CONFIG_CONTEXT ctx;
ctx.object = MXS_STRDUP("");
ctx.name = MXS_STRDUP("");
/** Int parameter */
TEST(config_param_is_valid(params, "p1", "1", &ctx));
@ -111,7 +111,7 @@ int test_validity()
/** Service parameter */
CONFIG_CONTEXT svc;
svc.object = MXS_STRDUP("test-service");
svc.name = MXS_STRDUP("test-service");
ctx.next = &svc;
config_add_param(&svc, "type", "service");
TEST(config_param_is_valid(params, "p7", "test-service", &ctx));
@ -156,10 +156,10 @@ int test_add_parameter()
CONFIG_CONTEXT svc1, svc2, ctx;
svc1.object = MXS_STRDUP("my-service");
svc2.object = MXS_STRDUP("some-service");
svc1.name = MXS_STRDUP("my-service");
svc2.name = MXS_STRDUP("some-service");
svc2.next = &svc1;
ctx.object = MXS_STRDUP("");
ctx.name = MXS_STRDUP("");
ctx.next = &svc2;
config_add_param(&svc1, "type", "service");
config_add_param(&svc2, "type", "service");
@ -167,15 +167,15 @@ int test_add_parameter()
config_add_defaults(&ctx, params);
/** Test default values */
TEST(ctx.parameters->get_integer("p1") == -123);
TEST(ctx.parameters->get_integer("p2") == 123);
TEST(ctx.parameters->get_bool("p3") == true);
TEST(ctx.parameters->get_string("p4") == "default");
TEST(ctx.parameters->get_enum("p5", enum_values) == 1);
TEST(ctx.parameters->get_string("p6") == "/tmp");
TEST(ctx.parameters->get_string("p7") == "my-service");
TEST(ctx.parameters.get_integer("p1") == -123);
TEST(ctx.parameters.get_integer("p2") == 123);
TEST(ctx.parameters.get_bool("p3") == true);
TEST(ctx.parameters.get_string("p4") == "default");
TEST(ctx.parameters.get_enum("p5", enum_values) == 1);
TEST(ctx.parameters.get_string("p6") == "/tmp");
TEST(ctx.parameters.get_string("p7") == "my-service");
ctx.parameters->clear();
ctx.parameters.clear();
/** Test custom parameters overriding default values */
config_add_param(&ctx, "p1", "-321");
@ -188,14 +188,14 @@ int test_add_parameter()
config_add_defaults(&ctx, params);
TEST(ctx.parameters->get_integer("p1") == -321);
TEST(ctx.parameters->get_integer("p2") == 321);
TEST(ctx.parameters->contains("p3") && ctx.parameters->get_bool("p3") == false);
TEST(ctx.parameters->get_string("p4") == "strange");
int val = ctx.parameters->get_enum("p5", enum_values);
TEST(ctx.parameters.get_integer("p1") == -321);
TEST(ctx.parameters.get_integer("p2") == 321);
TEST(ctx.parameters.contains("p3") && ctx.parameters.get_bool("p3") == false);
TEST(ctx.parameters.get_string("p4") == "strange");
int val = ctx.parameters.get_enum("p5", enum_values);
TEST(val == 5);
TEST(ctx.parameters->get_string("p6") == "/dev/null");
TEST(ctx.parameters->get_string("p7") == "some-service");
TEST(ctx.parameters.get_string("p6") == "/dev/null");
TEST(ctx.parameters.get_string("p7") == "some-service");
return 0;
}
@ -210,13 +210,13 @@ int test_required_parameters()
};
CONFIG_CONTEXT ctx;
ctx.object = MXS_STRDUP("");
ctx.name = MXS_STRDUP("");
TEST(missing_required_parameters(params, ctx.parameters, "test"));
config_add_defaults(&ctx, params);
TEST(!missing_required_parameters(params, ctx.parameters, "test"));
ctx.parameters->clear();
ctx.parameters.clear();
config_add_param(&ctx, "p1", "1");
config_add_param(&ctx, "p2", "1");

View File

@ -97,21 +97,21 @@ bool test_load_config(const char* input, Server* server)
if (duplicate_context_init(&dcontext))
{
CONFIG_CONTEXT ccontext;
ccontext.object = MXS_STRDUP("");
ccontext.name = MXS_STRDUP("");
if (config_load_single_file(input, &dcontext, &ccontext))
{
CONFIG_CONTEXT* obj = ccontext.next;
MXS_CONFIG_PARAMETER* param = obj->parameters;
MXS_CONFIG_PARAMETER* param = &obj->parameters;
config_add_defaults(obj, config_server_params);
TEST(strcmp(obj->object, server->name()) == 0, "Server names differ");
TEST(strcmp(obj->object(), server->name()) == 0, "Server names differ");
TEST(param->get_string("address") == server->address, "Server addresses differ");
TEST(param->get_string("protocol") == server->protocol(), "Server protocols differ");
TEST(param->get_string("authenticator") == server->get_authenticator(),
"Server authenticators differ");
TEST(param->get_integer("port") == server->port, "Server ports differ");
TEST(Server::server_alloc(obj->object, obj->parameters),
TEST(Server::server_alloc(obj->object(), &obj->parameters),
"Failed to create server from loaded config");
duplicate_context_finish(&dcontext);
config_context_free(obj);