omf_ec 6.1.2 → 6.1.3.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -0
- data/example/config/default.yml +6 -0
- data/example/config/with_custom_logging.yml +29 -0
- data/lib/omf_ec/backward/dsl.rb +1 -8
- data/lib/omf_ec/dsl.rb +24 -9
- data/lib/omf_ec/experiment.rb +1 -0
- data/lib/omf_ec/group.rb +1 -1
- data/lib/omf_ec/runner.rb +21 -2
- data/test/omf_ec/dsl_spec.rb +18 -5
- metadata +9 -10
data/Gemfile
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
communication:
|
2
|
+
url: amqp://localhost
|
3
|
+
|
4
|
+
# By providing logging section, you can modify log message location and layout
|
5
|
+
#
|
6
|
+
# In this example, these setting are identical to EC default
|
7
|
+
logging:
|
8
|
+
level:
|
9
|
+
default: debug
|
10
|
+
appenders:
|
11
|
+
# To STDOUT
|
12
|
+
stdout:
|
13
|
+
level: info
|
14
|
+
date_pattern: "%H:%M:%S"
|
15
|
+
pattern: "%d %5l %c{2}: %m\n"
|
16
|
+
color_schema: default
|
17
|
+
# To Rolling log file, and log everything
|
18
|
+
rolling_file:
|
19
|
+
level: all
|
20
|
+
log_dir: /var/tmp
|
21
|
+
# max 50mb of each log file
|
22
|
+
size: 52428800
|
23
|
+
# keep a 5 logs in total
|
24
|
+
keep: 5
|
25
|
+
date_pattern: "%F %T %z"
|
26
|
+
pattern: "[%d] %-5l %c: %m\n"
|
27
|
+
|
28
|
+
# Use OML server located at localhost port 3003
|
29
|
+
oml_uri: tcp:localhost:3003
|
data/lib/omf_ec/backward/dsl.rb
CHANGED
@@ -16,6 +16,7 @@ module OmfEc
|
|
16
16
|
v5_style(:allGroups, base)
|
17
17
|
v5_style(:allNodes!, base)
|
18
18
|
v5_style(:defGraph, base)
|
19
|
+
v5_style(:defGroup, base)
|
19
20
|
v5_style(:loadOEDL, base)
|
20
21
|
v5_style(:ensureProperty, base)
|
21
22
|
end
|
@@ -37,14 +38,6 @@ module OmfEc
|
|
37
38
|
def_application(name,&block)
|
38
39
|
end
|
39
40
|
|
40
|
-
def defGroup(name, *members, &block)
|
41
|
-
group = OmfEc::Group.new(name)
|
42
|
-
OmfEc.experiment.add_group(group)
|
43
|
-
group.add_resource(*members)
|
44
|
-
|
45
|
-
block.call(group) if block
|
46
|
-
end
|
47
|
-
|
48
41
|
# Wait for some time before issuing more commands
|
49
42
|
#
|
50
43
|
# @param [Fixnum] duration Time to wait in seconds (can be
|
data/lib/omf_ec/dsl.rb
CHANGED
@@ -49,7 +49,6 @@ module OmfEc
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
-
|
53
52
|
# Use EM timer to execute after certain time
|
54
53
|
#
|
55
54
|
# @example do something after 2 seconds
|
@@ -78,16 +77,32 @@ module OmfEc
|
|
78
77
|
#
|
79
78
|
# @param [String] name name of the group
|
80
79
|
#
|
81
|
-
# @example add resource 'a' to group '
|
82
|
-
#
|
83
|
-
#
|
80
|
+
# @example add resource 'a', 'b' to group 'My_Pinger'
|
81
|
+
#
|
82
|
+
# defGroup('My_Pinger', 'a', 'b') do |g|
|
83
|
+
# g.addApplication("ping") do |app|
|
84
|
+
# app.setProperty('target', 'mytestbed.net')
|
85
|
+
# app.setProperty('count', 3)
|
86
|
+
# end
|
84
87
|
# end
|
85
88
|
#
|
86
|
-
#
|
87
|
-
|
88
|
-
|
89
|
+
# # Or pass resources as an array
|
90
|
+
#
|
91
|
+
# res_array = ['a', 'b']
|
92
|
+
#
|
93
|
+
# defGroup('My_Pinger', res_array) do |g|
|
94
|
+
# g.addApplication("ping") do |app|
|
95
|
+
# app.setProperty('target', 'mytestbed.net')
|
96
|
+
# app.setProperty('count', 3)
|
97
|
+
# end
|
98
|
+
# end
|
99
|
+
#
|
100
|
+
def def_group(name, *members, &block)
|
101
|
+
group = OmfEc::Group.new(name)
|
89
102
|
OmfEc.experiment.add_group(group)
|
90
|
-
group
|
103
|
+
group.add_resource(*members)
|
104
|
+
|
105
|
+
block.call(group) if block
|
91
106
|
end
|
92
107
|
|
93
108
|
# Get a group instance
|
@@ -255,7 +270,7 @@ module OmfEc
|
|
255
270
|
rescue Exception => e
|
256
271
|
error "Fail loading built-in OEDL library '#{location}': #{e}"
|
257
272
|
end
|
258
|
-
when :file, :http
|
273
|
+
when :file, :http, :https
|
259
274
|
begin
|
260
275
|
file = Tempfile.new("oedl-#{Time.now.to_i}")
|
261
276
|
# see: http://stackoverflow.com/questions/7578898
|
data/lib/omf_ec/experiment.rb
CHANGED
@@ -210,6 +210,7 @@ module OmfEc
|
|
210
210
|
g.resources[type: 'application'].release unless g.app_contexts.empty?
|
211
211
|
g.resources[type: 'net'].release unless g.net_ifs.find_all { |v| v.conf[:type] == 'net' }.empty?
|
212
212
|
g.resources[type: 'wlan'].release unless g.net_ifs.find_all { |v| v.conf[:type] == 'wlan' }.empty?
|
213
|
+
g.resources.membership = { leave: g.address }
|
213
214
|
end
|
214
215
|
|
215
216
|
OmfCommon.el.after(4) do
|
data/lib/omf_ec/group.rb
CHANGED
@@ -62,6 +62,7 @@ module OmfEc
|
|
62
62
|
#
|
63
63
|
# Resources to be added could be a list of resources, groups, or the mixture of both.
|
64
64
|
def add_resource(*names)
|
65
|
+
names.flatten!
|
65
66
|
synchronize do
|
66
67
|
# Recording membership first, used for ALL_UP event
|
67
68
|
names.each do |name|
|
@@ -75,7 +76,6 @@ module OmfEc
|
|
75
76
|
end
|
76
77
|
end
|
77
78
|
|
78
|
-
|
79
79
|
# Create a set of new resources and add them to the group
|
80
80
|
#
|
81
81
|
# @param [String] name
|
data/lib/omf_ec/runner.rb
CHANGED
@@ -25,6 +25,24 @@ module OmfEc
|
|
25
25
|
@config_opts = Mash.new(
|
26
26
|
environment: 'development',
|
27
27
|
communication: { url: "amqp://localhost" },
|
28
|
+
logging: {
|
29
|
+
level: { default: 'debug' },
|
30
|
+
appenders: {
|
31
|
+
stdout: {
|
32
|
+
level: :info,
|
33
|
+
date_pattern: '%H:%M:%S',
|
34
|
+
pattern: '%d %5l %c{2}: %m\n'
|
35
|
+
},
|
36
|
+
rolling_file: {
|
37
|
+
level: :debug,
|
38
|
+
log_dir: '/var/tmp',
|
39
|
+
size: 1024*1024*50, # max 50mb of each log file
|
40
|
+
keep: 5, # keep a 5 logs in total
|
41
|
+
date_pattern: '%F %T %z',
|
42
|
+
pattern: '[%d] %-5l %c: %m\n'
|
43
|
+
},
|
44
|
+
}
|
45
|
+
}
|
28
46
|
)
|
29
47
|
|
30
48
|
@cmd_opts = Mash.new
|
@@ -113,7 +131,7 @@ module OmfEc
|
|
113
131
|
exit
|
114
132
|
end
|
115
133
|
|
116
|
-
op.on("-d", "--debug", "Debug mode (
|
134
|
+
op.on("-d", "--debug", "Debug mode (Set logging level in Stdout to :debug)") do
|
117
135
|
@cmd_opts[:debug] = true
|
118
136
|
remove_cmd_opts_from_argv("-d", "--debug")
|
119
137
|
end
|
@@ -219,6 +237,8 @@ module OmfEc
|
|
219
237
|
|
220
238
|
if @config_opts[:debug]
|
221
239
|
Logging.logger.root.level = 'debug'
|
240
|
+
stdout_appender = Logging.logger.root.appenders.find { |a| a.class == Logging::Appenders::Stdout }
|
241
|
+
stdout_appender.level = 'debug' if stdout_appender
|
222
242
|
else
|
223
243
|
Logging.consolidate 'OmfCommon', 'OmfRc'
|
224
244
|
end
|
@@ -280,7 +300,6 @@ module OmfEc
|
|
280
300
|
def init
|
281
301
|
oml_init
|
282
302
|
setup_experiment
|
283
|
-
#load_experiment
|
284
303
|
end
|
285
304
|
|
286
305
|
def run
|
data/test/omf_ec/dsl_spec.rb
CHANGED
@@ -20,6 +20,24 @@ describe OmfEc::DSL do
|
|
20
20
|
OmfEc.unstub(:subscribe_and_monitor)
|
21
21
|
end
|
22
22
|
|
23
|
+
describe "when calling defGroup" do
|
24
|
+
it "must be able to accept a list of arguments" do
|
25
|
+
@dsl.defGroup('bob', 'a', 'b') do |g|
|
26
|
+
g.members.keys.must_include 'a'
|
27
|
+
g.members.keys.must_include 'b'
|
28
|
+
g.must_be_kind_of OmfEc::Group
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
it "must be able to accept array as arguments" do
|
33
|
+
array = %w(c d)
|
34
|
+
@dsl.defGroup('bob', array) do |g|
|
35
|
+
g.members.keys.must_include 'c'
|
36
|
+
g.members.keys.must_include 'd'
|
37
|
+
g.must_be_kind_of OmfEc::Group
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
23
41
|
|
24
42
|
describe "when included" do
|
25
43
|
it "must respond to after and every" do
|
@@ -46,11 +64,6 @@ describe OmfEc::DSL do
|
|
46
64
|
@dsl.group('bob').must_equal g
|
47
65
|
end
|
48
66
|
|
49
|
-
it "must respond to def_group" do
|
50
|
-
block = proc { 1 }
|
51
|
-
@dsl.def_group('bob', &block).must_be_kind_of OmfEc::Group
|
52
|
-
end
|
53
|
-
|
54
67
|
it "must respond to all_groups iterator" do
|
55
68
|
block = proc { 1 }
|
56
69
|
@dsl.all_groups(&block)
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omf_ec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.1.
|
5
|
-
prerelease:
|
4
|
+
version: 6.1.3.pre.1
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- NICTA
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-07-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: minitest
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
requirements:
|
99
99
|
- - '='
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: 6.1.
|
101
|
+
version: 6.1.3.pre.1
|
102
102
|
type: :runtime
|
103
103
|
prerelease: false
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -106,7 +106,7 @@ dependencies:
|
|
106
106
|
requirements:
|
107
107
|
- - '='
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: 6.1.
|
109
|
+
version: 6.1.3.pre.1
|
110
110
|
- !ruby/object:Gem::Dependency
|
111
111
|
name: sequel
|
112
112
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +136,8 @@ files:
|
|
136
136
|
- Gemfile
|
137
137
|
- Rakefile
|
138
138
|
- bin/omf_ec
|
139
|
+
- example/config/default.yml
|
140
|
+
- example/config/with_custom_logging.yml
|
139
141
|
- example/engine_oedl.rb
|
140
142
|
- example/engine_test.rb
|
141
143
|
- example/test_exp/test00.rb
|
@@ -193,12 +195,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
193
195
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
196
|
none: false
|
195
197
|
requirements:
|
196
|
-
- - ! '
|
198
|
+
- - ! '>'
|
197
199
|
- !ruby/object:Gem::Version
|
198
|
-
version:
|
199
|
-
segments:
|
200
|
-
- 0
|
201
|
-
hash: -2232053717488476374
|
200
|
+
version: 1.3.1
|
202
201
|
requirements: []
|
203
202
|
rubyforge_project: omf_ec
|
204
203
|
rubygems_version: 1.8.23
|