carioca 1.3 → 1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/ChangeLog +4 -1
- data/Rakefile +13 -6
- data/carioca.gemspec +20 -21
- data/lib/carioca.rb +53 -53
- data/lib/carioca/exceptions.rb +1 -1
- data/lib/carioca/helpers.rb +3 -3
- data/lib/carioca/private.rb +24 -26
- data/lib/carioca/services.rb +10 -10
- data/lib/carioca/services/configuration.rb +31 -29
- data/lib/carioca/services/debug.rb +8 -10
- data/lib/carioca/services/logger.rb +13 -13
- data/lib/carioca/tasks/rake.rb +3 -3
- data/lib/carioca/tasks/registry_init.rake +2 -1
- data/spec/carioca_spec.rb +72 -78
- data/spec/config/.config +14 -0
- data/spec/init_spec.rb +1 -0
- data/spec/samples/dummy.rb +1 -0
- data/spec/samples/otherdummy.rb +1 -0
- data/spec/samples/requireddummy.rb +1 -0
- data/spec/spec_helper.rb +1 -1
- metadata +49 -72
- data/Gemfile.lock +0 -54
- data/test.rb +0 -12
data/lib/carioca/services.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# coding: utf-8
|
2
2
|
#---
|
3
3
|
# Author : Romain GEORGES
|
4
4
|
# type : gem component library
|
@@ -11,13 +11,13 @@ module Carioca
|
|
11
11
|
|
12
12
|
# namespace Services for Registry AND buitlins
|
13
13
|
module Services
|
14
|
-
# class method returning full path in Carioca gem for builtin services files according to installed gem path.
|
14
|
+
# class method returning full path in Carioca gem for builtin services files according to installed gem path.
|
15
15
|
# @note do not use directly for generale purpose (expert/hacks only)
|
16
16
|
# @param [String] _name the name of a service
|
17
17
|
# @return [String,false] the full path filename orfalse if not found
|
18
18
|
def Services::search_builtins(_name)
|
19
19
|
if Gem::Specification.respond_to?(:find_by_name)
|
20
|
-
begin
|
20
|
+
begin
|
21
21
|
spec = Gem::Specification.find_by_name('carioca')
|
22
22
|
rescue LoadError
|
23
23
|
spec = nil
|
@@ -44,13 +44,13 @@ module Carioca
|
|
44
44
|
return false
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
# class method returning the path of a file in gem if exist or false
|
49
49
|
# @note do not use directly for generale purpose (expert/hacks only)
|
50
50
|
# @return [String|FalseClass] the full path of a service file
|
51
51
|
def Services::search_file_in_gem(_gem,_file)
|
52
52
|
if Gem::Specification.respond_to?(:find_by_name)
|
53
|
-
begin
|
53
|
+
begin
|
54
54
|
spec = Gem::Specification.find_by_name(_gem)
|
55
55
|
rescue LoadError
|
56
56
|
spec = nil
|
@@ -79,7 +79,7 @@ module Carioca
|
|
79
79
|
# @return [Hash] the [Carioca::Services::Registry]@list complement
|
80
80
|
def Services::discover_builtins
|
81
81
|
if Gem::Specification.respond_to?(:find_by_name)
|
82
|
-
begin
|
82
|
+
begin
|
83
83
|
spec = Gem::Specification.find_by_name('carioca')
|
84
84
|
rescue LoadError
|
85
85
|
spec = nil
|
@@ -114,7 +114,7 @@ module Carioca
|
|
114
114
|
def Services::validate_service(file,res)
|
115
115
|
init_options = {}
|
116
116
|
if open(file).grep(/^# \$BUILTIN/).size > 0 then
|
117
|
-
service = open(file).grep(/# \$SERVICE/).first.split[2]
|
117
|
+
service = open(file).grep(/# \$SERVICE/).first.split[2]
|
118
118
|
resource = open(file).grep(/# \$RESOURCE/).first.split[2]
|
119
119
|
desc = open(file).grep(/# \$DESCRIPTION/).first
|
120
120
|
desc = desc.split(' ')
|
@@ -124,13 +124,13 @@ module Carioca
|
|
124
124
|
prev = opt.split
|
125
125
|
init_options[prev[2].to_sym] = prev[4]
|
126
126
|
end
|
127
|
-
distributed = (open(file).grep(/# \$DISTRIBUTED/))? true : false
|
127
|
+
distributed = (open(file).grep(/# \$DISTRIBUTED/))? true : false
|
128
128
|
req = open(file).grep(/# \$REQUIRES/)
|
129
129
|
if req.empty? then
|
130
130
|
requires = []
|
131
131
|
else
|
132
132
|
requires = req.split
|
133
|
-
requires.shift
|
133
|
+
requires.shift
|
134
134
|
end
|
135
135
|
|
136
136
|
end
|
@@ -138,6 +138,6 @@ module Carioca
|
|
138
138
|
res[resource] = { :service => service, :type => :builtin, :description => description, :resource => resource}
|
139
139
|
res[resource][:init_options] = init_options unless init_options.empty?
|
140
140
|
end
|
141
|
-
end
|
141
|
+
end
|
142
142
|
end
|
143
143
|
end
|
@@ -1,14 +1,14 @@
|
|
1
|
-
|
1
|
+
# coding: utf-8
|
2
2
|
# $BUILTIN
|
3
3
|
# $NAME configuration
|
4
|
-
# $SERVICE Carioca::Services::Configuration
|
4
|
+
# $SERVICE Carioca::Services::Configuration
|
5
5
|
# $RESOURCE configuration
|
6
6
|
# $DESCRIPTION The Carioca Configuration Service
|
7
7
|
# $INIT_OPTIONS config_file => ./.config
|
8
8
|
|
9
9
|
# Copyright Ultragreen (c) 2005
|
10
10
|
#---
|
11
|
-
# Author : Romain GEORGES
|
11
|
+
# Author : Romain GEORGES
|
12
12
|
# type : class definition Ruby
|
13
13
|
# obj : Generic config library
|
14
14
|
#---
|
@@ -21,12 +21,13 @@ require_relative '../services'
|
|
21
21
|
require 'yaml'
|
22
22
|
require 'drb/drb'
|
23
23
|
require 'xmlsimple'
|
24
|
+
require 'active_support/all'
|
24
25
|
|
25
|
-
# overwriting Hash class
|
26
|
+
# overwriting Hash class
|
26
27
|
# @private
|
27
28
|
class Hash
|
28
29
|
|
29
|
-
# recursively transform Hash keys form String to Symbols
|
30
|
+
# recursively transform Hash keys form String to Symbols
|
30
31
|
# come from Rails code
|
31
32
|
# exist in Ruby 2.0
|
32
33
|
def deep_symbolize
|
@@ -40,7 +41,7 @@ class Hash
|
|
40
41
|
|
41
42
|
# pretty accessor for hash record
|
42
43
|
# like ahash[:key] => ahash.key
|
43
|
-
# r/w accessor
|
44
|
+
# r/w accessor
|
44
45
|
def method_missing(name, *args, &block)
|
45
46
|
if name.to_s =~ /(.+)=$/
|
46
47
|
self[$1.to_sym] = args.first
|
@@ -49,14 +50,14 @@ class Hash
|
|
49
50
|
end
|
50
51
|
end
|
51
52
|
end
|
52
|
-
|
53
|
+
|
53
54
|
|
54
55
|
|
55
56
|
|
56
57
|
|
57
58
|
module Carioca
|
58
59
|
|
59
|
-
module Services
|
60
|
+
module Services
|
60
61
|
|
61
62
|
# settings Hash record utilities class
|
62
63
|
# @note please do not use Standalone ( dependancy of Configuration class )
|
@@ -66,7 +67,7 @@ module Carioca
|
|
66
67
|
|
67
68
|
# the name of the config file in YAML format
|
68
69
|
attr_accessor :config_file
|
69
|
-
|
70
|
+
|
70
71
|
# constructor (pre-open the config file in default:YAML)
|
71
72
|
# @param [Hash] options the options records
|
72
73
|
# @option options [String] :config_file (REQUIRED) the name of the config file
|
@@ -77,13 +78,14 @@ module Carioca
|
|
77
78
|
@config_file = options[:config_file]
|
78
79
|
@xml_input = options[:xml_input]
|
79
80
|
@content = options[:content]
|
81
|
+
@force_array = options[:force_array]
|
80
82
|
newsets = {}
|
81
83
|
if @config_file then
|
82
84
|
@content = File::readlines(@config_file).join if File::exist?(@config_file)
|
83
85
|
end
|
84
86
|
if options[:xml_input] then
|
85
87
|
newsets = XmlSimple.xml_in( @content, {
|
86
|
-
'ForceArray' =>
|
88
|
+
'ForceArray' => @force_array,
|
87
89
|
'KeepRoot' => true,
|
88
90
|
}).deep_symbolize_keys
|
89
91
|
else
|
@@ -92,7 +94,7 @@ module Carioca
|
|
92
94
|
newsets = newsets[options[:context].to_sym] if options[:context] && newsets[options[:context].to_sym]
|
93
95
|
deep_merge!(self, newsets)
|
94
96
|
end
|
95
|
-
|
97
|
+
|
96
98
|
# save the Hash(self) in the file named by @config_file
|
97
99
|
# @return [TrueClass,FalseClass] true if save! successfull
|
98
100
|
# @note TODO save in XML format
|
@@ -106,7 +108,7 @@ module Carioca
|
|
106
108
|
|
107
109
|
|
108
110
|
private
|
109
|
-
# full recursive merger for hash
|
111
|
+
# full recursive merger for hash
|
110
112
|
def deep_merge!(target, data)
|
111
113
|
merger = proc{|key, v1, v2|
|
112
114
|
Settings === v1 && Settings === v2 ? v1.merge(v2, &merger) : v2 }
|
@@ -116,22 +118,22 @@ module Carioca
|
|
116
118
|
|
117
119
|
end
|
118
120
|
|
119
|
-
|
120
|
-
|
121
|
-
|
121
|
+
|
122
|
+
|
123
|
+
|
122
124
|
# Service Configuration of Carioca
|
123
|
-
class Configuration
|
124
|
-
|
125
|
+
class Configuration
|
126
|
+
|
125
127
|
include DRb::DRbUndumped
|
126
|
-
|
127
|
-
# @example
|
128
|
+
|
129
|
+
# @example
|
128
130
|
# config = Carioca::Services::Configuration::new :config_file => 'afilename', :context => 'production'
|
129
131
|
# p config.config_file
|
130
132
|
# config_file = 'newfilename'
|
131
133
|
# @attr_reader [String] the filename of the YAML struct
|
132
134
|
attr_accessor :settings
|
133
135
|
|
134
|
-
|
136
|
+
|
135
137
|
# Configuration service constructor (open config)
|
136
138
|
# @param [Hash] _options the params
|
137
139
|
# @option _options [String] :config_file the filename of the config
|
@@ -143,28 +145,28 @@ module Carioca
|
|
143
145
|
options.merge
|
144
146
|
@settings = Carioca::Services::Settings.new(options)
|
145
147
|
end
|
146
|
-
|
147
|
-
# Proxy to @settings.save!
|
148
|
+
|
149
|
+
# Proxy to @settings.save!
|
148
150
|
# save the Hash(self) in the file named by @config_file
|
149
151
|
# @return [TrueClass,FalseClass] true if save! successfull
|
150
152
|
# @example usage
|
151
153
|
# config = Carioca::Services::Configuration::new :config_file => 'afilename', :context => 'production'
|
152
|
-
# config.config_file = 'newfile'
|
154
|
+
# config.config_file = 'newfile'
|
153
155
|
# config.save!
|
154
156
|
def save!
|
155
157
|
@settings.save!
|
156
158
|
end
|
157
159
|
|
158
|
-
|
160
|
+
|
159
161
|
# reading wrapper to @settings.config_file accessor
|
160
|
-
# @return [String] @config_file the file name
|
162
|
+
# @return [String] @config_file the file name
|
161
163
|
# @example usage
|
162
164
|
# config = Carioca::Services::Configuration::new :config_file => 'afilename', :context => 'production'
|
163
|
-
# p config.config_file
|
165
|
+
# p config.config_file
|
164
166
|
def config_file
|
165
167
|
@settings.config_file
|
166
168
|
end
|
167
|
-
|
169
|
+
|
168
170
|
# writting wrapper to @settings.config_file accessor
|
169
171
|
# @param [String] name the file name
|
170
172
|
# @example usage
|
@@ -182,7 +184,7 @@ module Carioca
|
|
182
184
|
@settings = nil
|
183
185
|
return true
|
184
186
|
end
|
185
|
-
|
187
|
+
|
186
188
|
end
|
187
189
|
end
|
188
190
|
end
|
@@ -191,7 +193,7 @@ end
|
|
191
193
|
|
192
194
|
|
193
195
|
|
194
|
-
# interactive hacks
|
196
|
+
# interactive hacks
|
195
197
|
if $0 == __FILE__ then
|
196
198
|
conf =Carioca::Services::Configuration::new :config_file => 'spec/config/.config'
|
197
199
|
p conf
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# coding: utf-8
|
2
2
|
# $BUILTIN
|
3
3
|
# $NAME debug
|
4
4
|
# $SERVICE Carioca::Services::ProxyDebug
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# $DESCRIPTION Proxy class debugger Service for Carioca
|
7
7
|
# Copyright Ultragreen (c) 2012
|
8
8
|
#---
|
9
|
-
# Author : Romain GEORGES
|
9
|
+
# Author : Romain GEORGES
|
10
10
|
# type : class definition Ruby
|
11
11
|
# obj : Generic Debugs tools library
|
12
12
|
#---
|
@@ -18,12 +18,12 @@ require 'methodic'
|
|
18
18
|
|
19
19
|
module Carioca
|
20
20
|
module Services
|
21
|
-
|
22
|
-
|
21
|
+
|
22
|
+
|
23
23
|
# Service Debug of Carioca
|
24
24
|
# Proxy Class Debug for devs
|
25
25
|
class ProxyDebug
|
26
|
-
|
26
|
+
|
27
27
|
# ProxyDebug service constructor (has a class proxy => so a service proxy)
|
28
28
|
# @param [Hash] _options the params
|
29
29
|
# @option _options [String] :service the name of the service you want to proxyfying
|
@@ -41,10 +41,10 @@ module Carioca
|
|
41
41
|
@log = Registry.init.get_service :name => 'logger'
|
42
42
|
@mapped_service = options[:service]
|
43
43
|
end
|
44
|
-
|
45
|
-
# method_missing overload to make the class proxy efficient
|
44
|
+
|
45
|
+
# method_missing overload to make the class proxy efficient
|
46
46
|
def method_missing(methodname, *args,&block)
|
47
|
-
@log.debug("ProxyDebug") { "BEGIN CALL for mapped service #{@mapped_service} "}
|
47
|
+
@log.debug("ProxyDebug") { "BEGIN CALL for mapped service #{@mapped_service} "}
|
48
48
|
@log.debug("ProxyDebug") { "called: #{methodname} " }
|
49
49
|
@log.debug("ProxyDebug") { "args : #{args.join " "}" }
|
50
50
|
if block_given? then
|
@@ -69,5 +69,3 @@ if $0 == __FILE__ then
|
|
69
69
|
puts 'this is a RUBY library file'
|
70
70
|
puts "Copyright (c) Ultragreen"
|
71
71
|
end
|
72
|
-
|
73
|
-
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# coding: utf-8
|
2
2
|
# $BUILTIN
|
3
3
|
# $NAME logger
|
4
4
|
# $SERVICE Carioca::Services::InternalLogger
|
@@ -7,7 +7,7 @@
|
|
7
7
|
# $INIT_OPTIONS target => /tmp/log.file
|
8
8
|
# Copyright Ultragreen (c) 2005
|
9
9
|
#---
|
10
|
-
# Author : Romain GEORGES
|
10
|
+
# Author : Romain GEORGES
|
11
11
|
# type : class definition Ruby
|
12
12
|
# obj : Generic config library
|
13
13
|
#---
|
@@ -18,16 +18,16 @@ require 'logger'
|
|
18
18
|
require 'methodic'
|
19
19
|
|
20
20
|
module Carioca
|
21
|
-
module Services
|
21
|
+
module Services
|
22
22
|
|
23
23
|
# Service Logger (InternalLogger) of Carioca,
|
24
24
|
# @note integrally based on Logger from logger Gem
|
25
25
|
class InternalLogger < Logger
|
26
|
-
|
26
|
+
|
27
27
|
private
|
28
|
-
|
28
|
+
|
29
29
|
# logger service constructor (open log)
|
30
|
-
# @param [Hash] _options the params
|
30
|
+
# @param [Hash] _options the params
|
31
31
|
# @option _options [String] :target the filename where to log
|
32
32
|
def initialize(_options = {})
|
33
33
|
options = Methodic.get_options(_options)
|
@@ -35,22 +35,22 @@ module Carioca
|
|
35
35
|
options.merge
|
36
36
|
super(options[:target])
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
# garbage service hook
|
40
|
-
# @note close the logger
|
40
|
+
# @note close the logger
|
41
41
|
def garbage
|
42
42
|
self.close
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
|
48
|
+
|
49
|
+
|
50
50
|
end
|
51
51
|
|
52
52
|
|
53
|
-
# interactive hacks
|
53
|
+
# interactive hacks
|
54
54
|
if $0 == __FILE__ then
|
55
55
|
puts "#{File::basename(__FILE__)}:"
|
56
56
|
puts 'this is a RUBY library file'
|
data/lib/carioca/tasks/rake.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
require 'rake'
|
2
|
-
require 'rubygems'
|
3
|
+
require 'rubygems'
|
3
4
|
require 'carioca'
|
4
5
|
|
5
6
|
$VERBOSE = nil
|
@@ -18,6 +19,5 @@ end
|
|
18
19
|
res.pop
|
19
20
|
tasks_path = res.join('/').concat('/lib/carioca/tasks/')
|
20
21
|
|
21
|
-
|
22
|
-
Dir["#{tasks_path}/*.rake"].each { |ext| load ext }
|
23
22
|
|
23
|
+
Dir["#{tasks_path}/*.rake"].each { |ext| load ext }
|
data/spec/carioca_spec.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
require'rubygems'
|
2
3
|
require'rspec'
|
3
4
|
require 'carioca'
|
@@ -7,7 +8,7 @@ $debug = true
|
|
7
8
|
|
8
9
|
describe Carioca do
|
9
10
|
|
10
|
-
before :all do
|
11
|
+
before :all do
|
11
12
|
FileUtils.rm_rf("/tmp/log.file")
|
12
13
|
File::unlink('/tmp/dorsal/ringserver.pid') if File::exist?('/tmp/dorsal/ringserver.pid')
|
13
14
|
File::unlink('/tmp/dorsal/service-distdummy.pid') if File::exist?('/tmp/dorsal/service-distdummy.pid')
|
@@ -20,25 +21,25 @@ describe Carioca do
|
|
20
21
|
res = `kill -TERM #{pid.chomp}`
|
21
22
|
end
|
22
23
|
$carioca = Carioca::Services::Registry.init :file => 'spec/config/services.registry', :debug => $debug
|
23
|
-
end
|
24
|
-
|
24
|
+
end
|
25
|
+
|
25
26
|
subject { Carioca }
|
26
27
|
it { should be_an_instance_of Module}
|
27
28
|
context "Carioca::Services" do
|
28
29
|
subject { Carioca::Services }
|
29
30
|
it { should be_an_instance_of Module }
|
30
31
|
end
|
31
|
-
|
32
|
+
|
32
33
|
context "Carioca::Services::Registry" do
|
33
34
|
subject { $carioca }
|
34
|
-
context "#init" do
|
35
|
-
it "should be a Singleton" do
|
35
|
+
context "#init" do
|
36
|
+
it "should be a Singleton" do
|
36
37
|
carioca1 = Carioca::Services::Registry.init
|
37
38
|
carioca2 = Carioca::Services::Registry.init
|
38
39
|
test = (carioca1.inspect == carioca2.inspect)
|
39
40
|
test.should be true
|
40
41
|
end
|
41
|
-
|
42
|
+
|
42
43
|
|
43
44
|
it { should be_an_instance_of Carioca::Services::Registry }
|
44
45
|
it { $carioca.list.keys.should include "logger" }
|
@@ -52,7 +53,7 @@ describe Carioca do
|
|
52
53
|
|
53
54
|
it "should be possible to log with this primary service" do
|
54
55
|
$logger = subject.get_service :name => 'logger'
|
55
|
-
$logger.info("test").should eq true
|
56
|
+
$logger.info("test").should eq true
|
56
57
|
open('/tmp/log.file').grep(/INFO -- : test/).size.should eq 1
|
57
58
|
$logger.warn("test").should eq true
|
58
59
|
open('/tmp/log.file').grep(/WARN -- : test/).size.should eq 1
|
@@ -69,11 +70,11 @@ describe Carioca do
|
|
69
70
|
context "#debug (RW)" do
|
70
71
|
it { should respond_to :debug }
|
71
72
|
it { should respond_to :debug= }
|
72
|
-
it "should be true if debug mode", :if => $debug do
|
73
|
-
subject.debug.should eq true
|
73
|
+
it "should be true if debug mode", :if => $debug do
|
74
|
+
subject.debug.should eq true
|
74
75
|
end
|
75
76
|
it "should be false if not debug mode", :unless => $debug do
|
76
|
-
subject.debug.should eq false
|
77
|
+
subject.debug.should eq false
|
77
78
|
end
|
78
79
|
end
|
79
80
|
|
@@ -97,7 +98,7 @@ describe Carioca do
|
|
97
98
|
it { subject.loaded_services.should be_an_instance_of Hash }
|
98
99
|
it { $carioca.loaded_services.keys.should eq ["logger"] }
|
99
100
|
end
|
100
|
-
|
101
|
+
|
101
102
|
context "#registry_filename" do
|
102
103
|
it { should respond_to :registry_filename }
|
103
104
|
it { should respond_to :registry_filename= }
|
@@ -107,42 +108,42 @@ describe Carioca do
|
|
107
108
|
|
108
109
|
end
|
109
110
|
|
110
|
-
context "#start_service" do
|
111
|
+
context "#start_service" do
|
111
112
|
it { should respond_to :start_service }
|
112
113
|
it { should respond_to :get_service }
|
113
114
|
|
114
115
|
context "Builtin services" do
|
115
116
|
context "Logger service" do
|
116
|
-
it "should be possible to get the builtin logger service" do
|
117
|
+
it "should be possible to get the builtin logger service" do
|
117
118
|
$logger = subject.get_service :name => 'logger'
|
118
119
|
end
|
119
|
-
it "should log if debug mode", :if => $debug do
|
120
|
+
it "should log if debug mode", :if => $debug do
|
120
121
|
open('/tmp/log.file').grep(/DEBUG -- Carioca: getting service logger/).size.should >= 1
|
121
122
|
end
|
122
|
-
it "should not log if debug mode", :unless => $debug do
|
123
|
+
it "should not log if debug mode", :unless => $debug do
|
123
124
|
open('/tmp/log.file').grep(/DEBUG -- Carioca: getting service logger/).size.should eq 0
|
124
125
|
end
|
125
126
|
end
|
126
|
-
|
127
|
+
|
127
128
|
|
128
129
|
context "Debug Proxy Service" do
|
129
|
-
it "should start the builtin service debug" do
|
130
|
+
it "should start the builtin service debug" do
|
130
131
|
myservice = subject.start_service :name => 'debug' , :params => {:service => 'dummy'}
|
131
|
-
myservice.test 'titi'
|
132
|
+
myservice.test 'titi'
|
132
133
|
end
|
133
134
|
it { subject.list.keys.should include "debug" }
|
134
|
-
it "should log a proxy service log sequence", :if => $debug do
|
135
|
-
open('/tmp/log.file').grep(/DEBUG -- ProxyDebug: BEGIN CALL for mapped service dummy/).size.should eq 1
|
136
|
-
open('/tmp/log.file').grep(/DEBUG -- ProxyDebug: called: test/).size.should eq 1
|
135
|
+
it "should log a proxy service log sequence", :if => $debug do
|
136
|
+
open('/tmp/log.file').grep(/DEBUG -- ProxyDebug: BEGIN CALL for mapped service dummy/).size.should eq 1
|
137
|
+
open('/tmp/log.file').grep(/DEBUG -- ProxyDebug: called: test/).size.should eq 1
|
137
138
|
open('/tmp/log.file').grep(/DEBUG -- ProxyDebug: args : titi/).size.should eq 1
|
138
|
-
open('/tmp/log.file').grep(/DEBUG -- ProxyDebug: => returned: OK/).size.should eq 1
|
139
|
+
open('/tmp/log.file').grep(/DEBUG -- ProxyDebug: => returned: OK/).size.should eq 1
|
139
140
|
open('/tmp/log.file').grep(/DEBUG -- ProxyDebug: END CALL/).size.should eq 1
|
140
141
|
end
|
141
142
|
end
|
142
|
-
|
143
|
+
|
143
144
|
context "Configuration Service" do
|
144
145
|
it "should start the builtin configuration service" do
|
145
|
-
$conf = subject.start_service :name => 'configuration'
|
146
|
+
$conf = subject.start_service :name => 'configuration'
|
146
147
|
end
|
147
148
|
it "should access flat settings" do
|
148
149
|
$conf.settings.context1.key0.should eq 'value'
|
@@ -150,21 +151,21 @@ describe Carioca do
|
|
150
151
|
$conf.settings.context1.node.key2 eq 'value2'
|
151
152
|
$conf.settings.context2.key0.should eq 'value'
|
152
153
|
$conf.settings.context2.node.key1 eq 'value3'
|
153
|
-
$conf.settings.context2.node.key2 eq 'value4'
|
154
|
+
$conf.settings.context2.node.key2 eq 'value4'
|
154
155
|
end
|
155
156
|
it "should access contextualized settings" do
|
156
157
|
$conf = subject.restart_service :name => 'configuration', :params => { :context => 'context2' }
|
157
158
|
$conf.settings.key0.should eq 'value'
|
158
159
|
$conf.settings.node.key1 eq 'value3'
|
159
|
-
$conf.settings.node.key2 eq 'value4'
|
160
|
+
$conf.settings.node.key2 eq 'value4'
|
160
161
|
end
|
161
162
|
it "should access inherited settings from YAML" do
|
162
163
|
$conf = subject.restart_service :name => 'configuration', :params => { :context => 'context3' }
|
163
164
|
$conf.settings.key0.should eq 'value'
|
164
165
|
$conf.settings.node.key1 eq 'value3'
|
165
|
-
$conf.settings.node.key2 eq 'value4'
|
166
|
+
$conf.settings.node.key2 eq 'value4'
|
166
167
|
end
|
167
|
-
it "should be possible to override a config value" do
|
168
|
+
it "should be possible to override a config value" do
|
168
169
|
$conf.settings.node.key2 = 'value8'
|
169
170
|
$conf.settings.node.key2.should eq 'value8'
|
170
171
|
$conf.settings[:node][:key2] = 'value6'
|
@@ -173,23 +174,23 @@ describe Carioca do
|
|
173
174
|
it { $conf.should respond_to :config_file }
|
174
175
|
it { $conf.should respond_to :config_file= }
|
175
176
|
it { $conf.should respond_to :save! }
|
176
|
-
|
177
|
-
it "should be saved in other file" do
|
177
|
+
|
178
|
+
it "should be saved in other file" do
|
178
179
|
$conf.config_file = '/tmp/.config'
|
179
180
|
$conf.save!.should be true
|
180
|
-
|
181
|
+
|
181
182
|
end
|
182
183
|
it "should stop the configuration service" do
|
183
184
|
subject.stop_service({:name => 'configuration'}).should eq true
|
184
185
|
end
|
185
186
|
end
|
186
|
-
|
187
|
+
|
187
188
|
end
|
188
189
|
|
189
190
|
context "External services" do
|
190
|
-
|
191
|
-
it "should start a dummy service precised in registry YAML configuration" do
|
192
|
-
|
191
|
+
|
192
|
+
it "should start a dummy service precised in registry YAML configuration" do
|
193
|
+
|
193
194
|
$dummy = subject.start_service :name => 'dummy'
|
194
195
|
$dummy.should be_an_instance_of ExternalServices::Dummy
|
195
196
|
end
|
@@ -218,10 +219,10 @@ describe Carioca do
|
|
218
219
|
|
219
220
|
|
220
221
|
context "Distributed service" do
|
221
|
-
it "should be possible to execute a distributed service" do
|
222
|
-
$dummy_dist = subject.start_service :name => 'distdummy'
|
222
|
+
it "should be possible to execute a distributed service" do
|
223
|
+
$dummy_dist = subject.start_service :name => 'distdummy'
|
223
224
|
end
|
224
|
-
it "should exist a processus Ring server" do
|
225
|
+
it "should exist a processus Ring server" do
|
225
226
|
File::exist?('/tmp/dorsal/ringserver.pid').should be true
|
226
227
|
pid = `ps aux|grep ruby|grep -v grep |grep 'Ultragreen Ring Server'|awk '{ print $2}'`
|
227
228
|
pid.should_not be_empty
|
@@ -235,12 +236,12 @@ describe Carioca do
|
|
235
236
|
it "should include 'distdummy' in @loaded_services.keys" do
|
236
237
|
subject.loaded_services.should include "distdummy"
|
237
238
|
end
|
238
|
-
it "should distdummy be a DRbObject" do
|
239
|
+
it "should distdummy be a DRbObject" do
|
239
240
|
$dummy_dist.should be_a_kind_of DRb::DRbObject
|
240
241
|
end
|
241
242
|
it "should be possible to use test method of the distributed dummy service, and return 'OK'" do
|
242
243
|
$dummy_dist.test.should eq 'OK'
|
243
|
-
end
|
244
|
+
end
|
244
245
|
end
|
245
246
|
|
246
247
|
end
|
@@ -256,19 +257,19 @@ describe Carioca do
|
|
256
257
|
it "should return true if service really stop" do
|
257
258
|
subject.stop_service({:name => 'dummy'}).should eq true
|
258
259
|
end
|
259
|
-
it "should log if debug mode", :if => $debug do
|
260
|
+
it "should log if debug mode", :if => $debug do
|
260
261
|
open('/tmp/log.file').grep(/DEBUG -- Carioca: Service dummy stopped/).size.should >= 1
|
261
262
|
end
|
262
|
-
it "should not log if debug mode", :unless => $debug do
|
263
|
+
it "should not log if debug mode", :unless => $debug do
|
263
264
|
open('/tmp/log.file').grep(/DEBUG -- Carioca: Service dummy stopped/).size.should eq 0
|
264
265
|
end
|
265
266
|
it "should return false if service not already running" do
|
266
267
|
subject.stop_service({:name => 'dum'}).should eq false
|
267
268
|
end
|
268
|
-
it "should log if debug mode and service not loaded", :if => $debug do
|
269
|
+
it "should log if debug mode and service not loaded", :if => $debug do
|
269
270
|
open('/tmp/log.file').grep(/DEBUG -- Carioca: Service dum not loaded/).size.should >= 1
|
270
271
|
end
|
271
|
-
it "should not log if debug mode and service not loaded", :unless => $debug do
|
272
|
+
it "should not log if debug mode and service not loaded", :unless => $debug do
|
272
273
|
open('/tmp/log.file').grep(/DEBUG -- Carioca: Service dum not loaded/).size.should eq 0
|
273
274
|
end
|
274
275
|
it "should return false if service :name is logger" do
|
@@ -283,8 +284,8 @@ describe Carioca do
|
|
283
284
|
|
284
285
|
context "Distributed Service" do
|
285
286
|
it "should be possible to stop a distributed service" do
|
286
|
-
$dummy_dist = subject.start_service :name => 'distdummy'
|
287
|
-
subject.stop_service({:name => 'distdummy'}).should be true
|
287
|
+
$dummy_dist = subject.start_service :name => 'distdummy'
|
288
|
+
subject.stop_service({:name => 'distdummy'}).should be true
|
288
289
|
end
|
289
290
|
it "should not exist forked daemon instance for this stopped service" do
|
290
291
|
pid = `ps aux|grep ruby|grep -v grep |grep 'a dummy test service'|awk '{ print $2}'`
|
@@ -295,16 +296,16 @@ describe Carioca do
|
|
295
296
|
$dummy_dist = subject.start_service :name => 'distdummy'
|
296
297
|
end
|
297
298
|
end
|
298
|
-
|
299
|
+
|
299
300
|
end
|
300
301
|
|
301
302
|
context "#restart_service" do
|
302
303
|
it { should respond_to :start_service }
|
303
|
-
it "should start an instance of a service like dummy_one" do
|
304
|
+
it "should start an instance of a service like dummy_one" do
|
304
305
|
$dummy = subject.restart_service :name => 'dummy_one'
|
305
306
|
$dummy = subject.restart_service :name => 'dummy'
|
306
307
|
$dummy.should be_an_instance_of ExternalServices::Dummy
|
307
|
-
$carioca.loaded_services.keys.should include 'dummy'
|
308
|
+
$carioca.loaded_services.keys.should include 'dummy'
|
308
309
|
$carioca.loaded_services.keys.should include 'dummy_one'
|
309
310
|
end
|
310
311
|
it "should restart a service already loaded and log it" do
|
@@ -332,7 +333,7 @@ describe Carioca do
|
|
332
333
|
|
333
334
|
context "#unregister_service" do
|
334
335
|
it { should respond_to :unregister_service }
|
335
|
-
it "should be possible te unregistered the configuration service" do
|
336
|
+
it "should be possible te unregistered the configuration service" do
|
336
337
|
subject.list.keys.should include "configuration"
|
337
338
|
subject.unregister_service :name => "configuration"
|
338
339
|
subject.list.keys.should_not include "configuration"
|
@@ -343,23 +344,23 @@ describe Carioca do
|
|
343
344
|
it "should raise RegistryError if trying to unregister a loaded service" do
|
344
345
|
lambda { subject.unregister_service :name => "dummy"}.should raise_error RegistryError
|
345
346
|
end
|
346
|
-
|
347
|
+
|
347
348
|
end
|
348
349
|
|
349
350
|
context "#discover_builtins" do
|
350
351
|
it { should respond_to :discover_builtins }
|
351
|
-
it "should rebuild builtin service in @list" do
|
352
|
+
it "should rebuild builtin service in @list" do
|
352
353
|
subject.discover_builtins
|
353
|
-
subject.list.keys.should include "configuration"
|
354
|
+
subject.list.keys.should include "configuration"
|
354
355
|
end
|
355
356
|
end
|
356
357
|
|
357
358
|
context "#register_service" do
|
358
359
|
it { should respond_to :register_service }
|
359
|
-
it "should add a new service" do
|
360
|
-
subject.register_service :name => 'otherdummy',
|
361
|
-
:type => :file,
|
362
|
-
:resource => './spec/samples/otherdummy.rb',
|
360
|
+
it "should add a new service" do
|
361
|
+
subject.register_service :name => 'otherdummy',
|
362
|
+
:type => :file,
|
363
|
+
:resource => './spec/samples/otherdummy.rb',
|
363
364
|
:service =>'ExternalServices::OtherDummy',
|
364
365
|
:description => 'An other Dummy Service',
|
365
366
|
:requires => ['requireddummy']
|
@@ -378,10 +379,10 @@ describe Carioca do
|
|
378
379
|
subject.loaded_services.keys.should include 'requireddummy'
|
379
380
|
subject.loaded_services.keys.should include 'otherdummy'
|
380
381
|
end
|
381
|
-
it "should raise Argument error if :type is not :gem, :file, :gem_file or :builtin" do
|
382
|
-
lambda { subject.register_service :name => 'otherdummy',
|
383
|
-
:type => :error,
|
384
|
-
:resource => 'spec/samples/otherdummy.rb',
|
382
|
+
it "should raise Argument error if :type is not :gem, :file, :gem_file or :builtin" do
|
383
|
+
lambda { subject.register_service :name => 'otherdummy',
|
384
|
+
:type => :error,
|
385
|
+
:resource => 'spec/samples/otherdummy.rb',
|
385
386
|
:service =>'ExternalServices::OtherDummy',
|
386
387
|
:description => 'An other Dummy Service'}.should raise_error ArgumentError
|
387
388
|
|
@@ -390,11 +391,11 @@ describe Carioca do
|
|
390
391
|
|
391
392
|
|
392
393
|
|
393
|
-
|
394
|
-
|
394
|
+
|
395
|
+
|
395
396
|
context "#save!" do
|
396
397
|
it { should respond_to :save! }
|
397
|
-
it "should save the config to an other file @registry_filename" do
|
398
|
+
it "should save the config to an other file @registry_filename" do
|
398
399
|
File::unlink('/tmp/test.reg') if File::exist?('/tmp/test.reg')
|
399
400
|
prev = subject.registry_filename
|
400
401
|
subject.registry_filename = '/tmp/test.reg'
|
@@ -405,14 +406,14 @@ describe Carioca do
|
|
405
406
|
end
|
406
407
|
|
407
408
|
end
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
context "#close" do
|
409
|
+
|
410
|
+
|
411
|
+
|
412
|
+
context "#close" do
|
412
413
|
context "Closing the Carioca registry" do
|
413
414
|
it { should respond_to :close }
|
414
415
|
it "should close" do
|
415
|
-
subject.close.should eq true
|
416
|
+
subject.close.should eq true
|
416
417
|
end
|
417
418
|
it "should log a registry closing notification if debug mode", :if => $debug do
|
418
419
|
open('/tmp/log.file').grep(/DEBUG -- Carioca: closing Registry .../).size.should eq 1
|
@@ -444,7 +445,7 @@ describe Carioca do
|
|
444
445
|
end
|
445
446
|
it "should loaded services empty" do
|
446
447
|
subject.loaded_services.empty?.should eq true
|
447
|
-
end
|
448
|
+
end
|
448
449
|
context "Distributed service" do
|
449
450
|
end
|
450
451
|
end
|
@@ -465,10 +466,3 @@ describe Carioca do
|
|
465
466
|
end
|
466
467
|
|
467
468
|
end
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|