kpm 0.0.15 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|