From da9a139dd2005ea793719e104e15de5b37a6e72a Mon Sep 17 00:00:00 2001 From: Slava Monich Date: Fri, 30 Sep 2016 01:41:06 +0300 Subject: [PATCH] [test] Added test_settings --- mms-lib/test/Makefile | 1 + mms-lib/test/common/Makefile | 8 +- mms-lib/test/coverage/run | 2 +- mms-lib/test/test_settings/Makefile | 5 + mms-lib/test/test_settings/data/Empty.conf | 1 + .../test/test_settings/data/IdleTimeout.conf | 2 + .../test_settings/data/InvalidConfig.conf | 8 + .../test/test_settings/data/MaxPixels.conf | 2 + .../test/test_settings/data/RetryDelay.conf | 2 + mms-lib/test/test_settings/data/RootDir.conf | 2 + .../data/SendDeliveryReport.conf | 2 + .../test/test_settings/data/SizeLimit.conf | 2 + .../test/test_settings/data/UAProfile.conf | 2 + .../test/test_settings/data/UserAgent.conf | 2 + mms-lib/test/test_settings/test_settings.c | 218 ++++++++++++++++++ 15 files changed, 253 insertions(+), 6 deletions(-) create mode 100644 mms-lib/test/test_settings/Makefile create mode 100644 mms-lib/test/test_settings/data/Empty.conf create mode 100644 mms-lib/test/test_settings/data/IdleTimeout.conf create mode 100644 mms-lib/test/test_settings/data/InvalidConfig.conf create mode 100644 mms-lib/test/test_settings/data/MaxPixels.conf create mode 100644 mms-lib/test/test_settings/data/RetryDelay.conf create mode 100644 mms-lib/test/test_settings/data/RootDir.conf create mode 100644 mms-lib/test/test_settings/data/SendDeliveryReport.conf create mode 100644 mms-lib/test/test_settings/data/SizeLimit.conf create mode 100644 mms-lib/test/test_settings/data/UAProfile.conf create mode 100644 mms-lib/test/test_settings/data/UserAgent.conf create mode 100644 mms-lib/test/test_settings/test_settings.c diff --git a/mms-lib/test/Makefile b/mms-lib/test/Makefile index 74eb11a..8d6472a 100644 --- a/mms-lib/test/Makefile +++ b/mms-lib/test/Makefile @@ -13,3 +13,4 @@ all: @$(MAKE) -C test_retrieve_no_proxy $* @$(MAKE) -C test_retrieve_order $* @$(MAKE) -C test_send $* + @$(MAKE) -C test_settings $* diff --git a/mms-lib/test/common/Makefile b/mms-lib/test/common/Makefile index e6e6829..f836d68 100644 --- a/mms-lib/test/common/Makefile +++ b/mms-lib/test/common/Makefile @@ -4,17 +4,15 @@ .PHONY: mms_lib_debug_lib mms_lib_release_lib # -# Real test makefile defines EXE and SRC and includes this one. +# Real test makefile defines EXE and (optionally) SRC and includes this one. # -ifndef SRC -${error SRC not defined} -endif - ifndef EXE ${error EXE not defined} endif +SRC ?= $(EXE).c + # # Pull in mms-lib configuration # diff --git a/mms-lib/test/coverage/run b/mms-lib/test/coverage/run index 9c67556..2923dc7 100755 --- a/mms-lib/test/coverage/run +++ b/mms-lib/test/coverage/run @@ -6,7 +6,7 @@ TESTS="test_media_type test_mms_codec test_delivery_ind \ test_read_ind test_read_report test_resize test_retrieve \ test_retrieve_cancel test_retrieve_no_proxy test_retrieve_order \ -test_send" +test_send test_settings" FLAVOR="release" pushd `dirname $0` > /dev/null diff --git a/mms-lib/test/test_settings/Makefile b/mms-lib/test/test_settings/Makefile new file mode 100644 index 0000000..dc90d9f --- /dev/null +++ b/mms-lib/test/test_settings/Makefile @@ -0,0 +1,5 @@ +# -*- Mode: makefile-gmake -*- + +EXE = test_settings + +include ../common/Makefile diff --git a/mms-lib/test/test_settings/data/Empty.conf b/mms-lib/test/test_settings/data/Empty.conf new file mode 100644 index 0000000..26f65f3 --- /dev/null +++ b/mms-lib/test/test_settings/data/Empty.conf @@ -0,0 +1 @@ +# There's nothing here diff --git a/mms-lib/test/test_settings/data/IdleTimeout.conf b/mms-lib/test/test_settings/data/IdleTimeout.conf new file mode 100644 index 0000000..89fe8d6 --- /dev/null +++ b/mms-lib/test/test_settings/data/IdleTimeout.conf @@ -0,0 +1,2 @@ +[Global] +IdleTimeout=222 diff --git a/mms-lib/test/test_settings/data/InvalidConfig.conf b/mms-lib/test/test_settings/data/InvalidConfig.conf new file mode 100644 index 0000000..f7bc8c2 --- /dev/null +++ b/mms-lib/test/test_settings/data/InvalidConfig.conf @@ -0,0 +1,8 @@ +[Global] +RetryDelay=-1 +IdleTimeout=-2 + +[Defaults] +SizeLimit=-3 +MaxPixels=-4 +SendDeliveryReport=whatever diff --git a/mms-lib/test/test_settings/data/MaxPixels.conf b/mms-lib/test/test_settings/data/MaxPixels.conf new file mode 100644 index 0000000..fe15ad1 --- /dev/null +++ b/mms-lib/test/test_settings/data/MaxPixels.conf @@ -0,0 +1,2 @@ +[Defaults] +MaxPixels = 1000000 diff --git a/mms-lib/test/test_settings/data/RetryDelay.conf b/mms-lib/test/test_settings/data/RetryDelay.conf new file mode 100644 index 0000000..1465928 --- /dev/null +++ b/mms-lib/test/test_settings/data/RetryDelay.conf @@ -0,0 +1,2 @@ +[Global] +RetryDelay=111 diff --git a/mms-lib/test/test_settings/data/RootDir.conf b/mms-lib/test/test_settings/data/RootDir.conf new file mode 100644 index 0000000..5470780 --- /dev/null +++ b/mms-lib/test/test_settings/data/RootDir.conf @@ -0,0 +1,2 @@ +[Global] +RootDir=TestRootDir diff --git a/mms-lib/test/test_settings/data/SendDeliveryReport.conf b/mms-lib/test/test_settings/data/SendDeliveryReport.conf new file mode 100644 index 0000000..62c28cf --- /dev/null +++ b/mms-lib/test/test_settings/data/SendDeliveryReport.conf @@ -0,0 +1,2 @@ +[Defaults] +SendDeliveryReport=false diff --git a/mms-lib/test/test_settings/data/SizeLimit.conf b/mms-lib/test/test_settings/data/SizeLimit.conf new file mode 100644 index 0000000..03f76d3 --- /dev/null +++ b/mms-lib/test/test_settings/data/SizeLimit.conf @@ -0,0 +1,2 @@ +[Defaults] +SizeLimit = 100000 diff --git a/mms-lib/test/test_settings/data/UAProfile.conf b/mms-lib/test/test_settings/data/UAProfile.conf new file mode 100644 index 0000000..9021977 --- /dev/null +++ b/mms-lib/test/test_settings/data/UAProfile.conf @@ -0,0 +1,2 @@ +[Defaults] +UAProfile=TestUAProfile diff --git a/mms-lib/test/test_settings/data/UserAgent.conf b/mms-lib/test/test_settings/data/UserAgent.conf new file mode 100644 index 0000000..e29e880 --- /dev/null +++ b/mms-lib/test/test_settings/data/UserAgent.conf @@ -0,0 +1,2 @@ +[Defaults] +UserAgent=TestUserAgent diff --git a/mms-lib/test/test_settings/test_settings.c b/mms-lib/test/test_settings/test_settings.c new file mode 100644 index 0000000..a051a20 --- /dev/null +++ b/mms-lib/test/test_settings/test_settings.c @@ -0,0 +1,218 @@ +/* + * Copyright (C) 2016 Jolla Ltd. + * Contact: Slava Monich + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * 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. + */ + +#include "mms_settings.h" +#include "mms_lib_util.h" +#include "mms_lib_log.h" + +#include + +#define DATA_DIR "data/" + +#define RET_OK (0) +#define RET_ERR (1) + +typedef struct test_desc { + const char* name; + MMSConfig config; + MMSSettingsSimData defaults; +} TestDesc; + +#define DEFAULT_CONFIG \ + MMS_CONFIG_DEFAULT_ROOT_DIR, MMS_CONFIG_DEFAULT_RETRY_SECS, \ + MMS_CONFIG_DEFAULT_IDLE_SECS, FALSE, FALSE +#define DEFAULT_SETTINGS \ + MMS_SETTINGS_DEFAULT_USER_AGENT, MMS_SETTINGS_DEFAULT_UAPROF, \ + MMS_SETTINGS_DEFAULT_SIZE_LIMIT, MMS_SETTINGS_DEFAULT_MAX_PIXELS, \ + MMS_SETTINGS_DEFAULT_ALLOW_DR + +static const TestDesc tests [] = { + { + "Empty", + { DEFAULT_CONFIG }, + { DEFAULT_SETTINGS } + },{ + "InvalidConfig", + { DEFAULT_CONFIG }, + { DEFAULT_SETTINGS } + },{ + "RootDir", + { "TestRootDir", MMS_CONFIG_DEFAULT_RETRY_SECS, + MMS_CONFIG_DEFAULT_IDLE_SECS, FALSE, FALSE }, + { DEFAULT_SETTINGS } + },{ + "RetryDelay", + { MMS_CONFIG_DEFAULT_ROOT_DIR, 111, + MMS_CONFIG_DEFAULT_IDLE_SECS, FALSE, FALSE }, + { DEFAULT_SETTINGS } + },{ + "IdleTimeout", + { MMS_CONFIG_DEFAULT_ROOT_DIR, MMS_CONFIG_DEFAULT_RETRY_SECS, + 222, FALSE, FALSE }, + { DEFAULT_SETTINGS } + },{ + "UserAgent", + { DEFAULT_CONFIG }, + { "TestUserAgent", MMS_SETTINGS_DEFAULT_UAPROF, + MMS_SETTINGS_DEFAULT_SIZE_LIMIT, MMS_SETTINGS_DEFAULT_MAX_PIXELS, + MMS_SETTINGS_DEFAULT_ALLOW_DR } + },{ + "UAProfile", + { DEFAULT_CONFIG }, + { MMS_SETTINGS_DEFAULT_USER_AGENT, "TestUAProfile", + MMS_SETTINGS_DEFAULT_SIZE_LIMIT, MMS_SETTINGS_DEFAULT_MAX_PIXELS, + MMS_SETTINGS_DEFAULT_ALLOW_DR } + },{ + "SizeLimit", + { DEFAULT_CONFIG }, + { MMS_SETTINGS_DEFAULT_USER_AGENT, MMS_SETTINGS_DEFAULT_UAPROF, + 100000, MMS_SETTINGS_DEFAULT_MAX_PIXELS, + MMS_SETTINGS_DEFAULT_ALLOW_DR } + },{ + "MaxPixels", + { DEFAULT_CONFIG }, + { MMS_SETTINGS_DEFAULT_USER_AGENT, MMS_SETTINGS_DEFAULT_UAPROF, + MMS_SETTINGS_DEFAULT_SIZE_LIMIT, 1000000, + MMS_SETTINGS_DEFAULT_ALLOW_DR } + },{ + "SendDeliveryReport", + { DEFAULT_CONFIG }, + { MMS_SETTINGS_DEFAULT_USER_AGENT, MMS_SETTINGS_DEFAULT_UAPROF, + MMS_SETTINGS_DEFAULT_SIZE_LIMIT, MMS_SETTINGS_DEFAULT_MAX_PIXELS, + FALSE } + } +}; + +static +gboolean +test_config_equal( + const MMSConfig* c1, + const MMSConfig* c2) +{ + return !g_strcmp0(c1->root_dir, c2->root_dir) && + c1->retry_secs == c2->retry_secs && + c1->idle_secs == c2->idle_secs && + c1->keep_temp_files == c2->keep_temp_files && + c1->attic_enabled == c2->attic_enabled; +} + +static +gboolean +test_settings_equal( + const MMSSettingsSimData* s1, + const MMSSettingsSimData* s2) +{ + return !g_strcmp0(s1->user_agent, s2->user_agent) && + !g_strcmp0(s1->uaprof, s2->uaprof) && + s1->size_limit == s2->size_limit && + s1->max_pixels == s2->max_pixels && + s1->allow_dr == s2->allow_dr; +} + +static +gboolean +test_run( + const TestDesc* test) +{ + int ret = RET_ERR; + GError* error = NULL; + char* path = g_strconcat(DATA_DIR, test->name, ".conf", NULL); + MMSConfigCopy global; + MMSSettingsSimDataCopy defaults; + + memset(&global, 0, sizeof(global)); + memset(&defaults, 0, sizeof(defaults)); + mms_lib_default_config(&global.config); + mms_settings_sim_data_default(&defaults.data); + + if (mms_settings_load_defaults(path, &global, &defaults, &error) && + test_settings_equal(&defaults.data, &test->defaults) && + test_config_equal(&global.config, &test->config)) { + ret = RET_OK; + } + + if (error) { + GERR("%s", GERRMSG(error)); + g_error_free(error); + } + + g_free(path); + g_free(global.root_dir); + mms_settings_sim_data_reset(&defaults); + GINFO("%s: %s", (ret == RET_OK) ? "OK" : "FAILED", test->name); + return FALSE; +} + +int main(int argc, char* argv[]) +{ + int ret = RET_ERR; + gboolean verbose = FALSE; + GOptionContext* options; + GOptionEntry entries[] = { + { "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose, + "Enable verbose output", NULL }, + { NULL } + }; + + mms_lib_init(argv[0]); + options = g_option_context_new("[TESTS...] - MMS codec test"); + g_option_context_add_main_entries(options, entries, NULL); + if (g_option_context_parse(options, &argc, &argv, NULL)) { + int i; + + gutil_log_set_type(GLOG_TYPE_STDOUT, "test_mms_codec"); + if (verbose) { + gutil_log_default.level = GLOG_LEVEL_VERBOSE; + } else { + gutil_log_timestamp = FALSE; + gutil_log_default.level = GLOG_LEVEL_INFO; + mms_codec_log.level = GLOG_LEVEL_ERR; + } + + ret = RET_OK; + if (argc > 1) { + for (i=1; i