From 155f467b361e78387323565ff0d72c02fc72ba1e Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Thu, 18 Apr 2024 16:00:57 +0200 Subject: [PATCH] add config for heartbeat --- src/kds_s2000w_config.c | 4 ++++ src/kds_s2000w_config.h | 1 + tests/kds_s2000w_read_config_tests.c | 30 ++++++++++++++++++++++++ tests/kds_s2000w_read_config_tests.h | 2 ++ tests/kds_s2000w_read_config_tests_run.c | 4 +++- 5 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/kds_s2000w_config.c b/src/kds_s2000w_config.c index d50b081..46f497d 100644 --- a/src/kds_s2000w_config.c +++ b/src/kds_s2000w_config.c @@ -36,6 +36,7 @@ void load_config(program_config* config, const char* config_stream) { config->scanner_url = NULL; config->username = NULL; + config->heartbeat = 2; cfg_t* cfg = NULL; char* value_str = NULL; @@ -48,6 +49,7 @@ void load_config(program_config* config, const char* config_stream) cfg_opt_t opts[] = { CFG_STR("username", "", CFGF_NONE), CFG_STR("scanner_url", "", CFGF_NONE), + CFG_INT("heartbeat_seconds", 2, CFGF_NONE), CFG_END() }; @@ -65,6 +67,8 @@ void load_config(program_config* config, const char* config_stream) config->username = malloc(sizeof(char) * str_length); memcpy(config->username, value_str, str_length); + config->heartbeat = cfg_getint(cfg, "heartbeat_seconds"); + cfg_free(cfg); cfg = NULL; } \ No newline at end of file diff --git a/src/kds_s2000w_config.h b/src/kds_s2000w_config.h index 8eadc7f..918c5ef 100644 --- a/src/kds_s2000w_config.h +++ b/src/kds_s2000w_config.h @@ -4,6 +4,7 @@ typedef struct { char* scanner_url; char* username; + unsigned int heartbeat; } program_config; char* read_config_file(const char* filename); diff --git a/tests/kds_s2000w_read_config_tests.c b/tests/kds_s2000w_read_config_tests.c index 04842a7..fe6e642 100644 --- a/tests/kds_s2000w_read_config_tests.c +++ b/tests/kds_s2000w_read_config_tests.c @@ -84,6 +84,36 @@ void kds_s2000w_config_read_empty_config() assert_null(config->scanner_url); + free(config->scanner_url); + config->scanner_url = NULL; + free(config->username); + config->username = NULL; + free(config); + config = NULL; +} + +void kds_s200w_config_default_heartbeat() +{ + const char* input_stream = ""; + + program_config* config = malloc(sizeof(program_config)); + load_config(config, input_stream); + + assert_int_equal(config->heartbeat, 2); + + free(config); + config = NULL; +} + +void kds_s200w_config_default_heartbeat_five_seconds() +{ + const char* input_stream = "heartbeat_seconds = 5\n"; + + program_config* config = malloc(sizeof(program_config)); + load_config(config, input_stream); + + assert_int_equal(config->heartbeat, 5); + free(config->scanner_url); config->scanner_url = NULL; free(config->username); diff --git a/tests/kds_s2000w_read_config_tests.h b/tests/kds_s2000w_read_config_tests.h index 68d91a7..cfaf759 100644 --- a/tests/kds_s2000w_read_config_tests.h +++ b/tests/kds_s2000w_read_config_tests.h @@ -10,5 +10,7 @@ void kds_s2000w_config_read_parameter(); void kds_s2000w_config_read_parameters_without_trim(); void kds_s2000w_config_multiple_parameters(); void kds_s2000w_config_read_empty_config(); +void kds_s200w_config_default_heartbeat(); +void kds_s200w_config_default_heartbeat_five_seconds(); #endif \ No newline at end of file diff --git a/tests/kds_s2000w_read_config_tests_run.c b/tests/kds_s2000w_read_config_tests_run.c index 6f99f31..5a213ce 100644 --- a/tests/kds_s2000w_read_config_tests_run.c +++ b/tests/kds_s2000w_read_config_tests_run.c @@ -6,7 +6,9 @@ int main() cmocka_unit_test(kds_s2000w_config_read_parameter), cmocka_unit_test(kds_s2000w_config_read_parameters_without_trim), cmocka_unit_test(kds_s2000w_config_multiple_parameters), - cmocka_unit_test(kds_s2000w_config_read_empty_config) + cmocka_unit_test(kds_s2000w_config_read_empty_config), + cmocka_unit_test(kds_s200w_config_default_heartbeat), + cmocka_unit_test(kds_s200w_config_default_heartbeat_five_seconds) }; return cmocka_run_group_tests(read_config, NULL, NULL); -- 2.39.5