rbsrt 0.1.0
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 +7 -0
- data/README.md +752 -0
- data/Rakefile +29 -0
- data/bin/rbsrt-client +113 -0
- data/bin/rbsrt-server +68 -0
- data/bin/rbsrt-sockets +82 -0
- data/ext/rbsrt/extconf.rb +37 -0
- data/ext/rbsrt/rbsrt.c +2270 -0
- data/ext/rbsrt/rbsrt.h +265 -0
- data/ext/rbsrt/rbstats.c +960 -0
- data/ext/rbsrt/rbstats.h +24 -0
- data/lib/rbsrt/rbsrt.bundle +0 -0
- data/lib/rbsrt/streamid_components.rb +113 -0
- data/lib/rbsrt/version.rb +3 -0
- data/lib/rbsrt.rb +5 -0
- data/rbsrt.gemspec +22 -0
- data/test/rbsrt/poll_test.rb +153 -0
- data/test/rbsrt/stats_test.rb +546 -0
- data/test/rbsrt/streamid_components_test.rb +281 -0
- metadata +83 -0
@@ -0,0 +1,546 @@
|
|
1
|
+
require 'minitest/spec'
|
2
|
+
require "rbsrt"
|
3
|
+
|
4
|
+
describe SRT::Stats do
|
5
|
+
|
6
|
+
before do
|
7
|
+
# puts "server start"
|
8
|
+
@server = SRT::Socket.new
|
9
|
+
@server.bind "127.0.0.1", "6789"
|
10
|
+
@server.listen 2
|
11
|
+
|
12
|
+
@client = SRT::Socket.new
|
13
|
+
@client.connect "127.0.0.1", "6789"
|
14
|
+
|
15
|
+
@remote_client = @server.accept
|
16
|
+
end
|
17
|
+
|
18
|
+
after do
|
19
|
+
# puts "server stop"
|
20
|
+
@remote_client.close if @remote_client
|
21
|
+
@client.close if @client
|
22
|
+
@server.close if @server
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
describe "properties and aliases" do
|
27
|
+
let(:stats) do
|
28
|
+
SRT::Stats.new @remote_client, :clear => false
|
29
|
+
end
|
30
|
+
|
31
|
+
it "has time since the UDT entity is started, in milliseconds" do
|
32
|
+
assert_kind_of(Numeric, stats.msTimeStamp)
|
33
|
+
assert_kind_of(Numeric, stats.ms_time_stamp)
|
34
|
+
assert_kind_of(Numeric, stats.mstimestamp)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "has total number of sent data packets, including retransmissions" do
|
38
|
+
assert_kind_of(Numeric, stats.pktSentTotal)
|
39
|
+
assert_kind_of(Numeric, stats.pkt_sent_total)
|
40
|
+
assert_kind_of(Numeric, stats.pktsenttotal)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "has total number of received packets" do
|
44
|
+
assert_kind_of(Numeric, stats.pktRecvTotal)
|
45
|
+
assert_kind_of(Numeric, stats.pkt_recv_total)
|
46
|
+
assert_kind_of(Numeric, stats.pktrecvtotal)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "has total number of lost packets (sender side)" do
|
50
|
+
assert_kind_of(Numeric, stats.pktSndLossTotal)
|
51
|
+
assert_kind_of(Numeric, stats.pkt_snd_loss_total)
|
52
|
+
assert_kind_of(Numeric, stats.pktsndlosstotal)
|
53
|
+
end
|
54
|
+
|
55
|
+
it "has total number of lost packets (receiver side)" do
|
56
|
+
assert_kind_of(Numeric, stats.pktRcvLossTotal)
|
57
|
+
assert_kind_of(Numeric, stats.pkt_rcv_loss_total)
|
58
|
+
assert_kind_of(Numeric, stats.pktrcvlosstotal)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "has total number of retransmitted packets" do
|
62
|
+
assert_kind_of(Numeric, stats.pktRetransTotal)
|
63
|
+
assert_kind_of(Numeric, stats.pkt_retrans_total)
|
64
|
+
assert_kind_of(Numeric, stats.pktretranstotal)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "has total number of sent ACK packets" do
|
68
|
+
assert_kind_of(Numeric, stats.pktSentACKTotal)
|
69
|
+
assert_kind_of(Numeric, stats.pkt_sent_ack_total)
|
70
|
+
assert_kind_of(Numeric, stats.pktsentacktotal)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "has total number of received ACK packets" do
|
74
|
+
assert_kind_of(Numeric, stats.pktRecvACKTotal)
|
75
|
+
assert_kind_of(Numeric, stats.pkt_recv_ack_total)
|
76
|
+
assert_kind_of(Numeric, stats.pktrecvacktotal)
|
77
|
+
end
|
78
|
+
|
79
|
+
it "has total number of sent NAK packets" do
|
80
|
+
assert_kind_of(Numeric, stats.pktSentNAKTotal)
|
81
|
+
assert_kind_of(Numeric, stats.pkt_sent_nak_total)
|
82
|
+
assert_kind_of(Numeric, stats.pktsentnaktotal)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "has total number of received NAK packets" do
|
86
|
+
assert_kind_of(Numeric, stats.pktRecvNAKTotal)
|
87
|
+
assert_kind_of(Numeric, stats.pkt_recv_nak_total)
|
88
|
+
assert_kind_of(Numeric, stats.pktrecvnaktotal)
|
89
|
+
end
|
90
|
+
|
91
|
+
it "has total time duration when UDT is sending data (idle time exclusive)" do
|
92
|
+
assert_kind_of(Numeric, stats.usSndDurationTotal)
|
93
|
+
assert_kind_of(Numeric, stats.us_snd_duration_total)
|
94
|
+
assert_kind_of(Numeric, stats.ussnddurationtotal)
|
95
|
+
end
|
96
|
+
|
97
|
+
it "has number of too-late-to-send dropped packets" do
|
98
|
+
assert_kind_of(Numeric, stats.pktSndDropTotal)
|
99
|
+
assert_kind_of(Numeric, stats.pkt_snd_drop_total)
|
100
|
+
assert_kind_of(Numeric, stats.pktsnddroptotal)
|
101
|
+
end
|
102
|
+
|
103
|
+
it "has number of too-late-to play missing packets" do
|
104
|
+
assert_kind_of(Numeric, stats.pktRcvDropTotal)
|
105
|
+
assert_kind_of(Numeric, stats.pkt_rcv_drop_total)
|
106
|
+
assert_kind_of(Numeric, stats.pktrcvdroptotal)
|
107
|
+
end
|
108
|
+
|
109
|
+
it "has number of undecrypted packets" do
|
110
|
+
assert_kind_of(Numeric, stats.pktRcvUndecryptTotal)
|
111
|
+
assert_kind_of(Numeric, stats.pkt_rcv_undecrypt_total)
|
112
|
+
assert_kind_of(Numeric, stats.pktrcvundecrypttotal)
|
113
|
+
end
|
114
|
+
|
115
|
+
it "has number of control packets supplied by packet filter" do
|
116
|
+
assert_kind_of(Numeric, stats.pktSndFilterExtraTotal)
|
117
|
+
assert_kind_of(Numeric, stats.pkt_snd_filter_extra_total)
|
118
|
+
assert_kind_of(Numeric, stats.pktsndfilterextratotal)
|
119
|
+
end
|
120
|
+
|
121
|
+
it "has number of control packets received and not supplied back" do
|
122
|
+
assert_kind_of(Numeric, stats.pktRcvFilterExtraTotal)
|
123
|
+
assert_kind_of(Numeric, stats.pkt_rcv_filter_extra_total)
|
124
|
+
assert_kind_of(Numeric, stats.pktrcvfilterextratotal)
|
125
|
+
end
|
126
|
+
|
127
|
+
it "has number of packets that the filter supplied extra (e.g. FEC rebuilt)" do
|
128
|
+
assert_kind_of(Numeric, stats.pktRcvFilterSupplyTotal)
|
129
|
+
assert_kind_of(Numeric, stats.pkt_rcv_filter_supply_total)
|
130
|
+
assert_kind_of(Numeric, stats.pktrcvfiltersupplytotal)
|
131
|
+
end
|
132
|
+
|
133
|
+
it "has number of packet loss not coverable by filter" do
|
134
|
+
assert_kind_of(Numeric, stats.pktRcvFilterLossTotal)
|
135
|
+
assert_kind_of(Numeric, stats.pkt_rcv_filter_loss_total)
|
136
|
+
assert_kind_of(Numeric, stats.pktrcvfilterlosstotal)
|
137
|
+
end
|
138
|
+
|
139
|
+
it "has total number of sent data bytes, including retransmissions" do
|
140
|
+
assert_kind_of(Numeric, stats.byteSentTotal)
|
141
|
+
assert_kind_of(Numeric, stats.byte_sent_total)
|
142
|
+
assert_kind_of(Numeric, stats.bytesenttotal)
|
143
|
+
end
|
144
|
+
|
145
|
+
it "has total number of received bytes" do
|
146
|
+
assert_kind_of(Numeric, stats.byteRecvTotal)
|
147
|
+
assert_kind_of(Numeric, stats.byte_recv_total)
|
148
|
+
assert_kind_of(Numeric, stats.byterecvtotal)
|
149
|
+
end
|
150
|
+
|
151
|
+
it "has total number of lost bytes SRT_ENABLE_LOSTBYTESCOUNT" do
|
152
|
+
assert_kind_of(Numeric, stats.byteRcvLossTotal)
|
153
|
+
assert_kind_of(Numeric, stats.byte_rcv_loss_total)
|
154
|
+
assert_kind_of(Numeric, stats.bytercvlosstotal)
|
155
|
+
end
|
156
|
+
|
157
|
+
it "has total number of retransmitted bytes" do
|
158
|
+
assert_kind_of(Numeric, stats.byteRetransTotal)
|
159
|
+
assert_kind_of(Numeric, stats.byte_retrans_total)
|
160
|
+
assert_kind_of(Numeric, stats.byteretranstotal)
|
161
|
+
end
|
162
|
+
|
163
|
+
it "has number of too-late-to-send dropped bytes" do
|
164
|
+
assert_kind_of(Numeric, stats.byteSndDropTotal)
|
165
|
+
assert_kind_of(Numeric, stats.byte_snd_drop_total)
|
166
|
+
assert_kind_of(Numeric, stats.bytesnddroptotal)
|
167
|
+
end
|
168
|
+
|
169
|
+
it "has number of too-late-to play missing bytes (estimate based on average packet size)" do
|
170
|
+
assert_kind_of(Numeric, stats.byteRcvDropTotal)
|
171
|
+
assert_kind_of(Numeric, stats.byte_rcv_drop_total)
|
172
|
+
assert_kind_of(Numeric, stats.bytercvdroptotal)
|
173
|
+
end
|
174
|
+
|
175
|
+
it "has number of undecrypted bytes" do
|
176
|
+
assert_kind_of(Numeric, stats.byteRcvUndecryptTotal)
|
177
|
+
assert_kind_of(Numeric, stats.byte_rcv_undecrypt_total)
|
178
|
+
assert_kind_of(Numeric, stats.bytercvundecrypttotal)
|
179
|
+
end
|
180
|
+
|
181
|
+
it "has number of sent data packets, including retransmissions" do
|
182
|
+
assert_kind_of(Numeric, stats.pktSent)
|
183
|
+
assert_kind_of(Numeric, stats.pkt_sent)
|
184
|
+
assert_kind_of(Numeric, stats.pktsent)
|
185
|
+
end
|
186
|
+
|
187
|
+
it "has number of received packets" do
|
188
|
+
assert_kind_of(Numeric, stats.pktRecv)
|
189
|
+
assert_kind_of(Numeric, stats.pkt_recv)
|
190
|
+
assert_kind_of(Numeric, stats.pktrecv)
|
191
|
+
end
|
192
|
+
|
193
|
+
it "has number of lost packets (sender side)" do
|
194
|
+
assert_kind_of(Numeric, stats.pktSndLoss)
|
195
|
+
assert_kind_of(Numeric, stats.pkt_snd_loss)
|
196
|
+
assert_kind_of(Numeric, stats.pktsndloss)
|
197
|
+
end
|
198
|
+
|
199
|
+
it "has number of lost packets (receiver side)" do
|
200
|
+
assert_kind_of(Numeric, stats.pktRcvLoss)
|
201
|
+
assert_kind_of(Numeric, stats.pkt_rcv_loss)
|
202
|
+
assert_kind_of(Numeric, stats.pktrcvloss)
|
203
|
+
end
|
204
|
+
|
205
|
+
it "has number of retransmitted packets" do
|
206
|
+
assert_kind_of(Numeric, stats.pktRetrans)
|
207
|
+
assert_kind_of(Numeric, stats.pkt_retrans)
|
208
|
+
assert_kind_of(Numeric, stats.pktretrans)
|
209
|
+
end
|
210
|
+
|
211
|
+
it "has number of retransmitted packets received" do
|
212
|
+
assert_kind_of(Numeric, stats.pktRcvRetrans)
|
213
|
+
assert_kind_of(Numeric, stats.pkt_rcv_retrans)
|
214
|
+
assert_kind_of(Numeric, stats.pktrcvretrans)
|
215
|
+
end
|
216
|
+
|
217
|
+
it "has number of sent ACK packets" do
|
218
|
+
assert_kind_of(Numeric, stats.pktSentACK)
|
219
|
+
assert_kind_of(Numeric, stats.pkt_sent_ack)
|
220
|
+
assert_kind_of(Numeric, stats.pktsentack)
|
221
|
+
end
|
222
|
+
|
223
|
+
it "has number of received ACK packets" do
|
224
|
+
assert_kind_of(Numeric, stats.pktRecvACK)
|
225
|
+
assert_kind_of(Numeric, stats.pkt_recv_ack)
|
226
|
+
assert_kind_of(Numeric, stats.pktrecvack)
|
227
|
+
end
|
228
|
+
|
229
|
+
it "has number of sent NAK packets" do
|
230
|
+
assert_kind_of(Numeric, stats.pktSentNAK)
|
231
|
+
assert_kind_of(Numeric, stats.pkt_sent_nak)
|
232
|
+
assert_kind_of(Numeric, stats.pktsentnak)
|
233
|
+
end
|
234
|
+
|
235
|
+
it "has number of received NAK packets" do
|
236
|
+
assert_kind_of(Numeric, stats.pktRecvNAK)
|
237
|
+
assert_kind_of(Numeric, stats.pkt_recv_nak)
|
238
|
+
assert_kind_of(Numeric, stats.pktrecvnak)
|
239
|
+
end
|
240
|
+
|
241
|
+
it "has number of control packets supplied by packet filter" do
|
242
|
+
assert_kind_of(Numeric, stats.pktSndFilterExtra)
|
243
|
+
assert_kind_of(Numeric, stats.pkt_snd_filter_extra)
|
244
|
+
assert_kind_of(Numeric, stats.pktsndfilterextra)
|
245
|
+
end
|
246
|
+
|
247
|
+
it "has number of control packets received and not supplied back" do
|
248
|
+
assert_kind_of(Numeric, stats.pktRcvFilterExtra)
|
249
|
+
assert_kind_of(Numeric, stats.pkt_rcv_filter_extra)
|
250
|
+
assert_kind_of(Numeric, stats.pktrcvfilterextra)
|
251
|
+
end
|
252
|
+
|
253
|
+
it "has number of packets that the filter supplied extra (e.g. FEC rebuilt)" do
|
254
|
+
assert_kind_of(Numeric, stats.pktRcvFilterSupply)
|
255
|
+
assert_kind_of(Numeric, stats.pkt_rcv_filter_supply)
|
256
|
+
assert_kind_of(Numeric, stats.pktrcvfiltersupply)
|
257
|
+
end
|
258
|
+
|
259
|
+
it "has number of packet loss not coverable by filter" do
|
260
|
+
assert_kind_of(Numeric, stats.pktRcvFilterLoss)
|
261
|
+
assert_kind_of(Numeric, stats.pkt_rcv_filter_loss)
|
262
|
+
assert_kind_of(Numeric, stats.pktrcvfilterloss)
|
263
|
+
end
|
264
|
+
|
265
|
+
it "has sending rate in Mb/s" do
|
266
|
+
assert_kind_of(Numeric, stats.mbpsSendRate)
|
267
|
+
assert_kind_of(Numeric, stats.mbps_send_rate)
|
268
|
+
assert_kind_of(Numeric, stats.mbpssendrate)
|
269
|
+
end
|
270
|
+
|
271
|
+
it "has receiving rate in Mb/s" do
|
272
|
+
assert_kind_of(Numeric, stats.mbpsRecvRate)
|
273
|
+
assert_kind_of(Numeric, stats.mbps_recv_rate)
|
274
|
+
assert_kind_of(Numeric, stats.mbpsrecvrate)
|
275
|
+
end
|
276
|
+
|
277
|
+
it "has busy sending time (i.e., idle time exclusive)" do
|
278
|
+
assert_kind_of(Numeric, stats.usSndDuration)
|
279
|
+
assert_kind_of(Numeric, stats.us_snd_duration)
|
280
|
+
assert_kind_of(Numeric, stats.ussndduration)
|
281
|
+
end
|
282
|
+
|
283
|
+
it "has size of order discrepancy in received sequences" do
|
284
|
+
assert_kind_of(Numeric, stats.pktReorderDistance)
|
285
|
+
assert_kind_of(Numeric, stats.pkt_reorder_distance)
|
286
|
+
assert_kind_of(Numeric, stats.pktreorderdistance)
|
287
|
+
end
|
288
|
+
|
289
|
+
it "has average time of packet delay for belated packets (packets with sequence past the ACK)" do
|
290
|
+
assert_kind_of(Numeric, stats.pktRcvAvgBelatedTime)
|
291
|
+
assert_kind_of(Numeric, stats.pkt_rcv_avg_belated_time)
|
292
|
+
assert_kind_of(Numeric, stats.pktrcvavgbelatedtime)
|
293
|
+
end
|
294
|
+
|
295
|
+
it "has number of received AND IGNORED packets due to having come too late" do
|
296
|
+
assert_kind_of(Numeric, stats.pktRcvBelated)
|
297
|
+
assert_kind_of(Numeric, stats.pkt_rcv_belated)
|
298
|
+
assert_kind_of(Numeric, stats.pktrcvbelated)
|
299
|
+
end
|
300
|
+
|
301
|
+
it "has number of too-late-to-send dropped packets" do
|
302
|
+
assert_kind_of(Numeric, stats.pktSndDrop)
|
303
|
+
assert_kind_of(Numeric, stats.pkt_snd_drop)
|
304
|
+
assert_kind_of(Numeric, stats.pktsnddrop)
|
305
|
+
end
|
306
|
+
|
307
|
+
it "has number of too-late-to play missing packets" do
|
308
|
+
assert_kind_of(Numeric, stats.pktRcvDrop)
|
309
|
+
assert_kind_of(Numeric, stats.pkt_rcv_drop)
|
310
|
+
assert_kind_of(Numeric, stats.pktrcvdrop)
|
311
|
+
end
|
312
|
+
|
313
|
+
it "has number of undecrypted packets" do
|
314
|
+
assert_kind_of(Numeric, stats.pktRcvUndecrypt)
|
315
|
+
assert_kind_of(Numeric, stats.pkt_rcv_undecrypt)
|
316
|
+
assert_kind_of(Numeric, stats.pktrcvundecrypt)
|
317
|
+
end
|
318
|
+
|
319
|
+
it "has number of sent data bytes, including retransmissions" do
|
320
|
+
assert_kind_of(Numeric, stats.byteSent)
|
321
|
+
assert_kind_of(Numeric, stats.byte_sent)
|
322
|
+
assert_kind_of(Numeric, stats.bytesent)
|
323
|
+
end
|
324
|
+
|
325
|
+
it "has number of received bytes" do
|
326
|
+
assert_kind_of(Numeric, stats.byteRecv)
|
327
|
+
assert_kind_of(Numeric, stats.byte_recv)
|
328
|
+
assert_kind_of(Numeric, stats.byterecv)
|
329
|
+
end
|
330
|
+
|
331
|
+
it "has number of retransmitted bytes SRT_ENABLE_LOSTBYTESCOUNT" do
|
332
|
+
assert_kind_of(Numeric, stats.byteRcvLoss)
|
333
|
+
assert_kind_of(Numeric, stats.byte_rcv_loss)
|
334
|
+
assert_kind_of(Numeric, stats.bytercvloss)
|
335
|
+
end
|
336
|
+
|
337
|
+
it "has number of retransmitted bytes" do
|
338
|
+
assert_kind_of(Numeric, stats.byteRetrans)
|
339
|
+
assert_kind_of(Numeric, stats.byte_retrans)
|
340
|
+
assert_kind_of(Numeric, stats.byteretrans)
|
341
|
+
end
|
342
|
+
|
343
|
+
it "has number of too-late-to-send dropped bytes" do
|
344
|
+
assert_kind_of(Numeric, stats.byteSndDrop)
|
345
|
+
assert_kind_of(Numeric, stats.byte_snd_drop)
|
346
|
+
assert_kind_of(Numeric, stats.bytesnddrop)
|
347
|
+
end
|
348
|
+
|
349
|
+
it "has number of too-late-to play missing bytes (estimate based on average packet size)" do
|
350
|
+
assert_kind_of(Numeric, stats.byteRcvDrop)
|
351
|
+
assert_kind_of(Numeric, stats.byte_rcv_drop)
|
352
|
+
assert_kind_of(Numeric, stats.bytercvdrop)
|
353
|
+
end
|
354
|
+
|
355
|
+
it "has number of undecrypted bytes" do
|
356
|
+
assert_kind_of(Numeric, stats.byteRcvUndecrypt)
|
357
|
+
assert_kind_of(Numeric, stats.byte_rcv_undecrypt)
|
358
|
+
assert_kind_of(Numeric, stats.bytercvundecrypt)
|
359
|
+
end
|
360
|
+
|
361
|
+
it "has packet sending period, in microseconds" do
|
362
|
+
assert_kind_of(Numeric, stats.usPktSndPeriod)
|
363
|
+
assert_kind_of(Numeric, stats.us_pkt_snd_period)
|
364
|
+
assert_kind_of(Numeric, stats.uspktsndperiod)
|
365
|
+
end
|
366
|
+
|
367
|
+
it "has flow window size, in number of packets" do
|
368
|
+
assert_kind_of(Numeric, stats.pktFlowWindow)
|
369
|
+
assert_kind_of(Numeric, stats.pkt_flow_window)
|
370
|
+
assert_kind_of(Numeric, stats.pktflowwindow)
|
371
|
+
end
|
372
|
+
|
373
|
+
it "has congestion window size, in number of packets" do
|
374
|
+
assert_kind_of(Numeric, stats.pktCongestionWindow)
|
375
|
+
assert_kind_of(Numeric, stats.pkt_congestion_window)
|
376
|
+
assert_kind_of(Numeric, stats.pktcongestionwindow)
|
377
|
+
end
|
378
|
+
|
379
|
+
it "has number of packets on flight" do
|
380
|
+
assert_kind_of(Numeric, stats.pktFlightSize)
|
381
|
+
assert_kind_of(Numeric, stats.pkt_flight_size)
|
382
|
+
assert_kind_of(Numeric, stats.pktflightsize)
|
383
|
+
end
|
384
|
+
|
385
|
+
it "has RTT, in milliseconds" do
|
386
|
+
assert_kind_of(Numeric, stats.msRTT)
|
387
|
+
assert_kind_of(Numeric, stats.ms_rtt)
|
388
|
+
assert_kind_of(Numeric, stats.msrtt)
|
389
|
+
end
|
390
|
+
|
391
|
+
it "has estimated bandwidth, in Mb/s" do
|
392
|
+
assert_kind_of(Numeric, stats.mbpsBandwidth)
|
393
|
+
assert_kind_of(Numeric, stats.mbps_bandwidth)
|
394
|
+
assert_kind_of(Numeric, stats.mbpsbandwidth)
|
395
|
+
end
|
396
|
+
|
397
|
+
it "has available UDT sender buffer size" do
|
398
|
+
assert_kind_of(Numeric, stats.byteAvailSndBuf)
|
399
|
+
assert_kind_of(Numeric, stats.byte_avail_snd_buf)
|
400
|
+
assert_kind_of(Numeric, stats.byteavailsndbuf)
|
401
|
+
end
|
402
|
+
|
403
|
+
it "has available UDT receiver buffer size" do
|
404
|
+
assert_kind_of(Numeric, stats.byteAvailRcvBuf)
|
405
|
+
assert_kind_of(Numeric, stats.byte_avail_rcv_buf)
|
406
|
+
assert_kind_of(Numeric, stats.byteavailrcvbuf)
|
407
|
+
end
|
408
|
+
|
409
|
+
it "has Transmit Bandwidth ceiling (Mbps)" do
|
410
|
+
assert_kind_of(Numeric, stats.mbpsMaxBW)
|
411
|
+
assert_kind_of(Numeric, stats.mbps_max_bw)
|
412
|
+
assert_kind_of(Numeric, stats.mbpsmaxbw)
|
413
|
+
end
|
414
|
+
|
415
|
+
it "has MTU" do
|
416
|
+
assert_kind_of(Numeric, stats.byteMSS)
|
417
|
+
assert_kind_of(Numeric, stats.byte_mss)
|
418
|
+
assert_kind_of(Numeric, stats.bytemss)
|
419
|
+
end
|
420
|
+
|
421
|
+
it "has UnACKed packets in UDT sender" do
|
422
|
+
assert_kind_of(Numeric, stats.pktSndBuf)
|
423
|
+
assert_kind_of(Numeric, stats.pkt_snd_buf)
|
424
|
+
assert_kind_of(Numeric, stats.pktsndbuf)
|
425
|
+
end
|
426
|
+
|
427
|
+
it "has UnACKed bytes in UDT sender" do
|
428
|
+
assert_kind_of(Numeric, stats.byteSndBuf)
|
429
|
+
assert_kind_of(Numeric, stats.byte_snd_buf)
|
430
|
+
assert_kind_of(Numeric, stats.bytesndbuf)
|
431
|
+
end
|
432
|
+
|
433
|
+
it "has UnACKed timespan (msec) of UDT sender" do
|
434
|
+
assert_kind_of(Numeric, stats.msSndBuf)
|
435
|
+
assert_kind_of(Numeric, stats.ms_snd_buf)
|
436
|
+
assert_kind_of(Numeric, stats.mssndbuf)
|
437
|
+
end
|
438
|
+
|
439
|
+
it "has Timestamp-based Packet Delivery Delay" do
|
440
|
+
assert_kind_of(Numeric, stats.msSndTsbPdDelay)
|
441
|
+
assert_kind_of(Numeric, stats.ms_snd_tsb_pd_delay)
|
442
|
+
assert_kind_of(Numeric, stats.mssndtsbpddelay)
|
443
|
+
end
|
444
|
+
|
445
|
+
it "has Undelivered packets in UDT receiver" do
|
446
|
+
assert_kind_of(Numeric, stats.pktRcvBuf)
|
447
|
+
assert_kind_of(Numeric, stats.pkt_rcv_buf)
|
448
|
+
assert_kind_of(Numeric, stats.pktrcvbuf)
|
449
|
+
end
|
450
|
+
|
451
|
+
it "has Undelivered bytes of UDT receiver" do
|
452
|
+
assert_kind_of(Numeric, stats.byteRcvBuf)
|
453
|
+
assert_kind_of(Numeric, stats.byte_rcv_buf)
|
454
|
+
assert_kind_of(Numeric, stats.bytercvbuf)
|
455
|
+
end
|
456
|
+
|
457
|
+
it "has Undelivered timespan (msec) of UDT receiver" do
|
458
|
+
assert_kind_of(Numeric, stats.msRcvBuf)
|
459
|
+
assert_kind_of(Numeric, stats.ms_rcv_buf)
|
460
|
+
assert_kind_of(Numeric, stats.msrcvbuf)
|
461
|
+
end
|
462
|
+
|
463
|
+
it "has Timestamp-based Packet Delivery Delay" do
|
464
|
+
assert_kind_of(Numeric, stats.msRcvTsbPdDelay)
|
465
|
+
assert_kind_of(Numeric, stats.ms_rcv_tsb_pd_delay)
|
466
|
+
assert_kind_of(Numeric, stats.msrcvtsbpddelay)
|
467
|
+
end
|
468
|
+
end
|
469
|
+
|
470
|
+
describe "clearing vs non-clearing" do
|
471
|
+
|
472
|
+
it "will not clear stats by default" do
|
473
|
+
# initial data
|
474
|
+
|
475
|
+
@client.write "foobar"
|
476
|
+
_ = @remote_client.read
|
477
|
+
|
478
|
+
stats = SRT::Stats.new(@client)
|
479
|
+
byte_sent = stats.byte_sent
|
480
|
+
assert(byte_sent > 0, "should have sent bytes")
|
481
|
+
|
482
|
+
|
483
|
+
# same data
|
484
|
+
|
485
|
+
stats2 = SRT::Stats.new(@client)
|
486
|
+
byte_sent_2 = stats2.byte_sent
|
487
|
+
assert_equal(byte_sent_2, byte_sent, "should have same bytes")
|
488
|
+
|
489
|
+
# more data
|
490
|
+
|
491
|
+
@client.write "baz"
|
492
|
+
_ = @remote_client.read
|
493
|
+
|
494
|
+
stats3 = SRT::Stats.new(@client)
|
495
|
+
byte_sent_3 = stats3.byte_sent
|
496
|
+
assert(byte_sent_3 > byte_sent, "should have more bytes")
|
497
|
+
end
|
498
|
+
|
499
|
+
it "will not clear stats when :clear => false" do
|
500
|
+
# initial data
|
501
|
+
|
502
|
+
@client.write "foobar"
|
503
|
+
_ = @remote_client.read
|
504
|
+
|
505
|
+
stats = SRT::Stats.new(@client, :clear => false)
|
506
|
+
byte_sent = stats.byte_sent
|
507
|
+
assert(byte_sent > 0, "should have sent bytes")
|
508
|
+
|
509
|
+
|
510
|
+
# same data
|
511
|
+
|
512
|
+
stats2 = SRT::Stats.new(@client, :clear => false)
|
513
|
+
byte_sent_2 = stats2.byte_sent
|
514
|
+
assert_equal(byte_sent_2, byte_sent, "should have same bytes")
|
515
|
+
|
516
|
+
# more data
|
517
|
+
|
518
|
+
@client.write "baz"
|
519
|
+
_ = @remote_client.read
|
520
|
+
|
521
|
+
stats3 = SRT::Stats.new(@client, :clear => false)
|
522
|
+
byte_sent_3 = stats3.byte_sent
|
523
|
+
assert(byte_sent_3 > byte_sent, "should have more bytes")
|
524
|
+
end
|
525
|
+
|
526
|
+
it "will clear stats when :clear => true" do
|
527
|
+
# initial data
|
528
|
+
|
529
|
+
@client.write "foobar"
|
530
|
+
_ = @remote_client.read
|
531
|
+
|
532
|
+
stats = SRT::Stats.new(@client, :clear => true)
|
533
|
+
byte_sent = stats.byte_sent
|
534
|
+
assert(byte_sent > 0, "should have sent bytes")
|
535
|
+
|
536
|
+
# more data
|
537
|
+
|
538
|
+
@client.write "baz"
|
539
|
+
_ = @remote_client.read
|
540
|
+
|
541
|
+
stats3 = SRT::Stats.new(@client, :clear => true)
|
542
|
+
byte_sent_3 = stats3.byte_sent
|
543
|
+
assert(byte_sent_3 < byte_sent, "should have less bytes")
|
544
|
+
end
|
545
|
+
end
|
546
|
+
end
|