63 #include <amxc/amxc_variant.h>
64 #include <amxc/amxc_htable.h>
65 #include <amxc/amxc_lqueue.h>
67 #include <amxp/amxp_signal.h>
68 #include <amxp/amxp_slot.h>
70 #include <amxd/amxd_dm.h>
77 #include <amxc/amxc_macros.h>
90 UNUSED amxp_signal_mngr_t* sigmngr) {
118 assert_ptr_not_equal(invoke_ctx, NULL);
123 assert_ptr_not_equal(invoke_ctx, NULL);
129 UNUSED amxc_var_t* args,
133 assert_string_equal(invoke_ctx->
object,
"object");
134 assert_string_equal(invoke_ctx->
method,
"method");
135 assert_ptr_not_equal(request, NULL);
136 assert_int_equal(timeout, 10);
142 UNUSED amxc_var_t* args,
145 assert_string_equal(invoke_ctx->
object,
"object");
146 assert_string_equal(invoke_ctx->
method,
"method");
153 UNUSED
int timeout) {
207 assert_int_not_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL,
"method"), 0);
209 assert_int_equal(
amxb_connect(&ctx,
"xbus://test:80/var/run/xbus.sock"), 0);
210 assert_int_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL,
"method"), 0);
211 assert_int_not_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL,
"method"), 0);
214 assert_int_not_equal(
amxb_new_invoke(NULL, NULL,
"object", NULL,
"method"), 0);
215 assert_int_not_equal(
amxb_new_invoke(&invoke_ctx, NULL,
"object", NULL,
"method"), 0);
216 assert_int_not_equal(
amxb_new_invoke(&invoke_ctx, ctx, NULL, NULL, NULL), 0);
217 assert_int_not_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL, NULL), 0);
218 assert_int_not_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"", NULL,
""), 0);
219 assert_int_not_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL,
""), 0);
220 assert_int_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object",
"interface",
"method"), 0);
221 assert_string_equal(invoke_ctx->
object,
"object");
222 assert_string_equal(invoke_ctx->
interface,
"interface");
223 assert_string_equal(invoke_ctx->
method,
"method");
230 assert_int_not_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL,
"method"), 0);
231 assert_ptr_equal(invoke_ctx, NULL);
235 assert_int_not_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL,
"method"), 0);
236 assert_ptr_equal(invoke_ctx, NULL);
251 amxc_var_init(&args);
256 assert_int_equal(
amxb_connect(&ctx,
"xbus://test:80/var/run/xbus.sock"), 0);
257 assert_int_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL,
"method"), 0);
262 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
264 assert_int_not_equal(
amxb_invoke(NULL, NULL, NULL, NULL, NULL, 0), 0);
271 assert_ptr_equal(ctx, NULL);
273 assert_int_equal(
amxb_connect(&ctx,
"zbus://test:80/var/run/zbus.sock"), 0);
274 assert_int_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL,
"method"), 0);
285 assert_int_equal(
amxb_connect(&ctx,
"xbus://test:80/var/run/xbus.sock"), 0);
286 assert_int_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL,
"method()"), 0);
295 amxc_var_clean(&ret);
296 amxc_var_clean(&args);
305 amxc_var_init(&args);
312 assert_int_equal(
amxb_connect(&ctx,
"xbus://test:80/var/run/xbus.sock"), 0);
313 assert_int_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL,
"method"), 0);
316 assert_ptr_not_equal(request, NULL);
321 assert_ptr_equal(request, NULL);
324 assert_ptr_not_equal(request, NULL);
326 assert_ptr_equal(request, NULL);
328 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
330 assert_ptr_not_equal(request, NULL);
332 assert_ptr_equal(request, NULL);
334 assert_int_not_equal(
amxb_async_invoke(NULL, NULL, NULL, NULL, NULL, &request), 0);
335 assert_ptr_equal(request, NULL);
339 assert_ptr_equal(request, NULL);
345 assert_ptr_equal(ctx, NULL);
347 assert_int_equal(
amxb_connect(&ctx,
"abus://atest:8080/var/run/abus.sock"), 0);
348 assert_int_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL,
"method"), 0);
351 assert_int_equal(
amxb_async_invoke(invoke_ctx, NULL, NULL, NULL, NULL, &request), 0);
352 assert_ptr_not_equal(request, NULL);
354 assert_ptr_equal(request, NULL);
359 assert_int_equal(
amxb_connect(&ctx,
"zbus://test:80/var/run/zbus.sock"), 0);
360 assert_int_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL,
"method"), 0);
364 assert_ptr_equal(request, NULL);
367 assert_ptr_equal(request, NULL);
374 amxc_var_clean(&args);
376 assert_int_not_equal(
amxb_async_invoke(invoke_ctx, NULL, NULL, NULL, NULL, &request), 0);
377 assert_ptr_equal(request, NULL);
390 assert_int_equal(
amxb_connect(&ctx,
"xbus://test:80/var/run/xbus.sock"), 0);
391 assert_int_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL,
"method"), 0);
401 assert_ptr_equal(request, NULL);
402 assert_int_not_equal(
amxb_async_invoke(invoke_ctx, NULL, NULL, NULL, NULL, &request), 0);
403 assert_ptr_equal(request, NULL);
404 assert_int_not_equal(
amxb_invoke(invoke_ctx, NULL, NULL, NULL, NULL, 10), 0);
418 assert_int_equal(
amxb_connect(&ctx,
"xbus://atest:8080/var/run/xbus.sock"), 0);
420 assert_int_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL,
"method"), NULL);
421 assert_int_equal(
amxb_async_invoke(invoke_ctx, NULL, NULL, NULL, NULL, &request), 0);
422 assert_ptr_not_equal(request, NULL);
426 assert_ptr_equal(request, NULL);
434 assert_int_equal(
amxb_connect(&ctx,
"abus://atest:8080/var/run/abus.sock"), 0);
436 assert_int_equal(
amxb_new_invoke(&invoke_ctx, ctx,
"object", NULL,
"method"), 0);
437 assert_int_equal(
amxb_async_invoke(invoke_ctx, NULL, NULL, NULL, NULL, &request), 0);
438 assert_ptr_not_equal(request, NULL);
457 assert_int_equal(
amxb_connect(&ctx,
"xbus://atest:8080/var/run/xbus.sock"), 0);
460 assert_non_null(request);
464 assert_ptr_equal(request, NULL);
471 assert_int_equal(
amxb_connect(&ctx,
"abus://atest:8080/var/run/abus.sock"), 0);
474 assert_non_null(request);
Ambiorix bus agnostic API header file.
Ambiorix bus agnostic API header file.
struct _amxb_be_funcs amxb_be_funcs_t
int amxb_be_unregister(amxb_be_funcs_t *const funcs)
Unregisters a backend interface.
int amxb_be_register(amxb_be_funcs_t *const funcs)
Registers backend interface.
int amxb_connect(amxb_bus_ctx_t **ctx, const char *uri)
Create a bus connection.
void amxb_free(amxb_bus_ctx_t **ctx)
Frees allocated memory.
int amxb_get_fd(const amxb_bus_ctx_t *const ctx)
Get the connection file descriptor.
int amxb_disconnect(amxb_bus_ctx_t *ctx)
Disconnects a bus connection.
int amxb_read(const amxb_bus_ctx_t *const ctx)
Reads data from the file descriptor.
#define AMXB_ERROR_NOT_SUPPORTED_OP
Function/operation not supported.
int amxb_wait_for_request(amxb_request_t *req, int timeout)
Waits for an asynchronous remote function invoke to finish.
int amxb_close_request(amxb_request_t **req)
Closes a previously create remote function called context.
int amxb_new_invoke(amxb_invoke_t **invoke_ctx, amxb_bus_ctx_t *const ctx, const char *object, const char *interface, const char *method)
Prepares a remote function invocation.
void amxb_free_invoke(amxb_invoke_t **invoke_ctx)
Deletes a function invoke context, and frees allocated memory.
int amxb_async_invoke(amxb_invoke_t *invoke_ctx, amxc_var_t *args, amxb_be_cb_fn_t fn, amxb_be_done_cb_fn_t done_fn, void *priv, amxb_request_t **req)
Invokes a remote function, as defined by the function invoke context.
int amxb_invoke(amxb_invoke_t *invoke_ctx, amxc_var_t *args, amxc_var_t *ret, amxb_be_cb_fn_t fn, void *priv, int timeout)
Invokes a remote function, as defined by the function invoke context.
amxb_request_t * amxb_async_call(amxb_bus_ctx_t *const bus_ctx, const char *object, const char *method, amxc_var_t *args, amxb_be_done_cb_fn_t done_fn, void *priv)
Invokes a data model function.
The back-end interface structure.
amxb_be_connect_fn_t connect
static amxb_be_funcs_t dummy_be1
static char * dummy_bus_data
static int dummy_wait_request(void *const ctx, amxb_request_t *request, UNUSED int timeout)
static void * dummy_connect(const char *host, const char *port, const char *path, UNUSED amxp_signal_mngr_t *sigmngr)
static char verify_port[64]
static void dummy_free_invoke(amxb_invoke_t *invoke_ctx)
static int dummy_get_fd(void *ctx)
static int dummy_invoke(void *const ctx, amxb_invoke_t *invoke_ctx, UNUSED amxc_var_t *args, amxb_request_t *request, int timeout)
static char verify_host[64]
static amxb_be_funcs_t dummy_be4
static int dummy_new_invoke(amxb_invoke_t *invoke_ctx)
int __wrap_dlclose(void *handle)
void test_amxb_async_call(UNUSED void **state)
static int dummy_disconnect(void *ctx)
static void dummy_free(void *ctx)
void test_amxb_api_after_backend_removal(UNUSED void **state)
void test_amxb_wait_for_request(UNUSED void **state)
static amxb_be_funcs_t dummy_be3
static char verify_path[64]
void test_amxb_async_invoke_and_close(UNUSED void **state)
static int dummy_close_request(void *const ctx, amxb_request_t *request)
void test_amxb_invoke(UNUSED void **state)
void test_amxb_new_free_invoke(UNUSED void **state)
static int dummy_read(void *const ctx)
static int dummy_async_invoke(void *const ctx, amxb_invoke_t *invoke_ctx, UNUSED amxc_var_t *args, amxb_request_t *request)