-module(euphorik_test).
--export([start/1, stop/1]).
+-export([start/2, stop/1]).
-include("../include/euphorik_bd.hrl").
% N est le nombre d'utilisateur
-start(N) ->
+% M est le nombre de message que chaque utilisateur va poster
+start(N, M) ->
Ids = creer_users(N),
lists:map(
fun(Id) ->
fun() ->
{A1, A2, A3} = now(),
random:seed(A1, A2, A3),
- loop(Id)
+ loop(Id, M)
end
)
end,
% 2 : 0.15
% 3 : 0.05
messages_id_rand() ->
- Messages = lists:map(fun(#minichat{id = Id}) -> Id end, euphorik_bd:messages(30)),
R = random:uniform(),
- if R =< 0.5 -> [];
- R > 0.5 andalso R =< 0.8 ->
- tire_element_rand(1, Messages);
- R > 0.8 andalso R =< 0.95 ->
- tire_element_rand(2, Messages);
+ if R =< 0.5 ->
+ [];
true ->
- tire_element_rand(3, Messages)
+ Messages = lists:map(fun(#minichat{id = Id}) -> Id end, euphorik_bd:messages(8)),
+ if
+ R > 0.5 andalso R =< 0.8 ->
+ tire_element_rand(1, Messages);
+ R > 0.8 andalso R =< 0.95 ->
+ tire_element_rand(2, Messages);
+ true ->
+ tire_element_rand(3, Messages)
+ end
end.
tire_element_rand(N-1, L, [E | Elements])
end.
-
-loop(User_id) ->
+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)),
% 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).
+ loop(User_id, M - 1).
\ No newline at end of file