}
/**
- * @brief test loading configuration (default configuration)
+ * @brief test getInstance() singleton
+ */
+TEST (ne_core_utils_test, get_instance_singleton)
+{
+ Conf & conf = Conf::getInstance ();
+ Conf & conf2 = Conf::getInstance ();
+
+ EXPECT_EQ (&conf, &conf2);
+
+ Logger & logger = Logger::getInstance ();
+ Logger & logger2 = Logger::getInstance ();
+
+ EXPECT_EQ (&logger, &logger2);
+}
+
+/**
+ * @brief test loadConfDefault()
*/
TEST (ne_core_utils_test, load_conf_default)
{
save_and_unset_envvars (envvars);
/** load configuration without argument */
- Conf * conf = Conf::getConf ();
- ASSERT_NE (conf, nullptr);
+ Conf & conf = Conf::getInstance ();
/** default configurations */
- EXPECT_EQ (conf->getResvMemSize(), DEFAULT_RESV_MEM_SIZE);
- EXPECT_EQ (conf->getNumThreads(), DEFAULT_NUM_THREADS);
- EXPECT_STREQ (conf->getLogDir(), DEFAULT_LOG_DIR);
+ EXPECT_EQ (conf.getResvMemSize(), DEFAULT_RESV_MEM_SIZE);
+ EXPECT_EQ (conf.getNumThreads(), DEFAULT_NUM_THREADS);
+ EXPECT_STREQ (conf.getLogDir(), DEFAULT_LOG_DIR);
- /** restore envvar*/
restore_envvars (envvars);
}
/**
- * @brief test loading configuration (.ini file)
+ * @brief test loadConfIni()
*/
TEST (ne_core_utils_test, load_conf_ini)
{
ASSERT_EQ (fwrite (ini_str, strlen(ini_str), 1, fp), 1);
ASSERT_EQ (fclose (fp), 0);
- Conf *conf = Conf::getConf ("dummy.ini");
- EXPECT_NE (conf, nullptr);
- EXPECT_EQ (conf->getResvMemSize(), 128 * 1024);
- EXPECT_EQ (conf->getNumThreads(), 4);
- EXPECT_STREQ (conf->getLogDir(), "/tmp/test_log");
+ Conf & conf = Conf::getInstance ("dummy.ini");
- /** default configurations */
+ EXPECT_EQ (conf.getResvMemSize(), 128 * 1024);
+ EXPECT_EQ (conf.getNumThreads(), 4);
+ EXPECT_STREQ (conf.getLogDir(), "/tmp/test_log");
+
+ conf.reset ();
+ restore_envvars (envvars);
+}
+
+/**
+ * @brief test loadConfIni() with error handling
+ */
+TEST (ne_core_utils_test, load_conf_ini_n)
+{
+ ENV_PAIR envvars;
+ save_and_unset_envvars (envvars);
+
+ /** load default configurations */
+ Conf & conf = Conf::getInstance ();
+
+ /** make dummy .ini file */
+ FILE *fp = fopen ("dummy.ini", "w");
+ const char *ini_str = "[main]\n"
+ "resv_mem_size=asdf\n"
+ "num_threads=-1\n";
+
+ /** from .ini file */
+ ASSERT_NE (fp, nullptr);
+ ASSERT_EQ (fwrite (ini_str, strlen(ini_str), 1, fp), 1);
+ ASSERT_EQ (fclose (fp), 0);
+
+ conf = Conf::getInstance ("dummy.ini");
+
+ /** still default configurations */
+ EXPECT_EQ (conf.getResvMemSize(), DEFAULT_RESV_MEM_SIZE);
+ EXPECT_EQ (conf.getNumThreads(), DEFAULT_NUM_THREADS);
+ EXPECT_STREQ (conf.getLogDir(), DEFAULT_LOG_DIR);
+
+ conf.reset ();
restore_envvars (envvars);
}
ENV_PAIR envvars;
save_and_unset_envvars (envvars);
- /** from env */
EXPECT_EQ (setenv("NE_RESV_MEM_SIZE", "1G", 1), 0);
EXPECT_EQ (setenv("NE_NUM_THREADS", "16", 1), 0);
EXPECT_EQ (setenv("NE_LOG_DIR", "/tmp/", 1), 0);
- Conf *conf = Conf::getConf ();
- EXPECT_NE (conf, nullptr);
- EXPECT_EQ (conf->getResvMemSize(), 1024 * 1024 * 1024);
- EXPECT_EQ (conf->getNumThreads(), 16);
- EXPECT_STREQ (conf->getLogDir(), "/tmp/");
+ Conf & conf = Conf::getInstance ();
+
+ EXPECT_EQ (conf.getResvMemSize(), 1024 * 1024 * 1024);
+ EXPECT_EQ (conf.getNumThreads(), 16);
+ EXPECT_STREQ (conf.getLogDir(), "/tmp/");
+ conf.reset ();
restore_envvars (envvars);
}
/**
* @brief test loading configuration (negative cases)
*/
-TEST (ne_core_utils_test, load_conf_n)
+TEST (ne_core_utils_test, load_conf_env_n)
{
ENV_PAIR envvars;
save_and_unset_envvars (envvars);
- /** from defaults */
- Conf * conf = Conf::getConf ();
- ASSERT_NE (conf, nullptr);
- conf->reset ();
-
- /** default configurations */
- EXPECT_EQ (conf->getResvMemSize(), DEFAULT_RESV_MEM_SIZE);
- EXPECT_EQ (conf->getNumThreads(), DEFAULT_NUM_THREADS);
- EXPECT_STREQ (conf->getLogDir(), DEFAULT_LOG_DIR);
-
/** from env (wrong values) */
EXPECT_EQ (setenv("NE_RESV_MEM_SIZE", "ASDF", 1), 0);
EXPECT_EQ (setenv("NE_NUM_THREADS", "-1", 1), 0);
EXPECT_EQ (setenv("NE_LOG_DIR", long_log_dir_str, 1), 0);
- conf = Conf::getConf ();
- ASSERT_NE (conf, nullptr);
- EXPECT_EQ (conf->getResvMemSize(), DEFAULT_RESV_MEM_SIZE);
- EXPECT_EQ (conf->getNumThreads(), DEFAULT_NUM_THREADS);
- EXPECT_STREQ (conf->getLogDir(), DEFAULT_LOG_DIR);
+ /** load conf with envvars */
+ Conf & conf = Conf::getInstance ();
+
+ /** still default configurations */
+ EXPECT_EQ (conf.getResvMemSize(), DEFAULT_RESV_MEM_SIZE);
+ EXPECT_EQ (conf.getNumThreads(), DEFAULT_NUM_THREADS);
+ EXPECT_STREQ (conf.getLogDir(), DEFAULT_LOG_DIR);
+ conf.reset ();
restore_envvars (envvars);
}
/**
* @brief test features of thread-safe map (negative cases)
*/
-TEST (ne_core_utils_test, thread_safe_map_n)
+TEST (ne_core_utils_test, thread_safe_map_insert_n)
{
ThreadSafeMap<int, int> m;
- int *val;
EXPECT_EQ (m.insert (1, new int (2)), 0);
- val = m.find (1);
- EXPECT_EQ (*val, 2);
-
EXPECT_NE (m.insert (1, new int (3)), 0);
EXPECT_NE (m.insert (1, new int (4)), 0);
- EXPECT_EQ (m.find (2), nullptr);
- EXPECT_NE (m.remove (3), 0);
m.clear ();
}
/**
+ * @brief test features of thread-safe map (negative cases)
+ */
+TEST (ne_core_utils_test, thread_safe_map_remove_n)
+{
+ ThreadSafeMap<int, int> m;
+
+ EXPECT_NE (m.remove (0), 0);
+ EXPECT_EQ (m.insert (1, new int (2)), 0);
+ EXPECT_EQ (m.remove (1), 0);
+ EXPECT_NE (m.remove (1), 0);
+
+ m.clear ();
+}
+
+/**
+ * @brief test features of thread-safe map (negative cases)
+ */
+TEST (ne_core_utils_test, thread_safe_map_find_n)
+{
+ ThreadSafeMap<int, int> m;
+
+ EXPECT_EQ (m.find (0), nullptr);
+ EXPECT_EQ (m.insert (1, new int (2)), 0);
+ EXPECT_EQ (m.remove (1), 0);
+ EXPECT_EQ (m.find (1), nullptr);
+
+ m.clear ();
+}
+
+/**
+ * @brief test features of log writing
+ */
+TEST (ne_core_utils_test, log_write)
+{
+ Logger & logger = Logger::getInstance ();
+
+ logger.logwrite (LOG_ERROR, _N1, "test error\n");
+ logger.logwrite (LOG_WARN, _N1, "test warn\n");
+ logger.logwrite (LOG_INFO, _N1, "test info\n");
+}
+
+/**
+ * @brief test features of log writing (negative cases)
+ */
+TEST (ne_core_utils_test, log_write_n)
+{
+ Logger & logger = Logger::getInstance ();
+
+ /** logwrite is ignored for invalid arguments */
+ logger.logwrite (LOG_END, _NEND, "invalid\n");
+ logger.logwrite (LOG_END, _N1, "invalid\n");
+ logger.logwrite (LOG_INFO, _NEND, "invalid\n");
+ logger.logwrite (LOG_INFO, _N1, nullptr);
+}
+
+/**
* @brief main function for unit test
*/
int