trema 0.4.6 → 0.4.7
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -0
- data/.travis.yml +24 -7
- data/Gemfile +19 -27
- data/Guardfile +6 -0
- data/README.md +13 -5
- data/Rakefile +418 -415
- data/bin/quality +2 -2
- data/bin/trema +103 -105
- data/bin/trema-config +7 -7
- data/build.rb +2 -2
- data/cruise.rb +109 -83
- data/features/dsl/switch_port_specifier.feature +1 -1
- data/features/examples/dumper.feature +9 -41
- data/features/examples/hello_trema.feature +1 -1
- data/features/examples/learning_switch.feature +7 -7
- data/features/examples/list_switches.feature +5 -5
- data/features/examples/message.set_config.feature +11 -11
- data/features/examples/message.vendor-action.feature +7 -7
- data/features/examples/message.vendor-stats-request.feature +1 -1
- data/features/examples/multi_learning_switch.feature +7 -7
- data/features/examples/openflow_message.echo.feature +15 -15
- data/features/examples/openflow_message.features_request.feature +12 -12
- data/features/examples/openflow_message.hello.feature +13 -13
- data/features/examples/packet_in.feature +8 -8
- data/features/examples/patch_panel.feature +1 -1
- data/features/examples/repeater_hub.feature +7 -7
- data/features/examples/switch_info.feature +16 -16
- data/features/examples/switch_monitor.feature +11 -11
- data/features/examples/transparent_firewall.feature +73 -0
- data/features/handlers/switch_ready.feature +1 -1
- data/features/step_definitions/misc_steps.rb +24 -24
- data/features/step_definitions/send_packets_steps.rb +2 -2
- data/features/step_definitions/stats_steps.rb +6 -6
- data/features/support/env.rb +15 -15
- data/features/support/hooks.rb +9 -9
- data/features/switch_event/add_forward_entry.feature +3 -3
- data/features/switch_event/delete_forward_entry.feature +3 -3
- data/features/switch_event/dump_forward_entries.feature +2 -2
- data/features/switch_event/set_forward_entries.feature +2 -2
- data/features/trema_commands/dump_flows.feature +1 -0
- data/features/trema_commands/help.feature +1 -0
- data/features/trema_commands/help_option.feature +1 -0
- data/features/trema_commands/kill.feature +1 -0
- data/features/trema_commands/killall.feature +1 -0
- data/features/trema_commands/port_down.feature +1 -0
- data/features/trema_commands/port_up.feature +1 -0
- data/features/trema_commands/reset_stats.feature +1 -0
- data/features/trema_commands/run.feature +1 -0
- data/features/trema_commands/send_packets.feature +2 -1
- data/features/trema_commands/show_stats.feature +1 -0
- data/features/trema_commands/up.feature +1 -0
- data/features/trema_commands/version.feature +1 -0
- data/features/trema_commands/version_option.feature +1 -0
- data/rubocop-todo.yml +159 -0
- data/ruby/blocker.rb +15 -17
- data/ruby/extconf.rb +19 -19
- data/ruby/sub-process.rb +29 -29
- data/ruby/trema/aggregate-stats-reply.rb +2 -2
- data/ruby/trema/app.rb +13 -13
- data/ruby/trema/cli.rb +45 -45
- data/ruby/trema/command.rb +14 -14
- data/ruby/trema/command/dump_flows.rb +5 -5
- data/ruby/trema/command/kill.rb +13 -13
- data/ruby/trema/command/killall.rb +1 -1
- data/ruby/trema/command/netns.rb +3 -3
- data/ruby/trema/command/port_down.rb +7 -7
- data/ruby/trema/command/port_up.rb +7 -7
- data/ruby/trema/command/reset_stats.rb +6 -6
- data/ruby/trema/command/ruby.rb +2 -2
- data/ruby/trema/command/run.rb +23 -23
- data/ruby/trema/command/send_packets.rb +9 -9
- data/ruby/trema/command/shell.rb +14 -16
- data/ruby/trema/command/show_stats.rb +9 -9
- data/ruby/trema/command/up.rb +4 -4
- data/ruby/trema/command/version.rb +1 -1
- data/ruby/trema/controller.rb +10 -10
- data/ruby/trema/custom-switch.rb +4 -4
- data/ruby/trema/daemon.rb +21 -21
- data/ruby/trema/desc-stats-reply.rb +2 -2
- data/ruby/trema/dsl.rb +5 -5
- data/ruby/trema/dsl/configuration.rb +7 -7
- data/ruby/trema/dsl/context.rb +10 -10
- data/ruby/trema/dsl/custom-switch.rb +3 -3
- data/ruby/trema/dsl/link.rb +2 -2
- data/ruby/trema/dsl/netns.rb +9 -9
- data/ruby/trema/dsl/parser.rb +14 -14
- data/ruby/trema/dsl/rswitch.rb +3 -3
- data/ruby/trema/dsl/run.rb +4 -4
- data/ruby/trema/dsl/runner.rb +20 -20
- data/ruby/trema/dsl/stanza.rb +5 -5
- data/ruby/trema/dsl/switch.rb +14 -14
- data/ruby/trema/dsl/syntax.rb +54 -54
- data/ruby/trema/dsl/vhost.rb +9 -9
- data/ruby/trema/dsl/vswitch.rb +4 -4
- data/ruby/trema/enqueue.rb +11 -11
- data/ruby/trema/exact-match.rb +1 -1
- data/ruby/trema/executables.rb +19 -19
- data/ruby/trema/flow-stats-reply.rb +2 -2
- data/ruby/trema/flow.rb +8 -8
- data/ruby/trema/hardware-switch.rb +2 -2
- data/ruby/trema/host.rb +18 -18
- data/ruby/trema/link.rb +9 -9
- data/ruby/trema/mac.rb +1 -5
- data/ruby/trema/match.c +0 -1
- data/ruby/trema/monkey-patch/integer.rb +3 -3
- data/ruby/trema/monkey-patch/integer/base-conversions.rb +1 -1
- data/ruby/trema/monkey-patch/integer/ranges.rb +2 -2
- data/ruby/trema/monkey-patch/integer/validators.rb +1 -1
- data/ruby/trema/monkey-patch/module.rb +2 -2
- data/ruby/trema/monkey-patch/module/class-method.rb +2 -2
- data/ruby/trema/monkey-patch/module/deprecation.rb +1 -1
- data/ruby/trema/monkey-patch/string.rb +1 -1
- data/ruby/trema/monkey-patch/string/inflectors.rb +7 -7
- data/ruby/trema/netns.rb +6 -6
- data/ruby/trema/network-component.rb +7 -7
- data/ruby/trema/ofctl.rb +13 -13
- data/ruby/trema/open-vswitch.rb +25 -25
- data/ruby/trema/openflow-switch.rb +1 -1
- data/ruby/trema/ordered-hash.rb +8 -8
- data/ruby/trema/packet-in.c +0 -1
- data/ruby/trema/packet-queue.rb +8 -8
- data/ruby/trema/packetin-filter.rb +9 -9
- data/ruby/trema/path.rb +32 -32
- data/ruby/trema/phost.rb +5 -5
- data/ruby/trema/port-mod.c +0 -1
- data/ruby/trema/port-stats-reply.rb +2 -2
- data/ruby/trema/port-status-add.rb +2 -2
- data/ruby/trema/port-status-delete.rb +2 -2
- data/ruby/trema/port-status-modify.rb +2 -2
- data/ruby/trema/port.c +0 -1
- data/ruby/trema/process.rb +7 -7
- data/ruby/trema/queue-stats-reply.rb +2 -2
- data/ruby/trema/ruby-switch.rb +6 -6
- data/ruby/trema/send-out-port.rb +11 -11
- data/ruby/trema/set-eth-addr.rb +5 -5
- data/ruby/trema/set-eth-dst-addr.rb +1 -1
- data/ruby/trema/set-eth-src-addr.rb +1 -1
- data/ruby/trema/set-ip-addr.rb +6 -6
- data/ruby/trema/set-ip-dst-addr.rb +1 -1
- data/ruby/trema/set-ip-src-addr.rb +1 -1
- data/ruby/trema/set-ip-tos.rb +6 -6
- data/ruby/trema/set-transport-dst-port.rb +2 -2
- data/ruby/trema/set-transport-port.rb +7 -7
- data/ruby/trema/set-transport-src-port.rb +3 -3
- data/ruby/trema/set-vlan-priority.rb +6 -6
- data/ruby/trema/set-vlan-vid.rb +6 -6
- data/ruby/trema/shell.rb +10 -10
- data/ruby/trema/shell/down.rb +3 -3
- data/ruby/trema/shell/killall.rb +1 -1
- data/ruby/trema/shell/link.rb +14 -14
- data/ruby/trema/shell/reset_stats.rb +6 -6
- data/ruby/trema/shell/run.rb +7 -7
- data/ruby/trema/shell/send_packets.rb +3 -3
- data/ruby/trema/shell/show_stats.rb +7 -7
- data/ruby/trema/shell/up.rb +5 -5
- data/ruby/trema/shell/vhost.rb +4 -4
- data/ruby/trema/shell/vswitch.rb +7 -7
- data/ruby/trema/stats-helper.rb +3 -3
- data/ruby/trema/stats-reply.c +0 -1
- data/ruby/trema/strip-vlan-header.rb +1 -1
- data/ruby/trema/switch-daemon.rb +9 -9
- data/ruby/trema/switch-manager.rb +9 -9
- data/ruby/trema/switch.rb +7 -7
- data/ruby/trema/table-stats-reply.rb +2 -2
- data/ruby/trema/timers.rb +12 -12
- data/ruby/trema/trema.c +0 -1
- data/ruby/trema/tremashark.rb +1 -1
- data/ruby/trema/util.rb +25 -27
- data/ruby/trema/vendor-action.rb +10 -10
- data/ruby/trema/vendor-stats-reply.rb +2 -2
- data/ruby/trema/version.rb +1 -1
- data/spec/spec_helper.rb +50 -52
- data/spec/support/action.rb +9 -12
- data/spec/support/mandatory-option.rb +15 -18
- data/spec/support/matchers/constant.rb +7 -7
- data/spec/support/openflow-message.rb +76 -79
- data/spec/support/port-status.rb +7 -10
- data/spec/trema/app_spec.rb +27 -27
- data/spec/trema/barrier-reply_spec.rb +10 -10
- data/spec/trema/barrier-request_spec.rb +35 -35
- data/spec/trema/cli_spec.rb +63 -63
- data/spec/trema/controller_spec.rb +3 -3
- data/spec/trema/default-logger_spec.rb +4 -4
- data/spec/trema/dsl/configuration_spec.rb +47 -47
- data/spec/trema/dsl/link_spec.rb +11 -11
- data/spec/trema/dsl/run_spec.rb +19 -19
- data/spec/trema/dsl/runner_spec.rb +91 -91
- data/spec/trema/dsl/switch_spec.rb +16 -16
- data/spec/trema/dsl/syntax_spec.rb +22 -22
- data/spec/trema/dsl/vhost_spec.rb +37 -37
- data/spec/trema/dsl/vswitch_spec.rb +21 -21
- data/spec/trema/echo-reply_spec.rb +29 -29
- data/spec/trema/echo-request_spec.rb +54 -54
- data/spec/trema/enqueue_spec.rb +25 -25
- data/spec/trema/error_spec.rb +30 -30
- data/spec/trema/executables_spec.rb +20 -20
- data/spec/trema/features-reply_spec.rb +41 -41
- data/spec/trema/features-request_spec.rb +35 -35
- data/spec/trema/flow-mod_spec.rb +32 -32
- data/spec/trema/flow-removed_spec.rb +62 -62
- data/spec/trema/get-config-reply_spec.rb +14 -12
- data/spec/trema/get-config-request_spec.rb +35 -35
- data/spec/trema/hardware-switch_spec.rb +12 -12
- data/spec/trema/hello_spec.rb +17 -17
- data/spec/trema/host_spec.rb +71 -71
- data/spec/trema/link_spec.rb +13 -13
- data/spec/trema/list-switches-reply_spec.rb +10 -10
- data/spec/trema/match_spec.rb +41 -41
- data/spec/trema/open-vswitch_spec.rb +45 -45
- data/spec/trema/openflow-error_spec.rb +67 -65
- data/spec/trema/packet-in_spec.rb +450 -446
- data/spec/trema/packet-out_spec.rb +42 -42
- data/spec/trema/packetin-filter_spec.rb +5 -5
- data/spec/trema/port-mod_spec.rb +32 -32
- data/spec/trema/port-status-add_spec.rb +3 -3
- data/spec/trema/port-status-delete_spec.rb +3 -3
- data/spec/trema/port-status-modify_spec.rb +16 -16
- data/spec/trema/port-status_spec.rb +2 -2
- data/spec/trema/port_spec.rb +21 -21
- data/spec/trema/process_spec.rb +22 -22
- data/spec/trema/queue-get-config-reply_spec.rb +21 -20
- data/spec/trema/queue-get-config-request_spec.rb +24 -24
- data/spec/trema/send-out-port_spec.rb +42 -42
- data/spec/trema/set-config_spec.rb +31 -31
- data/spec/trema/set-eth-addr_spec.rb +21 -21
- data/spec/trema/set-ip-addr_spec.rb +29 -29
- data/spec/trema/set-ip-tos_spec.rb +26 -26
- data/spec/trema/set-transport-dst-port_spec.rb +22 -22
- data/spec/trema/set-transport-src-port_spec.rb +22 -22
- data/spec/trema/set-vlan-priority_spec.rb +23 -23
- data/spec/trema/set-vlan-vid_spec.rb +23 -23
- data/spec/trema/shell/vhost_spec.rb +21 -21
- data/spec/trema/shell/vswitch_spec.rb +30 -30
- data/spec/trema/stats-reply_spec.rb +183 -173
- data/spec/trema/stats-request_spec.rb +66 -66
- data/spec/trema/strip-vlan-header_spec.rb +11 -11
- data/spec/trema/switch-daemon_spec.rb +34 -34
- data/spec/trema/switch-disconnected_spec.rb +17 -17
- data/spec/trema/switch-manager_spec.rb +6 -6
- data/spec/trema/tremashark_spec.rb +4 -4
- data/spec/trema/util_spec.rb +35 -35
- data/spec/trema/vendor-action_spec.rb +26 -26
- data/spec/trema/vendor_spec.rb +27 -27
- data/spec/trema_spec.rb +2 -2
- data/src/examples/cbench_switch/cbench-switch.rb +3 -3
- data/src/examples/dumper/dumper.rb +31 -31
- data/src/examples/hello_trema/hello-trema.rb +2 -2
- data/src/examples/learning_switch/fdb.rb +14 -14
- data/src/examples/learning_switch/learning-switch.rb +12 -10
- data/src/examples/learning_switch/learning_switch.c +22 -39
- data/src/examples/list_switches/list-switches.rb +3 -3
- data/src/examples/match_compare/match-compare.rb +20 -20
- data/src/examples/multi_learning_switch/multi-learning-switch.rb +12 -12
- data/src/examples/openflow_message/echo.rb +4 -4
- data/src/examples/openflow_message/example.rb +7 -7
- data/src/examples/openflow_message/features-request.rb +31 -31
- data/src/examples/openflow_message/hello.rb +2 -2
- data/src/examples/openflow_message/set-config.rb +4 -4
- data/src/examples/openflow_message/vendor-action.rb +3 -3
- data/src/examples/openflow_message/vendor-stats-request.rb +9 -9
- data/src/examples/packet_in/packet-in.rb +2 -2
- data/src/examples/patch_panel/patch-panel.rb +9 -9
- data/src/examples/repeater_hub/repeater-hub.rb +4 -4
- data/src/examples/repeater_hub/repeater-hub_spec.rb +65 -65
- data/src/examples/simple_router/arp-table.rb +7 -7
- data/src/examples/simple_router/interface.rb +10 -10
- data/src/examples/simple_router/routing-table.rb +4 -4
- data/src/examples/simple_router/simple-router.rb +3 -3
- data/src/examples/switch_info/switch-info.rb +9 -9
- data/src/examples/switch_monitor/switch-monitor.rb +4 -4
- data/src/examples/traffic_monitor/counter.rb +6 -6
- data/src/examples/traffic_monitor/fdb.rb +4 -4
- data/src/examples/traffic_monitor/traffic-monitor.rb +12 -12
- data/src/examples/transparent_firewall/README.md +61 -0
- data/src/examples/transparent_firewall/aggregated-delegated-afrinic.txt +713 -0
- data/src/examples/transparent_firewall/aggregated-delegated-apnic.txt +3440 -0
- data/src/examples/transparent_firewall/aggregated-delegated-arin.txt +11342 -0
- data/src/examples/transparent_firewall/aggregated-delegated-lacnic.txt +1937 -0
- data/src/examples/transparent_firewall/aggregated-delegated-ripencc.txt +7329 -0
- data/src/examples/transparent_firewall/block-rfc1918.rb +86 -0
- data/src/examples/transparent_firewall/pass-delegated.rb +178 -0
- data/src/examples/transparent_firewall/regen_aggregated.sh +53 -0
- data/src/examples/transparent_firewall/stats-to-cidrs.rb +59 -0
- data/src/lib/messenger.c +14 -5
- data/src/lib/openflow_message.c +0 -5
- data/tasks/rubocop.rake +22 -0
- data/trema +1 -1
- data/trema-config +1 -1
- data/trema.gemspec +22 -22
- metadata +30 -16
|
@@ -16,22 +16,22 @@
|
|
|
16
16
|
#
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
require File.join(
|
|
20
|
-
require
|
|
19
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
|
20
|
+
require 'trema'
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
describe BarrierReply,
|
|
24
|
-
subject { BarrierReply.new(
|
|
25
|
-
its ( :datapath_id
|
|
26
|
-
its(
|
|
23
|
+
describe BarrierReply, '.new( VALID OPTIONS )' do
|
|
24
|
+
subject { BarrierReply.new(0xabc, 1234) }
|
|
25
|
+
its ( :datapath_id) { should == 0xabc }
|
|
26
|
+
its(:transaction_id) { should == 1234 }
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
describe BarrierReply,
|
|
31
|
-
it
|
|
32
|
-
expect
|
|
30
|
+
describe BarrierReply, '.new( MANDATORY OPTIONS MISSING )' do
|
|
31
|
+
it 'should raise ArgumentError' do
|
|
32
|
+
expect do
|
|
33
33
|
BarrierReply.new
|
|
34
|
-
|
|
34
|
+
end.to raise_error(ArgumentError)
|
|
35
35
|
end
|
|
36
36
|
end
|
|
37
37
|
|
|
@@ -16,71 +16,71 @@
|
|
|
16
16
|
#
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
require File.join(
|
|
20
|
-
require
|
|
19
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
|
20
|
+
require 'trema'
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
shared_examples_for
|
|
23
|
+
shared_examples_for 'barrier request message' do
|
|
24
24
|
class BarrierRequestController < Controller; end
|
|
25
25
|
|
|
26
26
|
it "should be logged to the switch's log", :sudo => true do
|
|
27
|
-
network
|
|
28
|
-
vswitch(
|
|
29
|
-
|
|
30
|
-
controller(
|
|
27
|
+
network do
|
|
28
|
+
vswitch('barrier-request') { datapath_id 0xabc }
|
|
29
|
+
end.run(BarrierRequestController) do
|
|
30
|
+
controller('BarrierRequestController').send_message(0xabc, subject)
|
|
31
31
|
sleep 2 # FIXME: wait to send_message
|
|
32
|
-
expect(
|
|
33
|
-
|
|
32
|
+
expect(IO.read(File.join(Trema.log, 'openflowd.barrier-request.log'))).to include('OFPT_BARRIER_REQUEST')
|
|
33
|
+
end
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
module Trema
|
|
39
|
-
describe BarrierRequest,
|
|
40
|
-
it_should_behave_like
|
|
41
|
-
it_should_behave_like
|
|
39
|
+
describe BarrierRequest, '.new' do
|
|
40
|
+
it_should_behave_like 'any Openflow message with default transaction ID'
|
|
41
|
+
it_should_behave_like 'barrier request message'
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
describe BarrierRequest,
|
|
46
|
-
subject { BarrierRequest.new(
|
|
47
|
-
it_should_behave_like
|
|
48
|
-
it_should_behave_like
|
|
45
|
+
describe BarrierRequest, '.new(nil)' do
|
|
46
|
+
subject { BarrierRequest.new(nil) }
|
|
47
|
+
it_should_behave_like 'any Openflow message with default transaction ID'
|
|
48
|
+
it_should_behave_like 'barrier request message'
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
|
|
52
|
-
describe BarrierRequest,
|
|
53
|
-
subject { BarrierRequest.new(
|
|
54
|
-
it_should_behave_like
|
|
55
|
-
context
|
|
56
|
-
let(
|
|
57
|
-
it_should_behave_like
|
|
52
|
+
describe BarrierRequest, '.new(transaction_id)' do
|
|
53
|
+
subject { BarrierRequest.new(transaction_id) }
|
|
54
|
+
it_should_behave_like 'any Openflow message with transaction ID'
|
|
55
|
+
context 'when sent to a switch' do
|
|
56
|
+
let(:transaction_id) { 123 }
|
|
57
|
+
it_should_behave_like 'barrier request message'
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
describe BarrierRequest,
|
|
63
|
-
subject { BarrierRequest.new(
|
|
64
|
-
it_should_behave_like
|
|
65
|
-
context
|
|
66
|
-
let(
|
|
67
|
-
it_should_behave_like
|
|
62
|
+
describe BarrierRequest, '.new(:transaction_id => value)' do
|
|
63
|
+
subject { BarrierRequest.new(:transaction_id => transaction_id) }
|
|
64
|
+
it_should_behave_like 'any Openflow message with transaction ID'
|
|
65
|
+
context 'when sent to a switch' do
|
|
66
|
+
let(:transaction_id) { 123 }
|
|
67
|
+
it_should_behave_like 'barrier request message'
|
|
68
68
|
end
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
|
|
72
|
-
describe BarrierRequest,
|
|
73
|
-
subject { BarrierRequest.new(
|
|
74
|
-
it_should_behave_like
|
|
75
|
-
context
|
|
76
|
-
let(
|
|
77
|
-
it_should_behave_like
|
|
72
|
+
describe BarrierRequest, '.new(:xid => value)' do
|
|
73
|
+
subject { BarrierRequest.new(:xid => xid) }
|
|
74
|
+
it_should_behave_like 'any Openflow message with xid'
|
|
75
|
+
context 'when sent to a switch' do
|
|
76
|
+
let(:xid) { 123 }
|
|
77
|
+
it_should_behave_like 'barrier request message'
|
|
78
78
|
end
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
|
|
82
82
|
describe BarrierRequest, '.new("INVALID OPTION")', :nosudo => true do
|
|
83
|
-
it { expect { BarrierRequest.new
|
|
83
|
+
it { expect { BarrierRequest.new 'INVALID OPTION' }.to raise_error(TypeError) }
|
|
84
84
|
end
|
|
85
85
|
end
|
|
86
86
|
|
data/spec/trema/cli_spec.rb
CHANGED
|
@@ -16,132 +16,132 @@
|
|
|
16
16
|
#
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
require File.join(
|
|
20
|
-
require
|
|
19
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
|
20
|
+
require 'trema/cli'
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
module Trema
|
|
24
24
|
describe Cli do
|
|
25
25
|
before :each do
|
|
26
|
-
@source = mock(
|
|
27
|
-
@dest = mock(
|
|
28
|
-
@cli = Cli.new(
|
|
26
|
+
@source = mock('source', :interface => 'trema-0', :ip => '192.168.0.1')
|
|
27
|
+
@dest = mock('dest', :interface => 'trema-1', :ip => '192.168.0.2')
|
|
28
|
+
@cli = Cli.new(@source)
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
context
|
|
33
|
-
it
|
|
34
|
-
@cli.should_receive(
|
|
35
|
-
@cli.send_packets(
|
|
32
|
+
context 'when sending packets' do
|
|
33
|
+
it 'should send packets (default)' do
|
|
34
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22$/)
|
|
35
|
+
@cli.send_packets(@dest)
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
it
|
|
40
|
-
@cli.should_receive(
|
|
41
|
-
@cli.send_packets(
|
|
39
|
+
it 'should send packets (inc_ip_src)' do
|
|
40
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_ip_src$/)
|
|
41
|
+
@cli.send_packets(@dest, :inc_ip_src => true)
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
it
|
|
46
|
-
@cli.should_receive(
|
|
47
|
-
@cli.send_packets(
|
|
45
|
+
it 'should send packets (inc_ip_src = 1)' do
|
|
46
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_ip_src=1$/)
|
|
47
|
+
@cli.send_packets(@dest, :inc_ip_src => 1)
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
|
|
51
|
-
it
|
|
52
|
-
@cli.should_receive(
|
|
53
|
-
@cli.send_packets(
|
|
51
|
+
it 'should send packets (inc_ip_dst)' do
|
|
52
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_ip_dst$/)
|
|
53
|
+
@cli.send_packets(@dest, :inc_ip_dst => true)
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
it
|
|
58
|
-
@cli.should_receive(
|
|
59
|
-
@cli.send_packets(
|
|
57
|
+
it 'should send packets (inc_ip_dst = 1)' do
|
|
58
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_ip_dst=1$/)
|
|
59
|
+
@cli.send_packets(@dest, :inc_ip_dst => 1)
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
|
|
63
|
-
it
|
|
64
|
-
@cli.should_receive(
|
|
65
|
-
@cli.send_packets(
|
|
63
|
+
it 'should send_packets (tp_src = 60000)' do
|
|
64
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 60000 --tp_dst 1 --pps 1 --duration 1 --length 22$/)
|
|
65
|
+
@cli.send_packets(@dest, :tp_src => 60000)
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
it
|
|
70
|
-
@cli.should_receive(
|
|
71
|
-
@cli.send_packets(
|
|
69
|
+
it 'should send_packets (tp_dst = 10000)' do
|
|
70
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 10000 --pps 1 --duration 1 --length 22$/)
|
|
71
|
+
@cli.send_packets(@dest, :tp_dst => 10000)
|
|
72
72
|
end
|
|
73
73
|
|
|
74
74
|
|
|
75
|
-
it
|
|
76
|
-
@cli.should_receive(
|
|
77
|
-
@cli.send_packets(
|
|
75
|
+
it 'should send packets (inc_tp_src)' do
|
|
76
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_tp_src$/)
|
|
77
|
+
@cli.send_packets(@dest, :inc_tp_src => true)
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
|
|
81
|
-
it
|
|
82
|
-
@cli.should_receive(
|
|
83
|
-
@cli.send_packets(
|
|
81
|
+
it 'should send packets (inc_tp_src = 1)' do
|
|
82
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_tp_src=1$/)
|
|
83
|
+
@cli.send_packets(@dest, :inc_tp_src => 1)
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
|
|
87
|
-
it
|
|
88
|
-
@cli.should_receive(
|
|
89
|
-
@cli.send_packets(
|
|
87
|
+
it 'should send_packets (pps = 100)' do
|
|
88
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 100 --duration 1 --length 22$/)
|
|
89
|
+
@cli.send_packets(@dest, :pps => 100)
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
|
|
93
|
-
it
|
|
94
|
-
@cli.should_receive(
|
|
95
|
-
@cli.send_packets(
|
|
93
|
+
it 'should send packets (duration = 10)' do
|
|
94
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 10 --length 22$/)
|
|
95
|
+
@cli.send_packets(@dest, :duration => 10)
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
|
|
99
|
-
it
|
|
100
|
-
@cli.should_receive(
|
|
101
|
-
@cli.send_packets(
|
|
99
|
+
it 'should send packets (length = 1000)' do
|
|
100
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 1000$/)
|
|
101
|
+
@cli.send_packets(@dest, :length => 1000)
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
|
|
105
|
-
it
|
|
106
|
-
@cli.should_receive(
|
|
107
|
-
@cli.send_packets(
|
|
105
|
+
it 'should send_packets (inc_tp_dst)' do
|
|
106
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_tp_dst$/)
|
|
107
|
+
@cli.send_packets(@dest, :inc_tp_dst => true)
|
|
108
108
|
end
|
|
109
109
|
|
|
110
110
|
|
|
111
|
-
it
|
|
112
|
-
@cli.should_receive(
|
|
113
|
-
@cli.send_packets(
|
|
111
|
+
it 'should send_packets (inc_tp_dst = 65534)' do
|
|
112
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_tp_dst=65534$/)
|
|
113
|
+
@cli.send_packets(@dest, :inc_tp_dst => 65534)
|
|
114
114
|
end
|
|
115
115
|
|
|
116
116
|
|
|
117
|
-
it
|
|
118
|
-
@cli.should_receive(
|
|
119
|
-
@cli.send_packets(
|
|
117
|
+
it 'should send_packets (inc_payload)' do
|
|
118
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_payload$/)
|
|
119
|
+
@cli.send_packets(@dest, :inc_payload => true)
|
|
120
120
|
end
|
|
121
121
|
|
|
122
122
|
|
|
123
|
-
it
|
|
124
|
-
@cli.should_receive(
|
|
125
|
-
@cli.send_packets(
|
|
123
|
+
it 'should send_packets (inc_payload = 1000)' do
|
|
124
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_payload=1000$/)
|
|
125
|
+
@cli.send_packets(@dest, :inc_payload => 1000)
|
|
126
126
|
end
|
|
127
127
|
|
|
128
128
|
|
|
129
|
-
it
|
|
130
|
-
@cli.should_receive(
|
|
131
|
-
@cli.send_packets(
|
|
129
|
+
it 'should send_packets (n_pkts = 10)' do
|
|
130
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --length 22 --n_pkts=10$/)
|
|
131
|
+
@cli.send_packets(@dest, :n_pkts => 10)
|
|
132
132
|
end
|
|
133
133
|
|
|
134
134
|
|
|
135
|
-
it
|
|
136
|
-
expect { @cli.send_packets(
|
|
135
|
+
it 'should raise if both --duration and --n_pkts are specified' do
|
|
136
|
+
expect { @cli.send_packets(@dest, :duration => 10, :n_pkts => 10) }.to raise_error('--duration and --n_pkts are exclusive.')
|
|
137
137
|
end
|
|
138
138
|
end
|
|
139
139
|
|
|
140
140
|
|
|
141
|
-
context
|
|
142
|
-
it
|
|
143
|
-
@cli.should_receive(
|
|
144
|
-
@cli.should_receive(
|
|
141
|
+
context 'when resetting stats' do
|
|
142
|
+
it 'should reset_stats' do
|
|
143
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 reset_stats --tx$/)
|
|
144
|
+
@cli.should_receive(:sh).with(/cli -i trema-0 reset_stats --rx$/)
|
|
145
145
|
@cli.reset_stats
|
|
146
146
|
end
|
|
147
147
|
end
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
#
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
require File.join(
|
|
20
|
-
require
|
|
19
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
|
20
|
+
require 'trema'
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
module Trema
|
|
@@ -35,7 +35,7 @@ module Trema
|
|
|
35
35
|
it { should have_constant :OFPP_NONE }
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
context
|
|
38
|
+
context '.new' do
|
|
39
39
|
subject { Controller.new }
|
|
40
40
|
|
|
41
41
|
it { should respond_to :critical }
|
|
@@ -16,18 +16,18 @@
|
|
|
16
16
|
#
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
require File.join(
|
|
20
|
-
require
|
|
19
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
|
20
|
+
require 'trema'
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
module Trema
|
|
24
24
|
describe DefaultLogger do
|
|
25
|
-
subject
|
|
25
|
+
subject do
|
|
26
26
|
class LoggingObject
|
|
27
27
|
include Trema::DefaultLogger
|
|
28
28
|
end
|
|
29
29
|
LoggingObject.new
|
|
30
|
-
|
|
30
|
+
end
|
|
31
31
|
|
|
32
32
|
it { should respond_to :critical }
|
|
33
33
|
it { should respond_to :error }
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
#
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
require File.join(
|
|
20
|
-
require
|
|
19
|
+
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
|
|
20
|
+
require 'trema/dsl/configuration'
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
module Trema
|
|
@@ -28,84 +28,84 @@ module Trema
|
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
context
|
|
32
|
-
it
|
|
33
|
-
expect(
|
|
31
|
+
context 'when parsing trema configurations' do
|
|
32
|
+
it 'should remember apps' do
|
|
33
|
+
expect(@context).to have(0).apps
|
|
34
34
|
|
|
35
|
-
Trema::App.add mock(
|
|
36
|
-
Trema::App.add mock(
|
|
37
|
-
Trema::App.add mock(
|
|
35
|
+
Trema::App.add mock('app #0', :name => 'app #0')
|
|
36
|
+
Trema::App.add mock('app #1', :name => 'app #1')
|
|
37
|
+
Trema::App.add mock('app #2', :name => 'app #2')
|
|
38
38
|
|
|
39
|
-
expect(
|
|
39
|
+
expect(@context).to have(3).apps
|
|
40
40
|
|
|
41
|
-
expect(
|
|
42
|
-
expect(
|
|
43
|
-
expect(
|
|
41
|
+
expect(@context.apps[ 'app #0'].name).to eq('app #0')
|
|
42
|
+
expect(@context.apps[ 'app #1'].name).to eq('app #1')
|
|
43
|
+
expect(@context.apps[ 'app #2'].name).to eq('app #2')
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
|
|
47
|
-
it
|
|
48
|
-
expect(
|
|
47
|
+
it 'should remember hosts' do
|
|
48
|
+
expect(@context).to have(0).hosts
|
|
49
49
|
|
|
50
|
-
Trema::Host.add mock(
|
|
51
|
-
Trema::Host.add mock(
|
|
52
|
-
Trema::Host.add mock(
|
|
50
|
+
Trema::Host.add mock('host #0', :name => 'host #0')
|
|
51
|
+
Trema::Host.add mock('host #1', :name => 'host #1')
|
|
52
|
+
Trema::Host.add mock('host #2', :name => 'host #2')
|
|
53
53
|
|
|
54
|
-
expect(
|
|
54
|
+
expect(@context).to have(3).hosts
|
|
55
55
|
|
|
56
|
-
expect(
|
|
57
|
-
expect(
|
|
58
|
-
expect(
|
|
56
|
+
expect(@context.hosts[ 'host #0'].name).to eq('host #0')
|
|
57
|
+
expect(@context.hosts[ 'host #1'].name).to eq('host #1')
|
|
58
|
+
expect(@context.hosts[ 'host #2'].name).to eq('host #2')
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
it
|
|
63
|
-
expect(
|
|
62
|
+
it 'should remember links' do
|
|
63
|
+
expect(@context).to have(0).links
|
|
64
64
|
|
|
65
|
-
Trema::Link.add mock(
|
|
66
|
-
Trema::Link.add mock(
|
|
67
|
-
Trema::Link.add mock(
|
|
65
|
+
Trema::Link.add mock('link #0', :name => 'link #0')
|
|
66
|
+
Trema::Link.add mock('link #1', :name => 'link #1')
|
|
67
|
+
Trema::Link.add mock('link #2', :name => 'link #2')
|
|
68
68
|
|
|
69
|
-
expect(
|
|
69
|
+
expect(@context).to have(3).links
|
|
70
70
|
|
|
71
|
-
expect(
|
|
72
|
-
expect(
|
|
73
|
-
expect(
|
|
71
|
+
expect(@context.links[ 'link #0'].name).to eq('link #0')
|
|
72
|
+
expect(@context.links[ 'link #1'].name).to eq('link #1')
|
|
73
|
+
expect(@context.links[ 'link #2'].name).to eq('link #2')
|
|
74
74
|
end
|
|
75
75
|
|
|
76
76
|
|
|
77
|
-
it
|
|
78
|
-
expect(
|
|
77
|
+
it 'should remember filter settings' do
|
|
78
|
+
expect(@context.packetin_filter).to be_nil
|
|
79
79
|
|
|
80
|
-
packetin_filter = mock(
|
|
80
|
+
packetin_filter = mock('filter', :name => 'filter')
|
|
81
81
|
Trema::PacketinFilter.add packetin_filter
|
|
82
82
|
|
|
83
|
-
expect(
|
|
83
|
+
expect(@context.packetin_filter).to eq(packetin_filter)
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
|
|
87
|
-
it
|
|
88
|
-
expect(
|
|
87
|
+
it 'should remember switch manager' do
|
|
88
|
+
expect(@context.switch_manager).to be_nil
|
|
89
89
|
|
|
90
|
-
switch_manager = mock(
|
|
90
|
+
switch_manager = mock('switch manager', :name => 'switch manager')
|
|
91
91
|
Trema::SwitchManager.add switch_manager
|
|
92
92
|
|
|
93
|
-
expect(
|
|
93
|
+
expect(@context.switch_manager).to eq(switch_manager)
|
|
94
94
|
end
|
|
95
95
|
|
|
96
96
|
|
|
97
|
-
it
|
|
98
|
-
expect(
|
|
97
|
+
it 'should remember switches' do
|
|
98
|
+
expect(@context).to have(0).switches
|
|
99
99
|
|
|
100
|
-
Trema::OpenflowSwitch.add mock(
|
|
101
|
-
Trema::OpenflowSwitch.add mock(
|
|
102
|
-
Trema::OpenflowSwitch.add mock(
|
|
100
|
+
Trema::OpenflowSwitch.add mock('switch #0', :name => 'switch #0')
|
|
101
|
+
Trema::OpenflowSwitch.add mock('switch #1', :name => 'switch #1')
|
|
102
|
+
Trema::OpenflowSwitch.add mock('switch #2', :name => 'switch #2')
|
|
103
103
|
|
|
104
|
-
expect(
|
|
104
|
+
expect(@context).to have(3).switches
|
|
105
105
|
|
|
106
|
-
expect(
|
|
107
|
-
expect(
|
|
108
|
-
expect(
|
|
106
|
+
expect(@context.switches[ 'switch #0'].name).to eq('switch #0')
|
|
107
|
+
expect(@context.switches[ 'switch #1'].name).to eq('switch #1')
|
|
108
|
+
expect(@context.switches[ 'switch #2'].name).to eq('switch #2')
|
|
109
109
|
end
|
|
110
110
|
end
|
|
111
111
|
end
|