libamxb  4.8.2
Bus Agnostic C API
test_amxb_ba_connect.c File Reference
#include <stdlib.h>
#include <stdarg.h>
#include <stddef.h>
#include <string.h>
#include <unistd.h>
#include <setjmp.h>
#include <cmocka.h>
#include <amxc/amxc_variant.h>
#include <amxc/amxc_htable.h>
#include <amxc/amxc_lqueue.h>
#include <amxp/amxp_signal.h>
#include <amxp/amxp_slot.h>
#include <amxd/amxd_dm.h>
#include <amxb/amxb_be.h>
#include <amxb/amxb.h>
#include "test_amxb_ba_connect.h"
#include <amxc/amxc_macros.h>

Go to the source code of this file.

Functions

int __wrap_dlclose (void *handle)
 
static void * dummy_connect (const char *host, const char *port, const char *path, UNUSED amxp_signal_mngr_t *sigmngr)
 
static int dummy_disconnect (void *ctx)
 
static void * dummy_accept (UNUSED void *ctx, UNUSED amxp_signal_mngr_t *sigmngr)
 
static int dummy_get_fd (void *ctx)
 
static void dummy_free (void *ctx)
 
static int dummy_read (void *const ctx)
 
static int dummy_read_raw (void *const ctx, UNUSED void *buf, UNUSED size_t size)
 
int __wrap_dlclose (UNUSED void *handle)
 
void test_amxb_connect (UNUSED void **state)
 
void test_amxb_listen (UNUSED void **state)
 
void test_amxb_accept (UNUSED void **state)
 
void test_amxb_disconnect (UNUSED void **state)
 
void test_amxb_get_fd (UNUSED void **state)
 
void test_amxb_read (UNUSED void **state)
 
void test_amxb_find_uris (UNUSED void **state)
 
void test_amxb_list_uris (UNUSED void **state)
 
void test_amxb_read_raw (UNUSED void **state)
 

Variables

static char * dummy_ctx = "xbus"
 
static char verify_host [64]
 
static char verify_port [64]
 
static char verify_path [64]
 
static int return_val
 
static amxb_be_funcs_t dummy_be1
 
static amxb_be_funcs_t dummy_be2
 
static amxb_be_funcs_t dummy_be3
 

Function Documentation

◆ __wrap_dlclose() [1/2]

int __wrap_dlclose ( UNUSED void *  handle)

Definition at line 153 of file test_amxb_ba_connect.c.

153  {
154  return 0;
155 }

◆ __wrap_dlclose() [2/2]

int __wrap_dlclose ( void *  handle)

◆ dummy_accept()

static void* dummy_accept ( UNUSED void *  ctx,
UNUSED amxp_signal_mngr_t *  sigmngr 
)
static

Definition at line 106 of file test_amxb_ba_connect.c.

106  {
107  return dummy_ctx;
108 }
static char * dummy_ctx

◆ dummy_connect()

static void* dummy_connect ( const char *  host,
const char *  port,
const char *  path,
UNUSED amxp_signal_mngr_t *  sigmngr 
)
static

Definition at line 86 of file test_amxb_ba_connect.c.

89  {
90  if(host != NULL) {
91  strcpy(verify_host, host);
92  }
93  if(port != NULL) {
94  strcpy(verify_port, port);
95  }
96  strcpy(verify_path, path);
97 
98  return dummy_ctx;
99 }
static char verify_port[64]
static char verify_host[64]
static char verify_path[64]

◆ dummy_disconnect()

static int dummy_disconnect ( void *  ctx)
static

Definition at line 101 of file test_amxb_ba_connect.c.

101  {
102  assert_ptr_equal(ctx, dummy_ctx);
103  return return_val;
104 }
static int return_val

◆ dummy_free()

static void dummy_free ( void *  ctx)
static

Definition at line 115 of file test_amxb_ba_connect.c.

115  {
116  assert_ptr_equal(ctx, dummy_ctx);
117 }

◆ dummy_get_fd()

static int dummy_get_fd ( void *  ctx)
static

Definition at line 110 of file test_amxb_ba_connect.c.

110  {
111  assert_ptr_equal(ctx, dummy_ctx);
112  return return_val;
113 }

◆ dummy_read()

static int dummy_read ( void *const  ctx)
static

Definition at line 119 of file test_amxb_ba_connect.c.

119  {
120  assert_ptr_equal(ctx, dummy_ctx);
121  return return_val;
122 }

◆ dummy_read_raw()

static int dummy_read_raw ( void *const  ctx,
UNUSED void *  buf,
UNUSED size_t  size 
)
static

Definition at line 124 of file test_amxb_ba_connect.c.

124  {
125  assert_ptr_equal(ctx, dummy_ctx);
126  return return_val;
127 }

◆ test_amxb_accept()

void test_amxb_accept ( UNUSED void **  state)

Definition at line 209 of file test_amxb_ba_connect.c.

209  {
210  amxb_bus_ctx_t* lctx = NULL;
211  amxb_bus_ctx_t* actx = NULL;
212  assert_int_equal(amxb_be_register(&dummy_be1), 0);
213 
214  dummy_ctx = "xbus";
215  assert_int_equal(amxb_listen(&lctx, "xbus:/tmp/test.sock"), 0);
216  assert_int_equal(amxb_accept(lctx, &actx), 0);
217  assert_ptr_not_equal(actx, NULL);
218  assert_int_equal(amxb_disconnect(actx), 0);
219  assert_int_equal(amxb_disconnect(lctx), 0);
220  amxb_free(&lctx);
221  amxb_free(&actx);
222 
223  assert_int_equal(amxb_be_unregister(&dummy_be1), 0);
224 }
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_accept(amxb_bus_ctx_t *listen_ctx, amxb_bus_ctx_t **accepted_ctx)
Accepts an incomming connection request.
int amxb_listen(amxb_bus_ctx_t **ctx, const char *uri)
Create a listen socket.
void amxb_free(amxb_bus_ctx_t **ctx)
Frees allocated memory.
int amxb_disconnect(amxb_bus_ctx_t *ctx)
Disconnects a bus connection.
static amxb_be_funcs_t dummy_be1

◆ test_amxb_connect()

void test_amxb_connect ( UNUSED void **  state)

Definition at line 157 of file test_amxb_ba_connect.c.

157  {
158  amxb_bus_ctx_t* ctx = NULL;
159  assert_int_equal(amxb_be_register(&dummy_be1), 0);
160  assert_int_equal(amxb_be_register(&dummy_be2), 0);
161 
162  assert_int_equal(amxb_connect(&ctx, "xbus://ipc:[/var/run/test.sock]"), AMXB_ERROR_INVALID_URI);
163  assert_int_equal(amxb_connect(&ctx, "rommmel/test"), AMXB_ERROR_INVALID_URI);
164  assert_int_equal(amxb_connect(NULL, "xbus://test:80/var/run/xbus.sock"), -1);
165  assert_int_equal(amxb_connect(&ctx, "fake://test:80/var/run/fake.sock"), AMXB_ERROR_NOT_SUPPORTED_SCHEME);
166  assert_ptr_equal(ctx, NULL);
167 
168  assert_int_equal(amxb_connect(&ctx, "ybus://test:80/var/run/ybus.sock"), AMXB_ERROR_NOT_SUPPORTED_OP);
169  assert_ptr_equal(ctx, NULL);
170 
171  dummy_ctx = NULL;
172  assert_int_equal(amxb_connect(&ctx, "xbus://test:80/var/run/xbus.sock"), AMXB_ERROR_BACKEND_FAILED);
173  dummy_ctx = "xbus";
174  assert_int_equal(amxb_connect(&ctx, "xbus://test:80/var/run/xbus.sock"), 0);
175  assert_ptr_not_equal(ctx, NULL);
176  assert_string_equal(verify_host, "test");
177  assert_string_equal(verify_port, "80");
178  assert_string_equal(verify_path, "/var/run/xbus.sock");
179  assert_int_not_equal(amxb_connect(&ctx, "xbus://test:80/var/run/xbus.sock"), 0);
180  assert_int_equal(amxb_disconnect(ctx), 0);
181  amxb_free(&ctx);
182 
183  assert_int_equal(amxb_connect(&ctx, "xbus://test:80/var/run/xbus.sock"), 0);
184  assert_int_equal(amxb_be_unregister(&dummy_be1), 0);
185  ctx = NULL;
186  assert_int_not_equal(amxb_disconnect(ctx), 0);
187  amxb_free(&ctx);
188  assert_ptr_equal(ctx, NULL);
189  amxb_free(&ctx);
190  amxb_free(NULL);
191 
192  assert_int_equal(amxb_be_unregister(&dummy_be2), 0);
193 }
int amxb_connect(amxb_bus_ctx_t **ctx, const char *uri)
Create a bus connection.
#define AMXB_ERROR_BACKEND_FAILED
Back-end failed.
Definition: amxb_error.h:128
#define AMXB_ERROR_NOT_SUPPORTED_OP
Function/operation not supported.
Definition: amxb_error.h:110
#define AMXB_ERROR_NOT_SUPPORTED_SCHEME
URI scheme not supported.
Definition: amxb_error.h:104
#define AMXB_ERROR_INVALID_URI
Invalid URI.
Definition: amxb_error.h:98
static amxb_be_funcs_t dummy_be2

◆ test_amxb_disconnect()

void test_amxb_disconnect ( UNUSED void **  state)

Definition at line 226 of file test_amxb_ba_connect.c.

226  {
227  amxb_bus_ctx_t* ctx = NULL;
228  assert_int_equal(amxb_be_register(&dummy_be1), 0);
229  assert_int_equal(amxb_be_register(&dummy_be3), 0);
230 
231  assert_int_not_equal(amxb_disconnect(NULL), 0);
232 
233  assert_int_equal(amxb_connect(&ctx, "xbus://test:80/var/run/xbus.sock"), 0);
234  assert_ptr_not_equal(ctx, NULL);
235  assert_int_equal(amxb_disconnect(ctx), 0);
236  amxb_free(&ctx);
237 
238  assert_ptr_equal(ctx, NULL);
239  assert_int_not_equal(amxb_disconnect(ctx), 0);
240  assert_ptr_equal(ctx, NULL);
241 
242  assert_int_equal(amxb_connect(&ctx, "zbus://test:80/var/run/zbus.sock"), 0);
243  assert_ptr_not_equal(ctx, NULL);
244  assert_int_not_equal(amxb_disconnect(ctx), 0);
245  assert_ptr_not_equal(ctx, NULL);
246  amxb_free(&ctx);
247  assert_ptr_equal(ctx, NULL);
248 
249  assert_int_equal(amxb_be_unregister(&dummy_be1), 0);
250  assert_int_equal(amxb_be_unregister(&dummy_be3), 0);
251 }
static amxb_be_funcs_t dummy_be3

◆ test_amxb_find_uris()

void test_amxb_find_uris ( UNUSED void **  state)

Definition at line 311 of file test_amxb_ba_connect.c.

311  {
312  amxb_bus_ctx_t* ctx1 = NULL;
313  amxb_bus_ctx_t* ctx2 = NULL;
314  assert_int_equal(amxb_be_register(&dummy_be1), 0);
315  assert_int_equal(amxb_be_register(&dummy_be3), 0);
316 
317  assert_int_equal(amxb_connect(&ctx1, "xbus://test:80/var/run/xbus.sock"), 0);
318  assert_int_equal(amxb_connect(&ctx2, "zbus://test:80/var/run/zbus.sock"), 0);
319 
320  assert_ptr_equal(amxb_find_uri("xbus://test:80/var/run/xbus.sock"), ctx1);
321  assert_ptr_equal(amxb_find_uri("zbus://test:80/var/run/zbus.sock"), ctx2);
322  assert_ptr_equal(amxb_find_uri("ybus://test:80/var/run/ybus.sock"), NULL);
323 
324  amxb_free(&ctx1);
325  amxb_free(&ctx2);
326 
327  assert_ptr_equal(amxb_find_uri("xbus://test:80/var/run/xbus.sock"), NULL);
328  assert_ptr_equal(amxb_find_uri("zbus://test:80/var/run/zbus.sock"), NULL);
329  assert_ptr_equal(amxb_find_uri("ybus://test:80/var/run/ybus.sock"), NULL);
330 
331 
332  assert_int_equal(amxb_be_unregister(&dummy_be1), 0);
333  assert_int_equal(amxb_be_unregister(&dummy_be3), 0);
334 }
amxb_bus_ctx_t * amxb_find_uri(const char *uri)
Find the bus context for a given uri.

◆ test_amxb_get_fd()

void test_amxb_get_fd ( UNUSED void **  state)

Definition at line 253 of file test_amxb_ba_connect.c.

253  {
254  amxb_bus_ctx_t* ctx = NULL;
255  assert_int_equal(amxb_be_register(&dummy_be1), 0);
256  assert_int_equal(amxb_be_register(&dummy_be3), 0);
257 
258  assert_int_not_equal(amxb_get_fd(NULL), 0);
259 
260  assert_int_equal(amxb_connect(&ctx, "xbus://test:80/var/run/xbus.sock"), 0);
261  return_val = STDIN_FILENO;
262  assert_int_equal(amxb_get_fd(ctx), return_val);
263  return_val = -1;
264  assert_int_equal(amxb_get_fd(ctx), return_val);
265  return_val = 0;
266  assert_int_equal(amxb_disconnect(ctx), 0);
267  amxb_free(&ctx);
268 
269  return_val = 0;
270  assert_int_equal(amxb_connect(&ctx, "zbus://test:80/var/run/zbus.sock"), 0);
271  return_val = STDIN_FILENO;
272  assert_int_equal(amxb_get_fd(ctx), -1);
273  return_val = 0;
274  assert_int_not_equal(amxb_disconnect(ctx), 0);
275  amxb_free(&ctx);
276 
277  return_val = 0;
278  assert_int_equal(amxb_be_unregister(&dummy_be1), 0);
279  assert_int_equal(amxb_be_unregister(&dummy_be3), 0);
280 }
int amxb_get_fd(const amxb_bus_ctx_t *const ctx)
Get the connection file descriptor.

◆ test_amxb_list_uris()

void test_amxb_list_uris ( UNUSED void **  state)

Definition at line 336 of file test_amxb_ba_connect.c.

336  {
337  amxb_bus_ctx_t* ctx1 = NULL;
338  amxb_bus_ctx_t* ctx2 = NULL;
339  amxc_array_t* array = NULL;
340  assert_int_equal(amxb_be_register(&dummy_be1), 0);
341  assert_int_equal(amxb_be_register(&dummy_be3), 0);
342 
343  assert_int_equal(amxb_connect(&ctx1, "xbus://test:80/var/run/xbus.sock"), 0);
344  assert_int_equal(amxb_connect(&ctx2, "zbus://test:80/var/run/zbus.sock"), 0);
345 
346  array = amxb_list_uris();
347  assert_int_equal(amxc_array_size(array), 2);
348  amxc_array_delete(&array, NULL);
349 
350  amxb_free(&ctx1);
351  amxb_free(&ctx2);
352 
353  array = amxb_list_uris();
354  assert_int_equal(amxc_array_size(array), 0);
355  amxc_array_delete(&array, NULL);
356 
357  assert_int_equal(amxb_be_unregister(&dummy_be1), 0);
358  assert_int_equal(amxb_be_unregister(&dummy_be3), 0);
359 }
amxc_array_t * amxb_list_uris(void)
List all open connections by their uri.

◆ test_amxb_listen()

void test_amxb_listen ( UNUSED void **  state)

Definition at line 195 of file test_amxb_ba_connect.c.

195  {
196  amxb_bus_ctx_t* ctx = NULL;
197  assert_int_equal(amxb_be_register(&dummy_be1), 0);
198 
199  dummy_ctx = "xbus";
200  assert_int_equal(amxb_listen(&ctx, "xbus:/tmp/test.sock"), 0);
201  assert_ptr_not_equal(ctx, NULL);
202  assert_string_equal(verify_path, "/tmp/test.sock");
203  assert_int_equal(amxb_disconnect(ctx), 0);
204  amxb_free(&ctx);
205 
206  assert_int_equal(amxb_be_unregister(&dummy_be1), 0);
207 }

◆ test_amxb_read()

void test_amxb_read ( UNUSED void **  state)

Definition at line 282 of file test_amxb_ba_connect.c.

282  {
283  amxb_bus_ctx_t* ctx = NULL;
284  assert_int_equal(amxb_be_register(&dummy_be1), 0);
285  assert_int_equal(amxb_be_register(&dummy_be3), 0);
286 
287  assert_int_equal(amxb_connect(&ctx, "xbus://test:80/var/run/xbus.sock"), 0);
288  return_val = 0;
289  assert_int_equal(amxb_read(ctx), return_val);
290  return_val = -1;
291  assert_int_equal(amxb_read(ctx), return_val);
292  return_val = 0;
293  assert_int_equal(amxb_disconnect(ctx), 0);
294  amxb_free(&ctx);
295  assert_ptr_equal(ctx, NULL);
296 
297  assert_int_equal(amxb_connect(&ctx, "zbus://test:80/var/run/zbus.sock"), 0);
298  return_val = 0;
299  assert_int_equal(amxb_read(ctx), -1);
300  return_val = -1;
301  assert_int_equal(amxb_read(ctx), -1);
302  return_val = 0;
303  amxb_free(&ctx);
304 
305  assert_int_equal(amxb_be_unregister(&dummy_be1), 0);
306  assert_int_equal(amxb_be_unregister(&dummy_be3), 0);
307 
308  assert_int_not_equal(amxb_read(NULL), 0);
309 }
int amxb_read(const amxb_bus_ctx_t *const ctx)
Reads data from the file descriptor.

◆ test_amxb_read_raw()

void test_amxb_read_raw ( UNUSED void **  state)

Definition at line 361 of file test_amxb_ba_connect.c.

361  {
362  amxb_bus_ctx_t* ctx = NULL;
363  char* buffer[100];
364  assert_int_equal(amxb_be_register(&dummy_be1), 0);
365  assert_int_equal(amxb_be_register(&dummy_be3), 0);
366 
367  assert_int_equal(amxb_connect(&ctx, "xbus://test:80/var/run/xbus.sock"), 0);
368  return_val = 100;
369  assert_int_equal(amxb_read_raw(ctx, buffer, 100), return_val);
370  assert_int_equal(amxb_read_raw(ctx, NULL, 100), -1);
371  assert_int_equal(amxb_read_raw(ctx, buffer, 0), -1);
372  return_val = -1;
373  assert_int_equal(amxb_read_raw(ctx, buffer, 100), return_val);
374  return_val = 0;
375  assert_int_equal(amxb_disconnect(ctx), 0);
376  amxb_free(&ctx);
377  assert_ptr_equal(ctx, NULL);
378 
379  assert_int_equal(amxb_connect(&ctx, "zbus://test:80/var/run/zbus.sock"), 0);
380  return_val = 0;
381  assert_int_equal(amxb_read_raw(ctx, buffer, 100), -1);
382  return_val = -1;
383  assert_int_equal(amxb_read_raw(ctx, buffer, 100), -1);
384  return_val = 0;
385  amxb_free(&ctx);
386 
387  assert_int_equal(amxb_be_unregister(&dummy_be1), 0);
388  assert_int_equal(amxb_be_unregister(&dummy_be3), 0);
389 
390  assert_int_equal(amxb_read_raw(NULL, buffer, 100), -1);
391 }
int amxb_read_raw(const amxb_bus_ctx_t *const ctx, void *buf, size_t count)
Attempts to read up to count bytes from the file descriptor into the buffer starting at buf.

Variable Documentation

◆ dummy_be1

amxb_be_funcs_t dummy_be1
static
Initial value:
= {
.connect = dummy_connect,
.disconnect = dummy_disconnect,
.listen = dummy_connect,
.accept = dummy_accept,
.get_fd = dummy_get_fd,
.read = dummy_read,
.read_raw = dummy_read_raw,
.free = dummy_free,
.name = "xbus",
.size = sizeof(amxb_be_funcs_t),
}
struct _amxb_be_funcs amxb_be_funcs_t
Definition: amxb_types.h:79
static int dummy_read_raw(void *const ctx, UNUSED void *buf, UNUSED size_t size)
static void * dummy_connect(const char *host, const char *port, const char *path, UNUSED amxp_signal_mngr_t *sigmngr)
static int dummy_get_fd(void *ctx)
static void * dummy_accept(UNUSED void *ctx, UNUSED amxp_signal_mngr_t *sigmngr)
static int dummy_disconnect(void *ctx)
static void dummy_free(void *ctx)
static int dummy_read(void *const ctx)

Definition at line 129 of file test_amxb_ba_connect.c.

◆ dummy_be2

amxb_be_funcs_t dummy_be2
static
Initial value:
= {
.size = sizeof(amxb_be_funcs_t),
.name = "ybus",
}

Definition at line 142 of file test_amxb_ba_connect.c.

◆ dummy_be3

amxb_be_funcs_t dummy_be3
static
Initial value:
= {
.size = sizeof(amxb_be_funcs_t),
.name = "zbus",
}
auto connect
Definition: test.odl:65

Definition at line 147 of file test_amxb_ba_connect.c.

◆ dummy_ctx

char* dummy_ctx = "xbus"
static

Definition at line 78 of file test_amxb_ba_connect.c.

◆ return_val

int return_val
static

Definition at line 82 of file test_amxb_ba_connect.c.

◆ verify_host

char verify_host[64]
static

Definition at line 79 of file test_amxb_ba_connect.c.

◆ verify_path

char verify_path[64]
static

Definition at line 81 of file test_amxb_ba_connect.c.

◆ verify_port

char verify_port[64]
static

Definition at line 80 of file test_amxb_ba_connect.c.