trema 0.2.2.1 → 0.2.3

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 (250) hide show
  1. data/.gitmodules +3 -0
  2. data/.travis.yml +13 -0
  3. data/.yardopts +4 -0
  4. data/Gemfile +2 -3
  5. data/README.md +43 -97
  6. data/Rakefile +60 -4
  7. data/Rantfile +11 -10
  8. data/cruise.rb +4 -6
  9. data/features/example.packetin_filter_config.feature +10 -10
  10. data/features/example.switch_monitor.feature +14 -2
  11. data/features/step_definitions/kill_steps.rb +2 -2
  12. data/features/step_definitions/{off_steps.rb → killall_steps.rb} +2 -2
  13. data/features/step_definitions/misc_steps.rb +1 -1
  14. data/features/step_definitions/up_steps.rb +30 -0
  15. data/features/trema.feature +1 -0
  16. data/features/trema.run.feature +1 -0
  17. data/locale/README.ja.md +19 -0
  18. data/locale/ja/yard.po +3762 -0
  19. data/locale/yard.pot +3740 -0
  20. data/ruby/extconf.rb +4 -1
  21. data/ruby/trema/action-common.c +3 -17
  22. data/ruby/trema/action-common.h +3 -7
  23. data/ruby/trema/action.rb +33 -0
  24. data/ruby/trema/app.rb +1 -1
  25. data/ruby/trema/barrier-request.c +1 -0
  26. data/ruby/trema/command/run.rb +13 -9
  27. data/ruby/trema/command/usage.rb +1 -0
  28. data/ruby/trema/command/version.rb +1 -1
  29. data/ruby/trema/controller.c +133 -50
  30. data/ruby/trema/controller.rb +2 -2
  31. data/ruby/trema/desc-stats-reply.rb +77 -0
  32. data/ruby/trema/dsl/configuration.rb +3 -14
  33. data/ruby/trema/dsl/rswitch.rb +47 -0
  34. data/ruby/trema/dsl/runner.rb +4 -1
  35. data/ruby/trema/dsl/syntax.rb +11 -8
  36. data/ruby/trema/echo-reply.c +59 -45
  37. data/ruby/trema/echo-reply.h +1 -3
  38. data/ruby/trema/echo-request.c +49 -71
  39. data/ruby/trema/echo-request.h +0 -2
  40. data/ruby/trema/echo.c +99 -0
  41. data/ruby/trema/{action-enqueue.h → echo.h} +6 -7
  42. data/ruby/trema/enqueue.rb +87 -0
  43. data/ruby/trema/error.c +109 -104
  44. data/ruby/trema/error.h +0 -2
  45. data/ruby/trema/features-reply.c +89 -35
  46. data/ruby/trema/features-reply.h +0 -6
  47. data/ruby/trema/features-request.c +63 -37
  48. data/ruby/trema/features-request.h +0 -2
  49. data/ruby/trema/flow-mod.c +149 -0
  50. data/ruby/trema/{action-output.h → flow-mod.h} +6 -6
  51. data/ruby/trema/get-config-request.c +1 -0
  52. data/ruby/trema/hardware-switch.rb +88 -0
  53. data/ruby/trema/hello.c +55 -31
  54. data/ruby/trema/hello.h +0 -2
  55. data/ruby/trema/ip.rb +12 -2
  56. data/ruby/trema/logger.rb +29 -0
  57. data/ruby/trema/mac.rb +57 -36
  58. data/ruby/trema/match.c +7 -9
  59. data/ruby/trema/monkey-patch/integer/ranges.rb +0 -2
  60. data/ruby/trema/network-component.rb +1 -1
  61. data/ruby/trema/open-vswitch.rb +2 -2
  62. data/ruby/trema/openflow-switch.rb +3 -54
  63. data/ruby/trema/{packet_in.c → packet-in.c} +262 -175
  64. data/ruby/trema/{packet_in.h → packet-in.h} +0 -2
  65. data/ruby/trema/packet-queue.rb +4 -3
  66. data/ruby/trema/port-mod.c +8 -9
  67. data/ruby/trema/port-status-add.rb +60 -0
  68. data/ruby/trema/port-status-delete.rb +60 -0
  69. data/ruby/trema/port-status-modify.rb +60 -0
  70. data/ruby/trema/port-status.c +48 -15
  71. data/ruby/trema/port-status.h +6 -8
  72. data/ruby/trema/port.c +63 -8
  73. data/ruby/trema/queue-get-config-request.c +1 -0
  74. data/ruby/trema/ruby-switch.rb +62 -0
  75. data/ruby/trema/send-out-port.rb +97 -0
  76. data/ruby/trema/set-config.c +1 -0
  77. data/ruby/trema/set-eth-addr.rb +45 -0
  78. data/ruby/trema/set-eth-dst-addr.rb +54 -0
  79. data/ruby/trema/set-eth-src-addr.rb +54 -0
  80. data/ruby/trema/set-ip-addr.rb +47 -0
  81. data/ruby/trema/set-ip-dst-addr.rb +53 -0
  82. data/ruby/trema/set-ip-src-addr.rb +52 -0
  83. data/ruby/trema/set-ip-tos.rb +63 -0
  84. data/ruby/trema/set-transport-dst-port.rb +53 -0
  85. data/ruby/trema/set-transport-port.rb +52 -0
  86. data/ruby/trema/set-transport-src-port.rb +54 -0
  87. data/ruby/trema/set-vlan-priority.rb +65 -0
  88. data/ruby/trema/set-vlan-vid.rb +64 -0
  89. data/ruby/trema/shell/down.rb +1 -1
  90. data/ruby/trema/shell/link.rb +4 -4
  91. data/ruby/trema/shell/run.rb +8 -6
  92. data/ruby/trema/shell/up.rb +3 -3
  93. data/ruby/trema/stats-reply.c +27 -2
  94. data/ruby/trema/stats-request.c +64 -23
  95. data/ruby/trema/strip-vlan-header.rb +41 -0
  96. data/ruby/trema/switch.c +196 -0
  97. data/ruby/trema/{action-vendor.h → switch.h} +5 -7
  98. data/ruby/trema/switch.rb +28 -9
  99. data/ruby/trema/trema-ruby-utils.c +66 -0
  100. data/ruby/trema/{action-set-dl-src.h → trema-ruby-utils.h} +9 -11
  101. data/ruby/trema/trema.c +61 -61
  102. data/ruby/trema/vendor-action.rb +73 -0
  103. data/ruby/trema/vendor.c +121 -52
  104. data/ruby/trema/vendor.h +6 -10
  105. data/ruby/trema/version.rb +1 -1
  106. data/spec/spec_helper.rb +1 -1
  107. data/spec/support/action.rb +52 -0
  108. data/spec/support/mandatory-option.rb +56 -0
  109. data/spec/support/openflow-message.rb +91 -7
  110. data/spec/support/port-status.rb +38 -0
  111. data/spec/trema/controller_spec.rb +0 -26
  112. data/spec/trema/dsl/configuration_spec.rb +3 -3
  113. data/spec/trema/dsl/runner_spec.rb +12 -32
  114. data/spec/trema/dsl/syntax_spec.rb +2 -11
  115. data/spec/trema/echo-reply_spec.rb +49 -14
  116. data/spec/trema/echo-request_spec.rb +86 -34
  117. data/spec/trema/enqueue_spec.rb +76 -0
  118. data/spec/trema/error_spec.rb +43 -58
  119. data/spec/trema/features-reply_spec.rb +58 -24
  120. data/spec/trema/features-request_spec.rb +54 -28
  121. data/spec/trema/flow-mod_spec.rb +99 -0
  122. data/spec/trema/{openflow-switch_spec.rb → hardware-switch_spec.rb} +3 -3
  123. data/spec/trema/hello_spec.rb +28 -14
  124. data/spec/trema/ip_spec.rb +54 -0
  125. data/spec/trema/mac_spec.rb +49 -64
  126. data/spec/trema/match_spec.rb +1 -1
  127. data/spec/trema/open-vswitch_spec.rb +7 -7
  128. data/spec/trema/packet-in_spec.rb +73 -16
  129. data/spec/trema/port-status-add_spec.rb +32 -0
  130. data/spec/trema/port-status-delete_spec.rb +32 -0
  131. data/spec/trema/port-status-modify_spec.rb +71 -0
  132. data/spec/trema/port-status_spec.rb +5 -76
  133. data/spec/trema/{action-output_spec.rb → send-out-port_spec.rb} +20 -47
  134. data/spec/trema/set-eth-dst-addr_spec.rb +75 -0
  135. data/spec/trema/set-eth-src-addr_spec.rb +72 -0
  136. data/spec/trema/set-ip-dst-addr_spec.rb +58 -0
  137. data/spec/trema/set-ip-src-addr_spec.rb +58 -0
  138. data/spec/trema/set-ip-tos_spec.rb +65 -0
  139. data/spec/trema/set-transport-dst-port_spec.rb +65 -0
  140. data/spec/trema/set-transport-src-port_spec.rb +65 -0
  141. data/spec/trema/set-vlan-priority_spec.rb +65 -0
  142. data/spec/trema/set-vlan-vid_spec.rb +65 -0
  143. data/spec/trema/shell/vhost_spec.rb +4 -1
  144. data/spec/trema/shell/vswitch_spec.rb +11 -11
  145. data/spec/trema/stats-reply_spec.rb +59 -13
  146. data/spec/trema/stats-request_spec.rb +6 -0
  147. data/spec/trema/{action-strip-vlan_spec.rb → strip-vlan-header_spec.rb} +3 -17
  148. data/spec/trema/switch-daemon_spec.rb +39 -0
  149. data/spec/trema/vendor-action_spec.rb +81 -0
  150. data/spec/trema/vendor_spec.rb +76 -0
  151. data/spec/trema_spec.rb +56 -0
  152. data/src/examples/dumper/dumper.c +0 -8
  153. data/src/examples/dumper/dumper.rb +52 -52
  154. data/src/examples/hello_trema/hello_trema.c +0 -2
  155. data/src/examples/learning_switch/learning-switch.rb +3 -3
  156. data/src/examples/multi_learning_switch/multi-learning-switch.rb +3 -3
  157. data/src/examples/openflow_message/features-request.rb +3 -3
  158. data/src/examples/packetin_filter_config/utils.c +4 -4
  159. data/src/examples/repeater_hub/repeater-hub.rb +3 -3
  160. data/src/examples/switch_info/switch_info.rb +2 -2
  161. data/src/examples/switch_monitor/switch_monitor.c +1 -1
  162. data/src/examples/traffic_monitor/traffic-monitor.rb +3 -3
  163. data/src/lib/arp.h +4 -1
  164. data/src/lib/chibach.c +391 -0
  165. data/src/lib/chibach.h +71 -0
  166. data/src/lib/chibach_private.c +170 -0
  167. data/src/lib/chibach_private.h +52 -0
  168. data/src/lib/ether.c +2 -1
  169. data/src/lib/ether.h +0 -1
  170. data/src/lib/ipv4.h +13 -14
  171. data/{ruby/trema/action-set-nw-src.h → src/lib/ipv6.h} +13 -9
  172. data/src/lib/log.c +161 -58
  173. data/src/lib/log.h +11 -16
  174. data/src/lib/messenger.c +36 -1
  175. data/src/lib/messenger.h +1 -0
  176. data/src/lib/openflow_application_interface.c +128 -28
  177. data/src/lib/openflow_application_interface.h +31 -6
  178. data/src/lib/openflow_message.c +2 -1
  179. data/src/lib/openflow_service_interface.h +1 -0
  180. data/src/lib/openflow_switch_interface.c +1380 -0
  181. data/src/lib/openflow_switch_interface.h +264 -0
  182. data/src/lib/packet_info.c +94 -11
  183. data/src/lib/packet_info.h +22 -3
  184. data/src/lib/packet_parser.c +38 -2
  185. data/src/lib/secure_channel.c +498 -0
  186. data/{ruby/trema/vendor-request.h → src/lib/secure_channel.h} +11 -10
  187. data/src/lib/tcp.h +0 -3
  188. data/src/lib/trema.c +38 -5
  189. data/{ruby/trema/action-set-nw-dst.h → src/lib/trema.hpp} +17 -8
  190. data/src/lib/trema_wrapper.c +5 -0
  191. data/src/lib/trema_wrapper.h +4 -0
  192. data/src/lib/utility.c +93 -4
  193. data/src/lib/utility.h +1 -0
  194. data/src/lib/wrapper.c +30 -7
  195. data/src/lib/wrapper.h +2 -0
  196. data/src/switch_manager/ofpmsg_recv.c +44 -30
  197. data/src/switch_manager/ofpmsg_send.c +40 -1
  198. data/src/switch_manager/ofpmsg_send.h +2 -0
  199. data/src/switch_manager/switch.c +153 -8
  200. data/src/switch_manager/switch.h +1 -0
  201. data/src/switch_manager/switchinfo.h +5 -0
  202. data/src/tremashark/README +2 -2
  203. data/src/tremashark/plugin/packet-trema/packet-trema.c +1 -0
  204. data/trema +1 -1
  205. data/unittests/lib/log_test.c +158 -34
  206. data/unittests/lib/openflow_application_interface_test.c +252 -69
  207. data/unittests/lib/openflow_message_test.c +3 -1
  208. data/unittests/lib/packet_parser_test.c +60 -15
  209. data/unittests/lib/test_packets/icmp6_echo_rep.cap +0 -0
  210. data/unittests/lib/test_packets/icmp6_echo_req.cap +0 -0
  211. data/unittests/lib/trema_test.c +2 -0
  212. data/unittests/lib/utility_test.c +65 -2
  213. data/unittests/lib/wrapper_test.c +29 -0
  214. data/vendor/{README → README.md} +2 -12
  215. data/vendor/packet-openflow.diff +13 -0
  216. metadata +86 -53
  217. data/GPL2 +0 -339
  218. data/ruby/trema/action-enqueue.c +0 -161
  219. data/ruby/trema/action-output.c +0 -169
  220. data/ruby/trema/action-set-dl-dst.c +0 -131
  221. data/ruby/trema/action-set-dl-dst.h +0 -44
  222. data/ruby/trema/action-set-dl-src.c +0 -131
  223. data/ruby/trema/action-set-nw-dst.c +0 -135
  224. data/ruby/trema/action-set-nw-src.c +0 -140
  225. data/ruby/trema/action-set-nw-tos.c +0 -124
  226. data/ruby/trema/action-set-nw-tos.h +0 -42
  227. data/ruby/trema/action-set-tp-dst.c +0 -122
  228. data/ruby/trema/action-set-tp-dst.h +0 -42
  229. data/ruby/trema/action-set-tp-src.c +0 -124
  230. data/ruby/trema/action-set-tp-src.h +0 -42
  231. data/ruby/trema/action-set-vlan-pcp.c +0 -128
  232. data/ruby/trema/action-set-vlan-pcp.h +0 -42
  233. data/ruby/trema/action-set-vlan-vid.c +0 -125
  234. data/ruby/trema/action-set-vlan-vid.h +0 -42
  235. data/ruby/trema/action-strip-vlan.c +0 -81
  236. data/ruby/trema/action-strip-vlan.h +0 -42
  237. data/ruby/trema/action-vendor.c +0 -121
  238. data/ruby/trema/vendor-request.c +0 -193
  239. data/spec/trema/action-enqueue_spec.rb +0 -100
  240. data/spec/trema/action-set-dl-dst_spec.rb +0 -95
  241. data/spec/trema/action-set-dl-src_spec.rb +0 -92
  242. data/spec/trema/action-set-nw-dst_spec.rb +0 -96
  243. data/spec/trema/action-set-nw-src_spec.rb +0 -97
  244. data/spec/trema/action-set-nw-tos_spec.rb +0 -88
  245. data/spec/trema/action-set-tp-dst_spec.rb +0 -88
  246. data/spec/trema/action-set-tp-src_spec.rb +0 -88
  247. data/spec/trema/action-set-vlan-pcp_spec.rb +0 -91
  248. data/spec/trema/action-set-vlan-vid_spec.rb +0 -91
  249. data/spec/trema/action-vendor_spec.rb +0 -90
  250. data/spec/trema/vendor-request_spec.rb +0 -79
@@ -1,88 +0,0 @@
1
- #
2
- # Author: Nick Karanatsios <nickkaranatsios@gmail.com>
3
- #
4
- # Copyright (C) 2008-2012 NEC Corporation
5
- #
6
- # This program is free software; you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License, version 2, as
8
- # published by the Free Software Foundation.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
- #
15
- # You should have received a copy of the GNU General Public License along
16
- # with this program; if not, write to the Free Software Foundation, Inc.,
17
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
- #
19
-
20
-
21
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
22
- require "trema"
23
-
24
-
25
- shared_examples_for "any OpenFlow message with nw_tos option" do
26
- it_should_behave_like "any OpenFlow message", :option => :nw_tos, :name => "Nw tos", :size => 8
27
- end
28
-
29
-
30
- describe ActionSetNwTos, ".new( VALID OPTION )" do
31
- subject { ActionSetNwTos.new( :nw_tos => nw_tos ) }
32
- let( :nw_tos ) { 4 }
33
- its( :nw_tos ) { should == 4 }
34
- it "should inspect its attributes" do
35
- subject.inspect.should == "#<Trema::ActionSetNwTos nw_tos=4>"
36
- end
37
- it_should_behave_like "any OpenFlow message with nw_tos option"
38
- end
39
-
40
-
41
- describe ActionSetNwTos, ".new( MANDATORY OPTION MISSING )" do
42
- it "should raise ArgumentError" do
43
- expect { subject }.to raise_error( ArgumentError )
44
- end
45
- end
46
-
47
-
48
- describe ActionSetNwTos, ".new( INVALID OPTION ) - argument type Array instead of Hash" do
49
- subject { ActionSetNwTos.new( [ 4 ] ) }
50
- it "should raise TypeError" do
51
- expect { subject }.to raise_error( TypeError )
52
- end
53
- end
54
-
55
-
56
- describe ActionSetNwTos, ".new( VALID OPTION )" do
57
- context "when sending #flow_mod(add) with action set to mod_nw_tos" do
58
- it "should respond to #append" do
59
- class FlowModAddController < Controller; end
60
- network {
61
- vswitch { datapath_id 0xabc }
62
- }.run( FlowModAddController ) {
63
- action = ActionSetNwTos.new( :nw_tos => 4 )
64
- action.should_receive( :append )
65
- controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => action )
66
- }
67
- end
68
-
69
-
70
- it "should have a flow with action set to mod_nw_tos" do
71
- class FlowModAddController < Controller; end
72
- network {
73
- vswitch { datapath_id 0xabc }
74
- }.run( FlowModAddController ) {
75
- controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => ActionSetNwTos.new( :nw_tos => 4 ) )
76
- vswitch( "0xabc" ).should have( 1 ).flows
77
- vswitch( "0xabc" ).flows[0].actions.should match( /mod_nw_tos:4/ )
78
- }
79
- end
80
- end
81
- end
82
-
83
-
84
- ### Local variables:
85
- ### mode: Ruby
86
- ### coding: utf-8-unix
87
- ### indent-tabs-mode: nil
88
- ### End:
@@ -1,88 +0,0 @@
1
- #
2
- # Author: Nick Karanatsios <nickkaranatsios@gmail.com>
3
- #
4
- # Copyright (C) 2008-2012 NEC Corporation
5
- #
6
- # This program is free software; you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License, version 2, as
8
- # published by the Free Software Foundation.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
- #
15
- # You should have received a copy of the GNU General Public License along
16
- # with this program; if not, write to the Free Software Foundation, Inc.,
17
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
- #
19
-
20
-
21
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
22
- require "trema"
23
-
24
-
25
- shared_examples_for "any OpenFlow message with tp_dst option" do
26
- it_should_behave_like "any OpenFlow message", :option => :tp_dst, :name => "Destination TCP or UDP port", :size => 16
27
- end
28
-
29
-
30
- describe ActionSetTpDst, ".new( VALID OPTION )" do
31
- subject { ActionSetTpDst.new( :tp_dst => tp_dst ) }
32
- let( :tp_dst ) { 5555 }
33
- its( :tp_dst ) { should == 5555 }
34
- it "should inspect its attributes" do
35
- subject.inspect.should == "#<Trema::ActionSetTpDst tp_port=5555>"
36
- end
37
- it_should_behave_like "any OpenFlow message with tp_dst option"
38
- end
39
-
40
-
41
- describe ActionSetTpDst, ".new( MANDATORY OPTION MISSING )" do
42
- it "should raise ArgumentError" do
43
- expect { subject }.to raise_error( ArgumentError )
44
- end
45
- end
46
-
47
-
48
- describe ActionSetTpDst, ".new( INVALID OPTION ) - argument type Array instead of Hash" do
49
- subject { ActionSetTpDst.new( [ 5555 ] ) }
50
- it "should raise TypeError" do
51
- expect { subject }.to raise_error( TypeError )
52
- end
53
- end
54
-
55
-
56
- describe ActionSetTpDst, ".new( VALID OPTION )" do
57
- context "when sending #flow_mod(add) with action set to mod_tp_dst" do
58
- it "should respond to #append" do
59
- class FlowModAddController < Controller; end
60
- network {
61
- vswitch { datapath_id 0xabc }
62
- }.run( FlowModAddController ) {
63
- action = ActionSetTpDst.new( :tp_dst => 5555 )
64
- action.should_receive( :append )
65
- controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => action )
66
- }
67
- end
68
-
69
-
70
- it "should have a flow with action set to mod_tp_dst" do
71
- class FlowModAddController < Controller; end
72
- network {
73
- vswitch { datapath_id 0xabc }
74
- }.run( FlowModAddController ) {
75
- controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => ActionSetTpDst.new( :tp_dst => 5555 ) )
76
- vswitch( "0xabc" ).should have( 1 ).flows
77
- vswitch( "0xabc" ).flows[0].actions.should match( /mod_tp_dst:5555/ )
78
- }
79
- end
80
- end
81
- end
82
-
83
-
84
- ### Local variables:
85
- ### mode: Ruby
86
- ### coding: utf-8-unix
87
- ### indent-tabs-mode: nil
88
- ### End:
@@ -1,88 +0,0 @@
1
- #
2
- # Author: Nick Karanatsios <nickkaranatsios@gmail.com>
3
- #
4
- # Copyright (C) 2008-2012 NEC Corporation
5
- #
6
- # This program is free software; you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License, version 2, as
8
- # published by the Free Software Foundation.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
- #
15
- # You should have received a copy of the GNU General Public License along
16
- # with this program; if not, write to the Free Software Foundation, Inc.,
17
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
- #
19
-
20
-
21
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
22
- require "trema"
23
-
24
-
25
- shared_examples_for "any OpenFlow message with tp_src option" do
26
- it_should_behave_like "any OpenFlow message", :option => :tp_src, :name => "Source TCP or UDP port", :size => 16
27
- end
28
-
29
-
30
- describe ActionSetTpSrc, ".new( VALID OPTION )" do
31
- subject { ActionSetTpSrc.new( :tp_src => tp_src ) }
32
- let( :tp_src ) { 5555 }
33
- its( :tp_src ) { should == 5555 }
34
- it "should inspect its attributes" do
35
- subject.inspect.should == "#<Trema::ActionSetTpSrc tp_port=5555>"
36
- end
37
- it_should_behave_like "any OpenFlow message with tp_src option"
38
- end
39
-
40
-
41
- describe ActionSetTpSrc, ".new( MANDATORY OPTION MISSING )" do
42
- it "should raise ArgumentError" do
43
- expect { subject }.to raise_error( ArgumentError )
44
- end
45
- end
46
-
47
-
48
- describe ActionSetTpSrc, ".new( INVALID OPTION ) - argument type Array instead of Hash" do
49
- subject { ActionSetTpSrc.new( [ 5555 ] ) }
50
- it "should raise TypeError" do
51
- expect { subject }.to raise_error( TypeError )
52
- end
53
- end
54
-
55
-
56
- describe ActionSetTpSrc, ".new( VALID OPTION )" do
57
- context "when sending #flow_mod(add) with action set to mod_tp_src" do
58
- it "should respond to #append" do
59
- class FlowModAddController < Controller; end
60
- network {
61
- vswitch { datapath_id 0xabc }
62
- }.run( FlowModAddController ) {
63
- action = ActionSetTpSrc.new( :tp_src => 5555 )
64
- action.should_receive( :append )
65
- controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => action )
66
- }
67
- end
68
-
69
-
70
- it "should have a flow with action set to mod_tp_src" do
71
- class FlowModAddController < Controller; end
72
- network {
73
- vswitch { datapath_id 0xabc }
74
- }.run( FlowModAddController ) {
75
- controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => ActionSetTpSrc.new( :tp_src => 5555 ) )
76
- vswitch( "0xabc" ).should have( 1 ).flows
77
- vswitch( "0xabc" ).flows[0].actions.should match( /mod_tp_src:5555/ )
78
- }
79
- end
80
- end
81
- end
82
-
83
-
84
- ### Local variables:
85
- ### mode: Ruby
86
- ### coding: utf-8-unix
87
- ### indent-tabs-mode: nil
88
- ### End:
@@ -1,91 +0,0 @@
1
- #
2
- # Author: Nick Karanatsios <nickkaranatsios@gmail.com>
3
- #
4
- # Copyright (C) 2008-2012 NEC Corporation
5
- #
6
- # This program is free software; you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License, version 2, as
8
- # published by the Free Software Foundation.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
- #
15
- # You should have received a copy of the GNU General Public License along
16
- # with this program; if not, write to the Free Software Foundation, Inc.,
17
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
- #
19
-
20
-
21
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
22
- require "trema"
23
-
24
-
25
- describe ActionSetVlanPcp, ".new( VALID OPTION )" do
26
- subject { ActionSetVlanPcp.new( :vlan_pcp => 7 ) }
27
- its( :vlan_pcp ) { should == 7 }
28
- it "should inspect its attributes" do
29
- subject.inspect.should == "#<Trema::ActionSetVlanPcp vlan_pcp=7>"
30
- end
31
- end
32
-
33
-
34
- describe ActionSetVlanPcp, ".new( MANDATORY OPTION MISSING )" do
35
- it "should raise ArgumentError" do
36
- expect { subject }.to raise_error( ArgumentError )
37
- end
38
- end
39
-
40
-
41
- describe ActionSetVlanPcp, ".new( INVALID OPTION )" do
42
- context "when value outside allowed range" do
43
- subject { ActionSetVlanPcp.new( :vlan_pcp => 250 ) }
44
- it "should raise RangeError" do
45
- expect { subject }.to raise_error( RangeError )
46
- end
47
- end
48
-
49
-
50
- context "when argument type Array instead of Hash" do
51
- subject { ActionSetVlanPcp.new( [ 7 ] ) }
52
- it "should raise TypeError" do
53
- expect { subject }.to raise_error( TypeError )
54
- end
55
- end
56
- end
57
-
58
-
59
- describe ActionSetVlanPcp, ".new( VALID OPTION )" do
60
- context "when sending #flow_mod(add) with action set to mod_vlan_pcp" do
61
- it "should respond to #append" do
62
- class FlowModAddController < Controller; end
63
- network {
64
- vswitch { datapath_id 0xabc }
65
- }.run( FlowModAddController ) {
66
- action = ActionSetVlanPcp.new( :vlan_pcp => 7 )
67
- action.should_receive( :append )
68
- controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => action )
69
- }
70
- end
71
-
72
-
73
- it "should have a flow with action set to mod_vlan_pcp" do
74
- class FlowModAddController < Controller; end
75
- network {
76
- vswitch { datapath_id 0xabc }
77
- }.run( FlowModAddController ) {
78
- controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => ActionSetVlanPcp.new( :vlan_pcp => 7 ) )
79
- vswitch( "0xabc" ).should have( 1 ).flows
80
- vswitch( "0xabc" ).flows[0].actions.should match( /mod_vlan_pcp:7/ )
81
- }
82
- end
83
- end
84
- end
85
-
86
-
87
- ### Local variables:
88
- ### mode: Ruby
89
- ### coding: utf-8-unix
90
- ### indent-tabs-mode: nil
91
- ### End:
@@ -1,91 +0,0 @@
1
- #
2
- # Author: Nick Karanatsios <nickkaranatsios@gmail.com>
3
- #
4
- # Copyright (C) 2008-2012 NEC Corporation
5
- #
6
- # This program is free software; you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License, version 2, as
8
- # published by the Free Software Foundation.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
- #
15
- # You should have received a copy of the GNU General Public License along
16
- # with this program; if not, write to the Free Software Foundation, Inc.,
17
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
- #
19
-
20
-
21
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
22
- require "trema"
23
-
24
-
25
- describe ActionSetVlanVid, ".new( VALID OPTION )" do
26
- subject { ActionSetVlanVid.new( :vlan_vid => 1024 ) }
27
- its( :vlan_vid ) { should == 1024 }
28
- it "should inspect its attributes" do
29
- subject.inspect.should == "#<Trema::ActionSetVlanVid vlan_vid=1024>"
30
- end
31
- end
32
-
33
-
34
- describe ActionSetVlanVid, ".new( MANDATORY OPTION MISSING )" do
35
- it "should raise ArgumentError" do
36
- expect { subject }.to raise_error( ArgumentError )
37
- end
38
- end
39
-
40
-
41
- describe ActionSetVlanVid, ".new( INVALID OPTION )" do
42
- context "when value outside allowed range" do
43
- subject { ActionSetVlanVid.new( :vlan_vid => 0 ) }
44
- it "should raise RangeError" do
45
- expect { subject }.to raise_error( RangeError )
46
- end
47
- end
48
-
49
-
50
- context "when argument type Array instead of Hash" do
51
- subject { ActionSetVlanVid.new( [ 1024 ] ) }
52
- it "should raise TypeError" do
53
- expect { subject }.to raise_error( TypeError )
54
- end
55
- end
56
- end
57
-
58
-
59
- describe ActionSetVlanVid, ".new( VALID OPTION )" do
60
- context "when sending #flow_mod(add) with action set to mod_vlan_vid" do
61
- it "should respond to #append" do
62
- class FlowModAddController < Controller; end
63
- network {
64
- vswitch { datapath_id 0xabc }
65
- }.run( FlowModAddController ) {
66
- action = ActionSetVlanVid.new( :vlan_vid => 1024 )
67
- action.should_receive( :append )
68
- controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => action )
69
- }
70
- end
71
-
72
-
73
- it "should have a flow with action set to mod_vlan_vid" do
74
- class FlowModAddController < Controller; end
75
- network {
76
- vswitch { datapath_id 0xabc }
77
- }.run( FlowModAddController ) {
78
- controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => ActionSetVlanVid.new( :vlan_vid => 1024 ) )
79
- vswitch( "0xabc" ).should have( 1 ).flows
80
- vswitch( "0xabc" ).flows[0].actions.should match( /mod_vlan_vid:1024/ )
81
- }
82
- end
83
- end
84
- end
85
-
86
-
87
- ### Local variables:
88
- ### mode: Ruby
89
- ### coding: utf-8-unix
90
- ### indent-tabs-mode: nil
91
- ### End: