Add ability to configure parameters used by "make test" with test/config.ctc

This commit is contained in:
Paweł Chmielowski 2015-04-09 17:14:30 +02:00
parent e8701802ee
commit b9fdcc3985
3 changed files with 57 additions and 16 deletions

View File

@ -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,

View File

@ -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

View File

@ -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),