3333
3434-export ([new /2 ,
3535 terminate /1 ,
36- process_summary /6 ,
36+ process_summary /7 ,
3737 report_error /3 ,
38- report_global_stats /5 ,
39- report_latency /8 ]).
38+ report_global_stats /6 ,
39+ report_latency /9 ]).
4040
4141-include (" basho_bench.hrl" ).
4242
@@ -57,7 +57,7 @@ new(Ops, Measurements) ->
5757 filename :join ([TestDir , " summary.csv" ]),
5858 [raw , binary , write ]
5959 ),
60- file :write (SummaryFile , <<" elapsed, window, total_operations, total_units, successful, failed\n " >>),
60+ file :write (SummaryFile , <<" elapsed, window, concurrency, total_operations, total_units, successful, failed\n " >>),
6161
6262 % % Setup errors file w/counters for each error. Embedded commas likely
6363 % % in the error messages so quote the columns.
@@ -82,11 +82,12 @@ terminate({SummaryFile, ErrorsFile}) ->
8282 ok .
8383
8484process_summary ({SummaryFile , _ErrorsFile },
85- Elapsed , Window , Ops , Oks , Errors ) ->
85+ Elapsed , Window , Concurrency , Ops , Oks , Errors ) ->
8686 file :write (SummaryFile ,
87- io_lib :format (" ~w , ~w , ~w , ~w , ~w , ~w \n " ,
87+ io_lib :format (" ~w , ~w , ~w , ~w , ~w , ~w , ~w \n " ,
8888 [Elapsed ,
8989 Window ,
90+ Concurrency ,
9091 Ops + Errors ,
9192 Oks ,
9293 Ops ,
@@ -98,7 +99,7 @@ report_error({_SummaryFile, ErrorsFile},
9899 io_lib :format (" \" ~w \" ,\" ~w \"\n " ,
99100 [Key , Count ])).
100101
101- report_global_stats ({Op ,_ }, Stats , Errors , Units , Ops ) ->
102+ report_global_stats ({Op ,_ }, Stats , Errors , Units , Ops , Concurrency ) ->
102103 % % Build up JSON structure representing statistics collected in folsom
103104 P = proplists :get_value (percentile , Stats ),
104105 JsonElements0 = lists :foldl (fun (K , Acc ) ->
@@ -136,20 +137,24 @@ report_global_stats({Op,_}, Stats, Errors, Units, Ops) ->
136137 % % insert Ops counts
137138 JsonElements3 = [{'ops' , Ops } | JsonElements2 ],
138139
140+ % % insert concurrency
141+ JsonElements4 = [{concurrency , Concurrency } | JsonElements3 ],
142+
139143 JsonMetrics0 = erlang :get (run_metrics ),
140- JsonMetrics = lists :keyreplace (Op , 1 , JsonMetrics0 , {Op , {JsonElements3 }}),
144+ JsonMetrics = lists :keyreplace (Op , 1 , JsonMetrics0 , {Op , {JsonElements4 }}),
141145 % ?DEBUG("Generated Json:\n~w",[JsonElements]),
142146 erlang :put (run_metrics , JsonMetrics ).
143147
144148report_latency ({_SummaryFile , _ErrorsFile },
145- Elapsed , Window , Op ,
149+ Elapsed , Window , Concurrency , Op ,
146150 Stats , Errors , Units , Ops ) ->
147151 case proplists :get_value (n , Stats ) > 0 of
148152 true ->
149153 P = proplists :get_value (percentile , Stats ),
150- Line = io_lib :format (" ~w , ~w , ~w , ~w , ~w , ~.1f , ~w , ~w , ~w , ~w , ~w , ~w \n " ,
154+ Line = io_lib :format (" ~w , ~w , ~w , ~w , ~w , ~w , ~ .1f , ~w , ~w , ~w , ~w , ~w , ~w \n " ,
151155 [Elapsed ,
152156 Window ,
157+ Concurrency ,
153158 Units ,
154159 Ops ,
155160 proplists :get_value (min , Stats ),
@@ -177,7 +182,7 @@ op_csv_file({Label, _Op}) ->
177182 TestDir = basho_bench :get_test_dir (),
178183 Fname = filename :join ([TestDir , normalize_label (Label ) ++ " _latencies.csv" ]),
179184 {ok , F } = file :open (Fname , [raw , binary , write ]),
180- ok = file :write (F , <<" elapsed, window, n, ops, min, mean, median, 95th, 99th, 99_9th, max, errors\n " >>),
185+ ok = file :write (F , <<" elapsed, window, concurrency, n, ops, min, mean, median, 95th, 99th, 99_9th, max, errors\n " >>),
181186 F .
182187
183188measurement_csv_file ({Label , _Op }) ->
@@ -199,7 +204,7 @@ stringify_stats(_RunStatsType=json, RunMetrics) ->
199204 [ jiffy :encode ( {[{recordedMetrics , {RunMetrics }}]}, [pretty ] ) ];
200205stringify_stats (_RunStatsType = csv , RunMetrics ) ->
201206 % Ordered output of fields
202- OrderedFields = [n , ops , mean , geometric_mean , harmonic_mean ,
207+ OrderedFields = [n , ops , concurrency , mean , geometric_mean , harmonic_mean ,
203208 variance , standard_deviation , skewness , kurtosis ,
204209 median , p75 , p90 , p95 , p99 , p999 ,
205210 min , max , basho_errors ],
0 commit comments