diff --git a/loadtest/tinode.beam b/loadtest/tinode.beam
index 3c57efbb..abb78eb8 100644
Binary files a/loadtest/tinode.beam and b/loadtest/tinode.beam differ
diff --git a/loadtest/tinode.erl b/loadtest/tinode.erl
index 91aedc81..52f8d535 100644
--- a/loadtest/tinode.erl
+++ b/loadtest/tinode.erl
@@ -5,7 +5,7 @@
%% directory.
-module(tinode).
--export([rand_user_secret/1, shuffle/1]).
+-export([rand_user_secret/1, shuffle/1, cache_token/2, read_token/1]).
%% Produces a secret for use in basic login.
rand_user_secret({Pid, DynData}) ->
@@ -27,3 +27,19 @@ get_rand_secret() ->
shuffle(L) ->
RandomList=[{rand:uniform(), X} || X <- L],
[X || {_,X} <- lists:sort(RandomList)].
+
+%% Reads previously cached token for the specified user.
+read_token(Uid) ->
+ {ok, LogDir} = application:get_env(tsung_controller, log_dir_real),
+ case file:read_file(filename:join(LogDir, Uid)) of
+ {ok, Data} -> string:trim(Data);
+ {error, _} -> ""
+ end.
+
+%% Saves auth token for the specified user in the log directory.
+cache_token(Uid, Token) ->
+ {ok, LogDir} = application:get_env(tsung_controller, log_dir_real),
+ {ok, File} = file:open(filename:join(LogDir, Uid), [write]),
+ file:write(File, Token),
+ file:close(File),
+ ok.
diff --git a/loadtest/tsung.xml b/loadtest/tsung.xml
index fb3d23f7..8a163d5f 100644
--- a/loadtest/tsung.xml
+++ b/loadtest/tsung.xml
@@ -11,7 +11,7 @@
-
+
@@ -31,9 +31,49 @@
{"hi":{"id":"%%_baseid%%01","ver":"0.15","ua":"Tsung-Loadtest/1.0; tsung/1.7.0"}}
-
- {"login":{"id":"%%_baseid%%02","scheme":"basic","secret":"%%tinode:rand_user_secret%%"}}
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {"ctrl":.*"code":200.*}
+ {"login":{"id":"%%_baseid%%02","scheme":"token","secret":"%%_token%%"}}
+
+
+
+
+
+
+ {"ctrl":.*"code":200.*}
+
+ {"login":{"id":"%%_baseid%%02","scheme":"basic","secret":"%%_secret%%"}}
+
+
+
+
+
+
+
{"sub":{"id":"%%_baseid%%03","topic":"me","get":{"what":"desc"}}}