54 #include <sys/types.h>
67 #include <amxc/amxc.h>
68 #include <amxp/amxp.h>
70 #include <amxd/amxd_dm.h>
72 #include <amxb/amxb.h>
80 if(stat(
"/var/run/ubus.sock", &sb) == 0) {
81 return "ubus:/var/run/ubus.sock";
83 if(stat(
"/var/run/ubus/ubus.sock", &sb) == 0) {
84 return "ubus:/var/run/ubus/ubus.sock";
92 printf(
"Ubus socket = %s\n", ubus_sock);
94 amxc_string_init(&txt, 0);
96 amxc_string_reset(&txt);
97 amxc_string_setf(&txt,
"amxrt -u ubus: -B ../mod-amxb-test-ubus.so -A ../test_data/test_nemo.odl &");
98 system(amxc_string_get(&txt, 0));
99 amxc_string_setf(&txt,
"amxrt -u ubus: -B ../mod-amxb-test-ubus.so -A ../test_data/test_full_types.odl &");
100 system(amxc_string_get(&txt, 0));
102 amxc_string_clean(&txt);
104 assert_int_equal(amxb_be_load(
"../mod-amxb-test-ubus.so"), 0);
105 assert_int_equal(amxb_connect(&
bus_ctx, ubus_sock), 0);
116 system(
"killall amxrt");
118 amxb_be_remove_all();
119 unlink(
"test_config.odl");
127 amxb_invoke_t* invoke_ctx = NULL;
129 amxc_var_init(&args);
132 assert_int_equal(amxb_new_invoke(&invoke_ctx,
bus_ctx,
"NeMo.Intf.lan.", NULL,
"_get"), AMXB_STATUS_OK);
133 assert_int_equal(amxb_invoke(invoke_ctx, &args, &ret, NULL, NULL, 5), AMXB_STATUS_OK);
134 amxc_var_dump(&ret, STDOUT_FILENO);
135 amxb_free_invoke(&invoke_ctx);
136 amxc_var_clean(&args);
137 amxc_var_clean(&ret);
141 UNUSED
const amxc_var_t*
const data,
147 UNUSED amxb_request_t* req,
156 amxb_invoke_t* invoke_ctx = NULL;
158 amxc_var_init(&args);
161 assert_int_equal(amxb_new_invoke(&invoke_ctx,
bus_ctx,
"NeMo.Intf.lan.", NULL,
"get"), AMXB_STATUS_OK);
162 assert_int_equal(amxb_invoke(invoke_ctx, &args, &ret,
test_ubus_invoke_cb, NULL, 5), AMXB_STATUS_OK);
163 amxc_var_dump(&ret, STDOUT_FILENO);
164 amxb_free_invoke(&invoke_ctx);
166 amxc_var_clean(&args);
167 amxc_var_clean(&ret);
173 amxb_invoke_t* invoke_ctx = NULL;
175 amxc_var_init(&args);
178 assert_int_equal(amxb_new_invoke(&invoke_ctx,
bus_ctx,
"NeMo.Intf.lan.", NULL,
"_get"), AMXB_STATUS_OK);
179 assert_int_equal(amxb_invoke(invoke_ctx, &args, &ret,
test_ubus_invoke_cb, NULL, 5), AMXB_STATUS_OK);
180 amxc_var_dump(&ret, STDOUT_FILENO);
181 amxb_free_invoke(&invoke_ctx);
183 assert_int_equal(amxb_new_invoke(&invoke_ctx,
bus_ctx,
"TestObject.", NULL,
"_get"), AMXB_STATUS_OK);
184 assert_int_equal(amxb_invoke(invoke_ctx, &args, &ret,
test_ubus_invoke_cb, NULL, 5), AMXB_STATUS_OK);
185 amxc_var_dump(&ret, STDOUT_FILENO);
186 amxb_free_invoke(&invoke_ctx);
188 amxc_var_clean(&args);
189 amxc_var_clean(&ret);
194 amxb_invoke_t* invoke_ctx = NULL;
195 amxb_request_t* req = NULL;
197 amxc_var_init(&args);
199 assert_int_equal(amxb_new_invoke(&invoke_ctx,
bus_ctx,
"NeMo.Intf.lan.", NULL,
"get"), AMXB_STATUS_OK);
201 amxb_free_invoke(&invoke_ctx);
202 amxb_close_request(&req);
204 assert_int_equal(amxb_new_invoke(&invoke_ctx,
bus_ctx,
"NeMo.Intf.lan.", NULL,
"get"), AMXB_STATUS_OK);
206 assert_int_equal(amxb_wait_for_request(req, 5), AMXB_STATUS_OK);
207 amxb_free_invoke(&invoke_ctx);
208 amxb_close_request(&req);
210 assert_int_equal(amxb_new_invoke(&invoke_ctx,
bus_ctx,
"TestObject.", NULL,
"get"), AMXB_STATUS_OK);
212 assert_int_equal(amxb_wait_for_request(req, 5), AMXB_STATUS_OK);
213 amxb_free_invoke(&invoke_ctx);
214 amxb_close_request(&req);
216 amxc_var_clean(&args);
221 amxb_invoke_t* invoke_ctx = NULL;
222 amxb_request_t* req = NULL;
224 amxc_var_init(&args);
226 assert_int_equal(amxb_new_invoke(&invoke_ctx,
bus_ctx,
"NeMo.Intf.lan.", NULL,
"_get"), AMXB_STATUS_OK);
228 amxb_free_invoke(&invoke_ctx);
229 amxb_close_request(&req);
231 assert_int_equal(amxb_new_invoke(&invoke_ctx,
bus_ctx,
"NeMo.Intf.lan.", NULL,
"_get"), AMXB_STATUS_OK);
233 assert_int_equal(amxb_wait_for_request(req, 5), AMXB_STATUS_OK);
234 amxb_free_invoke(&invoke_ctx);
235 amxb_close_request(&req);
237 amxc_var_clean(&args);
244 amxb_invoke_t* invoke_ctx = NULL;
246 amxc_var_init(&args);
249 assert_int_equal(amxb_new_invoke(&invoke_ctx,
bus_ctx,
"NeMo.Intf.lan.", NULL,
"dummy"), AMXB_STATUS_OK);
250 assert_int_not_equal(amxb_invoke(invoke_ctx, &args, &ret, NULL, NULL, 5), AMXB_STATUS_OK);
251 amxc_var_dump(&ret, STDOUT_FILENO);
252 amxb_free_invoke(&invoke_ctx);
253 amxc_var_clean(&args);
254 amxc_var_clean(&ret);
259 amxb_invoke_t* invoke_ctx = NULL;
260 amxb_request_t* req = NULL;
261 int rv = AMXB_STATUS_OK;
263 amxc_var_init(&args);
265 assert_int_equal(amxb_new_invoke(&invoke_ctx,
bus_ctx,
"NeMo.Intf.lan.", NULL,
"dummy"), AMXB_STATUS_OK);
267 rv = amxb_wait_for_request(req, 5);
268 assert_int_not_equal(rv, AMXB_ERROR_BACKEND_FAILED);
269 assert_int_not_equal(rv, AMXB_STATUS_OK);
271 amxb_free_invoke(&invoke_ctx);
272 amxb_close_request(&req);
274 amxc_var_clean(&args);
280 amxb_invoke_t* invoke_ctx = NULL;
282 amxc_var_init(&args);
285 assert_int_equal(amxb_new_invoke(&invoke_ctx,
bus_ctx,
"NeMo.Intf.XDSL.NonExisting.", NULL,
"_get"), AMXB_STATUS_OK);
286 assert_int_not_equal(amxb_invoke(invoke_ctx, &args, &ret, NULL, NULL, 5), AMXB_STATUS_OK);
287 amxc_var_dump(&ret, STDOUT_FILENO);
288 amxb_free_invoke(&invoke_ctx);
289 amxc_var_clean(&args);
290 amxc_var_clean(&ret);
296 amxb_invoke_t* invoke_ctx = NULL;
297 const char* path =
"NeMo.Intf.1.Query.100.";
299 amxc_var_init(&args);
302 assert_int_equal(amxb_new_invoke(&invoke_ctx,
bus_ctx, path, NULL,
"_get"), AMXB_STATUS_OK);
303 assert_int_equal(amxb_invoke(invoke_ctx, &args, &ret, NULL, NULL, 5), AMXB_STATUS_OK);
304 amxc_var_dump(&ret, STDOUT_FILENO);
305 amxb_free_invoke(&invoke_ctx);
307 amxc_var_clean(&args);
308 amxc_var_clean(&ret);
314 amxb_invoke_t* invoke_ctx = NULL;
316 amxc_var_init(&args);
319 assert_int_equal(amxb_new_invoke(&invoke_ctx,
bus_ctx,
"NeMo.Intf.lan.Query.SomeKey.", NULL,
"_get"), AMXB_STATUS_OK);
320 assert_int_equal(amxb_invoke(invoke_ctx, &args, &ret, NULL, NULL, 5), AMXB_STATUS_OK);
321 amxc_var_dump(&ret, STDOUT_FILENO);
322 amxb_free_invoke(&invoke_ctx);
324 amxc_var_clean(&args);
325 amxc_var_clean(&ret);
331 amxb_invoke_t* invoke_ctx = NULL;
333 amxc_var_init(&args);
336 assert_int_equal(amxb_new_invoke(&invoke_ctx,
bus_ctx,
"Does.Not.Exist.", NULL,
"_get"), AMXB_STATUS_OK);
337 assert_int_not_equal(amxb_invoke(invoke_ctx, &args, &ret,
test_ubus_invoke_cb, NULL, 5), AMXB_STATUS_OK);
338 amxc_var_dump(&ret, STDOUT_FILENO);
339 amxb_free_invoke(&invoke_ctx);
341 amxc_var_clean(&args);
342 amxc_var_clean(&ret);
void test_ubus_call_non_existing_function(UNUSED void **state)
static void test_ubus_invoke_done_cb(UNUSED const amxb_bus_ctx_t *bus_ctx, UNUSED amxb_request_t *req, UNUSED int status, UNUSED void *priv)
void test_ubus_invoke_with_cb_function(UNUSED void **state)
static const char * test_amxb_ubus_get_socket(void)
void test_ubus_invoke_amx_with_cb_function_on_non_existing_path(UNUSED void **state)
void test_ubus_async_amx_invoke(UNUSED void **state)
void test_ubus_call_non_existing_function_async(UNUSED void **state)
static amxb_bus_ctx_t * bus_ctx
int test_amxb_ubus_invoke_amx_setup(UNUSED void **state)
void test_ubus_can_call_amx_function(UNUSED void **state)
static void test_ubus_invoke_cb(UNUSED const amxb_bus_ctx_t *bus_ctx, UNUSED const amxc_var_t *const data, UNUSED void *priv)
void test_ubus_call_amx_using_index_path(UNUSED void **state)
void test_ubus_call_function_non_existing_path(UNUSED void **state)
void test_ubus_async_invoke(UNUSED void **state)
void test_ubus_call_amx_using_key_path(UNUSED void **state)
void test_ubus_invoke_amx_with_cb_function(UNUSED void **state)
int test_amxb_ubus_invoke_amx_teardown(UNUSED void **state)