summaryrefslogtreecommitdiff
path: root/test/rvi_core_SUITE.erl
diff options
context:
space:
mode:
Diffstat (limited to 'test/rvi_core_SUITE.erl')
-rw-r--r--test/rvi_core_SUITE.erl181
1 files changed, 106 insertions, 75 deletions
diff --git a/test/rvi_core_SUITE.erl b/test/rvi_core_SUITE.erl
index c61e8ce..63a36ca 100644
--- a/test/rvi_core_SUITE.erl
+++ b/test/rvi_core_SUITE.erl
@@ -141,9 +141,9 @@ groups() ->
t_register_lock_service,
t_register_sota_service,
t_call_lock_service,
- t_call_sota_service,
- t_multicall_sota_service,
- t_remote_call_lock_service,
+ %% t_call_sota_service,
+ %% t_multicall_sota_service,
+ %% t_remote_call_lock_service,
t_no_errors
]}
].
@@ -219,90 +219,86 @@ t_sample_keys_and_cert(Config) ->
generate_sota_cred(sample, Dir, CredDir, Config).
t_install_backend_node(_Config) ->
- install_rvi_node("basic_backend", env(),
- [root(), "/priv/test_config/basic_backend.config"]).
+ install_backend_node("basic_backend").
t_install_sample_node(_Config) ->
- install_sample_node("basic_sample", "basic_sample.config").
+ install_sample_node("basic_sample").
t_install_sms_backend_node(_Config) ->
- install_rvi_node("sms_backend", env(),
- [root(), "/priv/test_config/sms_backend.config"]).
+ install_backend_node("sms_backend").
t_install_sms_sample_node(_Config) ->
- install_sample_node("sms_sample", "sms_sample.config").
+ install_sample_node("sms_sample").
t_install_tls_backend_node(_Config) ->
- install_rvi_node("tls_backend", env(),
- [root(), "/priv/test_config/tls_backend.config"]).
+ install_backend_node("tls_backend").
t_install_tls_sample_node(_Config) ->
- install_sample_node("tls_sample", "tls_sample.config").
+ install_sample_node("tls_sample").
t_install_tlsj_backend_node(_Config) ->
- install_rvi_node("tlsj_backend", env(),
- [root(), "/priv/test_config/tlsj_backend.config"]).
+ install_backend_node("tlsj_backend").
t_install_tlsj_sample_node(_Config) ->
- install_sample_node("tlsj_sample", "tlsj_sample.config").
+ install_sample_node("tlsj_sample").
t_install_tls_backend_noverify_node(_Config) ->
- install_rvi_node("tls_backend_noverify", env(),
- [root(), "/priv/test_config/tls_backend_noverify.config"]).
+ install_backend_node("tls_backend_noverify").
t_install_tls_sample_noverify_node(_Config) ->
- install_sample_node("tls_sample_noverify", "tls_sample_noverify.config").
+ install_sample_node("tls_sample_noverify").
t_install_bt_backend_node(_Config) ->
- install_rvi_node("bt_backend", env(),
- [root(), "/priv/test_config/bt_backend.config"]).
+ install_backend_node("bt_backend").
t_install_bt_sample_node(_Config) ->
- install_sample_node("bt_sample", "bt_sample.config").
+ install_sample_node("bt_sample").
-generic_start(Name) ->
+start_backend(Name) -> generic_start(backend, Name).
+start_sample (Name) -> generic_start(sample , Name).
+
+generic_start(Type, Name) ->
+ {ok,Cwd} = file:get_cwd(),
F = filename:join([".", Name, "start_me.sh"]),
- Cmd = [env(),
- " ./", Name, "/rvi.sh",
- " -s ", Name,
- " -l ./", Name, "/rvi/log",
- " -d ./", Name,
- " -c ./", Name, "/priv/test_config/", Name, ".config",
- " $1"],
+ Cmd = [env(Type),
+ " RVI_RUNDIR=", filename:join(Cwd, Name),
+ " ./", Name, "/rvi_core/rvi_ctl",
+ " -c ./", Name, "/rvi_core/priv/test_config/", Name, ".config",
+ " $*"],
ok = save_cmd(F, Cmd),
- cmd([F, " start"]),
+ cmd(["sh -x ", F, " start"]),
await_started(Name).
t_start_basic_backend(_Config) ->
- generic_start("basic_backend").
+ start_backend("basic_backend").
t_start_basic_sample(_Config) ->
- generic_start("basic_sample").
+ start_sample("basic_sample").
t_start_bt_backend(_Config) ->
- generic_start("bt_backend").
+ start_backend("bt_backend").
t_start_bt_sample(_Config) ->
- generic_start("bt_sample").
+ start_sample("bt_sample").
t_start_tls_backend(_Config) ->
- generic_start("tls_backend").
+ start_backend("tls_backend").
t_start_tls_sample(_Config) ->
- generic_start("tls_sample").
+ start_sample("tls_sample").
t_start_tlsj_backend(_Config) ->
- generic_start("tlsj_backend").
+ start_backend("tlsj_backend").
t_start_tlsj_sample(_Config) ->
- generic_start("tlsj_sample").
+ start_sample("tlsj_sample").
t_start_tls_backend_noverify(_Config) ->
- generic_start("tls_backend_noverify").
+ start_backend("tls_backend_noverify").
t_start_tls_sample_noverify(_Config) ->
- generic_start("tls_sample_noverify").
+ start_sample("tls_sample_noverify").
t_register_lock_service(_Config) ->
Pid =
@@ -331,19 +327,35 @@ t_multicall_sota_service(_Config) ->
client3,
client4,
client5]],
- collect(Pids).
+ Ref = erlang:send_after(5000, self(), collect_timeout),
+ collect(Pids, Ref).
-collect([{Pid, Ref} | T]) ->
+collect([{_, Ref} | T] = L, TRef) ->
receive
{'DOWN', Ref, _, _, {ok, ok}} ->
- collect(T);
+ collect(T, Ref);
{'DOWN', Ref, _, _, Reason} ->
- [exit(P, kill) || {P,_} <- T],
- error(Reason)
+ flush_reqs(T),
+ error(Reason);
+ {timeout, TRef, collect_timeout} ->
+ flush_reqs(T),
+ error(timeout)
after 30000 ->
+ flush_reqs(L),
error(timeout)
end;
-collect([]) ->
+collect([], _) ->
+ ok.
+
+flush_reqs([{Pid, Ref}|T]) ->
+ receive
+ {'DOWN', Ref, _, _, _} ->
+ flush_reqs(T)
+ after 0 ->
+ erlang:demonitor(Ref),
+ exit(Pid, kill)
+ end;
+flush_reqs([]) ->
ok.
@@ -371,7 +383,7 @@ call_sota_service_(RegName, Data) ->
{message, Other} ->
ct:log("wrong message: ~p", [Other]),
error({unmatched, Other})
- after 30000 ->
+ after 5000 ->
error(timeout)
end.
@@ -460,7 +472,11 @@ sota_bin() ->
"00000000000000000000000000000000000000000000000000">>.
json_result({ok, {http_response, {_V1, _V2}, 200, _Text, _Hdr}, JSON}) ->
- jsx:decode(JSON).
+ jsx:decode(JSON);
+json_result(Other) ->
+ ct:log("json_result(~p)", [Other]),
+ error({unexpected, Other}).
+
start_json_rpc_server(Port) ->
{ok, Pid} = exo_http_server:start(Port, [{request_handler,
@@ -468,7 +484,7 @@ start_json_rpc_server(Port) ->
save({server,Port}, Pid),
Pid.
-handle_body(Socket, Request, Body, St) ->
+handle_body(Socket, _Request, Body, _St) ->
ct:log("handle_body(Body = ~p)", [Body]),
JSON = jsx:decode(Body),
ct:log("Got JSON Req: ~p", [JSON]),
@@ -706,6 +722,15 @@ ensure_dir(Dir) ->
env() ->
"RVI_LOGLEVEL=debug RVI_MYIP=127.0.0.1 RVI_BACKEND=127.0.0.1".
+env(backend) ->
+ env();
+env(sample) ->
+ [env(),
+ " RVI_BACKEND=127.0.0.1 RVI_PORT=9000"
+ " RVI_MY_NODE_ADDR=127.0.0.1:9000"].
+
+
+
root() ->
code:lib_dir(rvi_core).
@@ -724,18 +749,28 @@ service_edge("sample" ) -> "http://localhost:9001".
rvi_log_addr("backend") -> "http://localhost:8809";
rvi_log_addr("sample" ) -> "http://localhost:9009".
-install_rvi_node(Name, Env, _ConfigF) ->
+install_backend_node(Name) ->
+ install_rvi_node(backend, Name).
+
+install_sample_node(Name) ->
+ install_rvi_node(sample, Name).
+
+install_rvi_node(Type, Name) ->
Root = code:lib_dir(rvi_core),
Scripts = filename:join(Root, "scripts"),
ct:log("Root = ~p", [Root]),
Cmd = lists:flatten(
- [Env, " ", Scripts, "/rvi_install.sh ./", Name]),
-
+ ["sh -x ", Scripts, "/rvi_install",
+ " -r ", filename:join(root_keys(), "root_cert.crt"),
+ " -d basic_backend_keys/device_cert.crt",
+ " -k basic_backend_keys/device_key.pem",
+ " -n ", Name,
+ creds(Type),
+ " ", Name, "/rvi_core"]),
ct:log("Cmd = `~s`", [Cmd]),
Res = cmd(Cmd),
ct:log("install_rvi_node/1 -> ~p", [Res]),
-
Res1 = cmd(lists:flatten(["install -d --mode 0755 ./", Name])),
ct:log("install_rvi_node/2 -> ~p", [Res1]),
@@ -744,17 +779,12 @@ install_rvi_node(Name, Env, _ConfigF) ->
Res2.
-install_sample_node(Name, ConfigF) ->
- Env = [env(),
- " RVI_BACKEND=127.0.0.1 RVI_PORT=9000"
- " RVI_MY_NODE_ADDR=127.0.0.1:9000"],
- install_rvi_node(Name, Env,
- [root(), "/priv/test_config/", ConfigF]).
-
-%% in_priv_dir(F, Cfg) ->
-%% %% PrivDir = ?config(priv_dir, Cfg),
-%% %% in_dir(PrivDir, F, Cfg).
-%% F(Cfg).
+creds(backend) ->
+ [" -c basic_backend_creds/backend_cred.jwt"
+ " -c basic_backend_creds/sota_backend_cred.jwt"];
+creds(sample) ->
+ [" -c basic_sample_creds/lock_cred.jwt"
+ " -c basic_sample_creds/sota_cred.jwt"].
cmd(C) ->
cmd(C, []).
@@ -879,15 +909,15 @@ hex(X) when X >= 10, X =< 15 ->
$a + X - 10.
-json_rpc(URL, Method, Args) ->
- Req = binary_to_list(
- iolist_to_binary(
- exo_json:encode({struct, [{"jsonrpc", "2.0"},
- {"id", 1},
- {"method", Method},
- {"params", Args}]}))),
- Hdrs = [{'Content-Type', "application/json"}],
- exo_http:wpost(URL, {1,1}, Hdrs, Req, 1000).
+%% json_rpc(URL, Method, Args) ->
+%% Req = binary_to_list(
+%% iolist_to_binary(
+%% exo_json:encode({struct, [{"jsonrpc", "2.0"},
+%% {"id", 1},
+%% {"method", Method},
+%% {"params", Args}]}))),
+%% Hdrs = [{'Content-Type', "application/json"}],
+%% exo_http:wpost(URL, {1,1}, Hdrs, Req, 1000).
t_no_errors(Config) ->
no_errors(?config(test_nodes, Config), ?config(test_dir, Config)).
@@ -896,7 +926,8 @@ no_errors(Dirs, PDir) ->
ct:log("Will check errors in ~p", [Dirs]),
true = lists:all(
fun(D) ->
- no_errors_(filename:join([PDir, D, "rvi", "log", "lager"]), D)
+ no_errors_(filename:join([PDir, D, "rvi_core",
+ "log", "lager"]), D)
end, Dirs),
ok.
@@ -913,6 +944,6 @@ log_is_empty(Log, F, Name) ->
ct:log("~s: ~s is not empty:~n~s", [Name, F, Content]),
false;
{error, Reason} ->
- ct:log("~s: Cannot read log ~s (~p)", [Name, F, Reason]),
+ ct:log("~s: Cannot read log ~s (~p)", [Name, Log, Reason]),
false
end.