kpm 0.0.15 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +43 -22
- data/Rakefile +8 -2
- data/lib/kpm.rb +4 -1
- data/lib/kpm/base_artifact.rb +77 -34
- data/lib/kpm/base_installer.rb +183 -0
- data/lib/kpm/installer.rb +51 -85
- data/lib/kpm/killbill_server_artifact.rb +51 -0
- data/lib/kpm/plugins_directory.rb +19 -5
- data/lib/kpm/plugins_directory.yml +119 -15
- data/lib/kpm/plugins_manager.rb +110 -0
- data/lib/kpm/tasks.rb +16 -2
- data/lib/kpm/tomcat_manager.rb +62 -0
- data/lib/kpm/utils.rb +7 -1
- data/lib/kpm/version.rb +1 -1
- data/spec/kpm/remote/base_artifact_spec.rb +4 -2
- data/spec/kpm/remote/installer_spec.rb +35 -22
- data/spec/kpm/remote/killbill_server_artifact_spec.rb +10 -0
- data/spec/kpm/remote/tomcat_manager_spec.rb +21 -0
- data/spec/kpm/unit/base_artifact_spec.rb +92 -0
- data/spec/kpm/unit/plugins_directory_spec.rb +45 -0
- data/spec/kpm/unit/plugins_manager_spec.rb +100 -0
- data/spec/kpm/unit/sha1_checker_spec.rb +1 -4
- metadata +51 -52
data/lib/kpm/tasks.rb
CHANGED
@@ -27,8 +27,9 @@ module KPM
|
|
27
27
|
:default => true,
|
28
28
|
:desc => 'Validate sha1 sum'
|
29
29
|
desc 'install config_file', 'Install Kill Bill server and plugins according to the specified YAML configuration file.'
|
30
|
-
def install(config_file)
|
31
|
-
Installer.from_file(config_file).install(options[:force_download], options[:verify_sha1])
|
30
|
+
def install(config_file=nil)
|
31
|
+
help = Installer.from_file(config_file).install(options[:force_download], options[:verify_sha1])
|
32
|
+
say help, :green unless help.nil?
|
32
33
|
end
|
33
34
|
|
34
35
|
method_option :destination,
|
@@ -226,6 +227,19 @@ module KPM
|
|
226
227
|
say "Available versions: #{KauiArtifact.versions(options[:overrides], options[:ssl_verify]).to_a.join(', ')}", :green
|
227
228
|
end
|
228
229
|
|
230
|
+
method_option :version,
|
231
|
+
:type => :string,
|
232
|
+
:default => 'LATEST',
|
233
|
+
:desc => 'Kill Bill version'
|
234
|
+
desc 'info', 'Describe information about a Kill Bill version'
|
235
|
+
def info
|
236
|
+
info = KillbillServerArtifact.info(options[:version],
|
237
|
+
options[:overrides],
|
238
|
+
options[:ssl_verify])
|
239
|
+
|
240
|
+
say "Dependencies for version #{options[:version]}\n " + (info.map {|k,v| "#{k} #{v}"}).join("\n "), :green
|
241
|
+
end
|
242
|
+
|
229
243
|
private
|
230
244
|
|
231
245
|
def logger
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'uri'
|
3
|
+
|
4
|
+
module KPM
|
5
|
+
class TomcatManager
|
6
|
+
|
7
|
+
DOWNLOAD_URL = 'https://s3.amazonaws.com/kb-binaries/apache-tomcat-7.0.42.tar.gz'
|
8
|
+
|
9
|
+
def initialize(tomcat_dir, logger)
|
10
|
+
@tomcat_dir = Pathname.new(tomcat_dir)
|
11
|
+
@logger = logger
|
12
|
+
end
|
13
|
+
|
14
|
+
def download
|
15
|
+
uri = URI.parse(DOWNLOAD_URL)
|
16
|
+
|
17
|
+
path = nil
|
18
|
+
Dir.mktmpdir do |dir|
|
19
|
+
file = Pathname.new(dir).join('tomcat.tar.gz')
|
20
|
+
|
21
|
+
@logger.info "Starting download of #{DOWNLOAD_URL} to #{file}"
|
22
|
+
Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
|
23
|
+
File.open(file, 'wb+') do |file|
|
24
|
+
http.get(uri.path) do |body|
|
25
|
+
file.write(body)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
path = Utils.unpack_tgz(file.to_s, @tomcat_dir, true)
|
31
|
+
end
|
32
|
+
|
33
|
+
@logger.info "Successful installation of #{DOWNLOAD_URL} to #{path}"
|
34
|
+
path
|
35
|
+
end
|
36
|
+
|
37
|
+
def setup
|
38
|
+
# Remove default webapps
|
39
|
+
%w(ROOT docs examples host-manager manager).each do |webapp|
|
40
|
+
FileUtils.rm_rf(@tomcat_dir.join('webapps').join(webapp))
|
41
|
+
end
|
42
|
+
|
43
|
+
# Update Root.xml
|
44
|
+
root_xml_dir = @tomcat_dir.join('conf').join('Catalina').join('localhost')
|
45
|
+
FileUtils.mkdir_p(root_xml_dir)
|
46
|
+
File.write(root_xml_dir.join('ROOT.xml'), '<Context></Context>')
|
47
|
+
|
48
|
+
# Setup default properties
|
49
|
+
setenv_sh_path = @tomcat_dir.join('bin').join('setenv.sh')
|
50
|
+
File.write(setenv_sh_path, 'export CATALINA_OPTS="$CATALINA_OPTS -XX:PermSize=512m -XX:MaxPermSize=1G -Xms1G -Xmx2G"')
|
51
|
+
|
52
|
+
@tomcat_dir.join('webapps').join('ROOT.war').to_s
|
53
|
+
end
|
54
|
+
|
55
|
+
def help
|
56
|
+
"Tomcat installed at #{@tomcat_dir}
|
57
|
+
Start script: #{@tomcat_dir.join('bin').join('startup.sh').to_s}
|
58
|
+
Stop script: #{@tomcat_dir.join('bin').join('shutdown.sh').to_s}
|
59
|
+
Logs: #{@tomcat_dir.join('logs').to_s}"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/kpm/utils.rb
CHANGED
@@ -8,6 +8,7 @@ module KPM
|
|
8
8
|
TAR_LONGLINK = '././@LongLink'
|
9
9
|
|
10
10
|
def unpack_tgz(tar_gz_archive, destination, skip_top_dir=false)
|
11
|
+
top_dir = nil
|
11
12
|
Gem::Package::TarReader.new(Zlib::GzipReader.open(tar_gz_archive)) do |tar|
|
12
13
|
dest = nil
|
13
14
|
tar.each do |entry|
|
@@ -22,16 +23,21 @@ module KPM
|
|
22
23
|
FileUtils.mkdir_p dest, :mode => entry.header.mode, :verbose => false
|
23
24
|
elsif entry.file?
|
24
25
|
FileUtils.rm_rf dest if File.directory? dest
|
26
|
+
FileUtils.mkdir_p File.dirname(dest), :verbose => false
|
25
27
|
File.open dest, "wb" do |f|
|
26
28
|
f.print entry.read
|
27
29
|
end
|
28
30
|
FileUtils.chmod entry.header.mode, dest, :verbose => false
|
31
|
+
current_dir = File.dirname(dest)
|
32
|
+
# In case there are two top dirs, keep the last one by convention
|
33
|
+
top_dir = current_dir if (top_dir.nil? || top_dir.size >= current_dir.size)
|
29
34
|
elsif entry.header.typeflag == '2' # Symlink
|
30
35
|
File.symlink entry.header.linkname, dest
|
31
36
|
end
|
32
37
|
dest = nil
|
33
38
|
end
|
34
39
|
end
|
40
|
+
top_dir
|
35
41
|
end
|
36
42
|
|
37
43
|
def path_with_skipped_top_level_dir(path)
|
@@ -39,4 +45,4 @@ module KPM
|
|
39
45
|
end
|
40
46
|
end
|
41
47
|
end
|
42
|
-
end
|
48
|
+
end
|
data/lib/kpm/version.rb
CHANGED
@@ -23,8 +23,6 @@ describe KPM::BaseArtifact do
|
|
23
23
|
# Verify the download happens when we set force_download
|
24
24
|
test_download dir, nil, false, true
|
25
25
|
end
|
26
|
-
|
27
|
-
|
28
26
|
end
|
29
27
|
|
30
28
|
# This test makes sure the top level directory is correctly verify_is_skipped
|
@@ -45,6 +43,8 @@ describe KPM::BaseArtifact do
|
|
45
43
|
files_in_dir[0].should == info[:file_path] + '/killbill-payment-test'
|
46
44
|
|
47
45
|
File.read(info[:file_path] + '/killbill-payment-test/1.8.7/killbill.properties').should == "mainClass=PaymentTest::PaymentPlugin\nrequire=payment_test\npluginType=PAYMENT\n"
|
46
|
+
|
47
|
+
info[:bundle_dir].should == info[:file_path] + '/killbill-payment-test/1.8.7'
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
@@ -64,6 +64,8 @@ describe KPM::BaseArtifact do
|
|
64
64
|
files_in_dir.size.should == 20
|
65
65
|
|
66
66
|
File.file?(info[:file_path] + '/killbill-osgi-bundles-jruby-0.11.3.jar').should be_true
|
67
|
+
|
68
|
+
info[:bundle_dir].should == info[:file_path]
|
67
69
|
end
|
68
70
|
end
|
69
71
|
|
@@ -24,6 +24,9 @@ describe KPM::Installer do
|
|
24
24
|
'ruby' => [{
|
25
25
|
'name' => 'payment-test-plugin',
|
26
26
|
'version' => '1.8.7'
|
27
|
+
},
|
28
|
+
{
|
29
|
+
'name' => 'stripe'
|
27
30
|
}]
|
28
31
|
},
|
29
32
|
},
|
@@ -35,30 +38,40 @@ describe KPM::Installer do
|
|
35
38
|
@logger)
|
36
39
|
|
37
40
|
installer.install
|
41
|
+
check_installation(plugins_dir, kb_webapp_path, kaui_webapp_path)
|
38
42
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
43
|
+
# Verify idempotency
|
44
|
+
installer.install
|
45
|
+
check_installation(plugins_dir, kb_webapp_path, kaui_webapp_path)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def check_installation(plugins_dir, kb_webapp_path, kaui_webapp_path)
|
52
|
+
[
|
53
|
+
plugins_dir,
|
54
|
+
plugins_dir + '/platform',
|
55
|
+
plugins_dir + '/plugins',
|
56
|
+
plugins_dir + '/plugins/java',
|
57
|
+
plugins_dir + '/plugins/java/analytics-plugin',
|
58
|
+
plugins_dir + '/plugins/java/analytics-plugin/0.7.1',
|
59
|
+
plugins_dir + '/plugins/ruby',
|
60
|
+
plugins_dir + '/plugins/ruby/killbill-payment-test',
|
61
|
+
plugins_dir + '/plugins/ruby/killbill-payment-test/1.8.7',
|
62
|
+
plugins_dir + '/plugins/ruby/killbill-stripe'
|
63
|
+
].each do |dir|
|
64
|
+
File.directory?(dir).should be_true
|
65
|
+
end
|
52
66
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
end
|
67
|
+
[
|
68
|
+
kb_webapp_path,
|
69
|
+
kaui_webapp_path,
|
70
|
+
plugins_dir + '/platform/jruby.jar',
|
71
|
+
plugins_dir + '/plugins/java/analytics-plugin/0.7.1/analytics-plugin-0.7.1.jar',
|
72
|
+
plugins_dir + '/plugins/ruby/killbill-payment-test/1.8.7/killbill.properties'
|
73
|
+
].each do |file|
|
74
|
+
File.file?(file).should be_true
|
62
75
|
end
|
63
76
|
end
|
64
77
|
end
|
@@ -28,4 +28,14 @@ describe KPM::KillbillServerArtifact do
|
|
28
28
|
versions[0].should == '0.11.10'
|
29
29
|
versions[1].should == '0.11.11'
|
30
30
|
end
|
31
|
+
|
32
|
+
it 'should get dependencies information' do
|
33
|
+
info = KPM::KillbillServerArtifact.info('0.15.9')
|
34
|
+
info['killbill'].should == '0.15.9'
|
35
|
+
info['killbill-oss-parent'].should == '0.62'
|
36
|
+
info['killbill-api'].should == '0.27'
|
37
|
+
info['killbill-plugin-api'].should == '0.16'
|
38
|
+
info['killbill-commons'].should == '0.10'
|
39
|
+
info['killbill-platform'].should == '0.13'
|
40
|
+
end
|
31
41
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe KPM::TomcatManager do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@logger = Logger.new(STDOUT)
|
7
|
+
@logger.level = Logger::INFO
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should be able to download and unpack tomcat' do
|
11
|
+
Dir.mktmpdir do |dir|
|
12
|
+
manager = KPM::TomcatManager.new(dir, @logger)
|
13
|
+
|
14
|
+
tomcat_path = manager.download
|
15
|
+
tomcat_path.should_not be_nil
|
16
|
+
|
17
|
+
root_war_path = manager.setup
|
18
|
+
root_war_path.should_not be_nil
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe KPM::BaseArtifact do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@logger = Logger.new(STDOUT)
|
7
|
+
@logger.level = Logger::INFO
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should install from the filesystem' do
|
11
|
+
file_path = File.join(File.dirname(__FILE__), 'sha1_test.yml')
|
12
|
+
|
13
|
+
Dir.mktmpdir do |dir|
|
14
|
+
info = KPM::BaseArtifact.pull_from_fs(@logger, file_path, dir)
|
15
|
+
|
16
|
+
info[:skipped].should be_false
|
17
|
+
info[:is_tgz].should be_false
|
18
|
+
info[:repository_path].should == file_path
|
19
|
+
info[:dir_name].should == dir
|
20
|
+
info[:bundle_dir].should == dir
|
21
|
+
info[:file_name].should == 'sha1_test.yml'
|
22
|
+
|
23
|
+
files_in_dir = Dir[dir + '/*']
|
24
|
+
files_in_dir.size.should == 1
|
25
|
+
files_in_dir[0].should == info[:file_path]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should build the fs info' do
|
30
|
+
# Kill Bill
|
31
|
+
check_fs_info('/opt/tomcat/webapps/ROOT.war',
|
32
|
+
'/path/to/killbill.war',
|
33
|
+
false,
|
34
|
+
'1.2.3',
|
35
|
+
'/opt/tomcat/webapps',
|
36
|
+
'ROOT.war',
|
37
|
+
'/opt/tomcat/webapps/ROOT.war')
|
38
|
+
|
39
|
+
# Default bundles
|
40
|
+
check_fs_info('/var/tmp/bundles/platform',
|
41
|
+
'/path/to/bundles.tar.gz',
|
42
|
+
true,
|
43
|
+
'1.2.3',
|
44
|
+
'/var/tmp/bundles/platform',
|
45
|
+
nil,
|
46
|
+
'/var/tmp/bundles/platform')
|
47
|
+
|
48
|
+
# Java plugin
|
49
|
+
check_fs_info('/var/tmp/bundles/plugins/java/analytics-plugin/1.2.3',
|
50
|
+
'/path/to/analytics.jar',
|
51
|
+
false,
|
52
|
+
'1.2.3',
|
53
|
+
'/var/tmp/bundles/plugins/java/analytics-plugin/1.2.3',
|
54
|
+
'analytics.jar',
|
55
|
+
'/var/tmp/bundles/plugins/java/analytics-plugin/1.2.3/analytics.jar')
|
56
|
+
check_fs_info('/var/tmp/bundles/plugins/java/analytics-plugin/LATEST',
|
57
|
+
'/path/to/analytics.jar',
|
58
|
+
false,
|
59
|
+
'1.2.3',
|
60
|
+
'/var/tmp/bundles/plugins/java/analytics-plugin/1.2.3',
|
61
|
+
'analytics.jar',
|
62
|
+
'/var/tmp/bundles/plugins/java/analytics-plugin/1.2.3/analytics.jar')
|
63
|
+
|
64
|
+
# Ruby plugin
|
65
|
+
check_fs_info('/var/tmp/bundles/plugins/ruby',
|
66
|
+
'/path/to/stripe.tar.gz',
|
67
|
+
true,
|
68
|
+
'1.2.3',
|
69
|
+
'/var/tmp/bundles/plugins/ruby',
|
70
|
+
nil,
|
71
|
+
'/var/tmp/bundles/plugins/ruby')
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def check_fs_info(specified_destination_path, repository_path, is_tgz, version, expected_dir_name, expected_file_name, expected_file_path)
|
77
|
+
info = {
|
78
|
+
:repository_path => repository_path,
|
79
|
+
:is_tgz => is_tgz,
|
80
|
+
:version => version
|
81
|
+
}
|
82
|
+
|
83
|
+
KPM::BaseArtifact.send('populate_fs_info', info, specified_destination_path)
|
84
|
+
|
85
|
+
info[:repository_path].should == repository_path
|
86
|
+
info[:is_tgz].should == is_tgz
|
87
|
+
info[:version].should == version
|
88
|
+
info[:dir_name].should == expected_dir_name
|
89
|
+
info[:file_name].should == expected_file_name
|
90
|
+
info[:file_path].should == expected_file_path
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe KPM::PluginsDirectory do
|
4
|
+
|
5
|
+
it 'should parse the plugins directory' do
|
6
|
+
directory = KPM::PluginsDirectory.all(false)
|
7
|
+
directory.size.should > 0
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should lookup plugins (legacy way)' do
|
11
|
+
group_id, artifact_id, packaging, classifier, version, type = KPM::PluginsDirectory.lookup('analytics', false)
|
12
|
+
group_id.should == 'org.kill-bill.billing.plugin.java'
|
13
|
+
artifact_id.should == 'analytics-plugin'
|
14
|
+
packaging.should == 'jar'
|
15
|
+
classifier.should be_nil
|
16
|
+
version.should == '2.0.2'
|
17
|
+
type.should == :java
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should lookup plugins' do
|
21
|
+
group_id, artifact_id, packaging, classifier, version, type = KPM::PluginsDirectory.lookup('analytics', false, '0.14')
|
22
|
+
group_id.should == 'org.kill-bill.billing.plugin.java'
|
23
|
+
artifact_id.should == 'analytics-plugin'
|
24
|
+
packaging.should == 'jar'
|
25
|
+
classifier.should be_nil
|
26
|
+
version.should == '1.0.3'
|
27
|
+
type.should == :java
|
28
|
+
|
29
|
+
group_id, artifact_id, packaging, classifier, version, type = KPM::PluginsDirectory.lookup('analytics', false, 'LATEST')
|
30
|
+
group_id.should == 'org.kill-bill.billing.plugin.java'
|
31
|
+
artifact_id.should == 'analytics-plugin'
|
32
|
+
packaging.should == 'jar'
|
33
|
+
classifier.should be_nil
|
34
|
+
version.should == 'LATEST'
|
35
|
+
type.should == :java
|
36
|
+
|
37
|
+
group_id, artifact_id, packaging, classifier, version, type = KPM::PluginsDirectory.lookup('analytics', false, '0.42')
|
38
|
+
group_id.should == 'org.kill-bill.billing.plugin.java'
|
39
|
+
artifact_id.should == 'analytics-plugin'
|
40
|
+
packaging.should == 'jar'
|
41
|
+
classifier.should be_nil
|
42
|
+
version.should == 'LATEST'
|
43
|
+
type.should == :java
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe KPM::PluginsManager do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
logger = Logger.new(STDOUT)
|
7
|
+
logger.level = Logger::INFO
|
8
|
+
|
9
|
+
@plugins_dir = Dir.mktmpdir
|
10
|
+
@manager = KPM::PluginsManager.new(@plugins_dir, logger)
|
11
|
+
|
12
|
+
@plugin_dir = Pathname.new(@plugins_dir).join('ruby').join('killbill-stripe')
|
13
|
+
FileUtils.mkdir_p(@plugin_dir)
|
14
|
+
FileUtils.mkdir_p(@plugin_dir.join('1.0.0'))
|
15
|
+
FileUtils.mkdir_p(@plugin_dir.join('2.0.0'))
|
16
|
+
|
17
|
+
File.exists?(@plugin_dir.join('ACTIVE')).should be_false
|
18
|
+
end
|
19
|
+
|
20
|
+
after(:each) do
|
21
|
+
FileUtils.remove_entry_secure @plugins_dir
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'sets a path as active' do
|
25
|
+
@manager.set_active(@plugin_dir.join('1.0.0'))
|
26
|
+
File.exists?(@plugin_dir.join('ACTIVE')).should be_true
|
27
|
+
File.readlink(@plugin_dir.join('ACTIVE')).should == @plugin_dir.join('1.0.0').to_s
|
28
|
+
|
29
|
+
@manager.set_active(@plugin_dir.join('2.0.0'))
|
30
|
+
File.exists?(@plugin_dir.join('ACTIVE')).should be_true
|
31
|
+
File.readlink(@plugin_dir.join('ACTIVE')).should == @plugin_dir.join('2.0.0').to_s
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'sets a plugin version as active' do
|
35
|
+
@manager.set_active('killbill-stripe', '2.0.0')
|
36
|
+
File.exists?(@plugin_dir.join('ACTIVE')).should be_true
|
37
|
+
File.readlink(@plugin_dir.join('ACTIVE')).should == @plugin_dir.join('2.0.0').to_s
|
38
|
+
|
39
|
+
@manager.set_active('killbill-stripe', '1.0.0')
|
40
|
+
File.exists?(@plugin_dir.join('ACTIVE')).should be_true
|
41
|
+
File.readlink(@plugin_dir.join('ACTIVE')).should == @plugin_dir.join('1.0.0').to_s
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'uninstalls a plugin via a path' do
|
45
|
+
@manager.uninstall(@plugin_dir.join('1.0.0'))
|
46
|
+
check_state('1.0.0', false, true)
|
47
|
+
check_state('2.0.0', false, false)
|
48
|
+
|
49
|
+
@manager.uninstall(@plugin_dir.join('2.0.0'))
|
50
|
+
check_state('1.0.0', false, true)
|
51
|
+
check_state('2.0.0', false, true)
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'uninstalls a plugin via name' do
|
55
|
+
@manager.uninstall('killbill-stripe', '1.0.0')
|
56
|
+
check_state('1.0.0', false, true)
|
57
|
+
check_state('2.0.0', false, false)
|
58
|
+
|
59
|
+
@manager.uninstall('killbill-stripe', '2.0.0')
|
60
|
+
check_state('1.0.0', false, true)
|
61
|
+
check_state('2.0.0', false, true)
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'restarts a plugin via a path' do
|
65
|
+
@manager.restart(@plugin_dir.join('1.0.0'))
|
66
|
+
check_state('1.0.0', true, false)
|
67
|
+
check_state('2.0.0', false, false)
|
68
|
+
|
69
|
+
@manager.restart(@plugin_dir.join('2.0.0'))
|
70
|
+
check_state('1.0.0', true, false)
|
71
|
+
check_state('2.0.0', true, false)
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'restarts a plugin via name' do
|
75
|
+
@manager.restart('killbill-stripe', '1.0.0')
|
76
|
+
check_state('1.0.0', true, false)
|
77
|
+
check_state('2.0.0', false, false)
|
78
|
+
|
79
|
+
@manager.restart('killbill-stripe', '2.0.0')
|
80
|
+
check_state('1.0.0', true, false)
|
81
|
+
check_state('2.0.0', true, false)
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'guesses the plugin name' do
|
85
|
+
@manager.guess_plugin_name('tripe').should be_nil
|
86
|
+
# Short name
|
87
|
+
@manager.guess_plugin_name('stripe').should == 'killbill-stripe'
|
88
|
+
# Artifact id
|
89
|
+
@manager.guess_plugin_name('stripe-plugin').should == 'killbill-stripe'
|
90
|
+
# Plugin name (top directory in the .tar.gz)
|
91
|
+
@manager.guess_plugin_name('killbill-stripe').should == 'killbill-stripe'
|
92
|
+
end
|
93
|
+
|
94
|
+
private
|
95
|
+
|
96
|
+
def check_state(version, has_restart, has_stop)
|
97
|
+
File.exists?(@plugin_dir.join(version).join('tmp').join('restart.txt')).should == has_restart
|
98
|
+
File.exists?(@plugin_dir.join(version).join('tmp').join('stop.txt')).should == has_stop
|
99
|
+
end
|
100
|
+
end
|