continuous_integration 0.0.7 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +5 -0
- data/README.md +19 -1
- data/Rakefile +5 -3
- data/bin/continuous_integration +1 -0
- data/continuous_integration.gemspec +21 -15
- data/lib/continuous_integration.rb +57 -41
- data/lib/continuous_integration/constants.rb +8 -6
- data/lib/continuous_integration/tasks.rb +131 -124
- data/lib/continuous_integration/version.rb +3 -1
- metadata +6 -11
- data/.ruby-version +0 -1
- data/Gemfile +0 -5
- data/Gemfile.lock +0 -26
- data/test/test_continuous_integration.rb +0 -52
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35bdfc28e10f4f15fe3d01a267dabd5d910238a3
|
4
|
+
data.tar.gz: d8e6515cac9a97932f2c1263928fd8ef430b071e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf93d80e13b875f6a9908df1156b566835a32bd0b050790d11793eeca41139edb7a946b1a0678b8e002cdc52f21f844e5cb7d97e5757ef2f9cea2a6285eeb669
|
7
|
+
data.tar.gz: 99ff295ba9bcfe266f4984e5f0ab1cccef0391739d96edfedf260715a93ab11f74cb4d865ab8cb120c5485dc4eebdeae5105e6fdb6d9f6008125d10a4c3d087d
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -35,8 +35,15 @@ gem install continuous_integration
|
|
35
35
|
Default paths have been defined in the [constants.rb](lib/continuous_integration/constants.rb) file. Update it aqccordingls as per your needs. It can also be overriden by passing them when running the server env var.
|
36
36
|
|
37
37
|
#### Running
|
38
|
-
|
38
|
+
In a console just run
|
39
|
+
|
40
|
+
```
|
41
|
+
$ continuous_integration
|
42
|
+
```
|
43
|
+
|
44
|
+
Running as a program
|
39
45
|
|
46
|
+
Put the below contents in a ruby file say `ci_server.rb`
|
40
47
|
```
|
41
48
|
#ci_server.rb
|
42
49
|
|
@@ -85,6 +92,17 @@ If you'd like to contribute to ContinuousIntegration, that's awesome, and we <3
|
|
85
92
|
|
86
93
|
Everyone interacting in the CI project’s codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [CI code of conduct](doc/CODE_OF_CONDUCT.md).
|
87
94
|
|
95
|
+
#### Acknowledgments
|
96
|
+
[Docker](https://www.docker.com/)
|
97
|
+
|
98
|
+
[Quay](https://quay.io/)
|
99
|
+
|
100
|
+
[Aha tool](https://github.com/theZiz/aha)
|
101
|
+
|
102
|
+
|
103
|
+
#### Customizations
|
104
|
+
Depending on the need and various third party services customizations, please feel free to write to me
|
105
|
+
|
88
106
|
### Donations
|
89
107
|
|
90
108
|
If you are using CI for you organization, please help solicit to donate, as this work is made possible with donations like yours. It involves years of efforts with money spent to obtain the college degree and experience gained to write quality software. PM for customizations and implementations
|
data/Rakefile
CHANGED
data/bin/continuous_integration
CHANGED
@@ -1,23 +1,29 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
lib = File.expand_path('../lib', __FILE__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'continuous_integration/version'
|
5
6
|
|
6
7
|
Gem::Specification.new do |gem|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
8
|
+
gem.name = 'continuous_integration'
|
9
|
+
gem.version = ContinuousIntegration::VERSION
|
10
|
+
gem.authors = ['Ragavendra Nagraj']
|
11
|
+
gem.email = ['ragavendra.bn@gmail.com']
|
12
|
+
gem.description = 'CI server for running integration tests using webrick'
|
13
|
+
gem.summary = 'One can run their UI and API tests using this gem'
|
14
|
+
gem.homepage = 'https://rubygems.org/gems/continuous_integration'
|
15
|
+
gem.license = 'MIT'
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
# gem.files = `git ls-files`.split($/)
|
18
|
+
gem.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
|
+
f.match(%r{^(test|spec|features)/})
|
20
|
+
end
|
21
|
+
# gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
22
|
+
gem.bindir = 'bin'
|
23
|
+
gem.executables = ['continuous_integration']
|
24
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
25
|
+
gem.require_paths = ['lib']
|
20
26
|
|
21
|
-
|
22
|
-
|
27
|
+
gem.add_development_dependency 'minitest', '~> 5.0'
|
28
|
+
gem.add_development_dependency 'rake', '~> 0'
|
23
29
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'webrick'
|
2
4
|
require 'json'
|
3
5
|
include WEBrick
|
@@ -6,47 +8,61 @@ require 'continuous_integration/constants'
|
|
6
8
|
require 'continuous_integration/tasks'
|
7
9
|
require 'continuous_integration/version'
|
8
10
|
|
11
|
+
# Module to perform CI operations!
|
9
12
|
module ContinuousIntegration
|
13
|
+
# Perform Continuous Integration operations!
|
14
|
+
#
|
15
|
+
# Example:
|
16
|
+
# >> server = ContinuousIntegration.setup_server
|
17
|
+
# >> ContinuousIntegration.start_server server
|
18
|
+
# => INFO WEBrick x.x.x
|
19
|
+
#
|
20
|
+
# Arguments:
|
21
|
+
# server: (Object)
|
22
|
+
|
23
|
+
# setup the CI server config
|
24
|
+
def self.setup_server
|
25
|
+
# path for the web server to serve the test results
|
26
|
+
root = File.expand_path "#{API_SPECS_PATH}/logs"
|
27
|
+
|
28
|
+
# create the server
|
29
|
+
server = create_server root
|
30
|
+
|
31
|
+
# mount the dir
|
32
|
+
dir_mount server
|
33
|
+
|
34
|
+
# shut server down on any interrupt
|
35
|
+
trap('INT') do
|
36
|
+
shutdown_server server
|
37
|
+
end
|
38
|
+
|
39
|
+
server
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.start_server(server)
|
43
|
+
server.start
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.shutdown_server(server)
|
47
|
+
dir_unmount server
|
48
|
+
server.shutdown
|
49
|
+
end
|
50
|
+
|
51
|
+
private_class_method
|
52
|
+
|
53
|
+
def self.create_server(root)
|
54
|
+
WEBrick::HTTPServer.new(
|
55
|
+
Port: PORT_NUM,
|
56
|
+
DocumentRoot: root,
|
57
|
+
DirectoryIndex: []
|
58
|
+
)
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.dir_mount(server)
|
62
|
+
server.mount SUB_URI, DockerEndpoint
|
63
|
+
end
|
10
64
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
root = File.expand_path "#{API_SPECS_PATH}/logs"
|
15
|
-
|
16
|
-
#create the server
|
17
|
-
server = create_server root
|
18
|
-
|
19
|
-
#mount the dir
|
20
|
-
dir_mount server
|
21
|
-
|
22
|
-
#shut server down on any interrupt
|
23
|
-
trap("INT") {
|
24
|
-
shutdown_server server
|
25
|
-
}
|
26
|
-
|
27
|
-
return server
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.start_server server
|
31
|
-
server.start
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.shutdown_server server
|
35
|
-
dir_unmount server
|
36
|
-
server.shutdown
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
def self.create_server root
|
42
|
-
WEBrick::HTTPServer.new :Port => PORT_NUM, :DocumentRoot => root, :DirectoryIndex => []
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.dir_mount server
|
46
|
-
server.mount SUB_URI, DockerEndpoint
|
47
|
-
end
|
48
|
-
|
49
|
-
def self.dir_unmount server
|
50
|
-
server.unmount SUB_URI
|
51
|
-
end
|
65
|
+
def self.dir_unmount(server)
|
66
|
+
server.unmount SUB_URI
|
67
|
+
end
|
52
68
|
end
|
@@ -1,14 +1,16 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# this file is like the global variable file
|
2
4
|
|
3
5
|
DOCKER_PATH = "#{ENV['HOME']}/repos/devops/services/soa/dev"
|
4
6
|
API_SPECS_PATH = "#{ENV['HOME']}/repos/api_tests"
|
5
7
|
UI_SPECS_PATH = "#{ENV['HOME']}/repos/selenium_tests"
|
6
8
|
|
7
|
-
HOST =
|
8
|
-
#HOST="https://amzn-se001"
|
9
|
-
#HOST="https://qa.hostname.ca"
|
10
|
-
BROWSER =
|
9
|
+
HOST = 'dockervm'
|
10
|
+
# HOST="https://amzn-se001"
|
11
|
+
# HOST="https://qa.hostname.ca"
|
12
|
+
BROWSER = 'phantomjs'
|
11
13
|
SCREENS = true
|
12
14
|
|
13
15
|
PORT_NUM = 8080
|
14
|
-
SUB_URI =
|
16
|
+
SUB_URI = '/qa/docker/'
|
@@ -1,130 +1,137 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'constants'
|
2
4
|
|
5
|
+
# Class to perform operations on receiving http calls
|
3
6
|
class DockerEndpoint < WEBrick::HTTPServlet::AbstractServlet
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
def slack_post
|
86
|
-
#curl to post to slack for the team to see the results
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
#Below is the POST from Quay.io, parse and use the necessary data
|
91
|
-
=begin
|
92
|
-
|
93
|
-
{
|
94
|
-
"repository": "mynamespace/repository",
|
95
|
-
"namespace": "mynamespace",
|
96
|
-
"name": "repository",
|
97
|
-
"docker_url": "quay.io/mynamespace/repository",
|
98
|
-
"homepage": "https://quay.io/repository/mynamespace/repository/build?current=some-fake-build",
|
99
|
-
"visibility": "public",
|
100
|
-
|
101
|
-
"build_id": "build_uuid",
|
102
|
-
"docker_tags": ["latest", "foo", "bar"],
|
103
|
-
|
104
|
-
"trigger_kind": "github", // Optional
|
105
|
-
"trigger_id": "some-id-here", // Optional
|
106
|
-
"trigger_metadata": { // Optional
|
107
|
-
"default_branch": "master",
|
108
|
-
"ref": "refs/heads/somebranch",
|
109
|
-
"commit": "42d4a62c53350993ea41069e9f2cfdefb0df097d",
|
110
|
-
"commit_info": { // Optional
|
111
|
-
"url": "http://path/to/the/commit",
|
112
|
-
"message": "Some commit message",
|
113
|
-
"date": 2395748365,
|
114
|
-
"author": { // Optional
|
115
|
-
"username": "fakeauthor",
|
116
|
-
"url": "http://path/to/fake/author/in/scm", // Optional
|
117
|
-
"avatar_url": "http://www.gravatar.com/avatar/fakehash" // Optional
|
118
|
-
},
|
119
|
-
"committer": { // Optional
|
120
|
-
"username": "fakecommitter",
|
121
|
-
"url": "http://path/to/fake/comitter/in/scm", // Optional
|
122
|
-
"avatar_url": "http://www.gravatar.com/avatar/fakehash" // Optional
|
123
|
-
}
|
7
|
+
def initialize(_param)
|
8
|
+
@resource_path = '/cards'
|
9
|
+
@repo_name = ''
|
10
|
+
@process_status = ''
|
11
|
+
@result = ''
|
12
|
+
@result_api = ''
|
13
|
+
@result_ui = ''
|
14
|
+
@git_branch = ''
|
15
|
+
@lock = false
|
16
|
+
end
|
17
|
+
|
18
|
+
# curl localhost:8080/docker
|
19
|
+
# POST call made by quay to CI server
|
20
|
+
def do_POST(request, _response)
|
21
|
+
# parse JSOn to hash key
|
22
|
+
request_hash = JSON.parse(request.body, symbolize_names: true)
|
23
|
+
|
24
|
+
# fetch the github repo name
|
25
|
+
@repo_name = request_hash[:name]
|
26
|
+
|
27
|
+
# fetch the github branch name
|
28
|
+
@git_branch = request_hash[:trigger_metadata][:ref]
|
29
|
+
@git_branch = @git_branch.split('/')
|
30
|
+
@git_branch = @git_branch.last
|
31
|
+
perform_operations
|
32
|
+
end
|
33
|
+
|
34
|
+
# method to perform various CI operations
|
35
|
+
def perform_operations
|
36
|
+
# handle requests one at a time (to avoid concurrency) - Needs testing
|
37
|
+
while @lock
|
38
|
+
@lock = true
|
39
|
+
docker_update
|
40
|
+
sleep 10
|
41
|
+
|
42
|
+
run_api_tests
|
43
|
+
run_ui_tests
|
44
|
+
generate_log
|
45
|
+
slack_post
|
46
|
+
@lock = false
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# update docker images locally
|
51
|
+
def docker_update
|
52
|
+
Dir.chdir(DOCKER_PATH) do
|
53
|
+
# perform docker images update
|
54
|
+
`sudo docker compose kill`
|
55
|
+
`sudo docker compose rm`
|
56
|
+
`sudo docker compose up -d`
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# Action - run api tests
|
61
|
+
def run_api_tests
|
62
|
+
Dir.chdir(API_SPECS_PATH) do
|
63
|
+
# shell command to run my tests using rake.
|
64
|
+
# I am using `aha` shell tool to grab shell output to html
|
65
|
+
cmd = "RUBYOPT='-W0' HOST=#{HOST} RMQ_HOST=#{HOST} RMQ_VHOST=/
|
66
|
+
bundle exec rake cars:#{@git_branch} | aha --black
|
67
|
+
>logs/#{@git_branch}/$(date +\%d-\%m-\%Y-\%H-\%s)-API-run.htm"
|
68
|
+
@result_api = `#{cmd}`
|
69
|
+
# or use ` .... ` instead of %x[ .... ] to run commands
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def run_ui_tests
|
74
|
+
Dir.chdir(UI_SPECS_PATH) do
|
75
|
+
# navigate to specs dir
|
76
|
+
cmd = "HOST='https://#{HOST}' BROWSER=phantomjs SCREENS=true
|
77
|
+
bundle exec rake selenium:#{@git_branch} |
|
78
|
+
aha --black >logs/#{@git_branch}/$(date +\%d-\%m-\%Y-\%H-\%s)-UI-run.htm"
|
79
|
+
@result_ui = `#{cmd}`
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def generate_log
|
84
|
+
obj = {
|
85
|
+
'Docker logs' => @process_status,
|
86
|
+
'API logs' => @result_api,
|
87
|
+
'SE logs' => @result_ui
|
124
88
|
}
|
125
|
-
|
126
|
-
|
89
|
+
response.body = JSON.generate obj
|
90
|
+
response['Content-Type'] = 'application/json'
|
91
|
+
end
|
127
92
|
|
128
|
-
|
93
|
+
def slack_post
|
94
|
+
# curl to post to slack for the team to see the results
|
95
|
+
end
|
96
|
+
end
|
129
97
|
|
130
|
-
|
98
|
+
# Below is the POST from Quay.io, parse and use the necessary data
|
99
|
+
#
|
100
|
+
# {
|
101
|
+
# "repository": "mynamespace/repository",
|
102
|
+
# "namespace": "mynamespace",
|
103
|
+
# "name": "repository",
|
104
|
+
# "docker_url": "quay.io/mynamespace/repository",
|
105
|
+
# "homepage": "https://quay.io/repository/mynamespace/repository
|
106
|
+
# /build?current=some-fake-build",
|
107
|
+
# "visibility": "public",
|
108
|
+
#
|
109
|
+
# "build_id": "build_uuid",
|
110
|
+
# "docker_tags": ["latest", "foo", "bar"],
|
111
|
+
#
|
112
|
+
# "trigger_kind": "github", // Optional
|
113
|
+
# "trigger_id": "some-id-here", // Optional
|
114
|
+
# "trigger_metadata": { // Optional
|
115
|
+
# "default_branch": "master",
|
116
|
+
# "ref": "refs/heads/somebranch",
|
117
|
+
# "commit": "42d4a62c53350993ea41069e9f2cfdefb0df097d",
|
118
|
+
# "commit_info": { // Optional
|
119
|
+
# "url": "http://path/to/the/commit",
|
120
|
+
# "message": "Some commit message",
|
121
|
+
# "date": 2395748365,
|
122
|
+
# "author": { // Optional
|
123
|
+
# "username": "fakeauthor",
|
124
|
+
# "url": "http://path/to/fake/author/in/scm", // Optional
|
125
|
+
# "avatar_url": "http://www.gravatar.com/avatar/fakehash" // Optional
|
126
|
+
# },
|
127
|
+
# "committer": { // Optional
|
128
|
+
# "username": "fakecommitter",
|
129
|
+
# "url": "http://path/to/fake/comitter/in/scm", // Optional
|
130
|
+
# "avatar_url": "http://www.gravatar.com/avatar/fakehash" // Optional
|
131
|
+
# }
|
132
|
+
# }
|
133
|
+
# }
|
134
|
+
# }
|
135
|
+
#
|
136
|
+
# More info here -> http://docs.quay.io/guides/notifications.html#webhook_build_success
|
137
|
+
#
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: continuous_integration
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ragavendra Nagraj
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-11-
|
11
|
+
date: 2017-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: minitest
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '5.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '5.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -47,9 +47,6 @@ extensions: []
|
|
47
47
|
extra_rdoc_files: []
|
48
48
|
files:
|
49
49
|
- ".gitignore"
|
50
|
-
- ".ruby-version"
|
51
|
-
- Gemfile
|
52
|
-
- Gemfile.lock
|
53
50
|
- LICENSE.txt
|
54
51
|
- README.md
|
55
52
|
- Rakefile
|
@@ -62,7 +59,6 @@ files:
|
|
62
59
|
- lib/continuous_integration/constants.rb
|
63
60
|
- lib/continuous_integration/tasks.rb
|
64
61
|
- lib/continuous_integration/version.rb
|
65
|
-
- test/test_continuous_integration.rb
|
66
62
|
homepage: https://rubygems.org/gems/continuous_integration
|
67
63
|
licenses:
|
68
64
|
- MIT
|
@@ -87,5 +83,4 @@ rubygems_version: 2.5.2
|
|
87
83
|
signing_key:
|
88
84
|
specification_version: 4
|
89
85
|
summary: One can run their UI and API tests using this gem
|
90
|
-
test_files:
|
91
|
-
- test/test_continuous_integration.rb
|
86
|
+
test_files: []
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.3.3
|
data/Gemfile
DELETED
data/Gemfile.lock
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: https://rubygems.org/
|
3
|
-
specs:
|
4
|
-
byebug (9.0.6)
|
5
|
-
coderay (1.1.1)
|
6
|
-
method_source (0.8.2)
|
7
|
-
pry (0.10.4)
|
8
|
-
coderay (~> 1.1.0)
|
9
|
-
method_source (~> 0.8.1)
|
10
|
-
slop (~> 3.4)
|
11
|
-
pry-byebug (3.4.2)
|
12
|
-
byebug (~> 9.0)
|
13
|
-
pry (~> 0.10)
|
14
|
-
slop (3.6.0)
|
15
|
-
webrick (1.3.1)
|
16
|
-
|
17
|
-
PLATFORMS
|
18
|
-
ruby
|
19
|
-
|
20
|
-
DEPENDENCIES
|
21
|
-
byebug
|
22
|
-
pry-byebug
|
23
|
-
webrick
|
24
|
-
|
25
|
-
BUNDLED WITH
|
26
|
-
1.13.7
|
@@ -1,52 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'continuous_integration'
|
3
|
-
|
4
|
-
class ContinuousIntegrationTest < Minitest::Test
|
5
|
-
def setup
|
6
|
-
#@server = ContinuousIntegration.setup_server
|
7
|
-
@root = File.expand_path "#{API_SPECS_PATH}/logs"
|
8
|
-
end
|
9
|
-
|
10
|
-
def teardown
|
11
|
-
@server = nil
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_order
|
15
|
-
:alpha
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_setup_server
|
19
|
-
#@server = ContinuousIntegration.setup_server
|
20
|
-
# assert_kind_of WEBrick::HTTPServer, @server, "Shutdown server did not return object"
|
21
|
-
# @server = ContinuousIntegration.shutdown_server @server
|
22
|
-
#assert_equal "hello world", Hola.hi("english")
|
23
|
-
#@server = ContinuousIntegration.dir_unmount @root
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_shutdown_server
|
27
|
-
@server = ContinuousIntegration.setup_server
|
28
|
-
t1 = Thread.new { @server = ContinuousIntegration.start_server @server }
|
29
|
-
assert_kind_of WEBrick::HTTPServer, @server, "Shutdown server did not return object"
|
30
|
-
@server = ContinuousIntegration.shutdown_server @server
|
31
|
-
assert_nil @server, "Server class is not nil"
|
32
|
-
assert t1.status, "Thread is still running"
|
33
|
-
end
|
34
|
-
=begin
|
35
|
-
def test_start_server
|
36
|
-
#@server = ContinuousIntegration.start_server @server
|
37
|
-
assert_empty !@server, "Start server did not return object"
|
38
|
-
ContinuousIntegration.shutdown_server @server
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_create_server
|
42
|
-
@server = ContinuousIntegration.create_server @root
|
43
|
-
assert_empty !@server, "Create server did not return object"
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_dir_mount
|
47
|
-
@server = ContinuousIntegration.create_server @root
|
48
|
-
@server = ContinuousIntegration.dir_mount @server
|
49
|
-
assert_empty !@server, "Create server did not return object"
|
50
|
-
end
|
51
|
-
=end
|
52
|
-
end
|