omf_rc 6.0.0.pre.5 → 6.0.0.pre.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/Rakefile +0 -6
  2. data/bin/omf_rc +2 -2
  3. data/lib/omf_rc/resource_factory.rb +10 -4
  4. data/lib/omf_rc/resource_proxy/abstract_resource.rb +120 -79
  5. data/lib/omf_rc/resource_proxy/generic_application.rb +471 -0
  6. data/lib/omf_rc/resource_proxy/net.rb +7 -0
  7. data/lib/omf_rc/resource_proxy/node.rb +33 -7
  8. data/lib/omf_rc/resource_proxy/openflow_slice.rb +79 -0
  9. data/lib/omf_rc/resource_proxy/openflow_slice_factory.rb +71 -0
  10. data/lib/omf_rc/resource_proxy/wlan.rb +20 -0
  11. data/lib/omf_rc/resource_proxy_dsl.rb +142 -8
  12. data/lib/omf_rc/util/common_tools.rb +61 -0
  13. data/lib/omf_rc/util/hostapd.rb +52 -0
  14. data/lib/omf_rc/util/ip.rb +28 -0
  15. data/lib/omf_rc/util/iw.rb +119 -6
  16. data/lib/omf_rc/util/mock.rb +2 -1
  17. data/lib/omf_rc/util/openflow_tools.rb +103 -0
  18. data/lib/omf_rc/util/platform_tools.rb +164 -0
  19. data/lib/omf_rc/util/wpa.rb +42 -0
  20. data/lib/omf_rc/version.rb +1 -1
  21. data/omf_rc.gemspec +3 -1
  22. data/test/fixture/ip/addr_show +5 -0
  23. data/test/fixture/iw/info +4 -0
  24. data/test/fixture/sys/class/ieee80211/phy0/device/uevent +6 -0
  25. data/test/fixture/sys/class/ieee80211/phy0/uevent +0 -0
  26. data/test/fixture/sys/class/net/eth0/device/uevent +6 -0
  27. data/test/fixture/sys/class/net/eth0/uevent +2 -0
  28. data/test/fixture/sys/class/net/wlan0/device/uevent +6 -0
  29. data/test/fixture/sys/class/net/wlan0/uevent +3 -0
  30. data/test/omf_rc/message_process_error_spec.rb +11 -0
  31. data/test/omf_rc/resource_factory_spec.rb +8 -1
  32. data/test/omf_rc/resource_proxy/abstract_resource_spec.rb +57 -1
  33. data/test/omf_rc/resource_proxy/generic_application_spec.rb +347 -0
  34. data/test/omf_rc/resource_proxy/mock_spec.rb +15 -0
  35. data/test/omf_rc/resource_proxy/node_spec.rb +32 -1
  36. data/test/omf_rc/resource_proxy_dsl_spec.rb +81 -10
  37. data/test/omf_rc/util/common_tools_spec.rb +30 -0
  38. data/test/omf_rc/util/ip_spec.rb +51 -0
  39. data/test/omf_rc/util/iw_spec.rb +136 -25
  40. data/test/omf_rc/util/mock_spec.rb +26 -0
  41. data/test/omf_rc/util/mod_spec.rb +8 -11
  42. data/test/test_helper.rb +11 -0
  43. metadata +62 -6
  44. data/lib/omf_rc/resource_proxy/wifi.rb +0 -8
  45. data/test/mock_helper.rb +0 -15
@@ -1,38 +1,149 @@
1
+ require 'minitest/mock'
1
2
  require 'test_helper'
2
- require 'mock_helper'
3
+ require 'cocaine'
3
4
 
4
- mock_execute(fixture("iw/help"), "iw help")
5
+ @command = MiniTest::Mock.new
5
6
 
6
- require 'omf_rc/util/iw'
7
+ Cocaine::CommandLine.stub(:new, @command) do
8
+ @command.expect(:run, fixture("iw/help"))
9
+ require 'omf_rc/util/iw'
7
10
 
8
- describe OmfRc::Util::Iw do
9
- describe "when included in the resource instance" do
10
- before do
11
- module OmfRc::ResourceProxy::IwTest
12
- include OmfRc::ResourceProxyDSL
13
- register_proxy :iw_test
14
- utility :iw
11
+ describe OmfRc::Util::Iw do
12
+ describe "when included in the resource instance" do
13
+ before do
14
+ @command = MiniTest::Mock.new
15
+
16
+ module OmfRc::ResourceProxy::IwTest
17
+ include OmfRc::ResourceProxyDSL
18
+ register_proxy :iw_test
19
+ utility :iw
20
+ end
21
+
22
+ @wlan00 = OmfRc::ResourceFactory.new(:iw_test, hrn: 'wlan00', property: { phy: 'phy00' })
15
23
  end
16
- end
17
24
 
18
- after do
19
- mock_verify_execute
20
- end
25
+ it "must provide features defined in proxy" do
26
+ %w(request_link configure_name configure_channel configure_bitrates).each do |m|
27
+ OmfRc::Util::Iw.method_defined?(m).must_equal true
28
+ end
29
+ end
21
30
 
22
- it "must provide features defined in proxy" do
23
- %w(request_link configure_name configure_channel configure_bitrates).each do |m|
24
- OmfRc::Util::Iw.method_defined?(m).must_equal true
31
+ it "could request properties of the wifi interface" do
32
+ Cocaine::CommandLine.stub(:new, @command) do
33
+ @command.expect(:run, fixture("iw/link"))
34
+ @wlan00.request_link.keys.must_include "ssid"
35
+ @command.verify
36
+ end
25
37
  end
26
- end
27
38
 
28
- it "could request properties of the wifi device" do
29
- mock_execute(fixture("iw/link"), "iw wlan00 link")
30
- OmfRc::ResourceFactory.new(:iw_test, hrn: 'wlan00').request_link.keys.must_include "ssid"
31
- end
39
+ it "could request info of the wifi interface" do
40
+ Cocaine::CommandLine.stub(:new, @command) do
41
+ @command.expect(:run, fixture("iw/info"))
42
+ @wlan00.request_info.keys.must_equal ["ifindex", "type", "wiphy"]
43
+ @command.verify
44
+ end
45
+ end
46
+
47
+ it "could configure the device's prorperty" do
48
+ Cocaine::CommandLine.stub(:new, @command) do
49
+ @command.expect(:run, true)
50
+ @wlan00.configure_power_save(true)
51
+ @command.verify
52
+ end
53
+ end
32
54
 
33
- it "could configure the device's prorperty" do
34
- mock_execute(nil, /iw wlan00 set */)
35
- OmfRc::ResourceFactory.new(:iw_test, hrn: 'wlan00').configure_power_save.must_be_nil
55
+ it "must could initialise wpa config/pid file path" do
56
+ @wlan00.init_ap_conf_pid
57
+ @wlan00.request_ap_conf.must_equal "/tmp/hostapd.wlan00.conf"
58
+ @wlan00.request_ap_pid.must_equal "/tmp/hostapd.wlan00.pid"
59
+ end
60
+
61
+ it "must could initialise wpa config/pid file path" do
62
+ @wlan00.init_wpa_conf_pid
63
+ @wlan00.request_wpa_conf.must_equal "/tmp/wpa.wlan00.conf"
64
+ @wlan00.request_wpa_pid.must_equal "/tmp/wpa.wlan00.pid"
65
+ end
66
+
67
+ it "could delete current interface" do
68
+ Cocaine::CommandLine.stub(:new, @command) do
69
+ @command.expect(:run, true)
70
+ @wlan00.delele_interface
71
+ @command.verify
72
+ end
73
+ end
74
+
75
+ it "could add a new interface" do
76
+ Cocaine::CommandLine.stub(:new, @command) do
77
+ @command.expect(:run, true)
78
+ @wlan00.add_interface(:managed)
79
+ @command.verify
80
+ end
81
+ end
82
+
83
+ it "must be able to validate iw parameters when setting up mode" do
84
+ lambda { @wlan00.configure_mode(mode: 'master') }.must_raise ArgumentError
85
+ lambda { @wlan00.configure_mode(mode: 'bob') }.must_raise ArgumentError
86
+ lambda { @wlan00.configure_mode(mode: 'master', hw_mode: 'x') }.must_raise ArgumentError
87
+ lambda { @wlan00.configure_mode(hw_mode: 'x') }.must_raise ArgumentError
88
+ end
89
+
90
+ it "must be able to configure as master mode" do
91
+ Cocaine::CommandLine.stub(:new, @command) do
92
+ 3.times { @command.expect(:run, true) }
93
+
94
+ @wlan00.configure_mode(mode: 'master', channel: 1, essid: 'bob', hw_mode: 'b')
95
+ File.open("/tmp/hostapd.wlan00.conf") do |f|
96
+ f.read.must_match "driver=nl80211\ninterface=wlan00\nssid=bob\nchannel=1\nhw_mode=b\n"
97
+ end
98
+
99
+ 3.times { @command.expect(:run, true) }
100
+
101
+ @wlan00.configure_mode(mode: 'master', channel: 1, essid: 'bob', hw_mode: 'n')
102
+ File.open("/tmp/hostapd.wlan00.conf") do |f|
103
+ f.read.must_match "driver=nl80211\ninterface=wlan00\nssid=bob\nchannel=1\nhw_mode=g\nwmm_enabled=1\nieee80211n=1\nht_capab=\[HT20\-\]\n"
104
+ end
105
+
106
+ 3.times { @command.expect(:run, true) }
107
+
108
+ @wlan00.configure_mode(mode: 'master', channel: 16, essid: 'bob', hw_mode: 'n')
109
+ File.open("/tmp/hostapd.wlan00.conf") do |f|
110
+ f.read.must_match "driver=nl80211\ninterface=wlan00\nssid=bob\nchannel=16\nhw_mode=a\nwmm_enabled=1\nieee80211n=1\nht_capab=\[HT20\-\]\n"
111
+ end
112
+
113
+ @command.verify
114
+ end
115
+ end
116
+
117
+ it "must be able to configure as managed mode" do
118
+ Cocaine::CommandLine.stub(:new, @command) do
119
+ 3.times { @command.expect(:run, true) }
120
+
121
+ @wlan00.configure_mode(mode: 'managed', essid: 'bob')
122
+ File.open("/tmp/wpa.wlan00.conf") do |f|
123
+ f.read.must_match "network={\n ssid=\"bob\"\n scan_ssid=1\n key_mgmt=NONE\n}"
124
+ end
125
+
126
+ @command.verify
127
+ end
128
+ end
129
+
130
+ it "must be able to configure as adhoc/ibss mode" do
131
+ Cocaine::CommandLine.stub(:new, @command) do
132
+ 4.times { @command.expect(:run, true) }
133
+
134
+ @wlan00.configure_mode(mode: 'adhoc', essid: 'bob', frequency: 2412)
135
+ @command.verify
136
+ end
137
+ end
138
+
139
+ it "must be able to configure as monitor mode" do
140
+ Cocaine::CommandLine.stub(:new, @command) do
141
+ 3.times { @command.expect(:run, true) }
142
+
143
+ @wlan00.configure_mode(mode: 'monitor')
144
+ @command.verify
145
+ end
146
+ end
36
147
  end
37
148
  end
38
149
  end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+ require 'omf_rc/util/mock'
3
+
4
+ describe OmfRc::Util::Mock do
5
+ describe "when included in the resource proxy" do
6
+ before do
7
+ module OmfRc::ResourceProxy::MockTest
8
+ include OmfRc::ResourceProxyDSL
9
+ register_proxy :mock_test
10
+ utility :mock
11
+ end
12
+ @mock = OmfRc::ResourceFactory.new(:mock_test)
13
+ end
14
+
15
+ it "must have these demo methods available" do
16
+ @mock.request_nothing.must_equal @mock.uid
17
+ @mock.configure_nothing
18
+ @mock.configure_hrn "bob"
19
+ @mock.request_hrn.must_equal "bob"
20
+ @mock.request_resource_proxy_list.must_equal OmfRc::ResourceFactory.proxy_list
21
+ OmfCommon::Command.stub :execute, "bob_os" do
22
+ @mock.request_kernel_version.must_equal "bob_os"
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,9 +1,8 @@
1
1
  require 'test_helper'
2
- require 'mock_helper'
3
2
  require 'omf_rc/util/mod'
4
3
 
5
4
  describe OmfRc::Util::Mod do
6
- describe "when included in the resource instance" do
5
+ describe "when included in the resource proxy" do
7
6
  before do
8
7
  module OmfRc::ResourceProxy::ModTest
9
8
  include OmfRc::ResourceProxyDSL
@@ -12,19 +11,17 @@ describe OmfRc::Util::Mod do
12
11
  end
13
12
  end
14
13
 
15
- after do
16
- mock_verify_execute
17
- end
18
-
19
14
  it "will find out a list of modules" do
20
- mock_execute(fixture("lsmod"), "lsmod")
21
- OmfRc::ResourceFactory.new(:mod_test).request_modules.must_include "kvm"
22
- OmfRc::ResourceFactory.new(:mod_test).request_modules.wont_include "Module"
15
+ OmfCommon::Command.stub :execute, fixture("lsmod") do
16
+ OmfRc::ResourceFactory.new(:mod_test).request_modules.must_include "kvm"
17
+ OmfRc::ResourceFactory.new(:mod_test).request_modules.wont_include "Module"
18
+ end
23
19
  end
24
20
 
25
21
  it "could load a module" do
26
- mock_execute(nil, /modprobe */)
27
- OmfRc::ResourceFactory.new(:mod_test).configure_load_module('magic_module').must_be_nil
22
+ OmfCommon::Command.stub :execute, true do
23
+ OmfRc::ResourceFactory.new(:mod_test).configure_load_module('magic_module').must_equal true
24
+ end
28
25
  end
29
26
  end
30
27
  end
data/test/test_helper.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'simplecov'
2
+ SimpleCov.start { add_filter "/test" }
3
+
1
4
  gem 'minitest'
2
5
  require 'minitest/autorun'
3
6
  require 'minitest/pride'
@@ -5,5 +8,13 @@ require 'minitest/pride'
5
8
  require 'omf_rc'
6
9
  require 'omf_rc/resource_factory'
7
10
 
11
+ # Default fixture directory
12
+ FIXTURE_DIR = "#{File.dirname(__FILE__)}/fixture"
13
+
8
14
  # Shut up all the loggers
9
15
  Logging.logger.root.clear_appenders
16
+
17
+ # Reading fixture file
18
+ def fixture(name)
19
+ File.read("#{FIXTURE_DIR}/#{name.to_s}")
20
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omf_rc
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0.pre.5
4
+ version: 6.0.0.pre.6
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-17 00:00:00.000000000 Z
12
+ date: 2012-10-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 2.11.3
21
+ version: '3.2'
22
22
  type: :development
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 2.11.3
29
+ version: '3.2'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: em-minitest-spec
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -43,6 +43,22 @@ dependencies:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
45
  version: 1.1.1
46
+ - !ruby/object:Gem::Dependency
47
+ name: simplecov
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
46
62
  - !ruby/object:Gem::Dependency
47
63
  name: omf_common
48
64
  requirement: !ruby/object:Gem::Requirement
@@ -59,6 +75,22 @@ dependencies:
59
75
  - - ~>
60
76
  - !ruby/object:Gem::Version
61
77
  version: 6.0.0.pre
78
+ - !ruby/object:Gem::Dependency
79
+ name: cocaine
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 0.3.0
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 0.3.0
62
94
  description: Resource controller of OMF, a generic framework for controlling and managing
63
95
  networking testbeds.
64
96
  email:
@@ -78,26 +110,49 @@ files:
78
110
  - lib/omf_rc/message_process_error.rb
79
111
  - lib/omf_rc/resource_factory.rb
80
112
  - lib/omf_rc/resource_proxy/abstract_resource.rb
113
+ - lib/omf_rc/resource_proxy/generic_application.rb
81
114
  - lib/omf_rc/resource_proxy/mock.rb
115
+ - lib/omf_rc/resource_proxy/net.rb
82
116
  - lib/omf_rc/resource_proxy/node.rb
83
- - lib/omf_rc/resource_proxy/wifi.rb
117
+ - lib/omf_rc/resource_proxy/openflow_slice.rb
118
+ - lib/omf_rc/resource_proxy/openflow_slice_factory.rb
119
+ - lib/omf_rc/resource_proxy/wlan.rb
84
120
  - lib/omf_rc/resource_proxy_dsl.rb
121
+ - lib/omf_rc/util/common_tools.rb
122
+ - lib/omf_rc/util/hostapd.rb
123
+ - lib/omf_rc/util/ip.rb
85
124
  - lib/omf_rc/util/iw.rb
86
125
  - lib/omf_rc/util/mock.rb
87
126
  - lib/omf_rc/util/mod.rb
127
+ - lib/omf_rc/util/openflow_tools.rb
88
128
  - lib/omf_rc/util/package.rb
129
+ - lib/omf_rc/util/platform_tools.rb
130
+ - lib/omf_rc/util/wpa.rb
89
131
  - lib/omf_rc/version.rb
90
132
  - omf_rc.gemspec
133
+ - test/fixture/ip/addr_show
91
134
  - test/fixture/iw/help
135
+ - test/fixture/iw/info
92
136
  - test/fixture/iw/link
93
137
  - test/fixture/lsmod
94
- - test/mock_helper.rb
138
+ - test/fixture/sys/class/ieee80211/phy0/device/uevent
139
+ - test/fixture/sys/class/ieee80211/phy0/uevent
140
+ - test/fixture/sys/class/net/eth0/device/uevent
141
+ - test/fixture/sys/class/net/eth0/uevent
142
+ - test/fixture/sys/class/net/wlan0/device/uevent
143
+ - test/fixture/sys/class/net/wlan0/uevent
95
144
  - test/omf_rc/deferred_process_spec.rb
145
+ - test/omf_rc/message_process_error_spec.rb
96
146
  - test/omf_rc/resource_factory_spec.rb
97
147
  - test/omf_rc/resource_proxy/abstract_resource_spec.rb
148
+ - test/omf_rc/resource_proxy/generic_application_spec.rb
149
+ - test/omf_rc/resource_proxy/mock_spec.rb
98
150
  - test/omf_rc/resource_proxy/node_spec.rb
99
151
  - test/omf_rc/resource_proxy_dsl_spec.rb
152
+ - test/omf_rc/util/common_tools_spec.rb
153
+ - test/omf_rc/util/ip_spec.rb
100
154
  - test/omf_rc/util/iw_spec.rb
155
+ - test/omf_rc/util/mock_spec.rb
101
156
  - test/omf_rc/util/mod_spec.rb
102
157
  - test/test_helper.rb
103
158
  homepage: https://www.mytestbed.net
@@ -125,3 +180,4 @@ signing_key:
125
180
  specification_version: 3
126
181
  summary: OMF resource controller
127
182
  test_files: []
183
+ has_rdoc:
@@ -1,8 +0,0 @@
1
- module OmfRc::ResourceProxy::Wifi
2
- include OmfRc::ResourceProxyDSL
3
-
4
- register_proxy :wifi
5
-
6
- utility :mod
7
- utility :iw
8
- end
data/test/mock_helper.rb DELETED
@@ -1,15 +0,0 @@
1
- FIXTURE_DIR = "#{File.dirname(__FILE__)}/fixture"
2
-
3
- OmfCommon::Command = MiniTest::Mock.new
4
-
5
- def mock_execute(result, command_pattern)
6
- OmfCommon::Command.expect :execute, result, [command_pattern]
7
- end
8
-
9
- def mock_verify_execute
10
- OmfCommon::Command.verify
11
- end
12
-
13
- def fixture(name)
14
- File.read("#{FIXTURE_DIR}/#{name.to_s}")
15
- end