nchan_tools 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/exe/nchan-benchmark +71 -41
- data/lib/nchan_tools/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1dd4ceddaf522f6a4e493ac215a17b9989cec0a8412dd7df99798cf0261206b
|
4
|
+
data.tar.gz: 81988f661eaf53d32f06e1199f9508370c7fc65e481db90a23e81239fae10ffd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 412ea567add374cc898383500193ca1b4fee644389777db3fe571561dc368f21256859e6266d54aba0fd332994036313ba3d62d44d79057c889bcac3b407912a
|
7
|
+
data.tar.gz: 4503fe9cacadf0c6baafd2a44f15fd3891540c3378cb2893c2844f3260a9766c4d216b93d6ff1f0be335936dc9b805725af290e70a3fa36ba4db2c1c48414ae2
|
data/exe/nchan-benchmark
CHANGED
@@ -9,11 +9,16 @@ require "pry"
|
|
9
9
|
require "HDRHistogram"
|
10
10
|
|
11
11
|
verbose = false
|
12
|
+
save_csv = false
|
12
13
|
|
13
14
|
opt_parser=OptionParser.new do |opts|
|
14
15
|
opts.on("-v", "--verbose", "somewhat rather extraneously wordful output") do
|
15
16
|
verbose = true
|
16
17
|
end
|
18
|
+
opts.on("--csv FILENAME", "Append results to file in CSV format") do |f|
|
19
|
+
save_csv = f
|
20
|
+
end
|
21
|
+
|
17
22
|
end
|
18
23
|
opt_parser.banner="Usage: benchan.rb [options] url1 url2 url3..."
|
19
24
|
opt_parser.parse!
|
@@ -74,6 +79,7 @@ class Benchan
|
|
74
79
|
msg = msg[8..-1]
|
75
80
|
parsed = JSON.parse msg
|
76
81
|
@results[sub.url] = parsed
|
82
|
+
@results[sub.url]["raw"] = msg if @results[sub.url]
|
77
83
|
1+1
|
78
84
|
else
|
79
85
|
binding.pry
|
@@ -128,59 +134,59 @@ class Benchan
|
|
128
134
|
end
|
129
135
|
|
130
136
|
def results
|
131
|
-
channels = 0
|
132
|
-
runtime = []
|
133
|
-
subscribers = 0
|
134
|
-
message_length = []
|
135
|
-
messages_sent = 0
|
136
|
-
messages_send_confirmed = 0
|
137
|
-
messages_send_unconfirmed = 0
|
138
|
-
messages_send_failed = 0
|
139
|
-
messages_received = 0
|
140
|
-
messages_unreceived = 0
|
141
|
-
hdrh_publish = nil
|
142
|
-
hdrh_receive = nil
|
137
|
+
@channels = 0
|
138
|
+
@runtime = []
|
139
|
+
@subscribers = 0
|
140
|
+
@message_length = []
|
141
|
+
@messages_sent = 0
|
142
|
+
@messages_send_confirmed = 0
|
143
|
+
@messages_send_unconfirmed = 0
|
144
|
+
@messages_send_failed = 0
|
145
|
+
@messages_received = 0
|
146
|
+
@messages_unreceived = 0
|
147
|
+
@hdrh_publish = nil
|
148
|
+
@hdrh_receive = nil
|
143
149
|
@results.each do |url, data|
|
144
|
-
channels += data["channels"]
|
145
|
-
runtime << data["run_time_sec"]
|
146
|
-
subscribers += data["subscribers"]
|
147
|
-
message_length << data["message_length"]
|
148
|
-
messages_sent += data["messages"]["sent"]
|
149
|
-
messages_send_confirmed += data["messages"]["send_confirmed"]
|
150
|
-
messages_send_unconfirmed += data["messages"]["send_unconfirmed"]
|
151
|
-
messages_send_failed += data["messages"]["send_failed"]
|
152
|
-
messages_received += data["messages"]["received"]
|
153
|
-
messages_unreceived += data["messages"]["unreceived"]
|
150
|
+
@channels += data["channels"]
|
151
|
+
@runtime << data["run_time_sec"]
|
152
|
+
@subscribers += data["subscribers"]
|
153
|
+
@message_length << data["message_length"]
|
154
|
+
@messages_sent += data["messages"]["sent"]
|
155
|
+
@messages_send_confirmed += data["messages"]["send_confirmed"]
|
156
|
+
@messages_send_unconfirmed += data["messages"]["send_unconfirmed"]
|
157
|
+
@messages_send_failed += data["messages"]["send_failed"]
|
158
|
+
@messages_received += data["messages"]["received"]
|
159
|
+
@messages_unreceived += data["messages"]["unreceived"]
|
154
160
|
|
155
161
|
if data["message_publishing_histogram"]
|
156
162
|
hdrh = HDRHistogram.unserialize(data["message_publishing_histogram"], unit: :ms, multiplier: 0.001)
|
157
|
-
if hdrh_publish
|
158
|
-
hdrh_publish.merge! hdrh
|
163
|
+
if @hdrh_publish
|
164
|
+
@hdrh_publish.merge! hdrh
|
159
165
|
else
|
160
|
-
hdrh_publish = hdrh
|
166
|
+
@hdrh_publish = hdrh
|
161
167
|
end
|
162
168
|
end
|
163
169
|
if data["message_delivery_histogram"]
|
164
170
|
hdrh = HDRHistogram.unserialize(data["message_delivery_histogram"], unit: :ms, multiplier: 0.001)
|
165
|
-
if hdrh_receive
|
166
|
-
hdrh_receive.merge! hdrh
|
171
|
+
if @hdrh_receive
|
172
|
+
@hdrh_receive.merge! hdrh
|
167
173
|
else
|
168
|
-
hdrh_receive = hdrh
|
174
|
+
@hdrh_receive = hdrh
|
169
175
|
end
|
170
176
|
end
|
171
177
|
end
|
172
178
|
|
173
|
-
message_length.
|
174
|
-
runtime.
|
179
|
+
@message_length = @message_length.sum.to_f / @message_length.size
|
180
|
+
@runtime = @runtime.sum.to_f / @runtime.size
|
175
181
|
|
176
182
|
fmt = <<-END.gsub(/^ {6}/, '')
|
177
183
|
Nchan servers: %d
|
178
|
-
runtime: %
|
184
|
+
runtime: %d
|
179
185
|
channels: %d
|
180
186
|
subscribers: %d
|
181
187
|
subscribers per channel: %.1f
|
182
188
|
messages:
|
183
|
-
length: %
|
189
|
+
length: %d
|
184
190
|
sent: %d
|
185
191
|
send_confirmed: %d
|
186
192
|
send_unconfirmed: %d
|
@@ -193,22 +199,46 @@ class Benchan
|
|
193
199
|
receive rate per subscriber: %.3f/min
|
194
200
|
END
|
195
201
|
out = fmt % [
|
196
|
-
@n, runtime
|
197
|
-
message_length
|
198
|
-
messages_received, messages_unreceived,
|
199
|
-
messages_sent.to_f
|
200
|
-
messages_received.to_f
|
201
|
-
(messages_sent.to_f* 60)/(runtime
|
202
|
-
(messages_received.to_f * 60)/(runtime
|
202
|
+
@n, @runtime, @channels, @subscribers, @subscribers.to_f/@channels,
|
203
|
+
@message_length, @messages_sent, @messages_send_confirmed, @messages_send_unconfirmed, @messages_send_failed,
|
204
|
+
@messages_received, @messages_unreceived,
|
205
|
+
@messages_sent.to_f/@runtime,
|
206
|
+
@messages_received.to_f/@runtime,
|
207
|
+
(@messages_sent.to_f* 60)/(@runtime * @channels),
|
208
|
+
(@messages_received.to_f * 60)/(@runtime * @subscribers)
|
203
209
|
]
|
204
210
|
|
205
|
-
out << hdrhistogram_stats("message publishing latency", hdrh_publish) if hdrh_publish
|
206
|
-
out << hdrhistogram_stats("message delivery latency", hdrh_receive) if hdrh_receive
|
211
|
+
out << hdrhistogram_stats("message publishing latency", @hdrh_publish) if @hdrh_publish
|
212
|
+
out << hdrhistogram_stats("message delivery latency", @hdrh_receive) if @hdrh_receive
|
207
213
|
|
208
214
|
puts out
|
209
215
|
end
|
216
|
+
|
217
|
+
def append_csv_file(file)
|
218
|
+
require "csv"
|
219
|
+
write_headers = File.zero?(file)
|
220
|
+
headers = %i[servers runtime channels subscribers
|
221
|
+
message_length messages_sent messages_send_confirmed messages_send_unconfirmed messages_send_failed
|
222
|
+
messages_send_received messages_send_unreceived
|
223
|
+
messages_send_rate messages_receive_rate messages_send_rate_per_channel messages_receive_rate_per_subscriber
|
224
|
+
message_publishing_response_avg message_publishing_response_99percentile message_publishing_response_stddev message_publishing_response_count
|
225
|
+
message_delivery_avg message_delivery_99percentile message_delivery_stddev message_delivery_count]
|
226
|
+
csv = CSV.open(file, "a", {headers: headers, write_headers: write_headers})
|
227
|
+
csv << [@n, @runtime, @channels, @subscribers,
|
228
|
+
@message_length, @messages_sent, @messages_send_confirmed, @messages_send_unconfirmed, @messages_send_failed,
|
229
|
+
@messages_received, @messages_unreceived,
|
230
|
+
@messages_sent.to_f/@runtime, @messages_received.to_f/@runtime,
|
231
|
+
(@messages_sent.to_f* 60)/(@runtime * @channels), (@messages_received.to_f * 60)/(@runtime * @subscribers),
|
232
|
+
@hdrh_publish.mean, @hdrh_publish.percentile(99.0), @hdrh_publish.max, @hdrh_publish.stddev, @hdrh_publish.count,
|
233
|
+
@hdrh_receive.mean, @hdrh_receive.percentile(99.0), @hdrh_receive.max, @hdrh_receive.stddev, @hdrh_receive.count
|
234
|
+
]
|
235
|
+
csv.flush
|
236
|
+
csv.close
|
237
|
+
end
|
210
238
|
end
|
211
239
|
|
212
240
|
benchan = Benchan.new urls
|
213
241
|
benchan.run
|
214
242
|
benchan.results
|
243
|
+
benchan.append_csv_file(save_csv) if save_csv
|
244
|
+
|
data/lib/nchan_tools/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nchan_tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leo Ponomarev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: typhoeus
|