MOD mineurs
[euphorik.git] / modules / erl / euphorik_test.erl
index b705fc6..f07941c 100644 (file)
 
 
 -module(euphorik_test).
--export([start/2, stop/1]).
+-export([
+   start/2,
+   stop/1,
+   bench_get_messages/0,
+   bench_get_messages_avec_2_conversations/0
+]).
 -include("../include/euphorik_bd.hrl").
 
 
@@ -46,6 +51,52 @@ start(N, M) ->
 stop(Pids) ->
    lists:foreach(fun(Pid) -> exit(Pid, kill) end, Pids).
    
+
+bench_get_messages() ->
+   T = [
+      {page,"chat"},
+      {cookie,"5G84A5CJXMCPEHNI8T5A9"},
+      {message_count,40},
+      {last_message_id,0},
+      {main_page,1},
+      {troll_id,0},
+      {conversations,{array,[]}}
+   ],
+   moyenne_temps(euphorik_protocole, wait_event, [T], 20).
+
+
+bench_get_messages_avec_2_conversations() ->
+   T = [
+      {page,"chat"},
+      {cookie,"5G84A5CJXMCPEHNI8T5A9"},
+      {message_count,40},
+      {last_message_id,0},
+      {main_page,1},
+      {troll_id,0},
+      {conversations,{array, [
+         {struct, [
+            {root, 921},
+            {page,1},
+            {last_message_id,0}
+         ]},
+         {struct, [
+            {root, 772},
+            {page, 1},
+            {last_message_id, 0}
+         ]}
+      ]}}
+   ],
+   moyenne_temps(euphorik_protocole, wait_event, [T], 20).
+
+   
+moyenne_temps(Module, Fun, Args, N) ->
+   moyenne_temps(Module, Fun, Args, N, N, 0).
+moyenne_temps(_, _, _, 0, Total, Temps_acc) ->
+   Temps_acc / Total;
+moyenne_temps(Module, Fun, Args, N, Total, Temps_acc) ->
+   {Temps, _} = timer:tc(Module, Fun, Args),
+   moyenne_temps(Module, Fun, Args, N - 1, Total, Temps_acc + Temps).
+   
    
 % Crée N user avec des noms aléatoires et renvoie la liste des id.
 creer_users(N) ->
@@ -96,7 +147,9 @@ messages_id_rand() ->
 
 % tire N element distinct parmis la liste L proposée
 tire_element_rand(N, L) when N =< length(L) ->
-   tire_element_rand(N, L, []).
+   tire_element_rand(N, L, []);
+tire_element_rand(_, _) ->
+   [].
 tire_element_rand(0, _, Elements) -> Elements;
 tire_element_rand(N, L, Elements) ->
    E = lists:nth(random:uniform(length(L)), L),
@@ -110,11 +163,17 @@ tire_element_rand(N, L, Elements) ->
 loop(User_id, 0) ->
    io:format("~p a fini~n", [User_id]);
 loop(User_id, M) -> 
-   % attend un temp aléatoire compris entre 1 sec et 5 sec
-   timer:sleep(1000 * random:uniform(5)),
+   % attend un temp aléatoire compris entre 2 sec et 10 sec
+   timer:sleep(2000 * random:uniform(10)),
    % poste un message aléatoire par une personne aléatoire répondant à des messages aléatoires
    {Message, Repond_a} = {message_rand(), messages_id_rand()},
    io:format("~p poste ~p et repond a ~w~n", [User_id, Message, Repond_a]),
-   euphorik_bd:nouveau_message(Message, User_id, Repond_a),
-   loop(User_id, M - 1).
+   case euphorik_bd:nouveau_message(Message, User_id, Repond_a) of
+      {erreur, E} -> 
+         io:format("~p : erreur : ~p~n", [User_id, E]),
+         loop(User_id, M);
+      _ ->
+         loop(User_id, M - 1)
+   end.
+   
    
\ No newline at end of file