baleen 0.0.10 → 0.0.11
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/Gemfile +0 -3
- data/baleen.gemspec +1 -0
- data/lib/baleen/container.rb +7 -24
- data/lib/baleen/message/request.rb +0 -4
- data/lib/baleen/runner.rb +6 -7
- data/lib/baleen/server.rb +2 -8
- data/lib/baleen/version.rb +1 -1
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d482b118da5859fd3b1fb245b78a59d1082f36be
|
4
|
+
data.tar.gz: 4749f3562b29a41eab13e88db428d647616892cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ffb1079d77d5c6a90d3471d4ddf09e5f28ba1b6b8ca0b80bda15eb5e00486fbcb334792a7fe501fc481ac38ffdef9aad32aa821cb36b6642899d0df07c333a23
|
7
|
+
data.tar.gz: 088b559d02e2afbc8afd176be5f0f2f9a2ac08df90dd29b64c331693d92279c40f32bf96dc216c91de17887bbdf32c1ae4890a61f5dcb2b647de9213d7e1ed3a
|
data/Gemfile
CHANGED
data/baleen.gemspec
CHANGED
data/lib/baleen/container.rb
CHANGED
@@ -4,27 +4,20 @@ module Baleen
|
|
4
4
|
class DockerClient
|
5
5
|
Result = Struct.new("Result", :status_code, :container_id, :log)
|
6
6
|
|
7
|
-
def initialize(containers)
|
8
|
-
@containers = containers
|
9
|
-
end
|
10
|
-
|
11
7
|
def create_container(params)
|
12
|
-
@container =
|
8
|
+
@container = Docker::Container.create('Cmd' => [params.shell, params.opt, params.commands], 'Image' => params.image)
|
13
9
|
end
|
14
10
|
|
15
11
|
def start_container
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
@
|
20
|
-
@containers.wait(id)
|
21
|
-
info "Finish container #{id}"
|
12
|
+
info "Start container #{@container.id}"
|
13
|
+
@container.start
|
14
|
+
@container.wait
|
15
|
+
info "Finish container #{@container.id}"
|
22
16
|
end
|
23
17
|
|
24
18
|
def result
|
25
|
-
|
26
|
-
|
27
|
-
log = @containers.logs(id)
|
19
|
+
rst = @container.json
|
20
|
+
log = @container.attach(:stream => false, :stdout => true, :stderr => true, :logs => true)
|
28
21
|
|
29
22
|
Result.new(
|
30
23
|
rst["State"]["ExitCode"],
|
@@ -33,16 +26,6 @@ module Baleen
|
|
33
26
|
)
|
34
27
|
end
|
35
28
|
|
36
|
-
def kill_all
|
37
|
-
@containers.list.each do |container|
|
38
|
-
@containers.kill(container["Id"])
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def status
|
43
|
-
info @containers.list
|
44
|
-
end
|
45
|
-
|
46
29
|
end
|
47
30
|
|
48
31
|
end
|
@@ -9,10 +9,6 @@ module Baleen
|
|
9
9
|
def initialize(opt = {}); super() end
|
10
10
|
end
|
11
11
|
|
12
|
-
class PingPong < Base
|
13
|
-
def initialize(opt = {}); super() end
|
14
|
-
end
|
15
|
-
|
16
12
|
class Cucumber < Base
|
17
13
|
def initialize(image: nil, work_dir: "./", files: "features", shell: "/bin/bash", opt: "-c", exe: "bundle exec cucumber", before_command: nil, command: nil)
|
18
14
|
super()
|
data/lib/baleen/runner.rb
CHANGED
@@ -47,8 +47,7 @@ module Baleen
|
|
47
47
|
|
48
48
|
CONCURRENCY=2
|
49
49
|
|
50
|
-
def initialize(
|
51
|
-
@containers = containers
|
50
|
+
def initialize(socket, msg)
|
52
51
|
@socket = socket
|
53
52
|
@queue = []
|
54
53
|
@results = []
|
@@ -73,14 +72,14 @@ module Baleen
|
|
73
72
|
def create_runners
|
74
73
|
target_files.map {|file|
|
75
74
|
@params.files = file
|
76
|
-
Runner.new(@
|
75
|
+
Runner.new(@params)
|
77
76
|
}.each_slice(CONCURRENCY).map {|r| r}
|
78
77
|
end
|
79
78
|
|
80
79
|
def target_files
|
81
80
|
params = @params.dup
|
82
81
|
params.command = %{find #{params.files} | grep "\\.feature"}
|
83
|
-
runner = Runner.new(
|
82
|
+
runner = Runner.new(params)
|
84
83
|
runner.run
|
85
84
|
runner.status.log.split("\n")
|
86
85
|
end
|
@@ -95,8 +94,8 @@ module Baleen
|
|
95
94
|
|
96
95
|
attr_reader :status
|
97
96
|
|
98
|
-
def initialize(
|
99
|
-
@docker_client = Container::DockerClient.new
|
97
|
+
def initialize(params)
|
98
|
+
@docker_client = Container::DockerClient.new
|
100
99
|
@status = nil
|
101
100
|
@params = params
|
102
101
|
end
|
@@ -119,7 +118,7 @@ module Baleen
|
|
119
118
|
begin
|
120
119
|
@docker_client.create_container(@params)
|
121
120
|
@docker_client.start_container
|
122
|
-
rescue
|
121
|
+
rescue Excon::Errors::NotFound => e
|
123
122
|
count += 1
|
124
123
|
if count > max_retry
|
125
124
|
raise Baleen::Error::StartContainerFail
|
data/lib/baleen/server.rb
CHANGED
@@ -11,12 +11,8 @@ module Baleen
|
|
11
11
|
include Celluloid::IO
|
12
12
|
finalizer :shutdown
|
13
13
|
|
14
|
-
attr_accessor :containers
|
15
|
-
|
16
14
|
def initialize(docker_host: "127.0.0.1", docker_port: 4243, port: 5533)
|
17
|
-
|
18
|
-
@docker = Docker::API.new(base_url: @base_url)
|
19
|
-
@containers = @docker.containers
|
15
|
+
Docker.url = "http://#{docker_host}:#{docker_port}"
|
20
16
|
@server = TCPServer.new("0.0.0.0", port)
|
21
17
|
async.run
|
22
18
|
end
|
@@ -52,12 +48,10 @@ module Baleen
|
|
52
48
|
msg = parse_request(message)
|
53
49
|
|
54
50
|
case msg
|
55
|
-
when Message::Request::PingPong
|
56
|
-
socket.puts "pong"
|
57
51
|
when Message::Request::ClientDisconnect
|
58
52
|
socket.close
|
59
53
|
when Message::Request::Cucumber
|
60
|
-
manager = RunnerManager.new(
|
54
|
+
manager = RunnerManager.new(socket, msg)
|
61
55
|
manager.run
|
62
56
|
else
|
63
57
|
warn "Received unknown request"
|
data/lib/baleen/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: baleen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kim, Hirokuni
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: docker-api
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: colorize
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|