Skip to content

Commit 3f47040

Browse files
author
Mathieu Lecarme
committed
More realistic scenario.
1 parent e4eaebd commit 3f47040

2 files changed

Lines changed: 51 additions & 13 deletions

File tree

examples/carbon.config

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{mode, max}.
1+
{mode, {rate, 1}}.
22

33
{duration, 5}.
44

@@ -10,3 +10,5 @@
1010

1111
{key_generator, {pareto_int, 100}}.
1212

13+
{carbon_batch_size, 150}.
14+
{carbon_keep_connect, true}.

src/basho_bench_driver_carbon.erl

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,61 @@
66

77
-record(state, {
88
host,
9-
port
9+
port,
10+
keep_connect,
11+
batch_size,
12+
socket
1013
}).
1114

1215
new(_Id) ->
1316
Host = basho_bench_config:get(carbon_server, "127.0.0.1"),
1417
Port = basho_bench_config:get(carbon_port, 2003),
15-
{ok, #state{host=Host, port=Port}}.
18+
KeepConnect = basho_bench_config:get(carbon_keep_connect, false),
19+
BatchSize = basho_bench_config:get(carbon_batch_size, 100),
20+
{ok, #state{
21+
host=Host,
22+
port=Port,
23+
keep_connect=KeepConnect,
24+
batch_size=BatchSize,
25+
socket=nil}}.
1626

17-
run(set, KeyGen, _ValueGen, State) ->
18-
case gen_tcp:connect(State#state.host,
19-
State#state.port,
20-
[list, {packet, 0}]) of
27+
carbon(State = #state{host=Host, port=Port, socket=nil}, Message) ->
28+
case gen_tcp:connect(Host, Port, [list, {packet, 0}]) of
2129
{ok, Sock} ->
22-
{Mega, Sec, _Micro} = now(),
23-
Msg = io_lib:format("pim.pam.poum.~p ~p ~p~n", [KeyGen(), (Mega * 1000 + Sec), random:uniform(1000)]),
24-
gen_tcp:send(Sock, Msg),
25-
gen_tcp:close(Sock),
26-
{ok, State};
30+
carbon(State#state{socket=Sock}, Message);
2731
Error ->
28-
{error, Error, State}
32+
Error
33+
end;
34+
35+
carbon(State = #state{socket=Socket, keep_connect=KeepConnect}, Message) ->
36+
case gen_tcp:send(Socket, Message) of
37+
ok ->
38+
case KeepConnect of
39+
true ->
40+
{ok, State};
41+
_ ->
42+
ok = gen_tcp:close(Socket),
43+
{ok, State#state{socket=nil}}
44+
end;
45+
Error ->
46+
Error % let it crash
47+
end.
48+
49+
concat(0, _Keygen, _Ts, List) ->
50+
List;
51+
52+
concat(Size, KeyGen, Ts, List) ->
53+
Msg = io_lib:format("pim.pam.poum.~p ~p ~p~n", [KeyGen(), Ts, random:uniform(1000)]),
54+
concat(Size -1, KeyGen, Ts, [Msg | List]).
55+
56+
run(set, KeyGen, _ValueGen, State = #state{batch_size=BatchSize}) ->
57+
{Mega, Sec, _Micro} = now(),
58+
Msg = concat(BatchSize, KeyGen, Mega * 1000 + Sec, []),
59+
60+
case carbon(State, Msg) of
61+
{error, E} ->
62+
{error, E, State};
63+
OK ->
64+
OK
2965
end.
3066

0 commit comments

Comments
 (0)