diff --git a/rebar.config.script b/rebar.config.script index 37ee5acbb..2c42c961d 100644 --- a/rebar.config.script +++ b/rebar.config.script @@ -164,12 +164,21 @@ ElixirConfig = case lists:keysearch(elixir, 1, Cfg) of {ok, Cwd} = file:get_cwd(), +TestConfigFile = filename:join([Cwd, "test", "config.ctc"]), +TestConfig = case file:read_file_info(TestConfigFile) of + {ok, _} -> + "-userconfig ct_config_plain " ++ TestConfigFile ++ " "; + _ -> + "" + end, + Config = [{erl_opts, Macros ++ HiPE ++ DebugInfo ++ [{src_dirs, [asn1, src | SrcDirs]}]}, {sub_dirs, ["rel"]}, {keep_build_info, true}, - {ct_extra_params, "-include " - ++ filename:join([Cwd, "tools"])}, + {ct_extra_params, "-ct_hooks cth_surefire " + ++ TestConfig + ++ "-include " ++ filename:join([Cwd, "tools"])}, {xref_warnings, false}, {xref_checks, []}, {xref_queries, diff --git a/test/ejabberd_SUITE_data/ejabberd.yml b/test/ejabberd_SUITE_data/ejabberd.yml index b23c69271..58f90c802 100644 --- a/test/ejabberd_SUITE_data/ejabberd.yml +++ b/test/ejabberd_SUITE_data/ejabberd.yml @@ -1,12 +1,12 @@ host_config: "pgsql.localhost": - odbc_username: "ejabberd_test" + odbc_username: "@@pgsql_user@@" odbc_type: pgsql - odbc_server: "localhost" - odbc_port: 5432 + odbc_server: "@@pgsql_server@@" + odbc_port: @@pgsql_port@@ odbc_pool_size: 1 - odbc_password: "ejabberd_test" - odbc_database: "ejabberd_test" + odbc_password: "@@pgsql_pass@@" + odbc_database: "@@pgsql_db@@" auth_method: odbc modules: mod_announce: @@ -106,13 +106,13 @@ Welcome to this XMPP server." mod_time: [] mod_version: [] "mysql.localhost": - odbc_username: "ejabberd_test" + odbc_username: "@@mysql_user@@" odbc_type: mysql - odbc_server: "localhost" - odbc_port: 3306 + odbc_server: "@@mysql_server@@" + odbc_port: @@mysql_port@@ odbc_pool_size: 1 - odbc_password: "ejabberd_test" - odbc_database: "ejabberd_test" + odbc_password: "@@mysql_pass@@" + odbc_database: "@@mysql_db@@" auth_method: odbc modules: mod_announce: @@ -331,7 +331,7 @@ define_macro: language: "en" listen: - - port: 5222 + port: @@c2s_port@@ module: ejabberd_c2s max_stanza_size: 65536 certfile: CERTFILE @@ -343,7 +343,7 @@ listen: port: 5269 module: ejabberd_s2s_in - - port: 5280 + port: @@web_port@@ module: ejabberd_http captcha: true loglevel: 4 diff --git a/test/suite.erl b/test/suite.erl index 69bfbecef..3b5d402c8 100644 --- a/test/suite.erl +++ b/test/suite.erl @@ -21,13 +21,30 @@ init_config(Config) -> PrivDir = proplists:get_value(priv_dir, Config), [_, _|Tail] = lists:reverse(filename:split(DataDir)), BaseDir = filename:join(lists:reverse(Tail)), - ConfigPath = filename:join([DataDir, "ejabberd.yml"]), + ConfigPathTpl = filename:join([DataDir, "ejabberd.yml"]), LogPath = filename:join([PrivDir, "ejabberd.log"]), SASLPath = filename:join([PrivDir, "sasl.log"]), MnesiaDir = filename:join([PrivDir, "mnesia"]), CertFile = filename:join([DataDir, "cert.pem"]), {ok, CWD} = file:get_cwd(), {ok, _} = file:copy(CertFile, filename:join([CWD, "cert.pem"])), + {ok, CfgContentTpl} = file:read_file(ConfigPathTpl), + CfgContent = process_config_tpl(CfgContentTpl, [ + {c2s_port, 5222}, + {web_port, 5280}, + {mysql_server, <<"localhost">>}, + {mysql_port, 3306}, + {mysql_db, <<"ejabberd_test">>}, + {mysql_user, <<"ejabberd_test">>}, + {mysql_pass, <<"ejabberd_test">>}, + {pgsql_server, <<"localhost">>}, + {pgsql_port, 5432}, + {pgsql_db, <<"ejabberd_test">>}, + {pgsql_user, <<"ejabberd_test">>}, + {pgsql_pass, <<"ejabberd_test">>} + ]), + ConfigPath = filename:join([CWD, "ejabberd.yml"]), + ok = file:write_file(ConfigPath, CfgContent), ok = application:load(sasl), ok = application:load(mnesia), ok = application:load(ejabberd), @@ -35,7 +52,7 @@ init_config(Config) -> application:set_env(ejabberd, log_path, LogPath), application:set_env(sasl, sasl_error_logger, {file, SASLPath}), application:set_env(mnesia, dir, MnesiaDir), - [{server_port, 5222}, + [{server_port, ct:get_config(c2s_port, 5222)}, {server_host, "localhost"}, {server, ?COMMON_VHOST}, {user, <<"test_single">>}, @@ -50,6 +67,21 @@ init_config(Config) -> {password, <<"password">>} |Config]. +process_config_tpl(Content, []) -> + Content; +process_config_tpl(Content, [{Name, DefaultValue} | Rest]) -> + Val = case ct:get_config(Name, DefaultValue) of + V1 when is_integer(V1) -> + integer_to_binary(V1); + V2 when is_atom(V2) -> + atom_to_binary(V2, latin1); + V3 -> + V3 + end, + NewContent = binary:replace(Content, <<"@@",(atom_to_binary(Name, latin1))/binary, "@@">>, Val), + process_config_tpl(NewContent, Rest). + + connect(Config) -> {ok, Sock} = ejabberd_socket:connect( ?config(server_host, Config),