60 #include <sys/types.h>
130 amxd_dm_t* dm = NULL;
151 char* argv[] = {
"amxrt",
"-h"};
154 assert_int_not_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
158 char* argv1[] = {
"amxrt",
"-B dymmy",
"-u",
"dummy://127.0.0.1:1970"};
159 char* argv2[] = {
"test-plugin",
"-B fake",
"-u",
"dummy://127.0.0.1:1970"};
163 amxc_var_t* prefix = GET_ARG(
config,
"prefix");
165 char* current_wd = getcwd(NULL, 0);
172 amxc_var_set(cstring_t, prefix, current_wd);
177 assert_int_equal(
amxrt(
sizeof(argv1) /
sizeof(argv1[0]), argv1, NULL), 0);
183 amxc_var_set(cstring_t, prefix, current_wd);
184 assert_int_equal(
amxrt(
sizeof(argv2) /
sizeof(argv2[0]), argv2, NULL), 0);
187 amxc_var_set(cstring_t, prefix,
"");
193 char* argv[] = {
"amxrt",
"-B b",
"-u",
"dummy://127.0.0.1:1970",
194 "test.odl",
"etc/amx/amxrt/amxrt.odl",
"etc/amx/test-plugin/test-plugin.odl"};
206 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
212 char* argv[] = {
"amxrt",
"-B b",
"-u",
"dummy://127.0.0.1:1970",
213 "test.odl",
"-E",
"etc/amx/amxrt/amxrt.odl",
"etc/amx/test-plugin/test-plugin.odl"};
227 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
234 char* argv1[] = {
"amxrt",
"-B a",
"-u",
"dummy://127.0.0.1:1970"};
246 assert_int_equal(
amxrt(
sizeof(argv1) /
sizeof(argv1[0]), argv1, NULL), 0);
252 char* argv1[] = {
"amxrt",
"-B a",
"-u",
"dummy://127.0.0.1:1970",
"invalid.odl"};
259 assert_int_not_equal(
amxrt(
sizeof(argv1) /
sizeof(argv1[0]), argv1, NULL), 0);
265 char* argv1[] = {
"amxrt",
"-B a",
"-u",
"dummy://127.0.0.1:1970",
"test.odl"};
277 assert_int_equal(
amxrt(
sizeof(argv1) /
sizeof(argv1[0]), argv1, NULL), 0);
283 char* argv[] = {
"amxrt",
"-B b",
"test.odl"};
291 assert_int_not_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
297 char* argv[] = {
"amxrt",
"-B b",
"test.odl",
"-u",
"dummy://127.0.0.1:1970"};
306 assert_int_not_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
312 char* argv1[] = {
"dummy_name",
"-B a",
"test.odl",
313 "-u",
"dummy://127.0.0.1:1970"};
322 amxc_var_t* name = GET_ARG(
config,
"name");
323 amxc_var_delete(&name);
326 system(
"sudo rm -rf /var/run/dummy_name");
327 system(
"sudo mkdir -p /var/run/dummy_name");
328 system(
"sudo chown $USER /var/run/dummy_name");
329 system(
"sudo chmod 777 /var/run/dummy_name");
330 system(
"ls -la /var/run/dummy_name");
331 system(
"echo $USER");
338 assert_int_equal(
amxrt_init(
sizeof(argv1) /
sizeof(argv1[0]), argv1, NULL), 0);
339 assert_true(stat(
"/var/run/dummy_name.pid", &sb) == 0 ||
340 stat(
"/var/run/dummy_name/dummy_name.pid", &sb) == 0);
342 if(stat(
"/var/run/dummy_name.pid", &sb) == 0) {
343 fp = fopen(
"/var/run/dummy_name.pid",
"r");
345 fp = fopen(
"/var/run/dummy_name/dummy_name.pid",
"r");
347 read = getline(&line, &len, fp);
348 assert_true(read > 0);
349 assert_int_equal(atol(line), getpid());
353 system(
"sudo rm -rf /var/run/dummy_name");
360 char* argv[] = {
"amxrt",
"-B b",
"test.odl",
"-D",
"-u",
"dummy://127.0.0.1:1970"};
370 assert_int_not_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
377 char* argv[] = {
"amxrt",
"-B b",
"-D",
"-u",
"dummy://127.0.0.1:1970",
"test.odl"};
388 assert_int_not_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
395 char* argv[] = {
"amxrt",
"-B b",
"test.odl",
"-O",
"%define {object TestObject2 {string Text = \"Hallo World\";}}",
396 "-u",
"dummy://127.0.0.1:1970"};
400 amxc_var_t* odl_string = NULL;
409 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
412 amxc_var_delete(&odl_string);
417 char* argv[] = {
"amxrt",
"-B b",
"test.odl",
"-O",
"%define {object TestObject2 {string Text = \"Hallo World\";}"};
420 amxc_var_t* odl_string = NULL;
424 assert_int_not_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
427 amxc_var_delete(&odl_string);
432 char* argv[] = {
"amxrt",
"-B b",
"test.odl",
"-N",
"-u",
"dummy://127.0.0.1:1970"};
443 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
449 char* argv[] = {
"amxrt",
"-B b",
"-u",
"dummy://127.0.0.1:1970",
"post_include.odl" };
460 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
466 char* argv[] = {
"amxrt",
"-l",
"test.odl",
"-B b",
"-u",
"dummy://127.0.0.1:1970" };
478 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
486 char* argv[] = {
"amxrt",
"-d",
"test.odl",
"-B b",
"-u",
"dummy://127.0.0.1:1970" };
498 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
506 char* argv[] = {
"amxrt",
"-B b",
"-u",
"dummy://127.0.0.1:1970",
"-O",
"%config { system-signals = [ 17 ]; }",
"./test.odl" };
510 amxc_var_t* odl_string = NULL;
519 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
520 assert_true(amxp_syssig_is_enabled(17));
521 amxp_syssig_enable(17,
false);
524 amxc_var_delete(&odl_string);
529 char* argv[] = {
"amxrt",
"-B b",
"-u",
"dummy://127.0.0.1:1970",
"-O",
"%config { system-signals = 17; }",
"./test.odl" };
533 amxc_var_t* odl_string = NULL;
542 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
543 assert_true(amxp_syssig_is_enabled(17));
544 amxp_syssig_enable(17,
false);
547 amxc_var_delete(&odl_string);
552 char* argv[] = {
"amxrt",
"-B b",
"-u",
553 "dummy://127.0.0.1:1970",
554 "-F",
"my-option=123",
555 "-O",
"%config { my-option = 666; }",
"./test.odl" };
559 amxc_var_t* odl_string = NULL;
569 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
571 assert_int_equal(GET_INT32(
config,
"my-option"), 123);
573 amxc_var_delete(&odl_string);
579 char* argv[] = {
"amxrt",
"-B b",
"-u",
580 "dummy://127.0.0.1:1970",
581 "-o",
"my-option=123",
582 "-O",
"%config { my-option = 666; }",
"./test.odl" };
586 amxc_var_t* odl_string = NULL;
595 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
597 assert_int_equal(GET_INT32(
config,
"my-option"), 999);
599 amxc_var_delete(&odl_string);
605 char* argv[] = {
"amxrt",
"-B b",
"-u",
606 "dummy://127.0.0.1:1970",
607 "-o",
"my-table.my-key.0=123",
608 "-o",
"my-table.my-key.1=true",
613 amxc_var_t* cfg = NULL;
622 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
624 cfg = GETP_ARG(
config,
"my-table.my-key.0");
625 assert_int_equal(amxc_var_dyncast(int32_t, cfg), 123);
626 cfg = GETP_ARG(
config,
"my-table.my-key.1");
627 assert_true(GET_BOOL(cfg, NULL));
633 char* argv[] = {
"amxrt",
"-B b",
"-u",
634 "dummy://127.0.0.1:1970",
635 "-F",
"my-table.odl-key=xyz",
636 "-O",
"%config{ my-table = { odl-key=\"abc\" }; }",
641 amxc_var_t* cfg = NULL;
642 amxc_var_t* odl_string = NULL;
651 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
653 cfg = GETP_ARG(
config,
"my-table.odl-key");
654 assert_string_equal(GET_CHAR(cfg, NULL),
"xyz");
656 amxc_var_delete(&odl_string);
662 char* argv[] = {
"amxrt",
"-B b",
"-u",
663 "dummy://127.0.0.1:1970",
664 "-o",
"my-table.my-key.2={\"key1\":true, \"key2\":[1,2,3], \"key3\":\"abc\"}",
669 amxc_var_t* cfg = NULL;
678 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
680 cfg = GETP_ARG(
config,
"my-table.my-key.2.key1");
681 assert_true(amxc_var_constcast(
bool, cfg));
682 cfg = GETP_ARG(
config,
"my-table.my-key.2.key2.0");
683 assert_int_equal(amxc_var_dyncast(uint32_t, cfg), 1);
684 cfg = GETP_ARG(
config,
"my-table.my-key.2.key2.1");
685 assert_int_equal(amxc_var_dyncast(uint32_t, cfg), 2);
686 cfg = GETP_ARG(
config,
"my-table.my-key.2.key2.2");
687 assert_int_equal(amxc_var_dyncast(uint32_t, cfg), 3);
688 cfg = GETP_ARG(
config,
"my-table.my-key.2.key3");
689 assert_string_equal(amxc_var_constcast(cstring_t, cfg),
"abc");
695 char* argv[] = {
"amxrt",
"-B b",
"-u",
"dummy://127.0.0.1:1970",
"test.odl" };
706 assert_int_not_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
712 char* argv[] = {
"amxrt",
"-B b",
"-u",
"dummy://127.0.0.1:1970",
"-R",
"NetDev.",
"test.odl" };
722 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
725 amxp_sigmngr_trigger_signal(NULL,
"wait:done", NULL);
731 char* argv[] = {
"amxrt",
"-B b",
"-u",
"dummy://127.0.0.1:1970",
"-R",
"NetDev.",
"test.odl" };
742 assert_int_not_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
745 amxp_sigmngr_trigger_signal(NULL,
"wait:done", NULL);
751 char* argv[] = {
"amxrt",
"-B b",
"-u",
"dummy://127.0.0.1:1970",
"-R",
"NetDev.",
"test.odl" };
763 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
766 amxp_sigmngr_trigger_signal(NULL,
"wait:done", NULL);
774 char* argv[] = {
"amxrt",
"-B b",
"-u",
"dummy://127.0.0.1:1970",
"-R",
"NetDev.",
"test.odl" };
786 assert_int_equal(
amxrt(
sizeof(argv) /
sizeof(argv[0]), argv, NULL), 0);
787 amxp_sigmngr_trigger_signal(NULL,
"wait:done", NULL);
796 amxc_var_add(cstring_t, listen,
"usp:/var/run/usp-ep.sock");
810 amxc_var_set_type(backends, AMXC_VAR_ID_CSTRING);
812 amxc_var_set_type(backends, AMXC_VAR_ID_LIST);
#define AMXRT_COPT_BACKENDS
#define AMXRT_COPT_LISTEN
#define AMXRT_COPT_SUSPEND
#define AMXRT_COPT_DUMP_CONFIG
#define AMXRT_COPT_HANDLE_EVENTS
#define AMXRT_COPT_DAEMON
int amxrt_el_stop(void)
Stops the event loop.
amxc_var_t * amxrt_get_config(void)
Gets the htable variant containing the configuration options.
int amxrt_connect(void)
Connects to all bus sockets.
int amxrt_init(int argc, char *argv[], amxrt_arg_fn_t fn)
Initializes the ambiorix runtime.
int amxrt(int argc, char *argv[], amxrt_arg_fn_t fn)
This function can create full ambiorix application (data model provider or client).
void amxrt_delete(void)
Clean-up ambiorix runtime.
amxd_dm_t * amxrt_get_dm(void)
Gets the runtime data model storage.
void amxrt_new(void)
Create the ambiorix runtime.
void amxrt_stop(void)
Stops the runtime.
int amxrt_register_or_wait(void)
Register the data model or wait for required data model objects.
void test_runtime_can_wait_for_objects(UNUSED void **state)
void test_runtime_parses_default_odl(UNUSED void **state)
void __wrap_amxb_free(amxb_bus_ctx_t **ctx)
void test_runtime_parse_args_wrong_odl(UNUSED void **state)
void test_runtime_parses_odls_and_handle_events(UNUSED void **state)
int __wrap_amxb_be_load_multiple(amxc_var_t *const bes)
void test_runtime_forced_options_are_kept(UNUSED void **state)
int test_runtime_setup(UNUSED void **state)
void test_runtime_parse_args_odl(UNUSED void **state)
void test_runtime_fails_when_invalid_odl(UNUSED void **state)
void test_runtime_connect_fails_if_no_backends(UNUSED void **state)
int __wrap_amxb_read(amxb_bus_ctx_t *ctx)
void test_runtime_creates_pid_file(UNUSED void **state)
void test_runtime_start_prints_help_and_exits(UNUSED void **state)
struct dummy_bus dummy_bus_t
void test_runtime_cannot_connect_bus_uri(UNUSED void **state)
void test_runtime_stops_el_when_registering_after_wait_fails(UNUSED void **state)
void test_runtime_cannot_load_backends(UNUSED void **state)
int __wrap_amxb_register(amxb_bus_ctx_t *ctx, amxd_dm_t *dm)
void test_runtime_parses_post_includes(UNUSED void **state)
void test_runtime_dumps_config(UNUSED void **state)
int __wrap_daemon(int nochdir, int noclose)
void test_runtime_fails_when_registering_dm_fails(UNUSED void **state)
int __wrap_amxb_get_fd(amxb_bus_ctx_t *ctx)
int __wrap_amxb_connect(amxb_bus_ctx_t **ctx, const char *uri)
void test_runtime_enables_system_signals_list(UNUSED void **state)
void test_runtime_opens_syslog(UNUSED void **state)
void test_runtime_options_can_be_overwritten(UNUSED void **state)
void test_runtime_set_priority_failed(UNUSED void **state)
void test_runtime_parses_odls(UNUSED void **state)
void test_runtime_can_suspend_events_while_waiting(UNUSED void **state)
void test_runtime_can_pass_json_value_option(UNUSED void **state)
void test_runtime_forced_options_with_path_are_kept(UNUSED void **state)
int __wrap_amxb_wait_for_object(const char *object)
void test_runtime_succeeds_when_no_odl(UNUSED void **state)
void test_runtime_daemon_failed(UNUSED void **state)
void test_runtime_can_pass_option_path(UNUSED void **state)
void test_runtime_wait_for_objects_can_fail(UNUSED void **state)
void test_runtime_can_create_listen_sockets(UNUSED void **state)
int __wrap_amxb_listen(amxb_bus_ctx_t **ctx, const char *uri)
static dummy_bus_t dummy_ctx
void test_runtime_enables_system_signal(UNUSED void **state)
int test_runtime_teardown(UNUSED void **state)
void test_runtime_connects_to_uri(UNUSED void **state)
void test_runtime_no_pidfile(UNUSED void **state)
int __wrap_setpriority(int which, id_t who, int value)