jenkins_api_client 0.6.2 → 0.7.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.
- data/.gitignore +3 -0
- data/.jenkins.yml +9 -0
- data/.travis.yml +11 -15
- data/CHANGELOG.md +15 -0
- data/Gemfile +2 -2
- data/README.md +7 -9
- data/Rakefile +27 -14
- data/lib/jenkins_api_client.rb +36 -6
- data/lib/jenkins_api_client/build_queue.rb +213 -0
- data/lib/jenkins_api_client/cli/base.rb +10 -6
- data/lib/jenkins_api_client/cli/helper.rb +13 -4
- data/lib/jenkins_api_client/cli/job.rb +6 -9
- data/lib/jenkins_api_client/cli/node.rb +6 -4
- data/lib/jenkins_api_client/cli/system.rb +2 -1
- data/lib/jenkins_api_client/client.rb +31 -25
- data/lib/jenkins_api_client/job.rb +248 -95
- data/lib/jenkins_api_client/node.rb +128 -10
- data/lib/jenkins_api_client/system.rb +4 -2
- data/lib/jenkins_api_client/version.rb +2 -2
- data/lib/jenkins_api_client/view.rb +17 -4
- data/scripts/login_with_irb.rb +4 -3
- data/spec/func_tests/client_spec.rb +90 -0
- data/spec/func_tests/job_spec.rb +348 -0
- data/spec/func_tests/node_spec.rb +174 -0
- data/spec/{spec_helper.rb → func_tests/spec_helper.rb} +2 -2
- data/spec/func_tests/system_spec.rb +55 -0
- data/spec/func_tests/view_spec.rb +53 -0
- data/spec/unit_tests/client_spec.rb +211 -0
- data/spec/unit_tests/fixtures/files/computer_sample.xml +17 -0
- data/spec/unit_tests/fixtures/files/job_sample.xml +16 -0
- data/spec/unit_tests/job_spec.rb +355 -0
- data/spec/unit_tests/node_spec.rb +192 -0
- data/spec/unit_tests/spec_helper.rb +8 -0
- data/spec/unit_tests/system_spec.rb +54 -0
- data/spec/unit_tests/view_spec.rb +127 -0
- metadata +34 -23
- data/spec/client_spec.rb +0 -52
- data/spec/job_spec.rb +0 -158
- data/spec/node_spec.rb +0 -48
- data/spec/system_spec.rb +0 -46
@@ -0,0 +1,54 @@
|
|
1
|
+
require File.expand_path('../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe JenkinsApi::Client::System do
|
4
|
+
context "With properly initialized Client" do
|
5
|
+
before do
|
6
|
+
@client = mock
|
7
|
+
@system = JenkinsApi::Client::System.new(@client)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "InstanceMethods" do
|
11
|
+
describe "#initialize" do
|
12
|
+
it "initializes by receiving an instance of client object" do
|
13
|
+
expect(
|
14
|
+
lambda{ JenkinsApi::Client::System.new(@client) }
|
15
|
+
).not_to raise_error
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#quiet_down" do
|
20
|
+
it "sends a request to put the server in quiet down mode" do
|
21
|
+
@client.should_receive(:api_post_request).with("/quietDown")
|
22
|
+
@system.quiet_down
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "#cancel_quiet_down" do
|
27
|
+
it "sends a request to take the server away from quiet down mode" do
|
28
|
+
@client.should_receive(:api_post_request).with("/cancelQuietDown")
|
29
|
+
@system.cancel_quiet_down
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "#restart" do
|
34
|
+
it "sends a safe restart request to the server" do
|
35
|
+
@client.should_receive(:api_post_request).with("/safeRestart")
|
36
|
+
@system.restart(false)
|
37
|
+
end
|
38
|
+
it "sends a force restart request to the server" do
|
39
|
+
@client.should_receive(:api_post_request).with("/restart")
|
40
|
+
@system.restart(true)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "#wait_for_ready" do
|
45
|
+
it "exits if the response body doesn't have the wait message" do
|
46
|
+
@client.should_receive(:get_root).and_return(Net::HTTP.get_response(URI('http://example.com/index.html')))
|
47
|
+
@client.should_receive(:debug)
|
48
|
+
@system.wait_for_ready
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
require File.expand_path('../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe JenkinsApi::Client::View do
|
4
|
+
context "With properly initialized Client" do
|
5
|
+
before do
|
6
|
+
@client = mock
|
7
|
+
@view = JenkinsApi::Client::View.new(@client)
|
8
|
+
@sample_views_json = {
|
9
|
+
"views" => [
|
10
|
+
{"name" => "test_view"},
|
11
|
+
{"name" => "test_view2"}
|
12
|
+
]
|
13
|
+
}
|
14
|
+
@sample_view_json = {
|
15
|
+
"jobs" => [
|
16
|
+
{"name" => "test_job"},
|
17
|
+
{"name" => "test_job2"}
|
18
|
+
]
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "InstanceMethods" do
|
23
|
+
describe "#initialize" do
|
24
|
+
it "initializes by receiving an instane of client object" do
|
25
|
+
expect(
|
26
|
+
lambda { JenkinsApi::Client::View.new(@client) }
|
27
|
+
).not_to raise_error
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "#create" do
|
32
|
+
it "creates a view by accepting a name" do
|
33
|
+
@client.should_receive(:api_post_request)
|
34
|
+
@view.create("test_view")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "#delete" do
|
39
|
+
it "deletes the view with the given name" do
|
40
|
+
@client.should_receive(:api_post_request).with("/view/test_view/doDelete")
|
41
|
+
@view.delete("test_view")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "#list" do
|
46
|
+
it "lists all views" do
|
47
|
+
@client.should_receive(:api_get_request).with("/").and_return(@sample_views_json)
|
48
|
+
response = @view.list
|
49
|
+
response.class.should == Array
|
50
|
+
response.size.should == 2
|
51
|
+
end
|
52
|
+
|
53
|
+
it "lists views matching specific filter" do
|
54
|
+
@client.should_receive(:api_get_request).with("/").and_return(@sample_views_json)
|
55
|
+
response = @view.list("test_view2")
|
56
|
+
response.class.should == Array
|
57
|
+
response.size.should == 1
|
58
|
+
end
|
59
|
+
|
60
|
+
it "lists views matching specific filter and matches case" do
|
61
|
+
@client.should_receive(:api_get_request).with("/").and_return(@sample_views_json)
|
62
|
+
response = @view.list("TEST_VIEW", false)
|
63
|
+
response.class.should == Array
|
64
|
+
response.size.should == 0
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "#exists?" do
|
69
|
+
it "returns true a view that exists" do
|
70
|
+
@client.should_receive(:api_get_request).with("/").and_return(@sample_views_json)
|
71
|
+
@view.exists?("test_view2").should == true
|
72
|
+
end
|
73
|
+
|
74
|
+
it "returns false for non-existent view" do
|
75
|
+
@client.should_receive(:api_get_request).with("/").and_return(@sample_views_json)
|
76
|
+
@view.exists?("i_am_not_there").should == false
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe "#list_jobs" do
|
81
|
+
it "lists all jobs in the given view" do
|
82
|
+
@client.should_receive(:api_get_request).with("/").and_return(@sample_views_json)
|
83
|
+
@client.should_receive(:api_get_request).with("/view/test_view").and_return(@sample_view_json)
|
84
|
+
response = @view.list_jobs("test_view")
|
85
|
+
response.class.should == Array
|
86
|
+
response.size.should == 2
|
87
|
+
end
|
88
|
+
|
89
|
+
it "raises an error if called on a non-existent view" do
|
90
|
+
@client.should_receive(:api_get_request).with("/").and_return(@sample_views_json)
|
91
|
+
expect(
|
92
|
+
lambda { @view.list_jobs("i_am_not_there") }
|
93
|
+
).to raise_error
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "#add_job" do
|
98
|
+
it "adds the specified job to the specified view" do
|
99
|
+
@client.should_receive(:api_post_request)
|
100
|
+
@view.add_job("test_view", "test_job3")
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe "#remove_job" do
|
105
|
+
it "removes the specified job to the specified view" do
|
106
|
+
@client.should_receive(:api_post_request)
|
107
|
+
@view.remove_job("test_view", "test_job")
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "#get_config" do
|
112
|
+
it "obtains the config from the server for the specified view" do
|
113
|
+
@client.should_receive(:get_config).with("/view/test_view")
|
114
|
+
@view.get_config("test_view")
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
describe "#post_config" do
|
119
|
+
it "posts the config to the server for the specified view" do
|
120
|
+
@client.should_receive(:post_config).with("/view/test_view/config.xml", "<view>test_view</view>")
|
121
|
+
@view.post_config("test_view", "<view>test_view</view>")
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jenkins_api_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -48,7 +48,7 @@ dependencies:
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - ! '>='
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: 0.16.0
|
54
54
|
type: :runtime
|
@@ -56,7 +56,7 @@ dependencies:
|
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 0.16.0
|
62
62
|
- !ruby/object:Gem::Dependency
|
@@ -92,29 +92,29 @@ dependencies:
|
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: 1.4.0
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
|
-
name:
|
95
|
+
name: builder
|
96
96
|
requirement: !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
98
98
|
requirements:
|
99
|
-
- -
|
99
|
+
- - ~>
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
102
|
-
type: :
|
101
|
+
version: 3.1.3
|
102
|
+
type: :runtime
|
103
103
|
prerelease: false
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
|
-
- -
|
107
|
+
- - ~>
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
109
|
+
version: 3.1.3
|
110
110
|
- !ruby/object:Gem::Dependency
|
111
|
-
name:
|
111
|
+
name: bundler
|
112
112
|
requirement: !ruby/object:Gem::Requirement
|
113
113
|
none: false
|
114
114
|
requirements:
|
115
115
|
- - ! '>='
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 1.
|
117
|
+
version: '1.0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -122,23 +122,23 @@ dependencies:
|
|
122
122
|
requirements:
|
123
123
|
- - ! '>='
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version: 1.
|
125
|
+
version: '1.0'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
127
|
+
name: jeweler
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
129
129
|
none: false
|
130
130
|
requirements:
|
131
|
-
- -
|
131
|
+
- - ! '>='
|
132
132
|
- !ruby/object:Gem::Version
|
133
|
-
version:
|
133
|
+
version: 1.6.4
|
134
134
|
type: :development
|
135
135
|
prerelease: false
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
137
|
none: false
|
138
138
|
requirements:
|
139
|
-
- -
|
139
|
+
- - ! '>='
|
140
140
|
- !ruby/object:Gem::Version
|
141
|
-
version:
|
141
|
+
version: 1.6.4
|
142
142
|
- !ruby/object:Gem::Dependency
|
143
143
|
name: simplecov
|
144
144
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,6 +184,7 @@ extensions: []
|
|
184
184
|
extra_rdoc_files: []
|
185
185
|
files:
|
186
186
|
- .gitignore
|
187
|
+
- .jenkins.yml
|
187
188
|
- .travis.yml
|
188
189
|
- CHANGELOG.md
|
189
190
|
- Gemfile
|
@@ -193,6 +194,7 @@ files:
|
|
193
194
|
- bin/jenkinscli
|
194
195
|
- config/login.yml.example
|
195
196
|
- lib/jenkins_api_client.rb
|
197
|
+
- lib/jenkins_api_client/build_queue.rb
|
196
198
|
- lib/jenkins_api_client/cli/base.rb
|
197
199
|
- lib/jenkins_api_client/cli/helper.rb
|
198
200
|
- lib/jenkins_api_client/cli/job.rb
|
@@ -206,11 +208,20 @@ files:
|
|
206
208
|
- lib/jenkins_api_client/version.rb
|
207
209
|
- lib/jenkins_api_client/view.rb
|
208
210
|
- scripts/login_with_irb.rb
|
209
|
-
- spec/client_spec.rb
|
210
|
-
- spec/job_spec.rb
|
211
|
-
- spec/node_spec.rb
|
212
|
-
- spec/spec_helper.rb
|
213
|
-
- spec/system_spec.rb
|
211
|
+
- spec/func_tests/client_spec.rb
|
212
|
+
- spec/func_tests/job_spec.rb
|
213
|
+
- spec/func_tests/node_spec.rb
|
214
|
+
- spec/func_tests/spec_helper.rb
|
215
|
+
- spec/func_tests/system_spec.rb
|
216
|
+
- spec/func_tests/view_spec.rb
|
217
|
+
- spec/unit_tests/client_spec.rb
|
218
|
+
- spec/unit_tests/fixtures/files/computer_sample.xml
|
219
|
+
- spec/unit_tests/fixtures/files/job_sample.xml
|
220
|
+
- spec/unit_tests/job_spec.rb
|
221
|
+
- spec/unit_tests/node_spec.rb
|
222
|
+
- spec/unit_tests/spec_helper.rb
|
223
|
+
- spec/unit_tests/system_spec.rb
|
224
|
+
- spec/unit_tests/view_spec.rb
|
214
225
|
homepage: https://github.com/arangamani/jenkins_api_client
|
215
226
|
licenses: []
|
216
227
|
post_install_message:
|
data/spec/client_spec.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Specifying JenkinsApi::Client class capabilities
|
3
|
-
# Author: Kannan Manickam <arangamani.kannan@gmail.com>
|
4
|
-
#
|
5
|
-
|
6
|
-
require File.expand_path('../spec_helper', __FILE__)
|
7
|
-
require 'yaml'
|
8
|
-
|
9
|
-
describe JenkinsApi::Client do
|
10
|
-
context "Given valid credentials and server information in the ~/.jenkins_api_client/login.yml" do
|
11
|
-
before(:all) do
|
12
|
-
@creds_file = '~/.jenkins_api_client/login.yml'
|
13
|
-
# Grabbing just the server IP in a variable so we can check for wrong credentials
|
14
|
-
@server_ip = YAML.load_file(File.expand_path(@creds_file, __FILE__))[:server_ip]
|
15
|
-
begin
|
16
|
-
@client = JenkinsApi::Client.new(YAML.load_file(File.expand_path(@creds_file, __FILE__)))
|
17
|
-
rescue Exception => e
|
18
|
-
puts "WARNING: Credentials are not set properly."
|
19
|
-
puts e.message
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
it "Should be able to toggle the debug value" do
|
24
|
-
value = @client.debug
|
25
|
-
@client.toggle_debug.should_not == value
|
26
|
-
end
|
27
|
-
|
28
|
-
it "Should be able to initialize with valid credentials" do
|
29
|
-
client1 = JenkinsApi::Client.new(YAML.load_file(File.expand_path(@creds_file, __FILE__)))
|
30
|
-
client1.class.should == JenkinsApi::Client
|
31
|
-
end
|
32
|
-
|
33
|
-
it "Should fail if wrong credentials are given" do
|
34
|
-
begin
|
35
|
-
client2 = JenkinsApi::Client.new(:server_ip => @server_ip, :username => 'stranger', :password => 'hacked')
|
36
|
-
client2.job.list_all
|
37
|
-
rescue Exception => e
|
38
|
-
e.class.should == JenkinsApi::Exceptions::UnautherizedException
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
it "Should return a job object on call to job function" do
|
43
|
-
@client.job.class.should == JenkinsApi::Client::Job
|
44
|
-
end
|
45
|
-
|
46
|
-
it "Should accept a YAML argument when creating a new client" do
|
47
|
-
client3 = JenkinsApi::Client.new(YAML.load_file(File.expand_path(@creds_file, __FILE__)))
|
48
|
-
client3.class.should == JenkinsApi::Client
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
52
|
-
end
|
data/spec/job_spec.rb
DELETED
@@ -1,158 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Specifying JenkinsApi::Client::Job class capabilities
|
3
|
-
# Author: Kannan Manickam <arangamani.kannan@gmail.com>
|
4
|
-
#
|
5
|
-
|
6
|
-
require File.expand_path('../spec_helper', __FILE__)
|
7
|
-
require 'yaml'
|
8
|
-
|
9
|
-
describe JenkinsApi::Client::Job do
|
10
|
-
context "With properly initialized client" do
|
11
|
-
before(:all) do
|
12
|
-
@helper = JenkinsApiSpecHelper::Helper.new
|
13
|
-
@creds_file = '~/.jenkins_api_client/login.yml'
|
14
|
-
@job_name_prefix = 'awesome_rspec_test_job'
|
15
|
-
@filter = "^#{@job_name_prefix}.*"
|
16
|
-
@job_name = ''
|
17
|
-
begin
|
18
|
-
@client = JenkinsApi::Client.new(YAML.load_file(File.expand_path(@creds_file, __FILE__)))
|
19
|
-
rescue Exception => e
|
20
|
-
puts "WARNING: Credentials are not set properly."
|
21
|
-
puts e.message
|
22
|
-
end
|
23
|
-
# Creating 10 jobs to run the spec tests on
|
24
|
-
begin
|
25
|
-
10.times do |num|
|
26
|
-
xml = @helper.create_job_xml
|
27
|
-
job = "#{@job_name_prefix}_#{num}"
|
28
|
-
@job_name = job if num == 0
|
29
|
-
@client.job.create(job, xml).to_i.should == 200
|
30
|
-
end
|
31
|
-
rescue Exception => e
|
32
|
-
puts "WARNING: Can't create jobs for preparing to spec tests"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
it "Should be able to create a job" do
|
37
|
-
xml = @helper.create_job_xml
|
38
|
-
@client.job.create("some_random_nonexistent_job", xml).to_i.should == 200
|
39
|
-
end
|
40
|
-
|
41
|
-
it "Should be able to re-create a job" do
|
42
|
-
@client.job.recreate("some_random_nonexistent_job").to_i.should == 200
|
43
|
-
end
|
44
|
-
|
45
|
-
it "Should be able to change the description of a job" do
|
46
|
-
@client.job.change_description("some_random_nonexistent_job", "The description has been changed by the spec test").to_i.should == 200
|
47
|
-
end
|
48
|
-
|
49
|
-
it "Should be able to delete a job" do
|
50
|
-
@client.job.delete("some_random_nonexistent_job").to_i.should == 302
|
51
|
-
end
|
52
|
-
|
53
|
-
it "Should list all jobs" do
|
54
|
-
@client.job.list_all.class.should == Array
|
55
|
-
end
|
56
|
-
|
57
|
-
it "Should return job names based on the filter" do
|
58
|
-
names = @client.job.list(@filter)
|
59
|
-
names.class.should == Array
|
60
|
-
names.each { |name|
|
61
|
-
name.should match /#{@filter}/i
|
62
|
-
}
|
63
|
-
end
|
64
|
-
|
65
|
-
it "Should be able to list jobs by status" do
|
66
|
-
names = @client.job.list('success')
|
67
|
-
names.class.should == Array
|
68
|
-
names.each do |name|
|
69
|
-
status = @client.job.get_current_build_status(name)
|
70
|
-
status.should == 'success'
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
it "Should return all job names with details" do
|
75
|
-
@client.job.list_all_with_details.class.should == Array
|
76
|
-
end
|
77
|
-
|
78
|
-
it "Should list details of a particular job" do
|
79
|
-
job_name = @client.job.list(@filter)[0]
|
80
|
-
job_name.class.should == String
|
81
|
-
@client.job.list_details(job_name).class.should == Hash
|
82
|
-
end
|
83
|
-
|
84
|
-
it "Should list upstream projects of the specified job" do
|
85
|
-
@client.job.get_upstream_projects(@job_name).class.should == Array
|
86
|
-
end
|
87
|
-
|
88
|
-
it "Should list downstream projects of the specified job" do
|
89
|
-
@client.job.get_downstream_projects(@job_name).class.should == Array
|
90
|
-
end
|
91
|
-
|
92
|
-
it "Should get builds of a specified job" do
|
93
|
-
@client.job.get_builds(@job_name).class.should == Array
|
94
|
-
end
|
95
|
-
|
96
|
-
it "Should obtain the current build status for the specified job" do
|
97
|
-
build_status = @client.job.get_current_build_status(@job_name)
|
98
|
-
build_status.class.should == String
|
99
|
-
valid_build_status = ["not_run", "aborted", "success", "failure", "unstable", "running"]
|
100
|
-
valid_build_status.include?(build_status).should be_true
|
101
|
-
end
|
102
|
-
|
103
|
-
it "Should list all running jobs" do
|
104
|
-
@client.job.list_running.class.should == Array
|
105
|
-
end
|
106
|
-
|
107
|
-
it "Should build the specified job" do
|
108
|
-
@client.job.get_current_build_status(@job_name).should_not == "running"
|
109
|
-
response = @client.job.build(@job_name)
|
110
|
-
response.to_i.should == 302
|
111
|
-
# Sleep for 20 seconds so we don't hit the Jenkins quiet period
|
112
|
-
sleep 20
|
113
|
-
@client.job.get_current_build_status(@job_name).should == "running"
|
114
|
-
while @client.job.get_current_build_status(@job_name) == "running" do
|
115
|
-
# Waiting for this job to finish so it doesn't affect other tests
|
116
|
-
sleep 10
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
it "Should be able to abort a recent build of a running job" do
|
121
|
-
@client.job.get_current_build_status(@job_name).should_not == "running"
|
122
|
-
@client.job.build(@job_name)
|
123
|
-
sleep 20
|
124
|
-
@client.job.get_current_build_status(@job_name).should == "running"
|
125
|
-
sleep 20
|
126
|
-
@client.job.stop_build(@job_name).should.to_i == 302
|
127
|
-
sleep 20
|
128
|
-
@client.job.get_current_build_status(@job_name).should == "aborted"
|
129
|
-
end
|
130
|
-
|
131
|
-
it "Should be able to restrict a job to a node" do
|
132
|
-
@client.job.restrict_to_node(@job_name, 'master').to_i.should == 200
|
133
|
-
# Run it again to make sure that the replace existing node works
|
134
|
-
@client.job.restrict_to_node(@job_name, 'master').to_i.should == 200
|
135
|
-
end
|
136
|
-
|
137
|
-
it "Should be able to chain jobs" do
|
138
|
-
#
|
139
|
-
jobs = @client.job.list(@filter)
|
140
|
-
jobs.class.should == Array
|
141
|
-
start_jobs = @client.job.chain(jobs, 'success', ["all"])
|
142
|
-
start_jobs.class.should == Array
|
143
|
-
start_jobs.length.should == 1
|
144
|
-
|
145
|
-
start_jobs = @client.job.chain(jobs, 'failure', ["not_run", "aborted", 'failure'], 3)
|
146
|
-
start_jobs.class.should == Array
|
147
|
-
start_jobs.length.should == 3
|
148
|
-
end
|
149
|
-
|
150
|
-
after(:all) do
|
151
|
-
job_names = @client.job.list(@filter)
|
152
|
-
job_names.each { |job_name|
|
153
|
-
@client.job.delete(job_name)
|
154
|
-
}
|
155
|
-
end
|
156
|
-
|
157
|
-
end
|
158
|
-
end
|