Skip to content

Commit

Permalink
gh-685: Add error injection test for properties encoding
Browse files Browse the repository at this point in the history
  • Loading branch information
pnoltes committed Apr 14, 2024
1 parent 0ceaeb8 commit 99e503a
Show file tree
Hide file tree
Showing 12 changed files with 403 additions and 66 deletions.
4 changes: 2 additions & 2 deletions conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ def configure(self):
self.options['openssl'].shared = True
if self.options.build_celix_dfi:
self.options['libffi'].shared = True
if self.options.build_celix_dfi or self.options.build_celix_etcdlib:
if self.options.build_utils or self.options.build_celix_dfi or self.options.build_celix_etcdlib:
self.options['jansson'].shared = True

def requirements(self):
Expand All @@ -332,7 +332,7 @@ def requirements(self):
self.requires("civetweb/1.16")
if self.options.build_celix_dfi:
self.requires("libffi/[>=3.2.1 <4.0.0]")
if self.options.build_celix_dfi or self.options.build_celix_etcdlib:
if self.option.build_utils or self.options.build_celix_dfi or self.options.build_celix_etcdlib:
self.requires("jansson/[>=2.12 <3.0.0]")
if self.options.build_rsa_discovery_zeroconf:
# TODO: To be replaced with mdnsresponder/1790.80.10, resolve some problems of mdnsresponder
Expand Down
2 changes: 2 additions & 0 deletions libs/error_injector/jansson/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,7 @@ target_link_options(jansson_ei INTERFACE
LINKER:--wrap,json_integer
LINKER:--wrap,json_string
LINKER:--wrap,json_real
LINKER:--wrap,json_vsprintf
LINKER:--wrap,json_sprintf
)
add_library(Celix::jansson_ei ALIAS jansson_ei)
2 changes: 2 additions & 0 deletions libs/error_injector/jansson/include/jansson_ei.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ CELIX_EI_DECLARE(json_array_append_new, int);
CELIX_EI_DECLARE(json_integer, json_t*);
CELIX_EI_DECLARE(json_string, json_t*);
CELIX_EI_DECLARE(json_real, json_t*);
CELIX_EI_DECLARE(json_vsprintf,json_t*);
CELIX_EI_DECLARE(json_sprintf, json_t*);

#ifdef __cplusplus
}
Expand Down
58 changes: 38 additions & 20 deletions libs/error_injector/jansson/src/jansson_ei.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,69 +23,87 @@

extern "C" {

size_t __real_json_array_size(const json_t *array);
size_t __real_json_array_size(const json_t* array);
CELIX_EI_DEFINE(json_array_size, size_t)
size_t __wrap_json_array_size(const json_t *array) {
size_t __wrap_json_array_size(const json_t* array) {
CELIX_EI_IMPL(json_array_size);
return __real_json_array_size(array);
}

char *__real_json_dumps(const json_t *json, size_t flags);
char* __real_json_dumps(const json_t* json, size_t flags);
CELIX_EI_DEFINE(json_dumps, char*)
char *__wrap_json_dumps(const json_t *json, size_t flags) {
char* __wrap_json_dumps(const json_t* json, size_t flags) {
CELIX_EI_IMPL(json_dumps);
return __real_json_dumps(json, flags);
}

json_t *__real_json_object(void);
json_t* __real_json_object(void);
CELIX_EI_DEFINE(json_object, json_t*)
json_t *__wrap_json_object(void) {
json_t* __wrap_json_object(void) {
CELIX_EI_IMPL(json_object);
return __real_json_object();
}

int __real_json_object_set_new(json_t *object, const char *key, json_t *value);
int __real_json_object_set_new(json_t* object, const char* key, json_t* value);
CELIX_EI_DEFINE(json_object_set_new, int)
int __wrap_json_object_set_new(json_t *object, const char *key, json_t *value) {
json_auto_t *val = value;
int __wrap_json_object_set_new(json_t* object, const char* key, json_t* value) {
json_auto_t* val = value;
CELIX_EI_IMPL(json_object_set_new);
return __real_json_object_set_new(object, key, celix_steal_ptr(val));
}

json_t *__real_json_array(void);
json_t* __real_json_array(void);
CELIX_EI_DEFINE(json_array, json_t*)
json_t *__wrap_json_array(void) {
json_t* __wrap_json_array(void) {
CELIX_EI_IMPL(json_array);
return __real_json_array();
}

int __real_json_array_append_new(json_t *array, json_t *value);
int __real_json_array_append_new(json_t* array, json_t* value);
CELIX_EI_DEFINE(json_array_append_new, int)
int __wrap_json_array_append_new(json_t *array, json_t *value) {
json_auto_t *val = value;
int __wrap_json_array_append_new(json_t* array, json_t* value) {
json_auto_t* val = value;
CELIX_EI_IMPL(json_array_append_new);
return __real_json_array_append_new(array, celix_steal_ptr(val));
}

json_t *__real_json_integer(json_int_t value);
json_t* __real_json_integer(json_int_t value);
CELIX_EI_DEFINE(json_integer, json_t*)
json_t *__wrap_json_integer(json_int_t value) {
json_t* __wrap_json_integer(json_int_t value) {
CELIX_EI_IMPL(json_integer);
return __real_json_integer(value);
}

json_t *__real_json_string(const char *value);
json_t* __real_json_string(const char* value);
CELIX_EI_DEFINE(json_string, json_t*)
json_t *__wrap_json_string(const char *value) {
json_t* __wrap_json_string(const char* value) {
CELIX_EI_IMPL(json_string);
return __real_json_string(value);
}

json_t *__real_json_real(double value);
json_t* __real_json_real(double value);
CELIX_EI_DEFINE(json_real, json_t*)
json_t *__wrap_json_real(double value) {
json_t* __wrap_json_real(double value) {
CELIX_EI_IMPL(json_real);
return __real_json_real(value);
}

json_t* __real_json_vsprintf(const char* fmt, va_list ap);
CELIX_EI_DEFINE(json_vsprintf, json_t*)
json_t* __wrap_json_vsprintf(const char* fmt, va_list ap) {
CELIX_EI_IMPL(json_vsprintf);
return __real_json_vsprintf(fmt, ap);
}

json_t* __real_json_sprintf(const char* fmt, ...);
CELIX_EI_DEFINE(json_sprintf, json_t*)
json_t* __wrap_json_sprintf(const char* fmt, ...) {
CELIX_EI_IMPL(json_sprintf);
va_list args;
va_start(args, fmt);
json_t* obj = __real_json_vsprintf(fmt, args);
va_end(args);
return obj;
}

}
1 change: 1 addition & 0 deletions libs/utils/error_injector/celix_version/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,6 @@ target_link_options(version_ei INTERFACE
LINKER:--wrap,celix_version_createVersionFromString
LINKER:--wrap,celix_version_parse
LINKER:--wrap,celix_version_copy
LINKER:--wrap,celix_version_toString
)
add_library(Celix::version_ei ALIAS version_ei)
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ CELIX_EI_DECLARE(celix_version_parse, celix_status_t);

CELIX_EI_DECLARE(celix_version_copy, celix_version_t*);

CELIX_EI_DECLARE(celix_version_toString, char*);

#ifdef __cplusplus
}
#endif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,11 @@ celix_version_t* __wrap_celix_version_copy(const celix_version_t* version) {
return __real_celix_version_copy(version);
}

char* __real_celix_version_toString(const celix_version_t* version);
CELIX_EI_DEFINE(celix_version_toString, char*);
char* __wrap_celix_version_toString(const celix_version_t* version) {
CELIX_EI_IMPL(celix_version_toString);
return __real_celix_version_toString(version);
}

}
2 changes: 2 additions & 0 deletions libs/utils/gtest/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ if (EI_TESTS)
src/VersionErrorInjectionTestSuite.cc
src/HashMapErrorInjectionTestSuite.cc
src/FilterErrorInjectionTestSuite.cc
src/PropertiesEncodingErrorInjectionTestSuite.cc
)
target_link_libraries(test_utils_with_ei PRIVATE
Celix::zip_ei
Expand All @@ -143,6 +144,7 @@ if (EI_TESTS)
Celix::long_hash_map_ei
Celix::version_ei
Celix::array_list_ei
Celix::jansson_ei
GTest::gtest GTest::gtest_main
)
target_include_directories(test_utils_with_ei PRIVATE ../src) #for version_private (needs refactoring of test)
Expand Down
Loading

0 comments on commit 99e503a

Please sign in to comment.