24 #include "../lib/grn-assertions.h"
31 #define VALUE_SIZE 1024
36 static gchar *base_dir;
37 static gchar *env_hash_path;
38 static gchar *env_patricia_trie_path;
39 static gchar *env_multi_thread;
40 static gchar *env_n_processes;
41 static gchar *env_process_number;
52 #define SAVE_ENV_VALUE(var_name, macro_name) \
53 env_ ## var_name = g_strdup(g_getenv(GRN_TEST_ENV_ ## macro_name))
64 cut_remove_path(tmp_dir, NULL);
66 base_dir = g_build_filename(tmp_dir,
"stress", NULL);
68 g_mkdir_with_parents(base_dir, 0755);
69 cut_assert_path_exist(base_dir);
84 #define RESTORE_ENV_VALUE(var_name, macro_name) do \
86 if (env_ ## var_name) { \
87 g_setenv(GRN_TEST_ENV_ ## macro_name, env_ ## var_name, TRUE); \
88 g_free(env_ ## var_name); \
90 g_unsetenv(GRN_TEST_ENV_ ## macro_name); \
100 #undef RESTORE_ENV_VALUE
103 cut_remove_path(base_dir, NULL);
115 test_data_new(gint n_processes, gboolean multi_thread)
133 run(
const gchar **test_case_names,
const grn_test_data *data)
136 const gchar *test_dir;
137 CutSubProcessGroup *group;
143 group = cut_take_new_sub_process_group();
145 CutSubProcess *sub_process;
147 sub_process = cut_take_new_sub_process(test_dir);
148 cut_sub_process_set_multi_thread(sub_process, data->
multi_thread);
149 cut_sub_process_set_fatal_failures(sub_process,
TRUE);
150 cut_sub_process_set_target_test_case_names(sub_process, test_case_names);
152 cut_sub_process_group_add(group, sub_process);
160 cut_sub_process_run_async(sub_process);
162 return cut_sub_process_group_wait(group);
168 cut_add_data(
"single process - single thread",
169 test_data_new(1,
FALSE), test_data_free,
170 "single process - multi thread",
171 test_data_new(1,
TRUE), test_data_free,
172 "multi process - single thread",
173 test_data_new(10,
FALSE), test_data_free,
174 "multi process - multi thread",
175 test_data_new(10,
TRUE), test_data_free);
183 const gchar *test_case_names[] = {
"test_stress_hash", NULL};
187 path = g_build_filename(base_dir,
"hash", NULL);
192 cut_assert_not_null(hash);
194 cut_assert_true(run(test_case_names, data));
200 cut_add_data(
"single process - single thread",
201 test_data_new(1,
FALSE), test_data_free,
202 "single process - multi thread",
203 test_data_new(1,
TRUE), test_data_free,
204 "multi process - single thread",
205 test_data_new(10,
FALSE), test_data_free,
206 "multi process - multi thread",
207 test_data_new(10,
TRUE), test_data_free);
215 const gchar *test_case_names[] = {
"test_stress_patricia_trie", NULL};
219 path = g_build_filename(base_dir,
"patricia-trie", NULL);
224 cut_assert_not_null(trie);
226 cut_assert_true(run(test_case_names, data));