trema 0.3.3 → 0.3.4

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.
Files changed (56) hide show
  1. data/ruby/trema/flow-removed.c +3 -0
  2. data/ruby/trema/match.c +19 -0
  3. data/ruby/trema/packet-in.c +3 -0
  4. data/ruby/trema/port.c +12 -0
  5. data/ruby/trema/send-out-port.rb +1 -1
  6. data/ruby/trema/version.rb +1 -1
  7. data/spec/spec_helper.rb +8 -0
  8. data/spec/support/action.rb +4 -4
  9. data/spec/trema/barrier-request_spec.rb +1 -1
  10. data/spec/trema/cli_spec.rb +1 -3
  11. data/spec/trema/controller_spec.rb +1 -1
  12. data/spec/trema/dsl/configuration_spec.rb +24 -24
  13. data/spec/trema/dsl/link_spec.rb +4 -6
  14. data/spec/trema/dsl/run_spec.rb +7 -11
  15. data/spec/trema/dsl/runner_spec.rb +9 -9
  16. data/spec/trema/dsl/switch_spec.rb +5 -11
  17. data/spec/trema/dsl/vhost_spec.rb +1 -3
  18. data/spec/trema/dsl/vswitch_spec.rb +7 -15
  19. data/spec/trema/echo-request_spec.rb +1 -1
  20. data/spec/trema/enqueue_spec.rb +4 -4
  21. data/spec/trema/features-reply_spec.rb +1 -1
  22. data/spec/trema/features-request_spec.rb +1 -1
  23. data/spec/trema/flow-removed_spec.rb +19 -19
  24. data/spec/trema/get-config-request_spec.rb +1 -1
  25. data/spec/trema/hardware-switch_spec.rb +3 -3
  26. data/spec/trema/host_spec.rb +2 -2
  27. data/spec/trema/list-switches-reply_spec.rb +1 -1
  28. data/spec/trema/mac_spec.rb +1 -1
  29. data/spec/trema/match_spec.rb +8 -8
  30. data/spec/trema/open-vswitch_spec.rb +6 -6
  31. data/spec/trema/openflow-error_spec.rb +15 -15
  32. data/spec/trema/packet-in_spec.rb +210 -208
  33. data/spec/trema/packet-out_spec.rb +4 -6
  34. data/spec/trema/port-mod_spec.rb +28 -29
  35. data/spec/trema/port-status-modify_spec.rb +2 -2
  36. data/spec/trema/port_spec.rb +9 -9
  37. data/spec/trema/queue-get-config-reply_spec.rb +2 -2
  38. data/spec/trema/send-out-port_spec.rb +53 -43
  39. data/spec/trema/set-config_spec.rb +2 -2
  40. data/spec/trema/set-eth-dst-addr_spec.rb +3 -3
  41. data/spec/trema/set-eth-src-addr_spec.rb +3 -3
  42. data/spec/trema/set-ip-dst-addr_spec.rb +20 -16
  43. data/spec/trema/set-ip-src-addr_spec.rb +20 -16
  44. data/spec/trema/set-ip-tos_spec.rb +20 -21
  45. data/spec/trema/set-transport-dst-port_spec.rb +22 -23
  46. data/spec/trema/set-transport-src-port_spec.rb +22 -23
  47. data/spec/trema/set-vlan-priority_spec.rb +20 -21
  48. data/spec/trema/set-vlan-vid_spec.rb +20 -21
  49. data/spec/trema/shell/vhost_spec.rb +7 -7
  50. data/spec/trema/shell/vswitch_spec.rb +8 -8
  51. data/spec/trema/stats-reply_spec.rb +23 -23
  52. data/spec/trema/strip-vlan-header_spec.rb +9 -9
  53. data/spec/trema/switch-daemon_spec.rb +15 -15
  54. data/spec/trema/util_spec.rb +2 -6
  55. data/spec/trema/vendor-action_spec.rb +24 -36
  56. metadata +4 -4
@@ -29,7 +29,7 @@ shared_examples_for "echo reply message" do
29
29
  }.run( EchoReplyController ) {
30
30
  controller( "EchoReplyController" ).send_message( 0xabc, subject )
31
31
  sleep 2 # FIXME: wait to send_message
32
- IO.read( File.join( Trema.log, "openflowd.echo.log" ) ).should include( "OFPT_ECHO_REPLY" )
32
+ expect( IO.read( File.join( Trema.log, "openflowd.echo.log" ) ) ).to include( "OFPT_ECHO_REPLY" )
33
33
  }
34
34
  end
35
35
  end
@@ -32,7 +32,7 @@ end
32
32
 
33
33
  describe Enqueue, ".new( :port_number => number, :queue_id => 1 )" do
34
34
  subject { Enqueue.new :port_number => port_number, :queue_id => 1 }
35
- it_validates "option range", :port_number, 0..( 2 ** 16 - 1 )
35
+ it_validates "option is within range", :port_number, 0..( 2 ** 16 - 1 )
36
36
 
37
37
  context "when :port_number == 1" do
38
38
  let( :port_number ) { 1 }
@@ -43,7 +43,7 @@ end
43
43
 
44
44
  describe Enqueue, ".new( :port_number => 1, :queue_id => number )" do
45
45
  subject { Enqueue.new :port_number => 1, :queue_id => queue_id }
46
- it_validates "option range", :queue_id, 0..( 2 ** 32 - 1 )
46
+ it_validates "option is within range", :queue_id, 0..( 2 ** 32 - 1 )
47
47
 
48
48
  context "when :queue_id == 256" do
49
49
  let( :queue_id ) { 256 }
@@ -61,8 +61,8 @@ describe Enqueue, ".new( VALID OPTIONS )" do
61
61
  }.run( FlowModAddController ) {
62
62
  controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => Enqueue.new( :port_number => 1, :queue_id => 123 ) )
63
63
  sleep 2 # FIXME: wait to send_flow_mod
64
- vswitch( "0xabc" ).should have( 1 ).flows
65
- vswitch( "0xabc" ).flows[0].actions.should match( /enqueue:1q123/ )
64
+ expect( vswitch( "0xabc" ) ).to have( 1 ).flows
65
+ expect( vswitch( "0xabc" ).flows[0].actions ).to match( /enqueue:1q123/ )
66
66
  }
67
67
  end
68
68
  end
@@ -47,7 +47,7 @@ module Trema
47
47
  its( :n_tables ) { should == 2 }
48
48
  its( :capabilities ) { should == 135 }
49
49
  its( :actions ) { should == 2047 }
50
- its( :ports ) { subject.size.should == 3 }
50
+ its( "ports.size" ) { should == 3 }
51
51
  end
52
52
 
53
53
 
@@ -29,7 +29,7 @@ shared_examples_for "features request message" do
29
29
  }.run( FeaturesRequestController ) {
30
30
  controller( "FeaturesRequestController" ).send_message( 0xabc, subject )
31
31
  sleep 2 # FIXME: wait to send_message
32
- IO.read( File.join( Trema.log, "openflowd.features-request.log" ) ).should include( "OFPT_FEATURES_REQUEST" )
32
+ expect( IO.read( File.join( Trema.log, "openflowd.features-request.log" ) ) ).to include( "OFPT_FEATURES_REQUEST" )
33
33
  }
34
34
  end
35
35
  end
@@ -105,25 +105,25 @@ describe Trema::FlowRemoved, ".new( VALID OPTIONS )" do
105
105
  vswitch { datapath_id 0xabc }
106
106
  }.run( FlowRemovedController ) {
107
107
  controller( "FlowRemovedController" ).should_receive( :flow_removed ) do | datapath_id, message |
108
- datapath_id.should == 0xabc
109
- message.match.in_port.should == 1
110
- message.match.dl_src.to_s.should == "00:00:00:00:00:01"
111
- message.match.dl_dst.to_s.should == "00:00:00:00:00:02"
112
- message.match.dl_type.should == 0x800
113
- message.match.dl_vlan.should == 65535
114
- message.match.dl_vlan_pcp.should == 0
115
- message.match.nw_tos.should == 0
116
- message.match.nw_proto.should == 17
117
- Trema::IP.new( message.match.nw_src ).to_s.should == "192.168.0.1"
118
- Trema::IP.new( message.match.nw_dst ).to_s.should == "192.168.0.2"
119
- message.match.tp_src.should == 1
120
- message.match.tp_dst.should == 1
121
- message.cookie.should == 123456789
122
- message.idle_timeout.should == 1
123
- message.reason.should == 0
124
- message.duration_sec.should >= 1
125
- message.packet_count.should == 0
126
- message.byte_count.should == 0
108
+ expect( datapath_id ).to eq( 0xabc )
109
+ expect( message.match.in_port ).to eq( 1 )
110
+ expect( message.match.dl_src.to_s ).to eq( "00:00:00:00:00:01" )
111
+ expect( message.match.dl_dst.to_s ).to eq( "00:00:00:00:00:02" )
112
+ expect( message.match.dl_type ).to eq( 0x800 )
113
+ expect( message.match.dl_vlan ).to eq( 65535 )
114
+ expect( message.match.dl_vlan_pcp ).to eq( 0 )
115
+ expect( message.match.nw_tos ).to eq( 0 )
116
+ expect( message.match.nw_proto ).to eq( 17 )
117
+ expect( Trema::IP.new( message.match.nw_src ).to_s ).to eq( "192.168.0.1" )
118
+ expect( Trema::IP.new( message.match.nw_dst ).to_s ).to eq( "192.168.0.2" )
119
+ expect( message.match.tp_src ).to eq( 1 )
120
+ expect( message.match.tp_dst ).to eq( 1 )
121
+ expect( message.cookie ).to eq( 123456789 )
122
+ expect( message.idle_timeout ).to eq( 1 )
123
+ expect( message.reason ).to eq( 0 )
124
+ expect( message.duration_sec ).to be >= 1
125
+ expect( message.packet_count ).to eq( 0 )
126
+ expect( message.byte_count ).to eq( 0 )
127
127
  end
128
128
  controller( "FlowRemovedController" ).send_flow_mod_add(
129
129
  0xabc,
@@ -29,7 +29,7 @@ shared_examples_for "get config request message" do
29
29
  }.run( GetConfigRequestController ) {
30
30
  controller( "GetConfigRequestController" ).send_message( 0xabc, subject )
31
31
  sleep 2 # FIXME: wait to send_message
32
- IO.read( File.join( Trema.log, "openflowd.get-config-request.log" ) ).should include( "OFPT_GET_CONFIG_REQUEST" )
32
+ expect( IO.read( File.join( Trema.log, "openflowd.get-config-request.log" ) ) ).to include( "OFPT_GET_CONFIG_REQUEST" )
33
33
  }
34
34
  end
35
35
  end
@@ -33,17 +33,17 @@ module Trema
33
33
 
34
34
 
35
35
  it "should return its name" do
36
- @switch.name.should == "0xabc"
36
+ expect( @switch.name ).to eq( "0xabc" )
37
37
  end
38
38
 
39
39
 
40
40
  it "should return dpid in long format" do
41
- @switch.dpid_long.should == "0000000000000abc"
41
+ expect( @switch.dpid_long ).to eq( "0000000000000abc" )
42
42
  end
43
43
 
44
44
 
45
45
  it "should return dpid in short format" do
46
- @switch.dpid_short.should == "0xabc"
46
+ expect( @switch.dpid_short ).to eq( "0xabc" )
47
47
  end
48
48
  end
49
49
  end
@@ -166,7 +166,7 @@ module Trema
166
166
  it "should get tx stats" do
167
167
  @cli.should_receive( :tx_stats ).and_return( @stats )
168
168
 
169
- @host.tx_stats.should == @stats
169
+ expect( @host.tx_stats ).to eq( @stats )
170
170
  end
171
171
  end
172
172
  end
@@ -177,7 +177,7 @@ module Trema
177
177
  it "should get rx stats" do
178
178
  @cli.should_receive( :rx_stats ).and_return( @stats )
179
179
 
180
- @host.rx_stats.should == @stats
180
+ expect( @host.rx_stats ).to eq( @stats )
181
181
  end
182
182
  end
183
183
  end
@@ -32,7 +32,7 @@ describe Controller do
32
32
  vswitch { datapath_id 0x3 }
33
33
  }.run( ListSwitchesController ) {
34
34
  controller( "ListSwitchesController" ).should_receive( :list_switches_reply ) do | dpids |
35
- dpids.should == [ 0x1, 0x2, 0x3 ]
35
+ expect( dpids ).to eq( [ 0x1, 0x2, 0x3 ] )
36
36
  end
37
37
  controller( "ListSwitchesController" ).send_list_switches_request
38
38
  }
@@ -86,7 +86,7 @@ module Trema
86
86
  it "can be used for Hash keys" do
87
87
  fdb = {}
88
88
  fdb[ Mac.new( "00:00:00:00:00:01" ) ] = "Port #1"
89
- fdb[ Mac.new( "00:00:00:00:00:01" ) ].should == "Port #1"
89
+ expect( fdb[ Mac.new( "00:00:00:00:00:01" ) ] ).to eq( "Port #1" )
90
90
  end
91
91
  end
92
92
  end
@@ -40,17 +40,17 @@ describe Match, ".new" do
40
40
  )
41
41
  }
42
42
  its( :in_port ) { should == 1 }
43
- its( :dl_src ) { subject.to_s.should == "00:00:00:00:00:01" }
44
- its( :dl_dst ) { subject.to_s.should == "00:00:00:00:00:02" }
43
+ its( "dl_src.to_s" ) { should == "00:00:00:00:00:01" }
44
+ its( "dl_dst.to_s" ) { should == "00:00:00:00:00:02" }
45
45
  its( :dl_vlan ) { should == 65535 }
46
46
  its( :dl_vlan_pcp ) { should == 0 }
47
47
  its( :dl_type ) { should == 0x800 }
48
48
  its( :nw_tos ) { should == 0 }
49
49
  its( :nw_proto ) { should == 17 }
50
- its( :nw_src ) { subject.to_s.should == "192.168.0.1" }
51
- its( :nw_src ) { subject.prefixlen.should == 32 }
52
- its( :nw_dst ) { subject.to_s.should == "192.168.0.0" }
53
- its( :nw_dst ) { subject.prefixlen.should == 24 }
50
+ its( "nw_src.to_s" ) { should == "192.168.0.1" }
51
+ its( "nw_src.prefixlen" ) { should == 32 }
52
+ its( "nw_dst.to_s" ) { should == "192.168.0.0" }
53
+ its( "nw_dst.prefixlen" ) { should == 24 }
54
54
  its( :tp_src ) { should == 10 }
55
55
  its( :tp_dst ) { should == 20 }
56
56
  its( :to_s ) { should == "wildcards = 0x20000(nw_dst(8)), in_port = 1, dl_src = 00:00:00:00:00:01, dl_dst = 00:00:00:00:00:02, dl_vlan = 0xffff, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 17, nw_src = 192.168.0.1/32, nw_dst = 192.168.0.0/24, tp_src = 10, tp_dst = 20" }
@@ -78,7 +78,7 @@ describe Match, ".compare" do
78
78
  :nw_src => "192.168.0.0/24",
79
79
  :nw_dst => "192.168.0.0/24"
80
80
  )
81
- pattern.compare( tester ).should == true
81
+ expect( pattern.compare( tester ) ).to be_true
82
82
  end
83
83
 
84
84
  it "Should not match" do
@@ -101,7 +101,7 @@ describe Match, ".compare" do
101
101
  :nw_src => "10.0.0.0/8",
102
102
  :nw_dst => "10.0.0.0/8"
103
103
  )
104
- pattern.compare( tester ).should == false
104
+ expect( pattern.compare( tester ) ).to be_false
105
105
  end
106
106
  end
107
107
 
@@ -38,10 +38,10 @@ module Trema
38
38
  OpenVswitch.new mock( "stanza 1", :name => "vswitch 1", :validate => true )
39
39
  OpenVswitch.new mock( "stanza 2", :name => "vswitch 2", :validate => true )
40
40
 
41
- OpenflowSwitch.should have( 3 ).vswitches
42
- OpenflowSwitch[ "vswitch 0" ].should_not be_nil
43
- OpenflowSwitch[ "vswitch 1" ].should_not be_nil
44
- OpenflowSwitch[ "vswitch 2" ].should_not be_nil
41
+ expect( OpenflowSwitch ).to have( 3 ).vswitches
42
+ expect( OpenflowSwitch[ "vswitch 0" ] ).not_to be_nil
43
+ expect( OpenflowSwitch[ "vswitch 1" ] ).not_to be_nil
44
+ expect( OpenflowSwitch[ "vswitch 2" ] ).not_to be_nil
45
45
  end
46
46
  end
47
47
 
@@ -94,7 +94,7 @@ module Trema
94
94
 
95
95
  it "should execute ovs openflowd" do
96
96
  subject.should_receive( :sh ).with do | command |
97
- command.should include( Executables.ovs_openflowd )
97
+ expect( command ).to include( Executables.ovs_openflowd )
98
98
  end
99
99
 
100
100
  subject.run!
@@ -106,7 +106,7 @@ module Trema
106
106
  subject << "VirtualInterface2"
107
107
 
108
108
  subject.should_receive( :sh ).with do | command |
109
- command.should include( "--ports=VirtualInterface0,VirtualInterface1,VirtualInterface2" )
109
+ expect( command ).to include( "--ports=VirtualInterface0,VirtualInterface1,VirtualInterface2" )
110
110
  end
111
111
 
112
112
  subject.run!
@@ -34,9 +34,9 @@ describe Trema::OpenflowError, "new" do
34
34
  :advertise => 0
35
35
  )
36
36
  controller( "OpenflowErrorController" ).should_receive( :openflow_error ) do | datapath_id, message |
37
- datapath_id.should == 0xabc
38
- message.type.should == Error::OFPET_PORT_MOD_FAILED
39
- message.code.should == Error::OFPPMFC_BAD_PORT
37
+ expect( datapath_id ).to eq( 0xabc )
38
+ expect( message.type ).to eq( Error::OFPET_PORT_MOD_FAILED )
39
+ expect( message.code ).to eq( Error::OFPPMFC_BAD_PORT )
40
40
  end
41
41
  controller( "OpenflowErrorController" ).send_message( 0xabc, port_mod )
42
42
  sleep 2 # FIXME: wait to send_message
@@ -62,9 +62,9 @@ describe Trema::OpenflowError, "new" do
62
62
  :advertise => 0
63
63
  )
64
64
  controller( "OpenflowErrorController" ).should_receive( :openflow_error ) do | datapath_id, message |
65
- datapath_id.should == 0xabc
66
- message.type.should == Error::OFPET_PORT_MOD_FAILED
67
- message.code.should == Error::OFPPMFC_BAD_HW_ADDR
65
+ expect( datapath_id ).to eq( 0xabc )
66
+ expect( message.type ).to eq( Error::OFPET_PORT_MOD_FAILED )
67
+ expect( message.code ).to eq( Error::OFPPMFC_BAD_HW_ADDR )
68
68
  end
69
69
  controller( "OpenflowErrorController" ).send_message( 0xabc, port_mod )
70
70
  sleep 2 # FIXME: wait to send_message
@@ -84,9 +84,9 @@ describe Trema::OpenflowError, "new" do
84
84
  link "host2", "error-port"
85
85
  }.run( OpenflowErrorController ) {
86
86
  controller( "OpenflowErrorController" ).should_receive( :openflow_error ) do | datapath_id, message |
87
- datapath_id.should == 0xabc
88
- message.type.should == Error::OFPET_BAD_ACTION
89
- message.code.should == Error::OFPBAC_BAD_OUT_PORT
87
+ expect( datapath_id ).to eq( 0xabc )
88
+ expect( message.type ).to eq( Error::OFPET_BAD_ACTION )
89
+ expect( message.code ).to eq( Error::OFPBAC_BAD_OUT_PORT )
90
90
  end
91
91
  controller( "OpenflowErrorController" ).send_flow_mod_add( 0xabc, :actions => ActionOutput.new( :port => 0x5555 ) )
92
92
  sleep 2 # FIXME: wait to send_flow_mod_add
@@ -103,23 +103,23 @@ describe Trema::OpenflowError, "new" do
103
103
  }.run( OpenflowController ) {
104
104
  queue_get_config_request = Trema::QueueGetConfigRequest.new( :port => 1 )
105
105
  controller( "OpenflowController" ).should_receive( :openflow_error ) do | datapath_id, message |
106
- message.datapath_id.should == 0xabc
107
- message.type.should satisfy { | n |
106
+ expect( message.datapath_id ).to eq( 0xabc )
107
+ expect( message.type ).to satisfy { | n |
108
108
  n >= 0 && n <= 5
109
109
  }
110
110
  case message.type
111
111
  when 0,4
112
- message.code.should include 0,1
112
+ expect( message.code ).to include( 0,1 )
113
113
  when 1,2
114
- message.code.should satisfy { | n |
114
+ expect( message.code ).to satisfy { | n |
115
115
  n >= 0 && n <= 8
116
116
  }
117
117
  when 3
118
- message.code.should satisfy { | n |
118
+ expect( message.code ).to satisfy { | n |
119
119
  n >= 0 && n <= 5
120
120
  }
121
121
  when 5
122
- message.code.should satisfy { |n|
122
+ expect( message.code ).to satisfy { |n|
123
123
  n >= 0 && n <= 3
124
124
  }
125
125
  end
@@ -1,4 +1,3 @@
1
-
2
1
  # Author: Nick Karanatsios <nickkaranatsios@gmail.com>
3
2
  #
4
3
  # Copyright (C) 2008-2012 NEC Corporation
@@ -56,9 +55,9 @@ describe Trema::PacketIn do
56
55
  link "test", "host2"
57
56
  }.run( PacketInController ) {
58
57
  controller( "PacketInController" ).should_receive( :packet_in ) do | datapath_id, message |
59
- datapath_id.should == 0xabc
60
- message.datapath_id.should == 0xabc
61
- message.in_port.should > 0
58
+ expect( datapath_id ).to eq( 0xabc )
59
+ expect( message.datapath_id ).to eq( 0xabc )
60
+ expect( message.in_port ).to be > 0
62
61
  end
63
62
  send_and_wait
64
63
  }
@@ -77,22 +76,22 @@ describe Trema::PacketIn do
77
76
  }.run( PacketInController ) {
78
77
  controller( "PacketInController" ).should_receive( :packet_in ) do | datapath_id, message |
79
78
  # packet_in expected to have data portion.
80
- message.total_len.should > 20
81
- message.data.should be_instance_of( String )
82
- message.buffered?.should be_false
83
-
84
- message.macsa.should be_instance_of( Trema::Mac )
85
- message.macsa.to_s.should == "00:00:00:00:00:01"
86
- message.macda.should be_instance_of( Trema::Mac )
87
- message.macda.to_s.should == "00:00:00:00:00:02"
88
-
89
- message.eth_type.should == 0x0800
90
- message.ipv4?.should == true
91
- message.ipv4_version.should == 4
92
- message.ipv4_saddr.should be_instance_of( Trema::IP )
93
- message.ipv4_saddr.to_s.should == "192.168.1.1"
94
- message.ipv4_daddr.should be_instance_of( Trema::IP )
95
- message.ipv4_daddr.to_s.should == "192.168.1.2"
79
+ expect( message.total_len ).to be > 20
80
+ expect( message.data ).to be_instance_of( String )
81
+ expect( message.buffered? ).to be_false
82
+
83
+ expect( message.macsa ).to be_instance_of( Trema::Mac )
84
+ expect( message.macsa.to_s ).to eq( "00:00:00:00:00:01" )
85
+ expect( message.macda ).to be_instance_of( Trema::Mac )
86
+ expect( message.macda.to_s ).to eq( "00:00:00:00:00:02" )
87
+
88
+ expect( message.eth_type ).to eq( 0x0800 )
89
+ expect( message.ipv4? ).to be_true
90
+ expect( message.ipv4_version ).to eq( 4 )
91
+ expect( message.ipv4_saddr ).to be_instance_of( Trema::IP )
92
+ expect( message.ipv4_saddr.to_s ).to eq( "192.168.1.1" )
93
+ expect( message.ipv4_daddr ).to be_instance_of( Trema::IP )
94
+ expect( message.ipv4_daddr.to_s ).to eq( "192.168.1.2" )
96
95
  end
97
96
  send_and_wait
98
97
  }
@@ -130,66 +129,66 @@ describe Trema::PacketIn do
130
129
  0x00, 0x00
131
130
  ].pack( "C*" )
132
131
  controller( "PacketInSendController" ).should_receive( :packet_in ) do | datapath_id, message |
133
- message.in_port.should > 0
134
- message.vtag?.should be_false
135
- message.arp?.should be_true
136
- message.ipv4?.should be_false
137
- message.tcp?.should be_false
138
- message.udp?.should be_false
139
- message.icmpv4?.should be_false
140
- message.igmp?.should be_false
141
-
142
- message.arp_oper.should == 2
143
- message.arp_sha.to_s.should == "00:00:00:00:00:01"
144
- message.arp_spa.to_s.should == "192.168.0.1"
145
- message.arp_tha.to_s.should == "00:00:00:00:00:02"
146
- message.arp_tpa.to_s.should == "192.168.0.2"
147
- message.arp_request?.should be_false
148
- message.arp_reply?.should be_true
149
-
150
- message.vlan_tpid.should be_nil
151
- message.vlan_tci.should be_nil
152
- message.vlan_prio.should be_nil
153
- message.vlan_cfi.should be_nil
154
- message.vlan_vid.should be_nil
155
-
156
- message.ipv4_version.should be_nil
157
- message.ipv4_ihl.should be_nil
158
- message.ipv4_tos.should be_nil
159
- message.ipv4_tot_len.should be_nil
160
- message.ipv4_id.should be_nil
161
- message.ipv4_frag_off.should be_nil
162
- message.ipv4_ttl.should be_nil
163
- message.ipv4_protocol.should be_nil
164
- message.ipv4_checksum.should be_nil
165
- message.ipv4_saddr.should be_nil
166
- message.ipv4_daddr.should be_nil
167
-
168
- message.icmpv4_type.should be_nil
169
- message.icmpv4_code.should be_nil
170
- message.icmpv4_checksum.should be_nil
171
- message.icmpv4_id.should be_nil
172
- message.icmpv4_seq.should be_nil
173
- message.icmpv4_gateway.should be_nil
174
-
175
- message.igmp_type.should be_nil
176
- message.igmp_checksum.should be_nil
177
- message.igmp_group.should be_nil
178
-
179
- message.tcp_src_port.should be_nil
180
- message.tcp_dst_port.should be_nil
181
- message.tcp_seq_no.should be_nil
182
- message.tcp_ack_no.should be_nil
183
- message.tcp_offset.should be_nil
184
- message.tcp_flags.should be_nil
185
- message.tcp_window.should be_nil
186
- message.tcp_checksum.should be_nil
187
- message.tcp_urgent.should be_nil
188
-
189
- message.udp_src_port.should be_nil
190
- message.udp_dst_port.should be_nil
191
- message.udp_checksum.should be_nil
192
- message.udp_len.should be_nil
132
+ expect( message.in_port ).to be > 0
133
+ expect( message.vtag? ).to be_false
134
+ expect( message.arp? ).to be_true
135
+ expect( message.ipv4? ).to be_false
136
+ expect( message.tcp? ).to be_false
137
+ expect( message.udp? ).to be_false
138
+ expect( message.icmpv4? ).to be_false
139
+ expect( message.igmp? ).to be_false
140
+
141
+ expect( message.arp_oper ).to eq( 2 )
142
+ expect( message.arp_sha.to_s ).to eq( "00:00:00:00:00:01" )
143
+ expect( message.arp_spa.to_s ).to eq( "192.168.0.1" )
144
+ expect( message.arp_tha.to_s ).to eq( "00:00:00:00:00:02" )
145
+ expect( message.arp_tpa.to_s ).to eq( "192.168.0.2" )
146
+ expect( message.arp_request? ).to be_false
147
+ expect( message.arp_reply? ).to be_true
148
+
149
+ expect( message.vlan_tpid ).to be_nil
150
+ expect( message.vlan_tci ).to be_nil
151
+ expect( message.vlan_prio ).to be_nil
152
+ expect( message.vlan_cfi ).to be_nil
153
+ expect( message.vlan_vid ).to be_nil
154
+
155
+ expect( message.ipv4_version ).to be_nil
156
+ expect( message.ipv4_ihl ).to be_nil
157
+ expect( message.ipv4_tos ).to be_nil
158
+ expect( message.ipv4_tot_len ).to be_nil
159
+ expect( message.ipv4_id ).to be_nil
160
+ expect( message.ipv4_frag_off ).to be_nil
161
+ expect( message.ipv4_ttl ).to be_nil
162
+ expect( message.ipv4_protocol ).to be_nil
163
+ expect( message.ipv4_checksum ).to be_nil
164
+ expect( message.ipv4_saddr ).to be_nil
165
+ expect( message.ipv4_daddr ).to be_nil
166
+
167
+ expect( message.icmpv4_type ).to be_nil
168
+ expect( message.icmpv4_code ).to be_nil
169
+ expect( message.icmpv4_checksum ).to be_nil
170
+ expect( message.icmpv4_id ).to be_nil
171
+ expect( message.icmpv4_seq ).to be_nil
172
+ expect( message.icmpv4_gateway ).to be_nil
173
+
174
+ expect( message.igmp_type ).to be_nil
175
+ expect( message.igmp_checksum ).to be_nil
176
+ expect( message.igmp_group ).to be_nil
177
+
178
+ expect( message.tcp_src_port ).to be_nil
179
+ expect( message.tcp_dst_port ).to be_nil
180
+ expect( message.tcp_seq_no ).to be_nil
181
+ expect( message.tcp_ack_no ).to be_nil
182
+ expect( message.tcp_offset ).to be_nil
183
+ expect( message.tcp_flags ).to be_nil
184
+ expect( message.tcp_window ).to be_nil
185
+ expect( message.tcp_checksum ).to be_nil
186
+ expect( message.tcp_urgent ).to be_nil
187
+
188
+ expect( message.udp_src_port ).to be_nil
189
+ expect( message.udp_dst_port ).to be_nil
190
+ expect( message.udp_checksum ).to be_nil
191
+ expect( message.udp_len ).to be_nil
193
192
  end
194
193
 
195
194
  controller( "PacketInSendController" ).send_packet_out(
@@ -240,42 +239,42 @@ describe Trema::PacketIn do
240
239
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
241
240
  ].pack( "C*" )
242
241
  controller( "PacketInSendController" ).should_receive( :packet_in ) do | datapath_id, message |
243
- message.in_port.should > 0
244
- message.vtag?.should be_false
245
- message.arp?.should be_false
246
- message.ipv4?.should be_true
247
- message.udp?.should be_false
248
- message.tcp?.should be_true
249
- message.icmpv4?.should be_false
250
- message.igmp?.should be_false
251
-
252
- message.ipv4_version.should == 4
253
- message.ipv4_ihl.should == 5
254
- message.ipv4_tos.should == 0
255
- message.ipv4_tot_len.should == 0x28
256
- message.ipv4_id.should == 0
257
- message.ipv4_frag_off.should == 0
258
- message.ipv4_ttl.should == 0
259
- message.ipv4_protocol.should == 6
260
- message.ipv4_checksum.should == 0x397d
261
- message.ipv4_saddr.to_s.should == "192.168.0.1"
262
- message.ipv4_daddr.to_s.should == "192.168.0.2"
263
-
264
- message.tcp_src_port.should == 1
265
- message.tcp_dst_port.should == 2
266
- message.tcp_seq_no.should == 0
267
- message.tcp_ack_no.should == 0
268
- message.tcp_offset.should == 5
269
- message.tcp_flags.should == 0
270
- message.tcp_window.should == 0
271
- message.tcp_checksum.should == 11910 # 0x2e86
272
- message.tcp_urgent.should == 0
273
-
274
- message.arp_oper.should be_nil
275
- message.arp_sha.should be_nil
276
- message.arp_spa.should be_nil
277
- message.arp_tha.should be_nil
278
- message.arp_tpa.should be_nil
242
+ expect( message.in_port ).to be > 0
243
+ expect( message.vtag? ).to be_false
244
+ expect( message.arp? ).to be_false
245
+ expect( message.ipv4? ).to be_true
246
+ expect( message.udp? ).to be_false
247
+ expect( message.tcp? ).to be_true
248
+ expect( message.icmpv4? ).to be_false
249
+ expect( message.igmp? ).to be_false
250
+
251
+ expect( message.ipv4_version ).to eq( 4 )
252
+ expect( message.ipv4_ihl ).to eq( 5 )
253
+ expect( message.ipv4_tos ).to eq( 0 )
254
+ expect( message.ipv4_tot_len ).to eq( 0x28 )
255
+ expect( message.ipv4_id ).to eq( 0 )
256
+ expect( message.ipv4_frag_off ).to eq( 0 )
257
+ expect( message.ipv4_ttl ).to eq( 0 )
258
+ expect( message.ipv4_protocol ).to eq( 6 )
259
+ expect( message.ipv4_checksum ).to eq( 0x397d )
260
+ expect( message.ipv4_saddr.to_s ).to eq( "192.168.0.1" )
261
+ expect( message.ipv4_daddr.to_s ).to eq( "192.168.0.2" )
262
+
263
+ expect( message.tcp_src_port ).to eq( 1 )
264
+ expect( message.tcp_dst_port ).to eq( 2 )
265
+ expect( message.tcp_seq_no ).to eq( 0 )
266
+ expect( message.tcp_ack_no ).to eq( 0 )
267
+ expect( message.tcp_offset ).to eq( 5 )
268
+ expect( message.tcp_flags ).to eq( 0 )
269
+ expect( message.tcp_window ).to eq( 0 )
270
+ expect( message.tcp_checksum ).to eq( 11910 ) # 0x2e86
271
+ expect( message.tcp_urgent ).to eq( 0 )
272
+
273
+ expect( message.arp_oper ).to be_nil
274
+ expect( message.arp_sha ).to be_nil
275
+ expect( message.arp_spa ).to be_nil
276
+ expect( message.arp_tha ).to be_nil
277
+ expect( message.arp_tpa ).to be_nil
279
278
  end
280
279
 
281
280
  controller( "PacketInSendController" ).send_packet_out(
@@ -323,31 +322,32 @@ describe Trema::PacketIn do
323
322
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00
324
323
  ].pack( "C*" )
325
324
  controller( "PacketInSendController" ).should_receive( :packet_in ) do | datapath_id, message |
326
- message.in_port.should > 0
327
- message.vtag?.should be_false
328
- message.arp?.should be_false
329
- message.ipv4?.should be_true
330
- message.tcp?.should be_false
331
- message.udp?.should be_true
332
- message.icmpv4?.should be_false
333
- message.igmp?.should be_false
334
-
335
- message.ipv4_version.should == 4
336
- message.ipv4_ihl.should == 5
337
- message.ipv4_tos.should == 0
338
- message.ipv4_tot_len.should == 0x32
339
- message.ipv4_id.should == 0
340
- message.ipv4_frag_off.should == 0
341
- message.ipv4_ttl.should == 0x40
342
- message.ipv4_protocol.should == 17
343
- message.ipv4_checksum.should == 0xf968
344
- message.ipv4_saddr.to_s.should == "192.168.0.1"
345
- message.ipv4_daddr.to_s.should == "192.168.0.2"
346
-
347
- message.udp_src_port.should == 1
348
- message.udp_dst_port.should == 2
349
- message.udp_checksum.should == 0
350
- message.udp_len.should == 0x1e
325
+ expect( message.in_port ).to be > 0
326
+ expect( message.vtag? ).to be_false
327
+ expect( message.arp? ).to be_false
328
+ expect( message.ipv4? ).to be_true
329
+ expect( message.tcp? ).to be_false
330
+ expect( message.udp? ).to be_true
331
+ expect( message.icmpv4? ).to be_false
332
+ expect( message.igmp? ).to be_false
333
+
334
+
335
+ expect( message.ipv4_version ).to eq( 4 )
336
+ expect( message.ipv4_ihl ).to eq( 5 )
337
+ expect( message.ipv4_tos ).to eq( 0 )
338
+ expect( message.ipv4_tot_len ).to eq( 0x32 )
339
+ expect( message.ipv4_id ).to eq( 0 )
340
+ expect( message.ipv4_frag_off ).to eq( 0 )
341
+ expect( message.ipv4_ttl ).to eq( 0x40 )
342
+ expect( message.ipv4_protocol ).to eq( 17 )
343
+ expect( message.ipv4_checksum ).to eq( 0xf968 )
344
+ expect( message.ipv4_saddr.to_s ).to eq( "192.168.0.1" )
345
+ expect( message.ipv4_daddr.to_s ).to eq( "192.168.0.2" )
346
+
347
+ expect( message.udp_src_port ).to eq( 1 )
348
+ expect( message.udp_dst_port ).to eq( 2 )
349
+ expect( message.udp_checksum ).to eq( 0 )
350
+ expect( message.udp_len ).to eq( 0x1e )
351
351
  end
352
352
 
353
353
  controller( "PacketInSendController" ).send_packet_out(
@@ -375,6 +375,8 @@ describe Trema::PacketIn do
375
375
  0x00, 0x00, 0x00, 0x00, 0x00, 0x02, # dst
376
376
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, # src
377
377
  # vlan tag
378
+
379
+
378
380
  0x81, 0x00, # tpid
379
381
  0x0f, 0x9f, # tci
380
382
  0x08, 0x00, # ether type
@@ -400,44 +402,44 @@ describe Trema::PacketIn do
400
402
  0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69
401
403
  ].pack( "C*" )
402
404
  controller( "PacketInSendController" ).should_receive( :packet_in ) do | datapath_id, message |
403
- message.in_port.should > 0
404
- message.vtag?.should be_true
405
- message.arp?.should be_false
406
- message.ipv4?.should be_true
407
- message.udp?.should be_false
408
- message.tcp?.should be_false
409
- message.icmpv4?.should be_true
410
- message.igmp?.should be_false
411
-
412
- message.vlan_tpid.should == 0x8100
413
- message.vlan_tci.should == 0x0f9f
414
- message.vlan_prio.should == 0
415
- message.vlan_cfi.should == 0
416
- message.vlan_vid.should == 0xf9f
417
- message.eth_type.should == 0x0800
418
-
419
- message.ipv4_version.should == 4
420
- message.ipv4_ihl.should == 5
421
- message.ipv4_tos.should == 0
422
- message.ipv4_tot_len.should == 0x003c
423
- message.ipv4_id.should == 0x8c1b
424
- message.ipv4_frag_off.should == 0
425
- message.ipv4_ttl.should == 0x80
426
- message.ipv4_protocol.should == 1
427
- message.ipv4_checksum.should == 0xed09
428
- message.ipv4_saddr.to_s.should == "192.168.32.74"
429
- message.ipv4_daddr.to_s.should == "192.168.32.1"
430
-
431
- message.icmpv4_type.should == 8
432
- message.icmpv4_code.should == 0
433
- message.icmpv4_checksum.should == 0xe95b
434
- message.icmpv4_id.should == 0x0400
435
- message.icmpv4_seq.should == 0x6000
436
-
437
- message.icmpv4_echo_reply?.should be_false
438
- message.icmpv4_dst_unreach?.should be_false
439
- message.icmpv4_redirect?.should be_false
440
- message.icmpv4_echo_request?.should be_true
405
+ expect( message.in_port ).to be > 0
406
+ expect( message.vtag? ).to be_true
407
+ expect( message.arp? ).to be_false
408
+ expect( message.ipv4? ).to be_true
409
+ expect( message.udp? ).to be_false
410
+ expect( message.tcp? ).to be_false
411
+ expect( message.icmpv4? ).to be_true
412
+ expect( message.igmp? ).to be_false
413
+
414
+ expect( message.vlan_tpid ).to eq( 0x8100 )
415
+ expect( message.vlan_tci ).to eq( 0x0f9f )
416
+ expect( message.vlan_prio ).to eq( 0 )
417
+ expect( message.vlan_cfi ).to eq( 0 )
418
+ expect( message.vlan_vid ).to eq( 0xf9f )
419
+ expect( message.eth_type ).to eq( 0x0800 )
420
+
421
+ expect( message.ipv4_version ).to eq( 4 )
422
+ expect( message.ipv4_ihl ).to eq( 5 )
423
+ expect( message.ipv4_tos ).to eq( 0 )
424
+ expect( message.ipv4_tot_len ).to eq( 0x003c )
425
+ expect( message.ipv4_id ).to eq( 0x8c1b )
426
+ expect( message.ipv4_frag_off ).to eq( 0 )
427
+ expect( message.ipv4_ttl ).to eq( 0x80 )
428
+ expect( message.ipv4_protocol ).to eq( 1 )
429
+ expect( message.ipv4_checksum ).to eq( 0xed09 )
430
+ expect( message.ipv4_saddr.to_s ).to eq( "192.168.32.74" )
431
+ expect( message.ipv4_daddr.to_s ).to eq( "192.168.32.1" )
432
+
433
+ expect( message.icmpv4_type ).to eq( 8 )
434
+ expect( message.icmpv4_code ).to eq( 0 )
435
+ expect( message.icmpv4_checksum ).to eq( 0xe95b )
436
+ expect( message.icmpv4_id ).to eq( 0x0400 )
437
+ expect( message.icmpv4_seq ).to eq( 0x6000 )
438
+
439
+ expect( message.icmpv4_echo_reply? ).to be_false
440
+ expect( message.icmpv4_dst_unreach? ).to be_false
441
+ expect( message.icmpv4_redirect? ).to be_false
442
+ expect( message.icmpv4_echo_request? ).to be_true
441
443
  end
442
444
 
443
445
  controller( "PacketInSendController" ).send_packet_out(
@@ -483,35 +485,35 @@ describe Trema::PacketIn do
483
485
  0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69
484
486
  ].pack( "C*" )
485
487
  controller( "PacketInSendController" ).should_receive( :packet_in ) do | datapath_id, message |
486
- message.in_port.should > 0
487
- message.vtag?.should be_false
488
- message.arp?.should be_false
489
- message.ipv4?.should be_true
490
- message.udp?.should be_false
491
- message.tcp?.should be_false
492
- message.icmpv4?.should be_false
493
- message.igmp?.should be_true
494
-
495
- message.igmp_membership_query?.should be_true
496
- message.igmp_v1_membership_report?.should be_false
497
- message.igmp_v2_membership_report?.should be_false
498
- message.igmp_v2_leave_group?.should be_false
499
- message.igmp_v3_membership_report?.should be_false
500
-
501
- message.ipv4_version.should == 4
502
- message.ipv4_ihl.should == 6
503
- message.ipv4_tos.should == 0xc0
504
- message.ipv4_tot_len.should == 0x0020
505
- message.ipv4_id.should == 0x3aea
506
- message.ipv4_frag_off.should == 0
507
- message.ipv4_ttl.should == 1
508
- message.ipv4_protocol.should == 2
509
- message.ipv4_checksum.should == 0xe458
510
- message.ipv4_saddr.to_s.should == "192.168.100.43"
511
- message.ipv4_daddr.to_s.should == "224.0.0.1"
512
-
513
- message.igmp_type.should == 0x11
514
- message.igmp_checksum.should == 0xee9b
488
+ expect( message.in_port ).to be > 0
489
+ expect( message.vtag? ).to be_false
490
+ expect( message.arp? ).to be_false
491
+ expect( message.ipv4? ).to be_true
492
+ expect( message.udp? ).to be_false
493
+ expect( message.tcp? ).to be_false
494
+ expect( message.icmpv4? ).to be_false
495
+ expect( message.igmp? ).to be_true
496
+
497
+ expect( message.igmp_membership_query? ).to be_true
498
+ expect( message.igmp_v1_membership_report? ).to be_false
499
+ expect( message.igmp_v2_membership_report? ).to be_false
500
+ expect( message.igmp_v2_leave_group? ).to be_false
501
+ expect( message.igmp_v3_membership_report? ).to be_false
502
+
503
+ expect( message.ipv4_version ).to eq( 4 )
504
+ expect( message.ipv4_ihl ).to eq( 6 )
505
+ expect( message.ipv4_tos ).to eq( 0xc0 )
506
+ expect( message.ipv4_tot_len ).to eq( 0x0020 )
507
+ expect( message.ipv4_id ).to eq( 0x3aea )
508
+ expect( message.ipv4_frag_off ).to eq( 0 )
509
+ expect( message.ipv4_ttl ).to eq( 1 )
510
+ expect( message.ipv4_protocol ).to eq( 2 )
511
+ expect( message.ipv4_checksum ).to eq( 0xe458 )
512
+ expect( message.ipv4_saddr.to_s ).to eq( "192.168.100.43" )
513
+ expect( message.ipv4_daddr.to_s ).to eq( "224.0.0.1" )
514
+
515
+ expect( message.igmp_type ).to eq( 0x11 )
516
+ expect( message.igmp_checksum ).to eq( 0xee9b )
515
517
  end
516
518
 
517
519
  controller( "PacketInSendController" ).send_packet_out(