carioca 0.1 → 1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -20,6 +20,14 @@ describe Carioca do
20
20
  context "Carioca::Services::Registry" do
21
21
  subject { $carioca }
22
22
  context "#init" do
23
+ it "should be a Singleton" do
24
+ carioca1 = Carioca::Services::Registry.init
25
+ carioca2 = Carioca::Services::Registry.init
26
+ test = (carioca1.inspect == carioca2.inspect)
27
+ test.should be_true
28
+ end
29
+
30
+
23
31
  it { should be_an_instance_of Carioca::Services::Registry }
24
32
  it { $carioca.list.keys.should include "logger" }
25
33
  it "should log Registry starting and logger init if debug mode", :if => $debug do
@@ -71,6 +79,14 @@ describe Carioca do
71
79
  it { subject.loaded_services.should be_an_instance_of Hash }
72
80
  it { $carioca.loaded_services.keys.should eq ["logger"] }
73
81
  end
82
+
83
+ context "#registry_filename" do
84
+ it { should respond_to :registry_filename }
85
+ it { should respond_to :registry_filename= }
86
+ it { subject.registry_filename.should be_an_instance_of String }
87
+ it { $carioca.registry_filename.should eq "spec/config/services.registry" }
88
+ end
89
+
74
90
  end
75
91
 
76
92
  context "#start_service" do
@@ -79,7 +95,7 @@ describe Carioca do
79
95
 
80
96
  context "Builtin services" do
81
97
  context "Logger service" do
82
- it "should be possible to get the logger service" do
98
+ it "should be possible to get the builtin logger service" do
83
99
  $logger = subject.get_service :name => 'logger'
84
100
  end
85
101
  it "should log if debug mode", :if => $debug do
@@ -92,20 +108,61 @@ describe Carioca do
92
108
 
93
109
 
94
110
  context "Debug Proxy Service" do
95
- it "should start the registry with a service debug" do
96
- myservice = subject.start_service :name => 'debug' , :params => {:service => 'configuration'}
111
+ it "should start the builtin service debug" do
112
+ myservice = subject.start_service :name => 'debug' , :params => {:service => 'dummy'}
97
113
  myservice.test 'titi'
98
114
  end
99
115
  it { subject.list.keys.should include "debug" }
100
116
  it "should log a proxy service log sequence" do
101
- open('/tmp/log.file').grep(/DEBUG -- ProxyDebug: BEGIN CALL for mapped service configuration/).size.should eq 1
117
+ open('/tmp/log.file').grep(/DEBUG -- ProxyDebug: BEGIN CALL for mapped service dummy/).size.should eq 1
102
118
  open('/tmp/log.file').grep(/DEBUG -- ProxyDebug: called: test/).size.should eq 1
103
119
  open('/tmp/log.file').grep(/DEBUG -- ProxyDebug: args : titi/).size.should eq 1
104
- open('/tmp/log.file').grep(/DEBUG -- ProxyDebug: => returned: toto/).size.should eq 1
120
+ open('/tmp/log.file').grep(/DEBUG -- ProxyDebug: => returned: OK/).size.should eq 1
105
121
  open('/tmp/log.file').grep(/DEBUG -- ProxyDebug: END CALL/).size.should eq 1
106
122
  end
107
-
108
123
  end
124
+
125
+ context "Configuration Service" do
126
+ it "should start the builtin configuration service" do
127
+ $conf = subject.start_service :name => 'configuration'
128
+ end
129
+ it "should access flat settings" do
130
+ $conf.settings.context1.key.should eq 'value'
131
+ $conf.settings.context1.node.key1 eq 'value1'
132
+ $conf.settings.context1.node.key2 eq 'value2'
133
+ $conf.settings.context2.key.should eq 'value'
134
+ $conf.settings.context2.node.key1 eq 'value3'
135
+ $conf.settings.context2.node.key2 eq 'value4'
136
+ end
137
+ it "should access contextualized settings" do
138
+ $conf = subject.restart_service :name => 'configuration', :params => { :context => 'context2' }
139
+ $conf.settings.key.should eq 'value'
140
+ $conf.settings.node.key1 eq 'value3'
141
+ $conf.settings.node.key2 eq 'value4'
142
+ end
143
+ it "should access inherited settings from YAML" do
144
+ $conf = subject.restart_service :name => 'configuration', :params => { :context => 'context3' }
145
+ $conf.settings.key.should eq 'value'
146
+ $conf.settings.node.key1 eq 'value3'
147
+ $conf.settings.node.key2 eq 'value4'
148
+ end
149
+ it "should be possible to override a config value" do
150
+ $conf.settings.node.key2 = 'value8'
151
+ $conf.settings.node.key2.should eq 'value8'
152
+ end
153
+ it { $conf.should respond_to :config_file }
154
+ it { $conf.should respond_to :config_file= }
155
+ it { $conf.should respond_to :save! }
156
+
157
+ it "should be saved in other file" do
158
+ $conf.config_file = '/tmp/.config'
159
+ $conf.save!.should be_true
160
+ end
161
+ it "should stop the configuration service" do
162
+ subject.stop_service({:name => 'configuration'}).should eq true
163
+ end
164
+ end
165
+
109
166
  end
110
167
  context "External services" do
111
168
 
@@ -154,34 +211,115 @@ describe Carioca do
154
211
  it "should not log if debug mode and service not loaded", :unless => $debug do
155
212
  open('/tmp/log.file').grep(/DEBUG -- Carioca: Service dum not loaded/).size.should = 0
156
213
  end
214
+ it "should return false if service :name is logger" do
215
+ subject.stop_service({:name => 'logger'}).should eq false
216
+ end
217
+ it "should log if debug mode and service :name is logger", :if => $debug do
218
+ open('/tmp/log.file').grep(/DEBUG -- Carioca: Service logger can't be unloaded/).size.should >= 1
219
+ end
220
+ it "should not log if debug mode and service :name is logger", :unless => $debug do
221
+ open('/tmp/log.file').grep(/DEBUG -- Carioca: Service logger can't be unloaded/).size.should = 0
222
+ end
157
223
 
158
224
 
159
225
  end
160
226
 
161
227
  context "#restart_service" do
162
- pending
163
- end
228
+ it { should respond_to :start_service }
229
+ it "should start an instance of a service like dummy_one" do
230
+ $dummy = subject.restart_service :name => 'dummy_one'
231
+ $dummy = subject.restart_service :name => 'dummy'
232
+ $dummy.should be_an_instance_of ExternalServices::Dummy
233
+ $carioca.loaded_services.keys.should include 'dummy'
234
+ $carioca.loaded_services.keys.should include 'dummy_one'
235
+ end
236
+ it "should restart a service already loaded and log it" do
237
+ $dummy = subject.restart_service :name => 'dummy'
238
+ end
239
+ it "should log it if debug mode", :if => $debug do
240
+ open('/tmp/log.file').grep(/DEBUG -- Carioca: Restarting service dummy/).size.should eq 1
241
+ end
242
+ it "should not log it if not debug mode", :if => $debug do
243
+ open('/tmp/log.file').grep(/DEBUG -- Carioca: Restarting service dummy/).size.should eq 1
244
+ end
164
245
 
246
+ end
165
247
 
166
248
 
249
+ context "#unregister_service" do
250
+ it { should respond_to :unregister_service }
251
+ it "should be possible te unregistered the configuration service" do
252
+ subject.list.keys.should include "configuration"
253
+ subject.unregister_service :name => "configuration"
254
+ subject.list.keys.should_not include "configuration"
255
+ end
256
+ it "should raise RegistryError if trying to unregister logger" do
257
+ lambda { subject.unregister_service :name => "logger"}.should raise_error RegistryError
258
+ end
259
+ it "should raise RegistryError if trying to unregister a loaded service" do
260
+ lambda { subject.unregister_service :name => "dummy"}.should raise_error RegistryError
261
+ end
262
+
263
+ end
167
264
 
168
- context "#discover_builtin" do
169
- pending
265
+ context "#discover_builtins" do
266
+ it { should respond_to :discover_builtins }
267
+ it "should rebuild builtin service in @list" do
268
+ subject.discover_builtins
269
+ subject.list.keys.should include "configuration"
270
+ end
170
271
  end
272
+
171
273
  context "#register_service" do
172
- pending
173
- end
174
- context "#unregister_service" do
175
- pending
274
+ it { should respond_to :register_service }
275
+ it "should add a new service" do
276
+ subject.register_service :name => 'otherdummy',
277
+ :type => :file,
278
+ :resource => 'spec/samples/otherdummy.rb',
279
+ :service =>'ExternalServices::OtherDummy',
280
+ :description => 'An other Dummy Service',
281
+ :requires => ['requireddummy']
282
+ end
283
+ it "should raised RegistryError if started without a registered required service" do
284
+ lambda { subject.start_service :name => 'otherdummy' }.should raise_error RegistryError
285
+ end
286
+ it "should follow requires when started" do
287
+ subject.register_service :name => 'requireddummy',
288
+ :type => :file,
289
+ :resource => 'spec/samples/requireddummy.rb',
290
+ :service =>'ExternalServices::RequiredDummy',
291
+ :description => 'An other Dummy Service'
292
+ subject.start_service :name => 'otherdummy'
293
+ open('/tmp/log.file').grep(/DEBUG -- Carioca: Registry dependancy found and not loaded : requireddummy/).size.should eq 1
294
+ subject.loaded_services.keys.should include 'requireddummy'
295
+ subject.loaded_services.keys.should include 'otherdummy'
296
+ end
297
+ it "should raise Argument error if :type is not :gem, :file or :builtin" do
298
+ lambda { subject.register_service :name => 'otherdummy',
299
+ :type => :error,
300
+ :resource => 'spec/samples/otherdummy.rb',
301
+ :service =>'ExternalServices::OtherDummy',
302
+ :description => 'An other Dummy Service'}.should raise_error ArgumentError
303
+
304
+ end
176
305
  end
177
306
 
307
+
308
+
178
309
 
179
310
 
180
311
  context "#save!" do
181
312
  it { should respond_to :save! }
182
- it "should save the config" do
183
- subject.save!.should eq true
184
- end
313
+ it "should save the config to an other file @registry_filename" do
314
+ File::unlink('/tmp/test.reg') if File::exist?('/tmp/test.reg')
315
+ prev = subject.registry_filename
316
+ subject.registry_filename = '/tmp/test.reg'
317
+ subject.save!
318
+ File::exist?('/tmp/test.reg').should be_true
319
+ subject.registry_filename = prev
320
+ subject.registry_filename.should eq "spec/config/services.registry"
321
+ end
322
+
185
323
  end
186
324
 
187
325
 
@@ -199,12 +337,12 @@ describe Carioca do
199
337
  open('/tmp/log.file').grep(/DEBUG -- Carioca: closing Registry .../).size.should eq 0
200
338
  end
201
339
  it "should log a stopping notification for each services if debug mode", :if => $debug do
202
- ['debug','uuid','configuration'].each do |service|
340
+ ['debug','uuid'].each do |service|
203
341
  open('/tmp/log.file').grep(/DEBUG -- Carioca: Stopping service #{service} .../).size.should eq 1
204
342
  end
205
343
  end
206
344
  it "should not log a stopping notification for each services if not debug mode", :unless => $debug do
207
- ['debug','uuid','configuration'].each do |service|
345
+ ['debug','uuid'].each do |service|
208
346
  open('/tmp/log.file').grep(/DEBUG -- Carioca: Stopping service #{service} .../).size.should eq 0
209
347
  end
210
348
  end
@@ -1,32 +1,32 @@
1
1
  ---
2
2
  uuid:
3
3
  :type: :gem
4
- :service: UUID
5
- :description: a Rubygems called uuid to build UUID ids.
6
4
  :resource: uuid
5
+ :description: a Rubygems called uuid to build UUID ids.
6
+ :service: UUID
7
7
  logger:
8
8
  :type: :builtin
9
- :service: Carioca::Services::InternalLogger
10
- :description: The standard ruby Logger internal wrapper Service
11
9
  :resource: logger
12
10
  :init_options:
13
11
  :target: /tmp/log.file
12
+ :description: The standard ruby Logger internal wrapper Service
13
+ :service: Carioca::Services::InternalLogger
14
14
  dummy:
15
15
  :type: :file
16
- :service: ExternalServices::Dummy
17
- :description: a dummy test service
18
16
  :resource: spec/samples/dummy.rb
17
+ :description: a dummy test service
18
+ :service: ExternalServices::Dummy
19
19
  debug:
20
20
  :type: :builtin
21
- :service: Carioca::Services::ProxyDebug
22
- :description: Class Proxy debug logger Service
23
21
  :resource: debug
24
22
  :init_options:
25
- :service: configuration
26
- configuration:
23
+ :service: dummy
24
+ :description: Class Proxy debug logger Service
25
+ :service: Carioca::Services::ProxyDebug
26
+ configuration:
27
27
  :type: :builtin
28
- :service: Carioca::Services::Configuration
29
- :description: Configuration Agent Service
30
28
  :resource: configuration
31
- :init_options:
32
- :config_file: ./.config
29
+ :description: The configuration service of Carioca
30
+ :service: Carioca::Services::Configuration
31
+ :init_options:
32
+ :config_file: spec/config/.config
@@ -3,7 +3,7 @@ module ExternalServices
3
3
  def initialize
4
4
  end
5
5
 
6
- def test
6
+ def test(arg = nil)
7
7
  return 'OK'
8
8
  end
9
9
  end
@@ -0,0 +1,10 @@
1
+ module ExternalServices
2
+ class OtherDummy
3
+ def initialize
4
+ end
5
+
6
+ def test(arg = nil)
7
+ return 'OK'
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module ExternalServices
2
+ class RequiredDummy
3
+ def initialize
4
+ end
5
+
6
+ def test(arg = nil)
7
+ return 'OK'
8
+ end
9
+ end
10
+ end
@@ -6,7 +6,7 @@ ClassNameCheck:
6
6
  pattern: !ruby/regexp /^[A-Z][a-zA-Z0-9]*$/
7
7
  #ClassVariableCheck:
8
8
  CyclomaticComplexityBlockCheck:
9
- complexity: 4
9
+ complexity: 5
10
10
  CyclomaticComplexityMethodCheck:
11
11
  complexity: 10
12
12
  EmptyRescueBodyCheck:
metadata CHANGED
@@ -3,9 +3,9 @@ name: carioca
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
- - 0
7
6
  - 1
8
- version: "0.1"
7
+ - 0
8
+ version: "1.0"
9
9
  platform: ruby
10
10
  authors:
11
11
  - Romain GEORGES
@@ -17,18 +17,17 @@ date: 2013-02-18 00:00:00 +01:00
17
17
  default_executable:
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
- name: rspec
20
+ name: methodic
21
21
  prerelease: false
22
22
  requirement: &id001 !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  segments:
27
+ - 1
27
28
  - 2
28
- - 0
29
- - 0
30
- version: 2.0.0
31
- type: :development
29
+ version: "1.2"
30
+ type: :runtime
32
31
  version_requirements: *id001
33
32
  description: "Carioca : provide a full IoC light Container for designing your applications"
34
33
  email: romain@ultragreen.net
@@ -40,6 +39,8 @@ extra_rdoc_files: []
40
39
 
41
40
  files:
42
41
  - spec/samples/dummy.rb
42
+ - spec/samples/requireddummy.rb
43
+ - spec/samples/otherdummy.rb
43
44
  - spec/config/services.registry
44
45
  - lib/services/configuration.rb
45
46
  - lib/services/debug.rb
@@ -49,6 +50,7 @@ files:
49
50
  - spec/carioca_spec.rb
50
51
  - lib/carioca.rb
51
52
  - lib/services.rb
53
+ - lib/carioca_private.rb
52
54
  - doc/manual.rdoc
53
55
  - carioca.gemspec
54
56
  - Rakefile
@@ -59,6 +61,7 @@ files:
59
61
  - COPYRIGHT
60
62
  - ultragreen_roodi_coding_convention.yml
61
63
  - AUTHORS
64
+ - README.md
62
65
  has_rdoc: true
63
66
  homepage: http://www.ultragreen.net
64
67
  licenses: []