Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorArtjoms Rimdjonoks <artjoms.rimdjonoks@zabbix.com>2022-01-19 22:44:36 +0300
committerArtjoms Rimdjonoks <artjoms.rimdjonoks@zabbix.com>2022-01-19 22:44:36 +0300
commitdeb893fe94e7947a4a47d339af4fbd97d3b78bf6 (patch)
treeae0f2dea41f1d8134eb14190468631ef6395ca24 /tests
parentb8c997fc55dcba7dc1cbe3fcb03ac1c77f76f709 (diff)
parentc65aededf27877c5658473dbfa536b5cb1f70472 (diff)
.......... [DEV-2062] removed duplicates from vc tests
Diffstat (limited to 'tests')
-rw-r--r--tests/libs/zbxcomms/zbx_tcp_check_allowed_peers.c1
-rw-r--r--tests/libs/zbxdbcache/Makefile.am3
-rw-r--r--tests/libs/zbxdbcache/zbx_vc_add_values.c146
-rw-r--r--tests/libs/zbxdbcache/zbx_vc_common.c187
-rw-r--r--tests/libs/zbxdbcache/zbx_vc_common.h47
-rw-r--r--tests/libs/zbxdbcache/zbx_vc_get_value.c160
-rw-r--r--tests/libs/zbxdbcache/zbx_vc_get_values.c152
-rw-r--r--tests/zbxmocktest.h2
8 files changed, 299 insertions, 399 deletions
diff --git a/tests/libs/zbxcomms/zbx_tcp_check_allowed_peers.c b/tests/libs/zbxcomms/zbx_tcp_check_allowed_peers.c
index 83684cf51cf..9496bf3d127 100644
--- a/tests/libs/zbxcomms/zbx_tcp_check_allowed_peers.c
+++ b/tests/libs/zbxcomms/zbx_tcp_check_allowed_peers.c
@@ -41,6 +41,7 @@ static void mock_accept(zbx_socket_t *s)
break;
default:
fail_msg("Unexpected family");
+ return;
}
if (1 != inet_pton(s->peer_info.ss_family, (peer = zbx_mock_get_parameter_string("in.peer")), buf))
diff --git a/tests/libs/zbxdbcache/Makefile.am b/tests/libs/zbxdbcache/Makefile.am
index 2eadda645b8..bf2ae2c9bc4 100644
--- a/tests/libs/zbxdbcache/Makefile.am
+++ b/tests/libs/zbxdbcache/Makefile.am
@@ -98,6 +98,7 @@ COMMON_WRAP_FUNCS = \
-Wl,--wrap=time
zbx_vc_get_values_SOURCES = \
+ zbx_vc_common.c \
zbx_vc_get_values.c \
@top_srcdir@/src/libs/zbxdbcache/valuecache.c \
@top_srcdir@/src/libs/zbxhistory/history.c \
@@ -113,6 +114,7 @@ zbx_vc_get_values_CFLAGS = \
-I@top_srcdir@/tests
zbx_vc_add_values_SOURCES = \
+ zbx_vc_common.c \
zbx_vc_add_values.c \
@top_srcdir@/src/libs/zbxdbcache/valuecache.c \
@top_srcdir@/src/libs/zbxhistory/history.c \
@@ -128,6 +130,7 @@ zbx_vc_add_values_CFLAGS = \
-I@top_srcdir@/tests
zbx_vc_get_value_SOURCES = \
+ zbx_vc_common.c \
zbx_vc_get_value.c \
@top_srcdir@/src/libs/zbxdbcache/valuecache.c \
@top_srcdir@/src/libs/zbxhistory/history.c \
diff --git a/tests/libs/zbxdbcache/zbx_vc_add_values.c b/tests/libs/zbxdbcache/zbx_vc_add_values.c
index 9a22562ae09..f1b33972ece 100644
--- a/tests/libs/zbxdbcache/zbx_vc_add_values.c
+++ b/tests/libs/zbxdbcache/zbx_vc_add_values.c
@@ -29,138 +29,30 @@
extern zbx_uint64_t CONFIG_VALUE_CACHE_SIZE;
-void zbx_mock_test_entry(void **state)
-{
- int err, seconds, count, item_status, item_active_range, item_db_cached_from,
- item_values_total, cache_mode, ret_flush;
- zbx_vector_history_record_t expected, returned;
- const char *data;
- char *error;
- zbx_mock_handle_t handle, hitem, hitems, hstatus;
- zbx_mock_error_t mock_err;
- zbx_uint64_t itemid, cache_hits, cache_misses;
- unsigned char value_type;
- zbx_vector_ptr_t history;
- zbx_timespec_t ts;
-
- ZBX_UNUSED(state);
-
- /* set small cache size to force smaller cache free request size (5% of cache size) */
- CONFIG_VALUE_CACHE_SIZE = ZBX_KIBIBYTE;
-
- err = zbx_locks_create(&error);
- zbx_mock_assert_result_eq("Lock initialization failed", SUCCEED, err);
-
- err = zbx_vc_init(&error);
- zbx_mock_assert_result_eq("Value cache initialization failed", SUCCEED, err);
-
- zbx_vc_enable();
-
- zbx_vcmock_ds_init();
- zbx_history_record_vector_create(&expected);
- zbx_history_record_vector_create(&returned);
-
- /* precache values */
- if (ZBX_MOCK_SUCCESS == zbx_mock_parameter("in.precache", &handle))
- {
- while (ZBX_MOCK_END_OF_VECTOR != (mock_err = (zbx_mock_vector_element(handle, &hitem))))
- {
- zbx_vcmock_set_time(hitem, "time");
- zbx_vcmock_set_mode(hitem, "cache mode");
- zbx_vcmock_set_cache_size(hitem, "cache size");
-
- zbx_vcmock_get_request_params(hitem, &itemid, &value_type, &seconds, &count, &ts);
- zbx_vc_precache_values(itemid, value_type, seconds, count, &ts);
- }
- }
+#include "zbx_vc_common.h"
+void zbx_vc_test_add_values_setup(zbx_mock_handle_t *handle, zbx_vector_ptr_t *history, int *err, const char **data,
+ int *ret_flush)
+{
/* execute request */
- handle = zbx_mock_get_parameter_handle("in.test");
- zbx_vcmock_set_time(handle, "time");
- zbx_vcmock_set_mode(handle, "cache mode");
- zbx_vcmock_set_cache_size(handle, "cache size");
-
- zbx_vector_ptr_create(&history);
- zbx_vcmock_get_dc_history(zbx_mock_get_object_member_handle(handle, "values"), &history);
-
- err = zbx_vc_add_values(&history, &ret_flush);
- data = zbx_mock_get_parameter_string("out.return");
- zbx_mock_assert_int_eq("zbx_vc_add_values()", zbx_mock_str_to_return_code(data), err);
-
- zbx_vector_ptr_clear_ext(&history, zbx_vcmock_free_dc_history);
- zbx_vector_ptr_destroy(&history);
-
- /* validate cache contents */
-
- hitems = zbx_mock_get_parameter_handle("out.cache.items");
-
- while (ZBX_MOCK_END_OF_VECTOR != (mock_err = (zbx_mock_vector_element(hitems, &hitem))))
- {
- if (ZBX_MOCK_NOT_A_VECTOR == mock_err)
- fail_msg("out.cache.items parameter is not a vector");
-
- data = zbx_mock_get_object_member_string(hitem, "itemid");
- if (SUCCEED != is_uint64(data, &itemid))
- fail_msg("Invalid itemid \"%s\"", data);
-
- err = zbx_vc_get_item_state(itemid, &item_status, &item_active_range, &item_values_total,
- &item_db_cached_from);
+ *handle = zbx_mock_get_parameter_handle("in.test");
+ zbx_vcmock_set_time(*handle, "time");
+ zbx_vcmock_set_mode(*handle, "cache mode");
+ zbx_vcmock_set_cache_size(*handle, "cache size");
- mock_err = zbx_mock_object_member(hitem, "status", &hstatus);
+ zbx_vector_ptr_create(history);
+ zbx_vcmock_get_dc_history(zbx_mock_get_object_member_handle(*handle, "values"), history);
- if (ZBX_MOCK_SUCCESS == mock_err)
- {
- zbx_mock_assert_result_eq("zbx_vc_get_item_state() return value", SUCCEED, err);
+ *err = zbx_vc_add_values(history, ret_flush);
+ *data = zbx_mock_get_parameter_string("out.return");
+ zbx_mock_assert_int_eq("zbx_vc_add_values()", zbx_mock_str_to_return_code(*data), *err);
- if (ZBX_MOCK_SUCCESS != (mock_err = zbx_mock_string(hstatus, &data)))
- fail_msg("Cannot read item status: %s", zbx_mock_error_string(mock_err));
-
- zbx_mock_assert_int_eq("item.status", zbx_vcmock_str_to_item_status(data), item_status);
-
- data = zbx_mock_get_object_member_string(hitem, "active_range");
- zbx_mock_assert_int_eq("item.active_range", atoi(data), item_active_range);
-
- data = zbx_mock_get_object_member_string(hitem, "values_total");
- zbx_mock_assert_int_eq("item.values_total", atoi(data), item_values_total);
-
- if (ZBX_MOCK_SUCCESS != (mock_err = zbx_strtime_to_timespec(
- zbx_mock_get_object_member_string(hitem, "db_cached_from"), &ts)))
- {
- fail_msg("Cannot read out.item.db_cached_from timestamp: %s",
- zbx_mock_error_string(mock_err));
- }
-
- zbx_mock_assert_time_eq("item.db_cached_from", ts.sec, item_db_cached_from);
-
- value_type = zbx_mock_str_to_value_type(zbx_mock_get_object_member_string(hitem, "value type"));
-
- zbx_vcmock_read_values(zbx_mock_get_object_member_handle(hitem, "data"), value_type, &expected);
- zbx_vc_get_cached_values(itemid, value_type, &returned);
-
- zbx_vcmock_check_records("Cached values", value_type, &expected, &returned);
-
- zbx_history_record_vector_clean(&expected, value_type);
- zbx_history_record_vector_clean(&returned, value_type);
- }
- else
- zbx_mock_assert_result_eq("zbx_vc_get_item_state() return value", FAIL, err);
- }
-
- /* validate cache state */
-
- zbx_vc_get_cache_state(&cache_mode, &cache_hits, &cache_misses);
- zbx_mock_assert_int_eq("cache.mode", zbx_vcmock_str_to_cache_mode(zbx_mock_get_parameter_string("out.cache.mode")),
- cache_mode);
-
- /* cleanup */
-
- zbx_vector_history_record_destroy(&returned);
- zbx_vector_history_record_destroy(&expected);
-
- zbx_vcmock_ds_destroy();
-
- zbx_vc_reset();
- zbx_vc_destroy();
+ zbx_vector_ptr_clear_ext(history, zbx_vcmock_free_dc_history);
+ zbx_vector_ptr_destroy(history);
+}
+void zbx_mock_test_entry(void **state)
+{
+ zbx_vc_common_test_func(state, zbx_vc_test_add_values_setup, NULL, NULL, 0);
}
diff --git a/tests/libs/zbxdbcache/zbx_vc_common.c b/tests/libs/zbxdbcache/zbx_vc_common.c
new file mode 100644
index 00000000000..2486c4a43e9
--- /dev/null
+++ b/tests/libs/zbxdbcache/zbx_vc_common.c
@@ -0,0 +1,187 @@
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+#include "zbxmocktest.h"
+#include "zbxmockdata.h"
+#include "zbxmockassert.h"
+#include "zbxmockutil.h"
+
+#include "common.h"
+#include "valuecache.h"
+#include "valuecache_test.h"
+#include "mocks/valuecache/valuecache_mock.h"
+
+#include "zbx_vc_common.h"
+
+extern zbx_uint64_t CONFIG_VALUE_CACHE_SIZE;
+
+static void zbx_vc_test_check_result(zbx_uint64_t cache_hits, zbx_uint64_t cache_misses)
+{
+ zbx_uint64_t expected_hits, expected_misses;
+
+ if (FAIL == is_uint64(zbx_mock_get_parameter_string("out.cache.hits"), &expected_hits))
+ fail_msg("Invalid out.cache.hits value");
+ zbx_mock_assert_uint64_eq("cache.hits", expected_hits, cache_hits);
+
+ if (FAIL == is_uint64(zbx_mock_get_parameter_string("out.cache.misses"), &expected_misses))
+ fail_msg("Invalid out.cache.misses value");
+ zbx_mock_assert_uint64_eq("cache.misses", expected_misses, cache_misses);
+}
+
+void zbx_vc_common_test_func(
+ void **state,
+ zbx_vc_test_add_values_setup_cb add_values_cb,
+ zbx_vc_test_get_value_setup_cb get_value_cb,
+ zbx_vc_test_get_values_setup_cb get_values_cb,
+ int test_check_result)
+{
+ int err, seconds, count, cache_mode;
+ zbx_vector_history_record_t expected, returned;
+ const char *data;
+ char *error;
+ zbx_mock_handle_t handle, hitem, hitems;
+ zbx_mock_error_t mock_err;
+ zbx_uint64_t itemid, cache_hits, cache_misses;
+ unsigned char value_type;
+ zbx_timespec_t ts;
+
+ ZBX_UNUSED(state);
+
+ /* set small cache size to force smaller cache free request size (5% of cache size) */
+ CONFIG_VALUE_CACHE_SIZE = ZBX_KIBIBYTE;
+
+ err = zbx_locks_create(&error);
+ zbx_mock_assert_result_eq("Lock initialization failed", SUCCEED, err);
+
+ err = zbx_vc_init(&error);
+ zbx_mock_assert_result_eq("Value cache initialization failed", SUCCEED, err);
+
+ zbx_vc_enable();
+
+ zbx_vcmock_ds_init();
+ zbx_history_record_vector_create(&expected);
+ zbx_history_record_vector_create(&returned);
+
+ /* precache values */
+ if (ZBX_MOCK_SUCCESS == zbx_mock_parameter("in.precache", &handle))
+ {
+ while (ZBX_MOCK_END_OF_VECTOR != (mock_err = (zbx_mock_vector_element(handle, &hitem))))
+ {
+ zbx_vcmock_set_time(hitem, "time");
+ zbx_vcmock_set_mode(hitem, "cache mode");
+ zbx_vcmock_set_cache_size(hitem, "cache size");
+
+ zbx_vcmock_get_request_params(hitem, &itemid, &value_type, &seconds, &count, &ts);
+ zbx_vc_precache_values(itemid, value_type, seconds, count, &ts);
+ }
+ }
+
+ if (NULL != add_values_cb)
+ {
+ int ret_flush;
+ zbx_vector_ptr_t history;
+
+ add_values_cb(&handle, &history, &err, &data, &ret_flush);
+ }
+ else if (NULL != get_value_cb)
+ {
+ get_value_cb(&handle, &itemid, &value_type, &ts, &err, &expected, &returned);
+ }
+ else if (NULL != get_values_cb)
+ {
+ get_values_cb(&handle, &itemid, &value_type, &ts, &err, &expected, &returned, &seconds,
+ &count);
+ }
+
+ hitems = zbx_mock_get_parameter_handle("out.cache.items");
+
+ while (ZBX_MOCK_END_OF_VECTOR != (mock_err = (zbx_mock_vector_element(hitems, &hitem))))
+ {
+ int item_status, item_active_range, item_db_cached_from, item_values_total;
+ zbx_mock_handle_t hstatus;
+
+ if (ZBX_MOCK_NOT_A_VECTOR == mock_err)
+ fail_msg("out.cache.items parameter is not a vector");
+
+ data = zbx_mock_get_object_member_string(hitem, "itemid");
+ if (SUCCEED != is_uint64(data, &itemid))
+ fail_msg("Invalid itemid \"%s\"", data);
+
+ err = zbx_vc_get_item_state(itemid, &item_status, &item_active_range, &item_values_total,
+ &item_db_cached_from);
+
+ mock_err = zbx_mock_object_member(hitem, "status", &hstatus);
+
+ if (ZBX_MOCK_SUCCESS == mock_err)
+ {
+ zbx_mock_assert_result_eq("zbx_vc_get_item_state() return value", SUCCEED, err);
+
+ if (ZBX_MOCK_SUCCESS != (mock_err = zbx_mock_string(hstatus, &data)))
+ fail_msg("Cannot read item status: %s", zbx_mock_error_string(mock_err));
+
+ zbx_mock_assert_int_eq("item.status", zbx_vcmock_str_to_item_status(data), item_status);
+
+ data = zbx_mock_get_object_member_string(hitem, "active_range");
+ zbx_mock_assert_int_eq("item.active_range", atoi(data), item_active_range);
+
+ data = zbx_mock_get_object_member_string(hitem, "values_total");
+ zbx_mock_assert_int_eq("item.values_total", atoi(data), item_values_total);
+
+ if (ZBX_MOCK_SUCCESS != (mock_err = zbx_strtime_to_timespec(
+ zbx_mock_get_object_member_string(hitem, "db_cached_from"), &ts)))
+ {
+ fail_msg("Cannot read out.item.db_cached_from timestamp: %s",
+ zbx_mock_error_string(mock_err));
+ }
+
+ zbx_mock_assert_time_eq("item.db_cached_from", ts.sec, item_db_cached_from);
+
+ value_type = zbx_mock_str_to_value_type(zbx_mock_get_object_member_string(hitem, "value type"));
+
+ zbx_vcmock_read_values(zbx_mock_get_object_member_handle(hitem, "data"), value_type, &expected);
+ zbx_vc_get_cached_values(itemid, value_type, &returned);
+
+ zbx_vcmock_check_records("Cached values", value_type, &expected, &returned);
+
+ zbx_history_record_vector_clean(&expected, value_type);
+ zbx_history_record_vector_clean(&returned, value_type);
+ }
+ else
+ zbx_mock_assert_result_eq("zbx_vc_get_item_state() return value", FAIL, err);
+ }
+
+ /* validate cache state */
+
+ zbx_vc_get_cache_state(&cache_mode, &cache_hits, &cache_misses);
+ zbx_mock_assert_int_eq("cache.mode",
+ zbx_vcmock_str_to_cache_mode(zbx_mock_get_parameter_string("out.cache.mode")), cache_mode);
+
+ if (1 == test_check_result)
+ zbx_vc_test_check_result(cache_hits, cache_misses);
+
+ /* cleanup */
+
+ zbx_vector_history_record_destroy(&returned);
+ zbx_vector_history_record_destroy(&expected);
+
+ zbx_vcmock_ds_destroy();
+
+ zbx_vc_reset();
+ zbx_vc_destroy();
+}
diff --git a/tests/libs/zbxdbcache/zbx_vc_common.h b/tests/libs/zbxdbcache/zbx_vc_common.h
new file mode 100644
index 00000000000..796b72d8a02
--- /dev/null
+++ b/tests/libs/zbxdbcache/zbx_vc_common.h
@@ -0,0 +1,47 @@
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+#ifndef ZBX_VC_COMMON_H
+#define ZBX_VC_COMMON_H
+
+typedef void (*zbx_vc_test_add_values_setup_cb)(zbx_mock_handle_t *handle, zbx_vector_ptr_t *history, int *err,
+ const char **data, int *ret_flush);
+typedef void (*zbx_vc_test_get_value_setup_cb)(zbx_mock_handle_t *handle, zbx_uint64_t *itemid,
+ unsigned char *value_type, zbx_timespec_t *ts, int *err, zbx_vector_history_record_t *expected,
+ zbx_vector_history_record_t *returned);
+typedef void (*zbx_vc_test_get_values_setup_cb)(zbx_mock_handle_t *handle, zbx_uint64_t *itemid,
+ unsigned char *value_type, zbx_timespec_t *ts, int *err, zbx_vector_history_record_t *expected,
+ zbx_vector_history_record_t *returned, int *seconds, int *count);
+
+void zbx_vc_test_add_values_setup(zbx_mock_handle_t *handle, zbx_vector_ptr_t *history, int *err, const char **data,
+ int *ret_flush);
+void zbx_vc_test_get_value_setup(zbx_mock_handle_t *handle, zbx_uint64_t *itemid, unsigned char *value_type,
+ zbx_timespec_t *ts, int *err, zbx_vector_history_record_t *expected,
+ zbx_vector_history_record_t *returned);
+void zbx_vc_test_get_values_setup(zbx_mock_handle_t *handle, zbx_uint64_t *itemid, unsigned char *value_type,
+ zbx_timespec_t *ts, int *err, zbx_vector_history_record_t *expected,
+ zbx_vector_history_record_t *returned, int *seconds, int *count);
+
+void zbx_vc_common_test_func(
+ void **state,
+ zbx_vc_test_add_values_setup_cb add_values_cb,
+ zbx_vc_test_get_value_setup_cb get_value_cb,
+ zbx_vc_test_get_values_setup_cb get_values_cb,
+ int test_check_result);
+#endif
diff --git a/tests/libs/zbxdbcache/zbx_vc_get_value.c b/tests/libs/zbxdbcache/zbx_vc_get_value.c
index 35d4af0f242..90544bc9dde 100644
--- a/tests/libs/zbxdbcache/zbx_vc_get_value.c
+++ b/tests/libs/zbxdbcache/zbx_vc_get_value.c
@@ -27,156 +27,42 @@
#include "valuecache_test.h"
#include "mocks/valuecache/valuecache_mock.h"
+#include "zbx_vc_common.h"
+
extern zbx_uint64_t CONFIG_VALUE_CACHE_SIZE;
-void zbx_mock_test_entry(void **state)
+void zbx_vc_test_get_value_setup(zbx_mock_handle_t *handle, zbx_uint64_t *itemid, unsigned char *value_type,
+ zbx_timespec_t *ts, int *err, zbx_vector_history_record_t *expected,
+ zbx_vector_history_record_t *returned)
{
- char *error = NULL;
- const char *data;
- int err, seconds, count, item_status, item_active_range, item_db_cached_from,
- item_values_total, cache_mode;
- zbx_vector_history_record_t expected, returned;
- zbx_timespec_t ts;
- zbx_uint64_t itemid, cache_hits, cache_misses, expected_hits, expected_misses;
- unsigned char value_type;
- zbx_mock_handle_t handle, hitems, hitem, hstatus;
- zbx_mock_error_t mock_err;
-
- ZBX_UNUSED(state);
-
- /* set small cache size to force smaller cache free request size (5% of cache size) */
- CONFIG_VALUE_CACHE_SIZE = ZBX_KIBIBYTE;
-
- err = zbx_locks_create(&error);
- zbx_mock_assert_result_eq("Lock initialization failed", SUCCEED, err);
-
- err = zbx_vc_init(&error);
- zbx_mock_assert_result_eq("Value cache initialization failed", SUCCEED, err);
-
- zbx_vc_enable();
-
- zbx_vcmock_ds_init();
- zbx_history_record_vector_create(&expected);
- zbx_history_record_vector_create(&returned);
-
- /* precache values */
- if (ZBX_MOCK_SUCCESS == zbx_mock_parameter("in.precache", &handle))
- {
- while (ZBX_MOCK_END_OF_VECTOR != (mock_err = (zbx_mock_vector_element(handle, &hitem))))
- {
- zbx_vcmock_set_time(hitem, "time");
- zbx_vcmock_set_mode(hitem, "cache mode");
- zbx_vcmock_set_cache_size(hitem, "cache size");
-
- zbx_vcmock_get_request_params(hitem, &itemid, &value_type, &seconds, &count, &ts);
- zbx_vc_precache_values(itemid, value_type, seconds, count, &ts);
- }
- }
-
/* perform request */
- handle = zbx_mock_get_parameter_handle("in.test");
- zbx_vcmock_set_time(handle, "time");
- zbx_vcmock_set_mode(handle, "cache mode");
+ *handle = zbx_mock_get_parameter_handle("in.test");
+ zbx_vcmock_set_time(*handle, "time");
+ zbx_vcmock_set_mode(*handle, "cache mode");
- if (FAIL == is_uint64(zbx_mock_get_object_member_string(handle, "itemid"), &itemid))
+ if (FAIL == is_uint64(zbx_mock_get_object_member_string(*handle, "itemid"), itemid))
fail_msg("Invalid itemid value");
- value_type = zbx_mock_str_to_value_type(zbx_mock_get_object_member_string(handle, "value type"));
- zbx_strtime_to_timespec(zbx_mock_get_object_member_string(handle, "end"), &ts);
+ *value_type = zbx_mock_str_to_value_type(zbx_mock_get_object_member_string(*handle, "value type"));
+ zbx_strtime_to_timespec(zbx_mock_get_object_member_string(*handle, "end"), ts);
- zbx_vector_history_record_reserve(&returned, 1);
- err = zbx_vc_get_value(itemid, value_type, &ts, &returned.values[0]);
+ zbx_vector_history_record_reserve(returned, 1);
+ *err = zbx_vc_get_value(*itemid, *value_type, ts, &(*returned).values[0]);
zbx_vc_flush_stats();
- returned.values_num = 1;
- zbx_mock_assert_result_eq("zbx_vc_get_values() return value", SUCCEED, err);
+ returned->values_num = 1;
+ zbx_mock_assert_result_eq("zbx_vc_get_values() return value", SUCCEED, *err);
/* validate results */
- zbx_vcmock_read_values(zbx_mock_get_parameter_handle("out.values"), value_type, &expected);
- zbx_vcmock_check_records("Returned values", value_type, &expected, &returned);
-
- zbx_history_record_vector_clean(&returned, value_type);
- zbx_history_record_vector_clean(&expected, value_type);
-
- /* validate cache contents */
-
- hitems = zbx_mock_get_parameter_handle("out.cache.items");
-
- while (ZBX_MOCK_END_OF_VECTOR != (mock_err = (zbx_mock_vector_element(hitems, &hitem))))
- {
- if (ZBX_MOCK_NOT_A_VECTOR == mock_err)
- fail_msg("out.cache.items parameter is not a vector");
-
- data = zbx_mock_get_object_member_string(hitem, "itemid");
- if (SUCCEED != is_uint64(data, &itemid))
- fail_msg("Invalid itemid \"%s\"", data);
-
- err = zbx_vc_get_item_state(itemid, &item_status, &item_active_range, &item_values_total,
- &item_db_cached_from);
-
- mock_err = zbx_mock_object_member(hitem, "status", &hstatus);
-
- if (ZBX_MOCK_SUCCESS == mock_err)
- {
- zbx_mock_assert_result_eq("zbx_vc_get_item_state() return value", SUCCEED, err);
-
- if (ZBX_MOCK_SUCCESS != (mock_err = zbx_mock_string(hstatus, &data)))
- fail_msg("Cannot read item status: %s", zbx_mock_error_string(mock_err));
+ zbx_vcmock_read_values(zbx_mock_get_parameter_handle("out.values"), *value_type, expected);
+ zbx_vcmock_check_records("Returned values", *value_type, expected, returned);
- zbx_mock_assert_int_eq("item.status", zbx_vcmock_str_to_item_status(data), item_status);
-
- data = zbx_mock_get_object_member_string(hitem, "active_range");
- zbx_mock_assert_int_eq("item.active_range", atoi(data), item_active_range);
-
- data = zbx_mock_get_object_member_string(hitem, "values_total");
- zbx_mock_assert_int_eq("item.values_total", atoi(data), item_values_total);
-
- if (ZBX_MOCK_SUCCESS != (mock_err = zbx_strtime_to_timespec(
- zbx_mock_get_object_member_string(hitem, "db_cached_from"), &ts)))
- {
- fail_msg("Cannot read out.item.db_cached_from timestamp: %s",
- zbx_mock_error_string(mock_err));
- }
-
- zbx_mock_assert_time_eq("item.db_cached_from", ts.sec, item_db_cached_from);
-
- value_type = zbx_mock_str_to_value_type(zbx_mock_get_object_member_string(hitem, "value type"));
-
- zbx_vcmock_read_values(zbx_mock_get_object_member_handle(hitem, "data"), value_type, &expected);
- zbx_vc_get_cached_values(itemid, value_type, &returned);
-
- zbx_vcmock_check_records("Cached values", value_type, &expected, &returned);
-
- zbx_history_record_vector_clean(&expected, value_type);
- zbx_history_record_vector_clean(&returned, value_type);
- }
- else
- zbx_mock_assert_result_eq("zbx_vc_get_item_state() return value", FAIL, err);
- }
-
- /* validate cache state */
-
- zbx_vc_get_cache_state(&cache_mode, &cache_hits, &cache_misses);
- zbx_mock_assert_int_eq("cache.mode", zbx_vcmock_str_to_cache_mode(zbx_mock_get_parameter_string("out.cache.mode")),
- cache_mode);
-
- if (FAIL == is_uint64(zbx_mock_get_parameter_string("out.cache.hits"), &expected_hits))
- fail_msg("Invalid out.cache.hits value");
- zbx_mock_assert_uint64_eq("cache.hits", expected_hits, cache_hits);
-
- if (FAIL == is_uint64(zbx_mock_get_parameter_string("out.cache.misses"), &expected_misses))
- fail_msg("Invalid out.cache.misses value");
- zbx_mock_assert_uint64_eq("cache.misses", expected_misses, cache_misses);
-
- /* cleanup */
-
- zbx_vector_history_record_destroy(&returned);
- zbx_vector_history_record_destroy(&expected);
-
- zbx_vcmock_ds_destroy();
-
- zbx_vc_reset();
- zbx_vc_destroy();
+ zbx_history_record_vector_clean(returned, *value_type);
+ zbx_history_record_vector_clean(expected, *value_type);
}
+void zbx_mock_test_entry(void **state)
+{
+ zbx_vc_common_test_func(state, NULL, zbx_vc_test_get_value_setup, NULL, 1);
+}
diff --git a/tests/libs/zbxdbcache/zbx_vc_get_values.c b/tests/libs/zbxdbcache/zbx_vc_get_values.c
index c90ca2de676..aae57dae753 100644
--- a/tests/libs/zbxdbcache/zbx_vc_get_values.c
+++ b/tests/libs/zbxdbcache/zbx_vc_get_values.c
@@ -27,149 +27,35 @@
#include "valuecache_test.h"
#include "mocks/valuecache/valuecache_mock.h"
+#include "zbx_vc_common.h"
+
extern zbx_uint64_t CONFIG_VALUE_CACHE_SIZE;
-void zbx_mock_test_entry(void **state)
+void zbx_vc_test_get_values_setup(zbx_mock_handle_t *handle, zbx_uint64_t *itemid, unsigned char *value_type,
+ zbx_timespec_t *ts, int *err, zbx_vector_history_record_t *expected,
+ zbx_vector_history_record_t *returned, int *seconds, int *count)
{
- char *error = NULL;
- const char *data;
- int err, seconds, count, item_status, item_active_range, item_db_cached_from,
- item_values_total, cache_mode;
- zbx_vector_history_record_t expected, returned;
- zbx_timespec_t ts;
- zbx_uint64_t itemid, cache_hits, cache_misses, expected_hits, expected_misses;
- unsigned char value_type;
- zbx_mock_handle_t handle, hitems, hitem, hstatus;
- zbx_mock_error_t mock_err;
-
- ZBX_UNUSED(state);
-
- /* set small cache size to force smaller cache free request size (5% of cache size) */
- CONFIG_VALUE_CACHE_SIZE = ZBX_KIBIBYTE;
-
- err = zbx_locks_create(&error);
- zbx_mock_assert_result_eq("Lock initialization failed", SUCCEED, err);
-
- err = zbx_vc_init(&error);
- zbx_mock_assert_result_eq("Value cache initialization failed", SUCCEED, err);
-
- zbx_vc_enable();
-
- zbx_vcmock_ds_init();
- zbx_history_record_vector_create(&expected);
- zbx_history_record_vector_create(&returned);
-
- /* precache values */
- if (ZBX_MOCK_SUCCESS == zbx_mock_parameter("in.precache", &handle))
- {
- while (ZBX_MOCK_END_OF_VECTOR != (mock_err = (zbx_mock_vector_element(handle, &hitem))))
- {
- zbx_vcmock_set_time(hitem, "time");
- zbx_vcmock_set_mode(hitem, "cache mode");
- zbx_vcmock_set_cache_size(hitem, "cache size");
-
- zbx_vcmock_get_request_params(hitem, &itemid, &value_type, &seconds, &count, &ts);
- zbx_vc_precache_values(itemid, value_type, seconds, count, &ts);
- }
- }
-
/* perform request */
- handle = zbx_mock_get_parameter_handle("in.test");
- zbx_vcmock_set_time(handle, "time");
- zbx_vcmock_set_mode(handle, "cache mode");
+ *handle = zbx_mock_get_parameter_handle("in.test");
+ zbx_vcmock_set_time(*handle, "time");
+ zbx_vcmock_set_mode(*handle, "cache mode");
- zbx_vcmock_get_request_params(handle, &itemid, &value_type, &seconds, &count, &ts);
- err = zbx_vc_get_values(itemid, value_type, &returned, seconds, count, &ts);
+ zbx_vcmock_get_request_params(*handle, itemid, value_type, seconds, count, ts);
+ *err = zbx_vc_get_values(*itemid, *value_type, returned, *seconds, *count, ts);
zbx_vc_flush_stats();
- zbx_mock_assert_result_eq("zbx_vc_get_values() return value", SUCCEED, err);
+ zbx_mock_assert_result_eq("zbx_vc_get_values() return value", SUCCEED, *err);
/* validate results */
- zbx_vcmock_read_values(zbx_mock_get_parameter_handle("out.values"), value_type, &expected);
- zbx_vcmock_check_records("Returned values", value_type, &expected, &returned);
-
- zbx_history_record_vector_clean(&returned, value_type);
- zbx_history_record_vector_clean(&expected, value_type);
-
- /* validate cache contents */
-
- hitems = zbx_mock_get_parameter_handle("out.cache.items");
-
- while (ZBX_MOCK_END_OF_VECTOR != (mock_err = (zbx_mock_vector_element(hitems, &hitem))))
- {
- if (ZBX_MOCK_NOT_A_VECTOR == mock_err)
- fail_msg("out.cache.items parameter is not a vector");
-
- data = zbx_mock_get_object_member_string(hitem, "itemid");
- if (SUCCEED != is_uint64(data, &itemid))
- fail_msg("Invalid itemid \"%s\"", data);
-
- err = zbx_vc_get_item_state(itemid, &item_status, &item_active_range, &item_values_total,
- &item_db_cached_from);
-
- mock_err = zbx_mock_object_member(hitem, "status", &hstatus);
-
- if (ZBX_MOCK_SUCCESS == mock_err)
- {
- zbx_mock_assert_result_eq("zbx_vc_get_item_state() return value", SUCCEED, err);
-
- if (ZBX_MOCK_SUCCESS != (mock_err = zbx_mock_string(hstatus, &data)))
- fail_msg("Cannot read item status: %s", zbx_mock_error_string(mock_err));
+ zbx_vcmock_read_values(zbx_mock_get_parameter_handle("out.values"), *value_type, expected);
+ zbx_vcmock_check_records("Returned values", *value_type, expected, returned);
- zbx_mock_assert_int_eq("item.status", zbx_vcmock_str_to_item_status(data), item_status);
-
- data = zbx_mock_get_object_member_string(hitem, "active_range");
- zbx_mock_assert_int_eq("item.active_range", atoi(data), item_active_range);
-
- data = zbx_mock_get_object_member_string(hitem, "values_total");
- zbx_mock_assert_int_eq("item.values_total", atoi(data), item_values_total);
-
- if (ZBX_MOCK_SUCCESS != (mock_err = zbx_strtime_to_timespec(
- zbx_mock_get_object_member_string(hitem, "db_cached_from"), &ts)))
- {
- fail_msg("Cannot read out.item.db_cached_from timestamp: %s",
- zbx_mock_error_string(mock_err));
- }
-
- zbx_mock_assert_time_eq("item.db_cached_from", ts.sec, item_db_cached_from);
-
- value_type = zbx_mock_str_to_value_type(zbx_mock_get_object_member_string(hitem, "value type"));
-
- zbx_vcmock_read_values(zbx_mock_get_object_member_handle(hitem, "data"), value_type, &expected);
- zbx_vc_get_cached_values(itemid, value_type, &returned);
-
- zbx_vcmock_check_records("Cached values", value_type, &expected, &returned);
-
- zbx_history_record_vector_clean(&expected, value_type);
- zbx_history_record_vector_clean(&returned, value_type);
- }
- else
- zbx_mock_assert_result_eq("zbx_vc_get_item_state() return value", FAIL, err);
- }
-
- /* validate cache state */
-
- zbx_vc_get_cache_state(&cache_mode, &cache_hits, &cache_misses);
- zbx_mock_assert_int_eq("cache.mode", zbx_vcmock_str_to_cache_mode(zbx_mock_get_parameter_string("out.cache.mode")),
- cache_mode);
-
- if (FAIL == is_uint64(zbx_mock_get_parameter_string("out.cache.hits"), &expected_hits))
- fail_msg("Invalid out.cache.hits value");
- zbx_mock_assert_uint64_eq("cache.hits", expected_hits, cache_hits);
-
- if (FAIL == is_uint64(zbx_mock_get_parameter_string("out.cache.misses"), &expected_misses))
- fail_msg("Invalid out.cache.misses value");
- zbx_mock_assert_uint64_eq("cache.misses", expected_misses, cache_misses);
-
- /* cleanup */
-
- zbx_vector_history_record_destroy(&returned);
- zbx_vector_history_record_destroy(&expected);
-
- zbx_vcmock_ds_destroy();
-
- zbx_vc_reset();
- zbx_vc_destroy();
+ zbx_history_record_vector_clean(returned, *value_type);
+ zbx_history_record_vector_clean(expected, *value_type);
}
+void zbx_mock_test_entry(void **state)
+{
+ zbx_vc_common_test_func(state, NULL, NULL, zbx_vc_test_get_values_setup, 1);
+}
diff --git a/tests/zbxmocktest.h b/tests/zbxmocktest.h
index 6e34920ffa9..50f4c135356 100644
--- a/tests/zbxmocktest.h
+++ b/tests/zbxmocktest.h
@@ -34,8 +34,6 @@
# define ZBX_NO_RETURN
#endif
-ZBX_NO_RETURN void _fail(const char * const file, const int line);
-
void zbx_mock_test_entry(void **state);
#endif /* ZABBIX_MOCK_TEST_H */