65 #include <amxc/amxc.h>
66 #include <amxp/amxp_signal.h>
67 #include <amxp/amxp_slot.h>
83 #include <amxc/amxc_macros.h>
87 UNUSED
const amxc_var_t*
const data,
91 if(strcmp(sig_name,
"dm:mib-added") == 0) {
95 if(strcmp(sig_name,
"dm:mib-removed") == 0) {
103 UNUSED
const amxc_var_t*
const args,
104 UNUSED amxc_var_t*
const retval,
107 amxc_var_t* data = (amxc_var_t*) priv;
115 amxc_var_delete(&data);
120 amxc_var_delete(&data);
139 assert_int_equal(
amxd_param_new(¶m,
"Param1", AMXC_VAR_ID_CSTRING), 0);
141 assert_int_equal(
amxd_param_new(¶m,
"Param2", AMXC_VAR_ID_BOOL), 0);
147 assert_int_equal(
amxd_param_new(¶m,
"Param1", AMXC_VAR_ID_CSTRING), 0);
165 assert_ptr_not_equal(mib, NULL);
167 assert_int_equal(
amxd_param_new(¶m,
"MibParam1", AMXC_VAR_ID_UINT32), 0);
171 assert_ptr_not_equal(fetch_mib, NULL);
172 assert_ptr_equal(fetch_mib, mib);
179 assert_ptr_not_equal(mib, NULL);
194 assert_ptr_not_equal(fetch_mib, NULL);
195 assert_ptr_equal(fetch_mib, mib);
203 int* count = (
int*) priv;
219 assert_ptr_not_equal(mib, NULL);
221 assert_int_equal(
amxd_param_new(¶m,
"MibParam1", AMXC_VAR_ID_UINT32), 0);
223 assert_int_equal(
amxd_function_new(&func,
"MibFunc1", AMXC_VAR_ID_NULL, NULL), 0);
240 assert_int_equal(count, 1);
278 assert_ptr_not_equal(mib, NULL);
280 assert_int_equal(
amxd_param_new(¶m,
"MibParam1", AMXC_VAR_ID_UINT32), 0);
282 assert_int_equal(
amxd_function_new(&func,
"MibFunc1", AMXC_VAR_ID_NULL, NULL), 0);
286 assert_int_equal(
amxd_param_new(&instParam,
"InstParam1", AMXC_VAR_ID_UINT32), 0);
308 assert_int_equal(count, 1);
338 assert_ptr_not_equal(mib, NULL);
340 assert_int_equal(
amxd_param_new(¶m,
"MibParam1", AMXC_VAR_ID_UINT32), 0);
345 assert_ptr_not_equal(mib, NULL);
347 assert_int_equal(
amxd_param_new(¶m,
"MibParam2", AMXC_VAR_ID_CSTRING), 0);
393 assert_ptr_not_equal(mib, NULL);
395 assert_int_equal(
amxd_param_new(¶m,
"Param1", AMXC_VAR_ID_UINT32), 0);
416 assert_ptr_not_equal(mib, NULL);
418 assert_int_equal(
amxd_param_new(¶m,
"Param1", AMXC_VAR_ID_UINT32), 0);
434 assert_int_not_equal(
amxd_mib_new(NULL,
"TestMib1"), 0);
464 assert_ptr_not_equal(mib, NULL);
466 assert_int_equal(
amxd_param_new(¶m,
"MibParam1", AMXC_VAR_ID_UINT32), 0);
485 assert_ptr_not_equal(mib, NULL);
487 assert_int_equal(
amxd_param_new(¶m,
"MibParam1", AMXC_VAR_ID_UINT32), 0);
509 assert_ptr_not_equal(mib, NULL);
511 assert_int_equal(
amxd_param_new(¶m,
"MibParam1", AMXC_VAR_ID_UINT32), 0);
533 assert_ptr_not_equal(
object, NULL);
537 assert_ptr_not_equal(mib, NULL);
555 amxc_var_init(&def_val);
556 amxc_var_set(
bool, &def_val,
true);
561 assert_ptr_not_equal(
object, NULL);
565 assert_ptr_not_equal(mib, NULL);
579 assert_non_null(func);
595 amxc_var_t* data = NULL;
599 amxc_var_set(uint32_t, data, 0);
603 assert_ptr_not_equal(
object, NULL);
607 assert_ptr_not_equal(mib, NULL);
609 assert_int_equal(
amxd_param_new(¶m,
"MibParam1", AMXC_VAR_ID_UINT32), 0);
611 assert_int_equal(
amxd_param_new(¶m,
"MibParamB", AMXC_VAR_ID_UINT32), 0);
624 assert_ptr_not_equal(mib, NULL);
626 assert_int_equal(
amxd_param_new(¶m,
"MibParam2", AMXC_VAR_ID_UINT32), 0);
633 assert_non_null(param);
651 assert_ptr_not_equal(mib, NULL);
653 assert_int_equal(
amxd_param_new(¶m,
"MibParam1", AMXC_VAR_ID_UINT32), 0);
655 assert_int_equal(
amxd_param_new(¶m,
"MibParamB", AMXC_VAR_ID_UINT32), 0);
668 assert_non_null(
object);
670 assert_non_null(param);
695 assert_ptr_not_equal(
object, NULL);
698 assert_ptr_not_equal(mib, NULL);
700 assert_int_equal(
amxd_param_new(¶m,
"MibParam1", AMXC_VAR_ID_UINT32), 0);
710 assert_non_null(param);
714 assert_non_null(param);
727 assert_ptr_not_equal(mib, NULL);
729 assert_int_equal(
amxd_param_new(¶m,
"MibParam1", AMXC_VAR_ID_UINT32), 0);
734 assert_ptr_not_equal(mib, NULL);
736 assert_int_equal(
amxd_param_new(¶m,
"MibParam1", AMXC_VAR_ID_UINT32), 0);
763 assert_ptr_not_equal(
object, NULL);
767 assert_ptr_not_equal(mib, NULL);
769 assert_int_equal(
amxd_param_new(¶m,
"MibParam1", AMXC_VAR_ID_UINT32), 0);
774 while(amxp_signal_read() == 0) {
779 while(amxp_signal_read() == 0) {
794 assert_ptr_not_equal(mib, NULL);
796 assert_int_equal(
amxd_param_new(¶m,
"MibParam1", AMXC_VAR_ID_UINT32), 0);
816 amxc_var_t* event = NULL;
821 assert_ptr_not_equal(
object, NULL);
825 assert_ptr_not_equal(mib, NULL);
827 assert_int_equal(
amxd_param_new(¶m,
"MibParam1", AMXC_VAR_ID_UINT32), 0);
840 assert_non_null(event);
843 assert_non_null(
object);
845 assert_non_null(event);
864 amxc_var_init(&args);
869 assert_ptr_not_equal(mib, NULL);
871 assert_int_equal(
amxd_param_new(¶m,
"MParam1", AMXC_VAR_ID_UINT32), 0);
874 assert_int_equal(
amxd_param_new(¶m,
"MParam1", AMXC_VAR_ID_UINT32), 0);
880 assert_ptr_not_equal(
object, NULL);
887 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
888 amxc_var_add_key(cstring_t, &args,
"rel_path",
"TemplObject.TestInstance.TestObj.");
893 amxc_var_clean(&ret);
894 amxc_var_clean(&args);
900 char* mib_names = NULL;
905 assert_ptr_not_equal(mib, NULL);
910 assert_ptr_not_equal(mib, NULL);
915 assert_null(mib_names);
921 assert_non_null(mib_names);
922 assert_string_equal(mib_names,
"TestMib");
929 assert_non_null(mib_names);
930 assert_string_equal(mib_names,
"TestMib TestMib2");
937 assert_non_null(mib_names);
938 assert_string_equal(mib_names,
"TestMib2");
945 assert_null(mib_names);
Ambiorix Data Model Default actions header file.
Ambiorix Data Model API header file.
amxd_status_t amxd_dm_store_mib(amxd_dm_t *const dm, amxd_object_t *const object)
amxd_object_t * amxd_dm_get_mib(amxd_dm_t *const dm, const char *name)
amxd_object_t * amxd_dm_findf(amxd_dm_t *const dm, const char *abs_path,...) __attribute__((format(printf
Ambiorix Data Model RPC methods API header file.
void amxd_mib_delete(amxd_object_t **object)
static amxd_status_t amxd_mib_new(amxd_object_t **object, const char *name)
Ambiorix Data Model API header file.
bool amxd_object_has_action_cb(amxd_object_t *const object, const amxd_action_t reason, amxd_action_fn_t fn)
void amxd_object_set_action_cb_data(amxd_object_t *const object, const amxd_action_t reason, amxd_action_fn_t fn, void *data)
Ambiorix Data Model API header file.
amxd_status_t amxd_param_new(amxd_param_t **param, const char *name, const uint32_t type)
amxd_status_t amxd_param_set_attr(amxd_param_t *param, const amxd_pattr_id_t attr, const bool enable)
amxd_status_t amxd_param_delete(amxd_param_t **param)
bool amxd_param_has_action_cb(amxd_param_t *const param, const amxd_action_t reason, amxd_action_fn_t fn)
void amxd_param_set_action_cb_data(amxd_param_t *const param, const amxd_action_t reason, amxd_action_fn_t fn, void *data)
amxd_status_t amxd_param_add_action_cb(amxd_param_t *const param, const amxd_action_t reason, amxd_action_fn_t fn, void *priv)
Ambiorix Data Model API header file.
amxd_status_t amxd_trans_add_mib(amxd_trans_t *const trans, const char *mib_name)
enum _amxd_action amxd_action_t
enum _amxd_status amxd_status_t
amxd_status_t amxd_dm_add_root_object(amxd_dm_t *const dm, amxd_object_t *const object)
Adds an object to the root of the data model.
amxd_status_t amxd_dm_init(amxd_dm_t *dm)
Initializes a data model structure.
void amxd_dm_clean(amxd_dm_t *dm)
Cleans a data model structure.
amxd_status_t amxd_object_add_event_ext(amxd_object_t *const object, const char *event_name, amxc_var_t *event_data)
Adds an event definition to the object.
amxc_var_t * amxd_object_new_event_data(const amxd_object_t *object, const char *event_name)
Allocates a variant that contains the predefined event data.
amxd_object_t * amxd_object_get_child(const amxd_object_t *object, const char *name)
Get a child of the object.
amxd_object_t * amxd_object_get_root(const amxd_object_t *const object)
Get the data model root.
amxd_object_t * amxd_object_findf(amxd_object_t *object, const char *rel_path,...) __attribute__((format(printf
Find an object in the data model tree, starting from an object.
amxd_dm_t * amxd_object_get_dm(const amxd_object_t *const object)
Get the data model.
void amxd_object_for_all(amxd_object_t *object, const char *rel_spath, amxd_mobject_cb_t fn, void *priv)
Executes a task for all matching objects in an object tree.
amxd_status_t amxd_object_add_object(amxd_object_t *const parent, amxd_object_t *const child)
Adds an object in the data model tree.
bool amxd_object_has_mib(amxd_object_t *object, const char *mib_name)
Checks if a mib has been added to a data model object.
char * amxd_object_get_mibs(amxd_object_t *object)
Get the names of all mibs attached to this object.
amxd_status_t amxd_object_add_mib(amxd_object_t *const object, const char *mib_name)
Adds a mib to an object.
amxd_status_t amxd_object_remove_mib(amxd_object_t *const object, const char *mib_name)
Removes a mib from an object.
amxd_param_t * amxd_object_get_param_def(const amxd_object_t *const object, const char *name)
Gets a parameter definition from an object.
amxd_status_t amxd_object_add_param(amxd_object_t *const object, amxd_param_t *const param)
Adds a parameter definition to an object.
amxd_status_t amxd_object_add_function(amxd_object_t *const object, amxd_function_t *const func)
Adds an RPC method definition to the object definition.
amxd_function_t * amxd_object_get_function(const amxd_object_t *const object, const char *name)
Get the definition of a RPC method from an object.
amxd_status_t amxd_object_invoke_function(amxd_object_t *const object, const char *func_name, amxc_var_t *const args, amxc_var_t *const ret)
Calls an object RPC method.
amxd_status_t amxd_object_set_attr(amxd_object_t *const object, const amxd_oattr_id_t attr, const bool enable)
Sets or unsets an object attribute.
amxd_status_t amxd_object_new_instance(amxd_object_t **object, amxd_object_t *templ, const char *name, uint32_t index, amxc_var_t *values)
Data model object constructor function.
amxd_status_t amxd_object_new(amxd_object_t **object, const amxd_object_type_t type, const char *name)
Data model object constructor function.
void amxd_object_delete(amxd_object_t **object)
Invokes the destroy handler(s) of the object.
static amxd_object_type_t amxd_object_get_type(const amxd_object_t *const object)
Returns the object type.
amxd_status_t amxd_action_param_check_minimum(amxd_object_t *object, amxd_param_t *param, amxd_action_t reason, const amxc_var_t *const args, amxc_var_t *const retval, void *priv)
Default check minimum parameter validate action implementation.
amxd_status_t amxd_function_set_attr(amxd_function_t *func, const amxd_fattr_id_t attr, const bool enable)
Sets or unsets a method attribute.
void amxd_function_delete(amxd_function_t **func)
Data model RPC method destructor function.
amxd_status_t amxd_function_arg_set_attr(amxd_function_t *const func, const char *name, const amxd_aattr_id_t attr, const bool enable)
Sets or unsets a method argument attribute.
bool amxd_function_arg_is_attr_set(const amxd_function_t *const func, const char *name, const amxd_aattr_id_t attr)
Checks if a method argument attribute is set.
amxd_status_t amxd_function_new(amxd_function_t **func, const char *name, const uint32_t ret_type, amxd_object_fn_t impl)
Data model RPC method constructor function.
amxd_status_t amxd_function_new_arg(amxd_function_t *func, const char *name, const uint32_t type, amxc_var_t *default_value)
Adds an argument definition to a RPC method definition.
void amxd_trans_dump(const amxd_trans_t *const trans, const int fd, const bool reverse)
Dumps the transaction to a file descriptor.
void amxd_trans_clean(amxd_trans_t *const trans)
Cleans the transaction object.
amxd_status_t amxd_trans_apply(amxd_trans_t *const trans, amxd_dm_t *const dm)
Applies all previously added actions.
#define amxd_trans_set_value(type, trans, name, value)
Helper macro for setting a value.
amxd_status_t amxd_trans_add_inst(amxd_trans_t *const trans, const uint32_t index, const char *name)
Adds an instance add action to a transaction.
amxd_status_t amxd_trans_select_pathf(amxd_trans_t *const trans, const char *path,...) __attribute__((format(printf
Selects an object using a absolute or relative path.
amxd_status_t amxd_trans_init(amxd_trans_t *const trans)
Initializes a transaction object.
amxp_signal_mngr_t sigmngr
void test_get_root_of_mib_is_null(UNUSED void **state)
void test_add_mib_to_instance(UNUSED void **state)
void test_can_add_multiple_mibs(UNUSED void **state)
static void test_event_handler(const char *const sig_name, UNUSED const amxc_var_t *const data, void *const priv)
void test_add_mib_function_inherits_argument_attrs(UNUSED void **state)
void test_can_add_remove_mib_to_from_object(UNUSED void **state)
void test_set_attrs_on_mib_fails(UNUSED void **state)
void test_object_get_mibs(UNUSED void **state)
void test_can_add_remove_mib_to_from_object2(UNUSED void **state)
void test_add_mib_fails_when_object_not_in_dm(UNUSED void **state)
void test_add_mib_using_transaction(UNUSED void **state)
void test_add_mib_to_object_fails_when_leads_to_function_duplicate(UNUSED void **state)
void test_add_mib_object_can_be_read_using_name_path(UNUSED void **state)
void test_can_fetch_dm_from_mib(UNUSED void **state)
void test_mib_events(UNUSED void **state)
void test_functions_check_input_args(UNUSED void **state)
void test_add_mib_to_template(UNUSED void **state)
static int count_objects(UNUSED amxd_object_t *templ, UNUSED amxd_object_t *obj, void *priv)
void test_mib_not_removed_when_not_added(UNUSED void **state)
static amxd_status_t test_mib_cleanup_data(amxd_object_t *const object, amxd_param_t *const param, amxd_action_t reason, UNUSED const amxc_var_t *const args, UNUSED amxc_var_t *const retval, void *priv)
void test_add_mib_can_override_function(UNUSED void **state)
void test_can_define_and_store_mib(UNUSED void **state)
void test_add_mib_fails_when_duplicates(UNUSED void **state)
static amxd_object_t * test_build_dm(void)
void test_can_declare_event_in_mib(UNUSED void **state)
static amxd_status_t status