trema 0.5.1 → 0.6.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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/Rakefile +2 -0
  4. data/bin/trema +17 -2
  5. data/cucumber.yml +7 -0
  6. data/features/.nav +47 -0
  7. data/features/{logging.feature → api/logging.feature} +1 -7
  8. data/features/{send_flow_mod_add.feature → api/send_flow_mod_add.feature} +2 -7
  9. data/features/handlers/barrier_reply.feature +30 -0
  10. data/features/{echo_reply_handler.feature → handlers/echo_reply.feature} +14 -13
  11. data/features/handlers/hello_failed.feature +56 -0
  12. data/features/handlers/packet_in.feature +32 -0
  13. data/features/handlers/start.feature +31 -0
  14. data/features/handlers/switch_disconnected.feature +34 -0
  15. data/features/handlers/switch_ready.feature +26 -0
  16. data/features/logger/debug.feature +41 -0
  17. data/features/logger/error.feature +41 -0
  18. data/features/logger/fatal.feature +41 -0
  19. data/features/logger/info.feature +41 -0
  20. data/features/logger/warn.feature +41 -0
  21. data/features/step_definitions/README.txt +2 -0
  22. data/features/step_definitions/dump_flows_steps.rb +13 -0
  23. data/features/step_definitions/rest_api_steps.rb +40 -0
  24. data/features/step_definitions/show_stats_steps.rb +31 -4
  25. data/features/step_definitions/trema_steps.rb +72 -0
  26. data/features/support/hooks.rb +4 -1
  27. data/features/trema_delete_link/README.md +5 -0
  28. data/features/{trema_delete_link.feature → trema_delete_link/delete_link.feature} +9 -13
  29. data/features/trema_delete_link/socket_dir_option.feature +12 -0
  30. data/features/trema_killall/README.md +5 -0
  31. data/features/trema_killall/all_option.feature +20 -0
  32. data/features/{trema_killall.feature → trema_killall/killall.feature} +10 -28
  33. data/features/trema_killall/socket_dir_option.feature +38 -0
  34. data/features/trema_run/README.md +5 -0
  35. data/features/trema_run/conf_option.feature +66 -0
  36. data/features/trema_run/daemonize_option.feature +19 -0
  37. data/features/trema_run/log_dir_option.feature +32 -0
  38. data/features/trema_run/logging_level_option.feature +30 -0
  39. data/features/trema_run/openflow13_option.feature +39 -0
  40. data/features/trema_run/pid_dir_option.feature +32 -0
  41. data/features/trema_run/port_option.feature +32 -0
  42. data/features/trema_run/run.feature +83 -0
  43. data/features/trema_run/socket_dir_option.feature +34 -0
  44. data/features/trema_start/README.md +5 -0
  45. data/features/trema_start/socket_dir_option.feature +9 -0
  46. data/features/{trema_start.feature → trema_start/start.feature} +23 -24
  47. data/features/trema_stop/README.md +5 -0
  48. data/features/trema_stop/socket_dir_option.feature +9 -0
  49. data/features/{trema_stop.feature → trema_stop/stop.feature} +7 -12
  50. data/lib/trema/command.rb +15 -2
  51. data/lib/trema/controller.rb +16 -2
  52. data/lib/trema/switch.rb +25 -26
  53. data/lib/trema/version.rb +1 -1
  54. data/trema.gemspec +8 -7
  55. metadata +73 -26
  56. data/features/cleanup_on_failure.feature +0 -118
  57. data/features/step_definitions/README.md +0 -7
  58. data/features/trema_run.feature +0 -72
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trema
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yasuhito Takamiya
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-04 00:00:00.000000000 Z
11
+ date: 2015-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,42 +30,42 @@ dependencies:
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 2.13.1
33
+ version: 2.13.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: 2.13.1
40
+ version: 2.13.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: phut
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 0.6.6
47
+ version: 0.6.9
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 0.6.6
54
+ version: 0.6.9
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pio
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 0.24.1
61
+ version: 0.26.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: 0.24.1
68
+ version: 0.26.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: relish
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 0.7.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 0.7.1
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: yard
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -100,28 +114,28 @@ dependencies:
100
114
  requirements:
101
115
  - - ~>
102
116
  - !ruby/object:Gem::Version
103
- version: 0.8.1
117
+ version: 0.9.0
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - ~>
109
123
  - !ruby/object:Gem::Version
110
- version: 0.8.1
124
+ version: 0.9.0
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: codeclimate-test-reporter
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - ~>
116
130
  - !ruby/object:Gem::Version
117
- version: 0.4.7
131
+ version: 0.4.8
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - ~>
123
137
  - !ruby/object:Gem::Version
124
- version: 0.4.7
138
+ version: 0.4.8
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: coveralls
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +170,14 @@ dependencies:
156
170
  requirements:
157
171
  - - ~>
158
172
  - !ruby/object:Gem::Version
159
- version: '3.1'
173
+ version: 3.3.1
160
174
  type: :development
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
178
  - - ~>
165
179
  - !ruby/object:Gem::Version
166
- version: '3.1'
180
+ version: 3.3.1
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: rspec
169
183
  requirement: !ruby/object:Gem::Requirement
@@ -198,14 +212,14 @@ dependencies:
198
212
  requirements:
199
213
  - - ~>
200
214
  - !ruby/object:Gem::Version
201
- version: 0.32.1
215
+ version: 0.34.0
202
216
  type: :development
203
217
  prerelease: false
204
218
  version_requirements: !ruby/object:Gem::Requirement
205
219
  requirements:
206
220
  - - ~>
207
221
  - !ruby/object:Gem::Version
208
- version: 0.32.1
222
+ version: 0.34.0
209
223
  description: Trema is a full-stack, easy-to-use framework for developing OpenFlow
210
224
  controllers in Ruby.
211
225
  email:
@@ -228,27 +242,60 @@ files:
228
242
  - Rakefile
229
243
  - bin/.gitignore
230
244
  - bin/trema
231
- - features/cleanup_on_failure.feature
232
- - features/echo_reply_handler.feature
233
- - features/logging.feature
234
- - features/send_flow_mod_add.feature
245
+ - cucumber.yml
246
+ - features/.nav
247
+ - features/api/logging.feature
248
+ - features/api/send_flow_mod_add.feature
249
+ - features/handlers/barrier_reply.feature
250
+ - features/handlers/echo_reply.feature
251
+ - features/handlers/hello_failed.feature
252
+ - features/handlers/packet_in.feature
253
+ - features/handlers/start.feature
254
+ - features/handlers/switch_disconnected.feature
255
+ - features/handlers/switch_ready.feature
256
+ - features/logger/debug.feature
257
+ - features/logger/error.feature
258
+ - features/logger/fatal.feature
259
+ - features/logger/info.feature
260
+ - features/logger/warn.feature
235
261
  - features/step_definitions/.gitignore
236
262
  - features/step_definitions/.rubocop.yml
237
263
  - features/step_definitions/.travis.yml
238
264
  - features/step_definitions/Gemfile
239
265
  - features/step_definitions/Guardfile
240
266
  - features/step_definitions/LICENSE
241
- - features/step_definitions/README.md
267
+ - features/step_definitions/README.txt
242
268
  - features/step_definitions/Rakefile
269
+ - features/step_definitions/dump_flows_steps.rb
270
+ - features/step_definitions/rest_api_steps.rb
243
271
  - features/step_definitions/show_stats_steps.rb
272
+ - features/step_definitions/trema_steps.rb
244
273
  - features/step_definitions/virtual_link_steps.rb
245
274
  - features/support/env.rb
246
275
  - features/support/hooks.rb
247
- - features/trema_delete_link.feature
248
- - features/trema_killall.feature
249
- - features/trema_run.feature
250
- - features/trema_start.feature
251
- - features/trema_stop.feature
276
+ - features/trema_delete_link/README.md
277
+ - features/trema_delete_link/delete_link.feature
278
+ - features/trema_delete_link/socket_dir_option.feature
279
+ - features/trema_killall/README.md
280
+ - features/trema_killall/all_option.feature
281
+ - features/trema_killall/killall.feature
282
+ - features/trema_killall/socket_dir_option.feature
283
+ - features/trema_run/README.md
284
+ - features/trema_run/conf_option.feature
285
+ - features/trema_run/daemonize_option.feature
286
+ - features/trema_run/log_dir_option.feature
287
+ - features/trema_run/logging_level_option.feature
288
+ - features/trema_run/openflow13_option.feature
289
+ - features/trema_run/pid_dir_option.feature
290
+ - features/trema_run/port_option.feature
291
+ - features/trema_run/run.feature
292
+ - features/trema_run/socket_dir_option.feature
293
+ - features/trema_start/README.md
294
+ - features/trema_start/socket_dir_option.feature
295
+ - features/trema_start/start.feature
296
+ - features/trema_stop/README.md
297
+ - features/trema_stop/socket_dir_option.feature
298
+ - features/trema_stop/stop.feature
252
299
  - lib/trema.rb
253
300
  - lib/trema/command.rb
254
301
  - lib/trema/controller.rb
@@ -1,118 +0,0 @@
1
- Feature: trema run cleanup on failure
2
- Background:
3
- Given I set the environment variables to:
4
- | variable | value |
5
- | TREMA_LOG_DIR | . |
6
- | TREMA_PID_DIR | . |
7
- | TREMA_SOCKET_DIR | . |
8
- And a file named "trema.conf" with:
9
- """
10
- vswitch { datapath_id 0xabc }
11
-
12
- vhost('host1') { ip '192.168.0.1' }
13
- vhost('host2') { ip '192.168.0.2' }
14
-
15
- link '0xabc', 'host1'
16
- link '0xabc', 'host2'
17
- """
18
-
19
- @sudo
20
- Scenario: NameError in config file
21
- Given a file named "invalid_trema.conf" with:
22
- """
23
- Foo Bar Baz
24
- """
25
- And a file named "null_controller.rb" with:
26
- """
27
- class NullController < Trema::Controller; end
28
- """
29
- When I run `trema run null_controller.rb -c invalid_trema.conf`
30
- Then the output should contain "uninitialized constant Phut::Syntax::Baz (NameError)"
31
- And the exit status should not be 0
32
- And virtual links should not exist
33
- And a file named "NullController.pid" should not exist
34
-
35
- Scenario: SyntaxError in config file
36
- Given a file named "invalid_trema.conf" with:
37
- """
38
- Today is 19 June 2015
39
- """
40
- And a file named "null_controller.rb" with:
41
- """
42
- class NullController < Trema::Controller; end
43
- """
44
- When I run `trema run null_controller.rb -c invalid_trema.conf`
45
- Then the output should contain "(SyntaxError)"
46
- And the exit status should not be 0
47
- And virtual links should not exist
48
- And a file named "NullController.pid" should not exist
49
-
50
- Scenario: SyntaxError when loading controller code
51
- Given a file named "invalid_ruby.rb" with:
52
- """
53
- Today is 13 March 2015
54
- """
55
- When I run `trema run invalid_ruby.rb -c trema.conf`
56
- Then the output should contain "(SyntaxError)"
57
- And the exit status should not be 0
58
- And virtual links should not exist
59
- And the following files should not exist:
60
- | vhost.host1.pid |
61
- | vhost.host2.pid |
62
-
63
- @sudo
64
- Scenario: NameError when loading controller code
65
- Given a file named "invalid_ruby.rb" with:
66
- """
67
- class InvalidRuby < Trema::Controller
68
- Foo
69
- Bar
70
- Baz
71
- end
72
- """
73
- When I run `trema run invalid_ruby.rb -c trema.conf`
74
- Then the output should contain "uninitialized constant InvalidRuby::Foo (NameError)"
75
- And the exit status should not be 0
76
- And virtual links should not exist
77
- And the following files should not exist:
78
- | InvalidRuby.pid |
79
- | vhost.host1.pid |
80
- | vhost.host2.pid |
81
-
82
- @sudo
83
- Scenario: RuntimeError in Controller#start
84
- Given a file named "start_fail.rb" with:
85
- """
86
- class StartFail < Trema::Controller
87
- def start(_args)
88
- fail 'bang!'
89
- end
90
- end
91
- """
92
- When I run `trema run start_fail.rb -c trema.conf`
93
- Then the output should contain "bang! (RuntimeError)"
94
- And the exit status should not be 0
95
- And virtual links should not exist
96
- And the following files should not exist:
97
- | StartFail.pid |
98
- | vhost.host1.pid |
99
- | vhost.host2.pid |
100
-
101
- @sudo
102
- Scenario: RuntimeError in handlers
103
- Given a file named "switch_ready_fail.rb" with:
104
- """
105
- class SwitchReadyFail < Trema::Controller
106
- def switch_ready(_dpid)
107
- fail 'bang!'
108
- end
109
- end
110
- """
111
- When I run `trema -v run switch_ready_fail.rb -c trema.conf`
112
- Then the output should contain "bang! (RuntimeError)"
113
- And the exit status should not be 0
114
- And virtual links should not exist
115
- And the following files should not exist:
116
- | SwitchReadyFail.pid |
117
- | vhost.host1.pid |
118
- | vhost.host2.pid |
@@ -1,7 +0,0 @@
1
- Cucumber Step Definitions
2
- =========================
3
-
4
- A collection of step definitions for use with [Trema][trema] and Trema apps.
5
- These steps are highly specific to Trema.
6
-
7
- [trema]: https://github.com/trema/trema
@@ -1,72 +0,0 @@
1
- Feature: trema run command
2
- Background:
3
- Given I set the environment variables to:
4
- | variable | value |
5
- | TREMA_LOG_DIR | . |
6
- | TREMA_PID_DIR | . |
7
- | TREMA_SOCKET_DIR | . |
8
-
9
- @sudo
10
- Scenario: the default port
11
- Given a file named "switch_ready.rb" with:
12
- """
13
- class SwitchReady < Trema::Controller
14
- def switch_ready(dpid)
15
- logger.info format('Hello %s!', dpid.to_hex)
16
- end
17
- end
18
- """
19
- And a file named "trema.conf" with:
20
- """
21
- vswitch { datapath_id 0xabc }
22
- """
23
- When I successfully run `trema -v run switch_ready.rb -c trema.conf -d`
24
- And I run `sleep 5`
25
- Then the file "SwitchReady.log" should contain "Hello 0xabc!"
26
-
27
- @sudo
28
- Scenario: -p option
29
- Given a file named "switch_ready.rb" with:
30
- """
31
- class SwitchReady < Trema::Controller
32
- def switch_ready(dpid)
33
- logger.info format('Hello %s!', dpid.to_hex)
34
- end
35
- end
36
- """
37
- And a file named "trema.conf" with:
38
- """
39
- vswitch {
40
- datapath_id 0xabc
41
- port 1234
42
- }
43
- """
44
- When I successfully run `trema -v run -p 1234 switch_ready.rb -c trema.conf -d`
45
- And I run `sleep 5`
46
- Then the file "SwitchReady.log" should contain "Hello 0xabc!"
47
-
48
- @sudo
49
- Scenario: trema run with --openflow13 option
50
- Given a file named "null_controller.rb" with:
51
- """
52
- class NullController < Trema::Controller; end
53
- """
54
- And a file named "trema.conf" with:
55
- """
56
- vswitch { datapath_id 0xabc }
57
- """
58
- When I successfully run `trema -v run null_controller.rb --openflow13 -c trema.conf -d`
59
- And I run `sleep 5`
60
- Then the output should contain "protocols=OpenFlow13"
61
-
62
- @sudo
63
- Scenario: trema run empty file and error
64
- Given a file named "empty.rb" with:
65
- """
66
- """
67
- When I run `trema -v run empty.rb`
68
- Then the exit status should not be 0
69
- And the stderr should contain:
70
- """
71
- No controller class is defined.
72
- """