openflow-protocol 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/actions/actions.rb +1 -24
- data/lib/helpers/array_of_subclasses.rb +38 -0
- data/lib/helpers/superclass_base.rb +2 -0
- data/lib/messages/features_reply.rb +2 -2
- data/lib/messages/message.rb +1 -1
- data/lib/messages/port_mod.rb +2 -0
- data/lib/messages/queue_get_config_reply.rb +14 -0
- data/lib/messages/queue_get_config_request.rb +11 -0
- data/lib/{statistics → messages/statistics}/aggregate_statistics_reply.rb +0 -0
- data/lib/{statistics → messages/statistics}/aggregate_statistics_request.rb +0 -0
- data/lib/{statistics → messages/statistics}/description_statistics.rb +0 -0
- data/lib/{statistics → messages/statistics}/flow_statistics_reply.rb +0 -0
- data/lib/{statistics → messages/statistics}/flow_statistics_request.rb +0 -0
- data/lib/{statistics → messages/statistics}/port_statistics_reply.rb +1 -1
- data/lib/{statistics → messages/statistics}/port_statistics_request.rb +1 -1
- data/lib/{statistics → messages/statistics}/queue_statistics_reply.rb +1 -1
- data/lib/{statistics → messages/statistics}/queue_statistics_request.rb +1 -1
- data/lib/{statistics → messages/statistics}/table_statistics.rb +1 -1
- data/lib/{statistics → messages/statistics}/vendor_statistics.rb +0 -0
- data/lib/openflow-protocol/version.rb +1 -1
- data/lib/structs/packet_queue.rb +10 -0
- data/lib/structs/port_number.rb +14 -0
- data/lib/structs/queue_properties/queue_properties.rb +5 -0
- data/lib/structs/queue_properties/queue_property.rb +16 -0
- data/lib/structs/queue_properties/queue_property_min_rate.rb +26 -0
- data/lib/structs/queue_properties/queue_property_none.rb +3 -0
- data/spec/actions/actions_spec.rb +1 -1
- data/spec/messages/barrier_reply_spec.rb +7 -1
- data/spec/messages/barrier_request_spec.rb +7 -1
- data/spec/messages/echo_reply_spec.rb +7 -1
- data/spec/messages/echo_request_spec.rb +7 -1
- data/spec/messages/error_spec.rb +10 -2
- data/spec/messages/features_reply_spec.rb +50 -39
- data/spec/messages/features_request_spec.rb +7 -1
- data/spec/messages/flow_mod_spec.rb +10 -2
- data/spec/messages/flow_removed_spec.rb +10 -2
- data/spec/messages/get_config_reply_spec.rb +10 -2
- data/spec/messages/get_config_request_spec.rb +7 -1
- data/spec/messages/hello_spec.rb +7 -1
- data/spec/messages/packet_in_spec.rb +10 -2
- data/spec/messages/packet_out_spec.rb +10 -2
- data/spec/messages/port_mod_spec.rb +10 -2
- data/spec/messages/port_status_spec.rb +10 -2
- data/spec/messages/queue_get_config_reply_spec.rb +68 -0
- data/spec/messages/queue_get_config_request_spec.rb +40 -0
- data/spec/messages/set_config_spec.rb +10 -2
- data/spec/{statistics → messages/statistics}/aggregate_statistics_reply_spec.rb +0 -0
- data/spec/{statistics → messages/statistics}/aggregate_statistics_request_spec.rb +0 -0
- data/spec/{statistics → messages/statistics}/description_statistics_spec.rb +0 -0
- data/spec/{statistics → messages/statistics}/flow_statistics_reply_spec.rb +0 -0
- data/spec/{statistics → messages/statistics}/flow_statistics_request_spec.rb +0 -0
- data/spec/{statistics → messages/statistics}/port_statistics_reply_spec.rb +0 -0
- data/spec/{statistics → messages/statistics}/port_statistics_request_spec.rb +0 -0
- data/spec/{statistics → messages/statistics}/queue_statistics_reply_spec.rb +0 -0
- data/spec/{statistics → messages/statistics}/queue_statistics_request_spec.rb +0 -0
- data/spec/{statistics → messages/statistics}/table_statistics_spec.rb +0 -0
- data/spec/{statistics → messages/statistics}/vendor_statistics_spec.rb +0 -0
- data/spec/messages/statistics_reply_spec.rb +77 -20
- data/spec/messages/statistics_request_spec.rb +13 -5
- data/spec/messages/vendor_spec.rb +10 -2
- data/spec/structs/packet_queue_spec.rb +37 -0
- data/spec/structs/port_number_spec.rb +19 -0
- data/spec/structs/queue_properties/queue_properties_spec.rb +29 -0
- data/spec/structs/queue_properties/queue_property_min_rate_spec.rb +32 -0
- data/spec/structs/queue_properties/queue_property_none_spec.rb +14 -0
- metadata +55 -35
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -2,18 +2,23 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe OFStatisticsReply do
|
4
4
|
context 'with description' do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
5
|
+
let(:desc) {
|
6
|
+
'Manufacturer description'.pad(256) +
|
7
|
+
'Hardware description'.pad(256) +
|
8
|
+
'Software description'.pad(256) +
|
9
|
+
'123456789'.pad(32) +
|
10
|
+
'Datapath description'.pad(256)
|
11
|
+
}
|
12
|
+
let(:data) {
|
13
|
+
[
|
13
14
|
1, 17, 0x04, 0x2c, 0, 0, 0, 1, # header
|
14
15
|
0, 0, # statistic_type
|
15
16
|
0, 1, # flags
|
16
17
|
].pack('C*') + desc
|
18
|
+
}
|
19
|
+
|
20
|
+
it 'should read binary' do
|
21
|
+
msg = OFStatisticsReply.read(data)
|
17
22
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
18
23
|
expect(msg.type).to eq(:statistics_reply)
|
19
24
|
expect(msg.len).to eq(1068)
|
@@ -22,6 +27,10 @@ describe OFStatisticsReply do
|
|
22
27
|
expect(msg.flags).to eq([:reply_more])
|
23
28
|
expect(msg.statistics.serial_number).to eq('123456789')
|
24
29
|
end
|
30
|
+
it 'should be parsable' do
|
31
|
+
msg = OFParser.read(data)
|
32
|
+
expect(msg.class).to eq(OFStatisticsReply)
|
33
|
+
end
|
25
34
|
it 'should initialize with default values' do
|
26
35
|
msg = OFStatisticsReply.new
|
27
36
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
@@ -52,8 +61,8 @@ describe OFStatisticsReply do
|
|
52
61
|
end
|
53
62
|
|
54
63
|
context 'with flow' do
|
55
|
-
|
56
|
-
|
64
|
+
let(:data) {
|
65
|
+
[
|
57
66
|
1, 17, 0, 108, 0, 0, 0, 1, # header
|
58
67
|
0, 1, # statistic_type
|
59
68
|
0, 1, # flags
|
@@ -96,6 +105,10 @@ describe OFStatisticsReply do
|
|
96
105
|
0, 1, # port
|
97
106
|
0xff, 0xff # max_length
|
98
107
|
].pack('C*')
|
108
|
+
}
|
109
|
+
|
110
|
+
it 'should read binary' do
|
111
|
+
msg = OFStatisticsReply.read(data)
|
99
112
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
100
113
|
expect(msg.type).to eq(:statistics_reply)
|
101
114
|
expect(msg.len).to eq(108)
|
@@ -105,6 +118,10 @@ describe OFStatisticsReply do
|
|
105
118
|
expect(msg.statistics.table_id).to eq(1)
|
106
119
|
expect(msg.statistics.actions.length).to eq(1)
|
107
120
|
end
|
121
|
+
it 'should be parsable' do
|
122
|
+
msg = OFParser.read(data)
|
123
|
+
expect(msg.class).to eq(OFStatisticsReply)
|
124
|
+
end
|
108
125
|
it 'should initialize with default values' do
|
109
126
|
msg = OFStatisticsReply.new(statistic_type: :flow)
|
110
127
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
@@ -138,8 +155,8 @@ describe OFStatisticsReply do
|
|
138
155
|
end
|
139
156
|
|
140
157
|
context 'with aggregate' do
|
141
|
-
|
142
|
-
|
158
|
+
let(:data) {
|
159
|
+
[
|
143
160
|
1, 17, 0, 36, 0, 0, 0, 1, # header
|
144
161
|
0, 2, # statistic_type
|
145
162
|
0, 1, # flags
|
@@ -150,6 +167,10 @@ describe OFStatisticsReply do
|
|
150
167
|
0, 0, 0, 4, # flow_count
|
151
168
|
0, 0, 0, 0 # padding
|
152
169
|
].pack('C*')
|
170
|
+
}
|
171
|
+
|
172
|
+
it 'should read binary' do
|
173
|
+
msg = OFStatisticsReply.read(data)
|
153
174
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
154
175
|
expect(msg.type).to eq(:statistics_reply)
|
155
176
|
expect(msg.len).to eq(36)
|
@@ -168,6 +189,10 @@ describe OFStatisticsReply do
|
|
168
189
|
expect(msg.flags).to be_empty
|
169
190
|
expect(msg.statistics.packet_count).to eq(0)
|
170
191
|
end
|
192
|
+
it 'should be parsable' do
|
193
|
+
msg = OFParser.read(data)
|
194
|
+
expect(msg.class).to eq(OFStatisticsReply)
|
195
|
+
end
|
171
196
|
it 'should initialize with some values' do
|
172
197
|
msg = OFStatisticsReply.new(
|
173
198
|
xid: 1,
|
@@ -190,8 +215,8 @@ describe OFStatisticsReply do
|
|
190
215
|
end
|
191
216
|
|
192
217
|
context 'with table' do
|
193
|
-
|
194
|
-
|
218
|
+
let(:data) {
|
219
|
+
[
|
195
220
|
1, 17, 0, 76, 0, 0, 0, 1, # header
|
196
221
|
0, 3, # statistic_type
|
197
222
|
0, 1, # flags
|
@@ -209,6 +234,10 @@ describe OFStatisticsReply do
|
|
209
234
|
0, 0, 0, 0, 0, 0, 0, 4, # lookup_count
|
210
235
|
0, 0, 0, 0, 0, 0, 0, 1 # matched_count
|
211
236
|
].pack('C*')
|
237
|
+
}
|
238
|
+
|
239
|
+
it 'should read binary' do
|
240
|
+
msg = OFStatisticsReply.read(data)
|
212
241
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
213
242
|
expect(msg.type).to eq(:statistics_reply)
|
214
243
|
expect(msg.len).to eq(76)
|
@@ -218,6 +247,10 @@ describe OFStatisticsReply do
|
|
218
247
|
expect(msg.statistics.length).to eq(1)
|
219
248
|
expect(msg.statistics.first.table_id).to eq(1)
|
220
249
|
end
|
250
|
+
it 'should be parsable' do
|
251
|
+
msg = OFParser.read(data)
|
252
|
+
expect(msg.class).to eq(OFStatisticsReply)
|
253
|
+
end
|
221
254
|
it 'should initialize with default values' do
|
222
255
|
msg = OFStatisticsReply.new(statistic_type: :table)
|
223
256
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
@@ -247,8 +280,8 @@ describe OFStatisticsReply do
|
|
247
280
|
end
|
248
281
|
|
249
282
|
context 'with port' do
|
250
|
-
|
251
|
-
|
283
|
+
let(:data) {
|
284
|
+
[
|
252
285
|
1, 17, 0, 116, 0, 0, 0, 1, # header
|
253
286
|
0, 4, # statistic_type
|
254
287
|
0, 1, # flags
|
@@ -269,6 +302,10 @@ describe OFStatisticsReply do
|
|
269
302
|
0, 0, 0, 0, 0, 0, 0, 1, # receive_crc_errors
|
270
303
|
0, 0, 0, 0, 0, 0, 0, 3 # collisions
|
271
304
|
].pack('C*')
|
305
|
+
}
|
306
|
+
|
307
|
+
it 'should read binary' do
|
308
|
+
msg = OFStatisticsReply.read(data)
|
272
309
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
273
310
|
expect(msg.type).to eq(:statistics_reply)
|
274
311
|
expect(msg.len).to eq(116)
|
@@ -278,6 +315,10 @@ describe OFStatisticsReply do
|
|
278
315
|
expect(msg.statistics.length).to eq(1)
|
279
316
|
expect(msg.statistics.first.port_number).to eq(1)
|
280
317
|
end
|
318
|
+
it 'should be parsable' do
|
319
|
+
msg = OFParser.read(data)
|
320
|
+
expect(msg.class).to eq(OFStatisticsReply)
|
321
|
+
end
|
281
322
|
it 'should initialize with default values' do
|
282
323
|
msg = OFStatisticsReply.new(statistic_type: :port)
|
283
324
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
@@ -307,8 +348,8 @@ describe OFStatisticsReply do
|
|
307
348
|
end
|
308
349
|
|
309
350
|
context 'with queue' do
|
310
|
-
|
311
|
-
|
351
|
+
let(:data) {
|
352
|
+
[
|
312
353
|
1, 17, 0, 44, 0, 0, 0, 1, # header
|
313
354
|
0, 5, # statistic_type
|
314
355
|
0, 1, # flags
|
@@ -321,6 +362,10 @@ describe OFStatisticsReply do
|
|
321
362
|
0, 0, 0, 0, 0, 0, 0, 10, # transmit_packets
|
322
363
|
0, 0, 0, 0, 0, 0, 0, 2 # transmit_errors
|
323
364
|
].pack('C*')
|
365
|
+
}
|
366
|
+
|
367
|
+
it 'should read binary' do
|
368
|
+
msg = OFStatisticsReply.read(data)
|
324
369
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
325
370
|
expect(msg.type).to eq(:statistics_reply)
|
326
371
|
expect(msg.len).to eq(44)
|
@@ -330,6 +375,10 @@ describe OFStatisticsReply do
|
|
330
375
|
expect(msg.statistics.length).to eq(1)
|
331
376
|
expect(msg.statistics.first.port_number).to eq(1)
|
332
377
|
end
|
378
|
+
it 'should be parsable' do
|
379
|
+
msg = OFParser.read(data)
|
380
|
+
expect(msg.class).to eq(OFStatisticsReply)
|
381
|
+
end
|
333
382
|
it 'should initialize with default values' do
|
334
383
|
msg = OFStatisticsReply.new(statistic_type: :queue)
|
335
384
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
@@ -359,8 +408,8 @@ describe OFStatisticsReply do
|
|
359
408
|
end
|
360
409
|
|
361
410
|
context 'with vendor' do
|
362
|
-
|
363
|
-
|
411
|
+
let(:data) {
|
412
|
+
[
|
364
413
|
1, 17, 0, 20, 0, 0, 0, 1, # header
|
365
414
|
0xff, 0xff, # statistic_type
|
366
415
|
0, 0, # flags
|
@@ -369,6 +418,10 @@ describe OFStatisticsReply do
|
|
369
418
|
0, 0, 0, 1, # vendor
|
370
419
|
1, 2, 3, 4 # body
|
371
420
|
].pack('C*')
|
421
|
+
}
|
422
|
+
|
423
|
+
it 'should read binary' do
|
424
|
+
msg = OFStatisticsReply.read(data)
|
372
425
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
373
426
|
expect(msg.type).to eq(:statistics_reply)
|
374
427
|
expect(msg.len).to eq(20)
|
@@ -378,6 +431,10 @@ describe OFStatisticsReply do
|
|
378
431
|
expect(msg.statistics.vendor).to eq(1)
|
379
432
|
expect(msg.statistics.body).to eq([1, 2, 3, 4].pack('C*'))
|
380
433
|
end
|
434
|
+
it 'should be parsable' do
|
435
|
+
msg = OFParser.read(data)
|
436
|
+
expect(msg.class).to eq(OFStatisticsReply)
|
437
|
+
end
|
381
438
|
it 'should initialize with default values' do
|
382
439
|
msg = OFStatisticsReply.new(statistic_type: :vendor)
|
383
440
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
@@ -1,13 +1,17 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe OFStatisticsRequest do
|
4
|
+
let(:data) {
|
5
|
+
[
|
6
|
+
1, 16, 0, 12, 0, 0, 0, 1, # header
|
7
|
+
0, 0, # statistic_type
|
8
|
+
0, 0, # flags
|
9
|
+
].pack('C*')
|
10
|
+
}
|
11
|
+
|
4
12
|
context 'with description' do
|
5
13
|
it 'should read binary' do
|
6
|
-
msg = OFStatisticsRequest.read
|
7
|
-
1, 16, 0, 12, 0, 0, 0, 1, # header
|
8
|
-
0, 0, # statistic_type
|
9
|
-
0, 0, # flags
|
10
|
-
].pack('C*')
|
14
|
+
msg = OFStatisticsRequest.read(data)
|
11
15
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
12
16
|
expect(msg.type).to eq(:statistics_request)
|
13
17
|
expect(msg.len).to eq(12)
|
@@ -16,6 +20,10 @@ describe OFStatisticsRequest do
|
|
16
20
|
expect(msg.flags).to be_empty
|
17
21
|
expect(msg.statistics).to be_empty
|
18
22
|
end
|
23
|
+
it 'should be parsable' do
|
24
|
+
msg = OFParser.read(data)
|
25
|
+
expect(msg.class).to eq(OFStatisticsRequest)
|
26
|
+
end
|
19
27
|
it 'should initialize with default values' do
|
20
28
|
msg = OFStatisticsRequest.new
|
21
29
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
@@ -1,11 +1,15 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe OFVendor do
|
4
|
-
|
5
|
-
|
4
|
+
let(:data) {
|
5
|
+
[
|
6
6
|
1, 4, 0, 12, 0, 0, 0, 1, # header
|
7
7
|
0, 0, 0, 1 # vendor
|
8
8
|
].pack('C*')
|
9
|
+
}
|
10
|
+
|
11
|
+
it 'should read binary' do
|
12
|
+
msg = OFVendor.read(data)
|
9
13
|
expect(msg.version).to eq(OFMessage::OFP_VERSION)
|
10
14
|
expect(msg.type).to eq(:vendor)
|
11
15
|
expect(msg.len).to eq(12)
|
@@ -13,6 +17,10 @@ describe OFVendor do
|
|
13
17
|
expect(msg.vendor).to eq(1)
|
14
18
|
expect(msg.data).to be_empty
|
15
19
|
end
|
20
|
+
it 'should be parsable' do
|
21
|
+
msg = OFParser.read(data)
|
22
|
+
expect(msg.class).to eq(OFVendor)
|
23
|
+
end
|
16
24
|
it 'should read binary with data' do
|
17
25
|
msg = OFVendor.read [
|
18
26
|
1, 4, 0, 14, 0, 0, 0, 1, # header
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OFPacketQueue do
|
4
|
+
it 'should read binary' do
|
5
|
+
queue = OFPacketQueue.read [
|
6
|
+
0, 0, 0, 1, # queue_id
|
7
|
+
0, 24, # len
|
8
|
+
0, 0, # padding
|
9
|
+
# queue_properties
|
10
|
+
# queue_property_min_rate
|
11
|
+
0, 1, 0, 16, 0, 0, 0, 0, # header
|
12
|
+
0, 100, # rate
|
13
|
+
0, 0, 0, 0, 0, 0 # padding
|
14
|
+
].pack('C*')
|
15
|
+
expect(queue.queue_id).to eq(1)
|
16
|
+
expect(queue.len).to eq(24)
|
17
|
+
expect(queue.properties.length).to eq(1)
|
18
|
+
expect(queue.properties.first.type).to eq(:min_rate)
|
19
|
+
expect(queue.properties.first.rate).to eq(100)
|
20
|
+
end
|
21
|
+
it 'should initialize with default values' do
|
22
|
+
queue = OFPacketQueue.new
|
23
|
+
expect(queue.queue_id).to eq(0)
|
24
|
+
expect(queue.len).to eq(8)
|
25
|
+
end
|
26
|
+
it 'should initialize with some values' do
|
27
|
+
queue = OFPacketQueue.new(
|
28
|
+
queue_id: 1,
|
29
|
+
properties: [OFQueuePropertyMinRate.new(rate: 100)]
|
30
|
+
)
|
31
|
+
expect(queue.queue_id).to eq(1)
|
32
|
+
expect(queue.len).to eq(24)
|
33
|
+
expect(queue.properties.length).to eq(1)
|
34
|
+
expect(queue.properties.first.type).to eq(:min_rate)
|
35
|
+
expect(queue.properties.first.rate).to eq(100)
|
36
|
+
end
|
37
|
+
end
|
@@ -1,5 +1,24 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
describe OFPortNumberStrict do
|
4
|
+
it 'should read binary' do
|
5
|
+
port_number = OFPortNumberStrict.read [0, 1].pack('C*')
|
6
|
+
expect(port_number).to eq(1)
|
7
|
+
end
|
8
|
+
it 'should initialize with default values' do
|
9
|
+
port_number = OFPortNumberStrict.new
|
10
|
+
expect(port_number).to eq(0)
|
11
|
+
end
|
12
|
+
it 'should initialize with some values' do
|
13
|
+
port_number = OFPortNumberStrict.new(2)
|
14
|
+
expect(port_number).to eq(2)
|
15
|
+
end
|
16
|
+
it 'should raise an error if greater than max value' do
|
17
|
+
expect { OFPortNumberStrict.new(:none) }.to raise_error(ArgumentError)
|
18
|
+
expect { OFPortNumberStrict.new(0xff01) }.to raise_error(ArgumentError)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
3
22
|
describe OFPortNumber do
|
4
23
|
it 'should read binary' do
|
5
24
|
port_number = OFPortNumber.read [0, 1].pack('C*')
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OFQueueProperties do
|
4
|
+
it 'should read binary' do
|
5
|
+
props = OFQueueProperties.read [
|
6
|
+
# none
|
7
|
+
0, 0, 0, 8, 0, 0, 0, 0,
|
8
|
+
# min_rate
|
9
|
+
0, 1, 0, 8, 0, 0, 0, 0, # header
|
10
|
+
0, 100, # rate
|
11
|
+
0, 0, 0, 0, 0, 0 # padding
|
12
|
+
].pack('C*'), length: 24
|
13
|
+
expect(props.length).to eq(2)
|
14
|
+
expect(props.first.type).to eq(:none)
|
15
|
+
expect(props.last.type).to eq(:min_rate)
|
16
|
+
end
|
17
|
+
it 'should initialize with default values' do
|
18
|
+
props = OFQueueProperties.new
|
19
|
+
expect(props).to be_empty
|
20
|
+
end
|
21
|
+
it 'should initialize with some values' do
|
22
|
+
props = OFQueueProperties.new([
|
23
|
+
OFQueuePropertyMinRate.new(rate: 100)
|
24
|
+
])
|
25
|
+
expect(props.length).to eq(1)
|
26
|
+
expect(props.first.type).to eq(:min_rate)
|
27
|
+
expect(props.first.rate).to eq(100)
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OFQueuePropertyMinRate do
|
4
|
+
it 'should read binary' do
|
5
|
+
prop = OFQueuePropertyMinRate.read [
|
6
|
+
0, 1, 0, 16, 0, 0, 0, 0, # header
|
7
|
+
0, 100, # rate
|
8
|
+
0, 0, 0, 0, 0, 0 # padding
|
9
|
+
].pack('C*')
|
10
|
+
expect(prop.type).to eq(:min_rate)
|
11
|
+
expect(prop.len).to eq(16)
|
12
|
+
expect(prop.rate).to eq(100)
|
13
|
+
end
|
14
|
+
it 'should initialize with default values' do
|
15
|
+
prop = OFQueuePropertyMinRate.new
|
16
|
+
expect(prop.type).to eq(:min_rate)
|
17
|
+
expect(prop.len).to eq(16)
|
18
|
+
expect(prop.rate).to eq(0)
|
19
|
+
end
|
20
|
+
it 'should initialize with some values' do
|
21
|
+
prop = OFQueuePropertyMinRate.new(rate: 100)
|
22
|
+
expect(prop.type).to eq(:min_rate)
|
23
|
+
expect(prop.len).to eq(16)
|
24
|
+
expect(prop.rate).to eq(100)
|
25
|
+
end
|
26
|
+
it 'should disabled rate when > 1000' do
|
27
|
+
prop = OFQueuePropertyMinRate.new(rate: 1001)
|
28
|
+
expect(prop.type).to eq(:min_rate)
|
29
|
+
expect(prop.len).to eq(16)
|
30
|
+
expect(prop.rate).to eq(:disabled)
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OFQueuePropertyNone do
|
4
|
+
it 'should read binary' do
|
5
|
+
prop = OFQueuePropertyNone.read [0, 0, 0, 8, 0, 0, 0, 0].pack('C*')
|
6
|
+
expect(prop.type).to eq(:none)
|
7
|
+
expect(prop.len).to eq(8)
|
8
|
+
end
|
9
|
+
it 'should initialize with default values' do
|
10
|
+
prop = OFQueuePropertyNone.new
|
11
|
+
expect(prop.type).to eq(:none)
|
12
|
+
expect(prop.len).to eq(8)
|
13
|
+
end
|
14
|
+
end
|