trema 0.5.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a874485c89ec22dec27a4ff7445ef1226f19ab44
4
- data.tar.gz: c42a5dae78876b28a2ac924a11cb62ed46e8e882
3
+ metadata.gz: e5a54d5f3f28b9407ad3aed3e47fa43e8621461d
4
+ data.tar.gz: 0332b19bd8cc1398160035511eb9dffb6db6e851
5
5
  SHA512:
6
- metadata.gz: 1aedce74834ac14034d4c71e0d0da7d2459b3555a8b3fe2f0db7b991e64849f7b21b95c6513955621325a2bca2efdcdb972a8b031a31aa01dd39fdc1141a5087
7
- data.tar.gz: 060fe0e12cda2aad5c7e4b0509f075a9019d5f1671398be129bc964ea205c6ea3d83159b4771c40549be4d796a3d7cb9ca53ba31a4530129330918701a162f2a
6
+ metadata.gz: f8c3a5b57a185fac024176c8de07cc62c1a0cf5aeb3e3d67b9a77d7ab0682fc50d9888013f49ab5f02cb14b50867f881e7f5c9140a846ecc38a831f16b3d2987
7
+ data.tar.gz: 336e7e1f50e16562713547e4e2c43bd9b7d23219125e49e171aae0c630d8eac9134873dd23623c69bf84a6aa30f020803496b5d8b8945e38bb49b2735ffbafd0
data/CHANGELOG.md CHANGED
@@ -3,6 +3,13 @@
3
3
  ## develop (unreleased)
4
4
 
5
5
 
6
+ ## 0.6.0 (9/9/2015)
7
+ ### New features
8
+ * [#398](https://github.com/trema/trema/pull/398): Add `Trema::Controller#barrier_reply` handler.
9
+ * [#400](https://github.com/trema/trema/pull/400): Add `Trema::Controller#hello_failed` handler.
10
+ * [#404](https://github.com/trema/trema/pull/404): Add `--logging_level` option to trema run command.
11
+
12
+
6
13
  ## 0.5.1 (8/4/2015)
7
14
  ### Bugs fixed
8
15
  * [#396](https://github.com/trema/trema/issues/396): `send_flow_mod_add` doesn't allow `:idle_timeout` and `:hard_timeout` options.
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ RELISH_PROJECT = 'trema/trema'
2
+
1
3
  task default: [:test, :quality]
2
4
  task test: [:spec, :cucumber]
3
5
  task quality: [:rubocop, :reek]
data/bin/trema CHANGED
@@ -8,8 +8,6 @@ require 'pio'
8
8
  require 'rake'
9
9
  require 'trema'
10
10
 
11
- ENV['GLI_DEBUG'] = 'true'
12
-
13
11
  # OpenFlow controller framework.
14
12
  module Trema
15
13
  # trema command.
@@ -37,6 +35,9 @@ module Trema
37
35
  c.desc 'Overrides the default openflow channel port'
38
36
  c.flag [:p, :port]
39
37
 
38
+ c.desc 'Set logging level'
39
+ c.flag [:l, :logging_level], default_value: :info
40
+
40
41
  c.desc 'Location to put pid files'
41
42
  c.flag [:P, :pid_dir], default_value: Trema::DEFAULT_PID_DIR
42
43
  c.desc 'Location to put log files'
@@ -234,6 +235,20 @@ module Trema
234
235
 
235
236
  default_command :help
236
237
 
238
+ on_error do |e|
239
+ case e
240
+ when OptionParser::ParseError,
241
+ Trema::NoControllerDefined,
242
+ Trema::InvalidLoggingLevel,
243
+ Phut::OpenVswitch::AlreadyRunning,
244
+ GLI::UnknownCommandArgument
245
+ true
246
+ else
247
+ # show backtrace
248
+ fail e
249
+ end
250
+ end
251
+
237
252
  exit run(ARGV)
238
253
  end
239
254
  end
data/cucumber.yml ADDED
@@ -0,0 +1,7 @@
1
+ <%
2
+ std_opts = "--format progress features --tags ~@wip --no-source -r features"
3
+ wip_opts = "--color -r features --tags @wip"
4
+ %>
5
+ default: <%= std_opts %>
6
+ wip: --wip <%= wip_opts %> features
7
+ none: --format pretty
data/features/.nav ADDED
@@ -0,0 +1,47 @@
1
+ - trema_run (trema run command):
2
+ - run.feature (basic usage)
3
+ - log_dir_option.feature
4
+ - pid_dir_option.feature
5
+ - socket_dir_option.feature
6
+ - conf_option.feature
7
+ - daemonize_option.feature
8
+ - logging_level_option.feature
9
+ - openflow13_option.feature
10
+ - port_option.feature
11
+
12
+ - trema_killall (trema killall command):
13
+ - killall.feature (basic usage)
14
+ - all_option.feature
15
+ - socket_dir_option.feature
16
+
17
+ - trema_start (trema start command):
18
+ - start.feature (basic usage)
19
+ - socket_dir_option.feature
20
+
21
+ - trema_stop (trema stop command):
22
+ - stop.feature (basic usage)
23
+ - socket_dir_option.feature
24
+
25
+ - trema_delete_link (trema delete_link command):
26
+ - delete_link.feature (basic usage)
27
+ - socket_dir_option.feature
28
+
29
+ - logger:
30
+ - debug.feature
31
+ - info.feature
32
+ - warn.feature
33
+ - error.feature
34
+ - fatal.feature
35
+
36
+ - api (controller API):
37
+ - logging.feature
38
+ - send_flow_mod_add.feature
39
+
40
+ - handlers:
41
+ - start.feature
42
+ - echo_reply.feature
43
+ - switch_ready.feature
44
+ - switch_disconnected.feature
45
+ - packet_in.feature
46
+ - barrier_reply.feature
47
+ - hello_failed.feature
@@ -1,11 +1,4 @@
1
1
  Feature: logging
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
2
  @sudo
10
3
  Scenario: controller, vhost and vswitch creates log files
11
4
  Given a file named "hello.rb" with:
@@ -48,6 +41,7 @@ Feature: logging
48
41
  | NullController.log |
49
42
  | vhost.host1.log |
50
43
 
44
+ @sudo
51
45
  Scenario: run multiple controllers, and each have its own log file
52
46
  Given a file named "two_controllers.rb" with:
53
47
  """
@@ -1,11 +1,6 @@
1
- Feature: Controller#send_flow_mod_add
1
+ Feature: send_flow_mod_add
2
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:
3
+ Given a file named "trema.conf" with:
9
4
  """
10
5
  vswitch { datapath_id 0xabc }
11
6
  """
@@ -0,0 +1,30 @@
1
+ Feature: barrier_reply handler
2
+ Background:
3
+ Given a file named "barrier_reply.rb" with:
4
+ """ruby
5
+ class BarrierReply < Trema::Controller
6
+ def switch_ready(dpid)
7
+ send_message dpid, Barrier::Request.new
8
+ end
9
+
10
+ def barrier_reply(dpid, message)
11
+ logger.info 'barrier_reply handler is invoked'
12
+ end
13
+ end
14
+ """
15
+ And a file named "trema.conf" with:
16
+ """ruby
17
+ vswitch { datapath_id 0xabc }
18
+ """
19
+
20
+ @sudo
21
+ Scenario: invoke barrier_reply handler
22
+ Given I use OpenFlow 1.0
23
+ When I trema run "barrier_reply.rb" with the configuration "trema.conf"
24
+ Then the file "BarrierReply.log" should contain "barrier_reply handler is invoked"
25
+
26
+ @sudo @wip
27
+ Scenario: invoke barrier_reply handler
28
+ Given I use OpenFlow 1.3
29
+ When I trema run "barrier_reply.rb" with the configuration "trema.conf"
30
+ Then the file "BarrierReply.log" should contain "barrier_reply handler is invoked"
@@ -1,15 +1,7 @@
1
- Feature: Trema::Controller#echo_reply handler
1
+ Feature: echo_reply handler
2
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
3
  Given a file named "echo_reply.rb" with:
12
- """
4
+ """ruby
13
5
  class EchoReply < Trema::Controller
14
6
  def switch_ready(dpid)
15
7
  send_message dpid, Echo::Request.new
@@ -21,9 +13,18 @@ Feature: Trema::Controller#echo_reply handler
21
13
  end
22
14
  """
23
15
  And a file named "trema.conf" with:
24
- """
16
+ """ruby
25
17
  vswitch { datapath_id 0xabc }
26
18
  """
27
- When I successfully run `trema -v run echo_reply.rb -c trema.conf -d`
28
- And I run `sleep 5`
19
+
20
+ @sudo
21
+ Scenario: invoke echo_reply handler
22
+ Given I use OpenFlow 1.0
23
+ When I trema run "echo_reply.rb" with the configuration "trema.conf"
24
+ Then the file "EchoReply.log" should contain "echo_reply handler is invoked"
25
+
26
+ @sudo
27
+ Scenario: invoke echo_reply handler (OpenFlow 1.3)
28
+ Given I use OpenFlow 1.3
29
+ When I trema run "echo_reply.rb" with the configuration "trema.conf"
29
30
  Then the file "EchoReply.log" should contain "echo_reply handler is invoked"
@@ -0,0 +1,56 @@
1
+ Feature: hello_failed handler
2
+ Background:
3
+ Given a file named "hello_fails.rb" with:
4
+ """ruby
5
+ require 'version_mismatch'
6
+
7
+ class HelloFails < Trema::Controller
8
+ def hello_failed(message)
9
+ logger.info 'Hello failed.'
10
+ end
11
+ end
12
+ """
13
+ And a file named "trema.conf" with:
14
+ """ruby
15
+ vswitch { datapath_id 0xabc }
16
+ """
17
+
18
+ @sudo
19
+ Scenario: invoke hello_failed handler
20
+ Given I use OpenFlow 1.0
21
+ And a file named "version_mismatch.rb" with:
22
+ """ruby
23
+ module Trema
24
+ class Switch
25
+ private
26
+
27
+ # force trema to send Hello1.3 on startup.
28
+ def exchange_hello_messages
29
+ write Pio::OpenFlow13::Hello.new
30
+ expect_receiving Hello
31
+ end
32
+ end
33
+ end
34
+ """
35
+ When I trema run "hello_fails.rb" with the configuration "trema.conf"
36
+ Then the file "HelloFails.log" should contain "Hello failed."
37
+
38
+ @sudo
39
+ Scenario: invoke hello_failed handler (OpenFlow 1.3)
40
+ Given I use OpenFlow 1.3
41
+ And a file named "version_mismatch.rb" with:
42
+ """ruby
43
+ module Trema
44
+ class Switch
45
+ private
46
+
47
+ # force trema to send Hello1.0 on startup.
48
+ def exchange_hello_messages
49
+ write Pio::OpenFlow10::Hello.new
50
+ expect_receiving Hello
51
+ end
52
+ end
53
+ end
54
+ """
55
+ When I trema run "hello_fails.rb" with the configuration "trema.conf"
56
+ Then the file "HelloFails.log" should contain "Hello failed."
@@ -0,0 +1,32 @@
1
+ Feature: packet_in handler
2
+ Background:
3
+ Given a file named "packet_in_controller.rb" with:
4
+ """ruby
5
+ class PacketInController < Trema::Controller
6
+ def packet_in(dpid, message)
7
+ logger.info "new packet_in (dpid = #{dpid.to_hex})"
8
+ end
9
+ end
10
+ """
11
+ And a file named "trema.conf" with:
12
+ """ruby
13
+ vswitch { datapath_id 0xabc }
14
+ vhost('host1') { ip '192.168.0.1' }
15
+ vhost('host2') { ip '192.168.0.2' }
16
+ link '0xabc', 'host1'
17
+ link '0xabc', 'host2'
18
+ """
19
+
20
+ @sudo
21
+ Scenario: invoke packet_in handler
22
+ Given I successfully run `trema run packet_in_controller.rb -c trema.conf -d`
23
+ And I successfully run `sleep 3`
24
+ When I successfully run `trema send_packets --source host1 --dest host2`
25
+ Then the file "PacketInController.log" should contain "new packet_in (dpid = 0xabc)"
26
+
27
+ @sudo
28
+ Scenario: invoke packet_in handler (OpenFlow 1.3)
29
+ Given I successfully run `trema run packet_in_controller.rb -c trema.conf --openflow13 -d`
30
+ And I successfully run `sleep 3`
31
+ When I successfully run `trema send_packets --source host1 --dest host2`
32
+ Then the file "PacketInController.log" should contain "new packet_in (dpid = 0xabc)"
@@ -0,0 +1,31 @@
1
+ Feature: start handler
2
+ Background:
3
+ Given a file named "hello.rb" with:
4
+ """ruby
5
+ class Hello < Trema::Controller
6
+ def start(args)
7
+ logger.info "args = [#{args.join(', ')}]"
8
+ end
9
+ end
10
+ """
11
+
12
+ @sudo
13
+ Scenario: invoke start handler
14
+ When I successfully run `trema run hello.rb -d`
15
+ Then the file "Hello.log" should contain "args = []"
16
+
17
+ @sudo
18
+ Scenario: invoke start handler with args
19
+ When I successfully run `trema run hello.rb -d -- arg0 arg1 arg2`
20
+ Then the file "Hello.log" should contain "args = [arg0, arg1, arg2]"
21
+
22
+ @sudo
23
+ Scenario: invoke start handler (OpenFlow 1.3)
24
+ When I successfully run `trema run hello.rb --openflow13 -d`
25
+ Then the file "Hello.log" should contain "args = []"
26
+
27
+ @sudo
28
+ Scenario: invoke start handler with args (OpenFlow 1.3)
29
+ When I successfully run `trema run hello.rb --openflow13 -d -- arg0 arg1 arg2`
30
+ Then the file "Hello.log" should contain "args = [arg0, arg1, arg2]"
31
+
@@ -0,0 +1,34 @@
1
+ Feature: switch_disconnected handler
2
+ Background:
3
+ Given a file named "switch_disconnected.rb" with:
4
+ """ruby
5
+ class SwitchDisconnected < Trema::Controller
6
+ def switch_disconnected(dpid)
7
+ logger.info "Switch #{dpid.to_hex} is disconnected."
8
+ end
9
+ end
10
+ """
11
+ And a file named "trema.conf" with:
12
+ """ruby
13
+ vswitch { datapath_id 0xabc }
14
+ """
15
+
16
+ @sudo
17
+ Scenario: invoke switch_disconnected handler
18
+ Given I use OpenFlow 1.0
19
+ And I trema run "switch_disconnected.rb" with the configuration "trema.conf"
20
+ When I successfully run `trema stop 0xabc`
21
+ Then the file "SwitchDisconnected.log" should contain:
22
+ """
23
+ Switch 0xabc is disconnected.
24
+ """
25
+
26
+ @sudo
27
+ Scenario: invoke switch_disconnected handler (OpenFlow 1.3)
28
+ Given I use OpenFlow 1.3
29
+ And I trema run "switch_disconnected.rb" with the configuration "trema.conf"
30
+ When I successfully run `trema stop 0xabc`
31
+ Then the file "SwitchDisconnected.log" should contain:
32
+ """
33
+ Switch 0xabc is disconnected.
34
+ """
@@ -0,0 +1,26 @@
1
+ Feature: switch_ready handler
2
+ Background:
3
+ Given a file named "switch_ready.rb" with:
4
+ """ruby
5
+ class SwitchReady < Trema::Controller
6
+ def switch_ready(dpid)
7
+ logger.info format('Hello %s!', dpid.to_hex)
8
+ end
9
+ end
10
+ """
11
+ And a file named "trema.conf" with:
12
+ """ruby
13
+ vswitch { datapath_id 0xabc }
14
+ """
15
+
16
+ @sudo
17
+ Scenario: invoke switch_ready handler
18
+ Given I use OpenFlow 1.0
19
+ When I trema run "switch_ready.rb" with the configuration "trema.conf"
20
+ Then the file "SwitchReady.log" should contain "Hello 0xabc!"
21
+
22
+ @sudo
23
+ Scenario: invoke switch_ready handler (OpenFlow 1.3)
24
+ Given I use OpenFlow 1.3
25
+ When I trema run "switch_ready.rb" with the configuration "trema.conf"
26
+ Then the file "SwitchReady.log" should contain "Hello 0xabc!"
@@ -0,0 +1,41 @@
1
+ Feature: Trema::Controller#logger.debug
2
+ Background:
3
+ Given a file named "hello.rb" with:
4
+ """ruby
5
+ class Hello < Trema::Controller
6
+ def start(_args)
7
+ logger.debug 'Konnichi Wa'
8
+ end
9
+ end
10
+ """
11
+
12
+ @sudo
13
+ Scenario: the default logging level
14
+ When I trema run "hello.rb" interactively
15
+ And I trema killall "Hello"
16
+ Then the output should not contain "Konnichi Wa"
17
+ And the file "Hello.log" should not contain "DEBUG -- : Konnichi Wa"
18
+
19
+ @sudo
20
+ Scenario: --logging_level debug
21
+ When I run `trema run hello.rb --logging_level debug` interactively
22
+ And I run `sleep 3`
23
+ And I trema killall "Hello"
24
+ Then the output should contain "Konnichi Wa"
25
+ And the file "Hello.log" should contain "DEBUG -- : Konnichi Wa"
26
+
27
+ @sudo
28
+ Scenario: -v
29
+ When I run `trema -v run hello.rb` interactively
30
+ And I run `sleep 3`
31
+ And I trema killall "Hello"
32
+ Then the output should contain "Konnichi Wa"
33
+ And the file "Hello.log" should contain "DEBUG -- : Konnichi Wa"
34
+
35
+ @sudo
36
+ Scenario: --verbose
37
+ When I run `trema --verbose run hello.rb` interactively
38
+ And I run `sleep 3`
39
+ And I trema killall "Hello"
40
+ Then the output should contain "Konnichi Wa"
41
+ And the file "Hello.log" should contain "DEBUG -- : Konnichi Wa"
@@ -0,0 +1,41 @@
1
+ Feature: Trema::Controller#logger.error
2
+ Background:
3
+ Given a file named "hello.rb" with:
4
+ """ruby
5
+ class Hello < Trema::Controller
6
+ def start(_args)
7
+ logger.error 'Konnichi Wa'
8
+ end
9
+ end
10
+ """
11
+
12
+ @sudo
13
+ Scenario: the default logging level
14
+ When I trema run "hello.rb" interactively
15
+ And I trema killall "Hello"
16
+ Then the output should contain "Konnichi Wa"
17
+ And the file "Hello.log" should contain "ERROR -- : Konnichi Wa"
18
+
19
+ @sudo
20
+ Scenario: --logging_level error
21
+ When I run `trema run hello.rb --logging_level error` interactively
22
+ And I run `sleep 3`
23
+ And I trema killall "Hello"
24
+ Then the output should contain "Konnichi Wa"
25
+ And the file "Hello.log" should contain "ERROR -- : Konnichi Wa"
26
+
27
+ @sudo
28
+ Scenario: -v
29
+ When I run `trema -v run hello.rb` interactively
30
+ And I run `sleep 3`
31
+ And I trema killall "Hello"
32
+ Then the output should contain "Konnichi Wa"
33
+ And the file "Hello.log" should contain "ERROR -- : Konnichi Wa"
34
+
35
+ @sudo
36
+ Scenario: --verbose
37
+ When I run `trema --verbose run hello.rb` interactively
38
+ And I run `sleep 3`
39
+ And I trema killall "Hello"
40
+ Then the output should contain "Konnichi Wa"
41
+ And the file "Hello.log" should contain "ERROR -- : Konnichi Wa"
@@ -0,0 +1,41 @@
1
+ Feature: Trema::Controller#logger.fatal
2
+ Background:
3
+ Given a file named "hello.rb" with:
4
+ """ruby
5
+ class Hello < Trema::Controller
6
+ def start(_args)
7
+ logger.fatal 'Konnichi Wa'
8
+ end
9
+ end
10
+ """
11
+
12
+ @sudo
13
+ Scenario: the default logging level
14
+ When I trema run "hello.rb" interactively
15
+ And I trema killall "Hello"
16
+ Then the output should contain "Konnichi Wa"
17
+ And the file "Hello.log" should contain "FATAL -- : Konnichi Wa"
18
+
19
+ @sudo
20
+ Scenario: --logging_level fatal
21
+ When I run `trema run hello.rb --logging_level fatal` interactively
22
+ And I run `sleep 3`
23
+ And I trema killall "Hello"
24
+ Then the output should contain "Konnichi Wa"
25
+ And the file "Hello.log" should contain "FATAL -- : Konnichi Wa"
26
+
27
+ @sudo
28
+ Scenario: -v
29
+ When I run `trema -v run hello.rb` interactively
30
+ And I run `sleep 3`
31
+ And I trema killall "Hello"
32
+ Then the output should contain "Konnichi Wa"
33
+ And the file "Hello.log" should contain "FATAL -- : Konnichi Wa"
34
+
35
+ @sudo
36
+ Scenario: --verbose
37
+ When I run `trema --verbose run hello.rb` interactively
38
+ And I run `sleep 3`
39
+ And I trema killall "Hello"
40
+ Then the output should contain "Konnichi Wa"
41
+ And the file "Hello.log" should contain "FATAL -- : Konnichi Wa"
@@ -0,0 +1,41 @@
1
+ Feature: Trema::Controller#logger.info
2
+ Background:
3
+ Given a file named "hello.rb" with:
4
+ """ruby
5
+ class Hello < Trema::Controller
6
+ def start(_args)
7
+ logger.info 'Konnichi Wa'
8
+ end
9
+ end
10
+ """
11
+
12
+ @sudo
13
+ Scenario: the default logging level
14
+ When I trema run "hello.rb" interactively
15
+ And I trema killall "Hello"
16
+ Then the output should contain "Konnichi Wa"
17
+ And the file "Hello.log" should contain "INFO -- : Konnichi Wa"
18
+
19
+ @sudo
20
+ Scenario: --logging_level info
21
+ When I run `trema run hello.rb --logging_level info` interactively
22
+ And I run `sleep 3`
23
+ And I trema killall "Hello"
24
+ Then the output should contain "Konnichi Wa"
25
+ And the file "Hello.log" should contain "INFO -- : Konnichi Wa"
26
+
27
+ @sudo
28
+ Scenario: -v
29
+ When I run `trema -v run hello.rb` interactively
30
+ And I run `sleep 3`
31
+ And I trema killall "Hello"
32
+ Then the output should contain "Konnichi Wa"
33
+ And the file "Hello.log" should contain "INFO -- : Konnichi Wa"
34
+
35
+ @sudo
36
+ Scenario: --verbose
37
+ When I run `trema --verbose run hello.rb` interactively
38
+ And I run `sleep 3`
39
+ And I trema killall "Hello"
40
+ Then the output should contain "Konnichi Wa"
41
+ And the file "Hello.log" should contain "INFO -- : Konnichi Wa"
@@ -0,0 +1,41 @@
1
+ Feature: Trema::Controller#logger.warn
2
+ Background:
3
+ Given a file named "hello.rb" with:
4
+ """ruby
5
+ class Hello < Trema::Controller
6
+ def start(_args)
7
+ logger.warn 'Konnichi Wa'
8
+ end
9
+ end
10
+ """
11
+
12
+ @sudo
13
+ Scenario: the default logging level
14
+ When I trema run "hello.rb" interactively
15
+ And I trema killall "Hello"
16
+ Then the output should contain "Konnichi Wa"
17
+ And the file "Hello.log" should contain "WARN -- : Konnichi Wa"
18
+
19
+ @sudo
20
+ Scenario: --logging_level warn
21
+ When I run `trema run hello.rb --logging_level warn` interactively
22
+ And I run `sleep 3`
23
+ And I trema killall "Hello"
24
+ Then the output should contain "Konnichi Wa"
25
+ And the file "Hello.log" should contain "WARN -- : Konnichi Wa"
26
+
27
+ @sudo
28
+ Scenario: -v
29
+ When I run `trema -v run hello.rb` interactively
30
+ And I run `sleep 3`
31
+ And I trema killall "Hello"
32
+ Then the output should contain "Konnichi Wa"
33
+ And the file "Hello.log" should contain "WARN -- : Konnichi Wa"
34
+
35
+ @sudo
36
+ Scenario: --verbose
37
+ When I run `trema --verbose run hello.rb` interactively
38
+ And I run `sleep 3`
39
+ And I trema killall "Hello"
40
+ Then the output should contain "Konnichi Wa"
41
+ And the file "Hello.log" should contain "WARN -- : Konnichi Wa"
@@ -0,0 +1,2 @@
1
+ A collection of step definitions for use with Trema and Trema apps.
2
+ These steps are highly specific to Trema.
@@ -0,0 +1,13 @@
1
+ # rubocop:disable LineLength
2
+
3
+ Then(/^the switch "(.*?)" has (\d+) flow entr(?:y|ies)$/) do |switch, num_entries|
4
+ command = "trema dump_flows #{switch} -S."
5
+ step "I run `#{command}`"
6
+ expect(output_from(command).split("\n").size - 1).to eq(num_entries.to_i)
7
+ end
8
+
9
+ Then(/^the switch "(.*?)" has no flow entry$/) do |switch|
10
+ step %(the switch "#{switch}" has 0 flow entry)
11
+ end
12
+
13
+ # rubocop:enable LineLength