rrrspec-client 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rrrspec/client/base_text_formatter.rb +13 -0
- data/lib/rrrspec/client/rspec_runner.rb +12 -8
- data/lib/rrrspec/client/version.rb +1 -1
- metadata +7 -18
- data/.rspec +0 -2
- data/Gemfile +0 -3
- data/Rakefile +0 -1
- data/rrrspec-client.gemspec +0 -36
- data/spec/fixture.rb +0 -32
- data/spec/rrrspec/client/cli_spec.rb +0 -45
- data/spec/rrrspec/redis_models_spec.rb +0 -34
- data/spec/spec_helper.rb +0 -55
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e56a821f500236e0b3045d395905afd91337cbd
|
4
|
+
data.tar.gz: 491eaccfa8a43c4564cce40fff21adcd6af147a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f834f798a0b91e4505f542db7ac549ae68f4d56d739b030e3d85330937af3d62de3fe42a3a891c6ac7ebe16249df62dc0aa99918ef2c06381929def1324183bd
|
7
|
+
data.tar.gz: 81c45ae93e18aa2639db4eb5d9ecc2128267d45168a9d5325ff5ec2f059eb6187280f285b7a4e8edd1f72fcc2dd19dc9bf42eb3485b6ea3bbbee894b652d1049
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rspec/core/formatters/base_text_formatter'
|
2
|
+
|
3
|
+
module RRRSpec
|
4
|
+
module Client
|
5
|
+
class BaseTextFormatter < RSpec::Core::Formatters::BaseTextFormatter
|
6
|
+
RSpec::Core::Formatters.register(self, :message, :dump_summary, :dump_failures, :dump_pending, :seed)
|
7
|
+
|
8
|
+
def close(_notification)
|
9
|
+
# Do not close `output` .
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'rspec'
|
2
|
-
require '
|
2
|
+
require 'rrrspec/client/base_text_formatter'
|
3
3
|
|
4
4
|
module RRRSpec
|
5
5
|
module Client
|
@@ -9,19 +9,23 @@ module RRRSpec
|
|
9
9
|
@configuration = RSpec.configuration
|
10
10
|
@world = RSpec.world
|
11
11
|
@before_suite_run = false
|
12
|
+
@stdout_buffer = StringIO.new
|
13
|
+
@stderr_buffer = StringIO.new
|
12
14
|
end
|
13
15
|
|
14
16
|
def exc_safe_replace_stdouts
|
15
|
-
|
16
|
-
|
17
|
-
$stdout =
|
18
|
-
$stderr =
|
17
|
+
@stdout_buffer.string = ''
|
18
|
+
@stderr_buffer.string = ''
|
19
|
+
$stdout = @stdout_buffer
|
20
|
+
$stderr = @stderr_buffer
|
19
21
|
begin
|
20
22
|
yield
|
21
23
|
rescue Exception
|
22
24
|
$stdout.puts $!
|
23
25
|
$stdout.puts $!.backtrace.join("\n")
|
24
26
|
end
|
27
|
+
outbuf = @stdout_buffer.string
|
28
|
+
errbuf = @stderr_buffer.string
|
25
29
|
[outbuf, errbuf]
|
26
30
|
ensure
|
27
31
|
$stdout = STDOUT
|
@@ -33,6 +37,9 @@ module RRRSpec
|
|
33
37
|
outbuf, errbuf = exc_safe_replace_stdouts do
|
34
38
|
begin
|
35
39
|
@options.configure(@configuration)
|
40
|
+
@configuration.output_stream = $stdout
|
41
|
+
@configuration.error_stream = $stderr
|
42
|
+
@configuration.default_formatter = BaseTextFormatter
|
36
43
|
@configuration.files_to_run = [filepath]
|
37
44
|
@configuration.load_spec_files
|
38
45
|
@world.announce_filters
|
@@ -54,9 +61,6 @@ module RRRSpec
|
|
54
61
|
def run(*formatters)
|
55
62
|
status = false
|
56
63
|
outbuf, errbuf = exc_safe_replace_stdouts do
|
57
|
-
@configuration.output_stream = $stdout
|
58
|
-
@configuration.error_stream = $stderr
|
59
|
-
@configuration.add_formatter(RSpec::Core::Formatters::BaseTextFormatter)
|
60
64
|
formatters.each do |formatter|
|
61
65
|
@configuration.add_formatter(formatter)
|
62
66
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rrrspec-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masaya Suzuki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-06-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 0.18.0
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
124
|
+
version: 0.18.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: uuidtools
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -159,13 +159,11 @@ executables:
|
|
159
159
|
extensions: []
|
160
160
|
extra_rdoc_files: []
|
161
161
|
files:
|
162
|
-
- ".rspec"
|
163
|
-
- Gemfile
|
164
|
-
- Rakefile
|
165
162
|
- bin/rrrspec
|
166
163
|
- bin/rrrspec-client
|
167
164
|
- lib/rrrspec.rb
|
168
165
|
- lib/rrrspec/client.rb
|
166
|
+
- lib/rrrspec/client/base_text_formatter.rb
|
169
167
|
- lib/rrrspec/client/cli.rb
|
170
168
|
- lib/rrrspec/client/configuration.rb
|
171
169
|
- lib/rrrspec/client/rspec_runner.rb
|
@@ -175,11 +173,6 @@ files:
|
|
175
173
|
- lib/rrrspec/configuration.rb
|
176
174
|
- lib/rrrspec/extension.rb
|
177
175
|
- lib/rrrspec/redis_models.rb
|
178
|
-
- rrrspec-client.gemspec
|
179
|
-
- spec/fixture.rb
|
180
|
-
- spec/rrrspec/client/cli_spec.rb
|
181
|
-
- spec/rrrspec/redis_models_spec.rb
|
182
|
-
- spec/spec_helper.rb
|
183
176
|
homepage: https://github.com/cookpad/rrrspec
|
184
177
|
licenses:
|
185
178
|
- MIT
|
@@ -200,12 +193,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
200
193
|
version: '0'
|
201
194
|
requirements: []
|
202
195
|
rubyforge_project:
|
203
|
-
rubygems_version: 2.
|
196
|
+
rubygems_version: 2.5.1
|
204
197
|
signing_key:
|
205
198
|
specification_version: 4
|
206
199
|
summary: Execute RSpec in a distributed manner
|
207
|
-
test_files:
|
208
|
-
- spec/fixture.rb
|
209
|
-
- spec/rrrspec/client/cli_spec.rb
|
210
|
-
- spec/rrrspec/redis_models_spec.rb
|
211
|
-
- spec/spec_helper.rb
|
200
|
+
test_files: []
|
data/.rspec
DELETED
data/Gemfile
DELETED
data/Rakefile
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
data/rrrspec-client.gemspec
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'rrrspec/client/version'
|
5
|
-
require 'pathname'
|
6
|
-
|
7
|
-
Gem::Specification.new do |spec|
|
8
|
-
spec.name = "rrrspec-client"
|
9
|
-
spec.version = RRRSpec::Client::VERSION
|
10
|
-
spec.authors = ["Masaya Suzuki"]
|
11
|
-
spec.email = ["draftcode@gmail.com"]
|
12
|
-
spec.description = "Execute RSpec in a distributed manner"
|
13
|
-
spec.summary = "Execute RSpec in a distributed manner"
|
14
|
-
spec.homepage = "https://github.com/cookpad/rrrspec"
|
15
|
-
spec.license = "MIT"
|
16
|
-
|
17
|
-
gemspec_dir = File.expand_path('..', __FILE__)
|
18
|
-
spec.files = `git ls-files`.split($/).
|
19
|
-
map { |f| File.absolute_path(f) }.
|
20
|
-
select { |f| f.start_with?(gemspec_dir) }.
|
21
|
-
map { |f| Pathname(f).relative_path_from(Pathname(gemspec_dir)).to_s }
|
22
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
23
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
24
|
-
spec.require_paths = ["lib"]
|
25
|
-
|
26
|
-
spec.add_development_dependency "bundler"
|
27
|
-
spec.add_development_dependency "rake"
|
28
|
-
spec.add_dependency "activesupport"
|
29
|
-
spec.add_dependency "extreme_timeout"
|
30
|
-
spec.add_dependency "launchy"
|
31
|
-
spec.add_dependency "redis"
|
32
|
-
spec.add_dependency "rspec", ">= 3.0"
|
33
|
-
spec.add_dependency "thor"
|
34
|
-
spec.add_dependency "uuidtools"
|
35
|
-
spec.add_dependency "tzinfo"
|
36
|
-
end
|
data/spec/fixture.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
module RRRSpec
|
2
|
-
def self.finished_fullset
|
3
|
-
worker = Worker.create('default')
|
4
|
-
taskset = Taskset.create(
|
5
|
-
'testuser', 'echo 1', 'echo 2', 'default', 'default', 3, 3, 5, 5
|
6
|
-
)
|
7
|
-
task = Task.create(taskset, 10, 'spec/test_spec.rb')
|
8
|
-
taskset.add_task(task)
|
9
|
-
taskset.enqueue_task(task)
|
10
|
-
ActiveTaskset.add(taskset)
|
11
|
-
worker_log = WorkerLog.create(worker, taskset)
|
12
|
-
worker_log.set_rsync_finished_time
|
13
|
-
worker_log.append_log('worker_log log body')
|
14
|
-
worker_log.set_setup_finished_time
|
15
|
-
slave = Slave.create
|
16
|
-
taskset.add_slave(slave)
|
17
|
-
slave.append_log('slave log body')
|
18
|
-
trial = Trial.create(task, slave)
|
19
|
-
trial.start
|
20
|
-
trial.finish('pending', 'stdout body', 'stderr body', 10, 2, 0)
|
21
|
-
task.update_status('pending')
|
22
|
-
taskset.incr_succeeded_count
|
23
|
-
taskset.finish_task(task)
|
24
|
-
taskset.update_status('succeeded')
|
25
|
-
taskset.set_finished_time
|
26
|
-
ActiveTaskset.remove(taskset)
|
27
|
-
slave.update_status('normal_exit')
|
28
|
-
worker_log.set_finished_time
|
29
|
-
|
30
|
-
return worker, taskset, task, worker_log, slave, trial
|
31
|
-
end
|
32
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'rrrspec/client/cli'
|
3
|
-
|
4
|
-
module RRRSpec
|
5
|
-
module Client
|
6
|
-
RSpec.describe CLI do
|
7
|
-
before do
|
8
|
-
RRRSpec.configuration = Configuration.new
|
9
|
-
RRRSpec.configuration.redis = @redis
|
10
|
-
described_class.class_eval do
|
11
|
-
no_commands do
|
12
|
-
def setup(arg)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe '#cancelall' do
|
19
|
-
let!(:taskset1) do
|
20
|
-
Taskset.create('rsync_name', '', '', 'default', 'nothing', 3, 3, 3, 3)
|
21
|
-
end
|
22
|
-
let!(:taskset2) do
|
23
|
-
Taskset.create('rsync_name', '', '', 'default', 'nothing', 3, 3, 3, 3)
|
24
|
-
end
|
25
|
-
let!(:taskset3) do
|
26
|
-
Taskset.create('another_rsync_name', '', '', 'default', 'nothing', 3, 3, 3, 3)
|
27
|
-
end
|
28
|
-
|
29
|
-
before do
|
30
|
-
ActiveTaskset.add(taskset1)
|
31
|
-
ActiveTaskset.add(taskset2)
|
32
|
-
ActiveTaskset.add(taskset3)
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'cancels all tasksets' do
|
36
|
-
subject.cancelall('rsync_name')
|
37
|
-
Timeout.timeout(3) do
|
38
|
-
expect(ArbiterQueue.dequeue).to eq(['cancel', taskset1])
|
39
|
-
expect(ArbiterQueue.dequeue).to eq(['cancel', taskset2])
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module RRRSpec
|
4
|
-
RSpec.describe Taskset do
|
5
|
-
before do
|
6
|
-
RRRSpec.configuration = Configuration.new
|
7
|
-
RRRSpec.configuration.redis = @redis
|
8
|
-
end
|
9
|
-
|
10
|
-
before do
|
11
|
-
@worker, @taskset, @task, @worker_log, @slave, @trial =
|
12
|
-
RRRSpec.finished_fullset
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '#expire' do
|
16
|
-
it 'expires all keys' do
|
17
|
-
@taskset.expire(60)
|
18
|
-
expect(@redis.ttl(@taskset.key)).to be >= 0
|
19
|
-
expect(@redis.ttl("#{@taskset.key}:rrrspec:worker:testhostname")).to be >= 0
|
20
|
-
expect(@redis.ttl("#{@taskset.key}:rrrspec:worker:testhostname:log")).to be >= 0
|
21
|
-
expect(@redis.ttl("#{@taskset.key}:slave")).to be >= 0
|
22
|
-
expect(@redis.ttl("#{@taskset.key}:task:spec/test_spec.rb")).to be >= 0
|
23
|
-
expect(@redis.ttl("#{@taskset.key}:task:spec/test_spec.rb:trial")).to be >= 0
|
24
|
-
expect(@redis.ttl(@task.trials[0].key)).to be >= 0
|
25
|
-
expect(@redis.ttl("#{@taskset.key}:task_queue")).to be >= 0
|
26
|
-
expect(@redis.ttl("#{@taskset.key}:tasks")).to be >= 0
|
27
|
-
expect(@redis.ttl("#{@taskset.key}:worker_log")).to be >= 0
|
28
|
-
expect(@redis.ttl(@slave.key)).to be >= 0
|
29
|
-
expect(@redis.ttl("#{@slave.key}:log")).to be >= 0
|
30
|
-
expect(@redis.ttl("#{@slave.key}:trial")).to be >= 0
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
-
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
-
# Require this file using `require "spec_helper"` to ensure that it is only
|
4
|
-
# loaded once.
|
5
|
-
#
|
6
|
-
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
-
require 'rrrspec/client'
|
8
|
-
require 'fixture'
|
9
|
-
|
10
|
-
RSpec.configure do |config|
|
11
|
-
config.raise_errors_for_deprecations!
|
12
|
-
config.disable_monkey_patching!
|
13
|
-
config.run_all_when_everything_filtered = true
|
14
|
-
config.filter_run :focus
|
15
|
-
|
16
|
-
# Run specs in random order to surface order dependencies. If you find an
|
17
|
-
# order dependency and want to debug it, you can fix the order by providing
|
18
|
-
# the seed, which is printed after each run.
|
19
|
-
# --seed 1234
|
20
|
-
config.order = 'random'
|
21
|
-
|
22
|
-
pid = nil
|
23
|
-
config.before(:suite) do
|
24
|
-
pid = Kernel.spawn("redis-server --port 9999 --save ''",
|
25
|
-
in: '/dev/null', out: '/dev/null', err: '/dev/null')
|
26
|
-
redis = Redis.new(port: 9999)
|
27
|
-
retry_count = 1
|
28
|
-
loop do
|
29
|
-
begin
|
30
|
-
redis.client.connect
|
31
|
-
break
|
32
|
-
rescue Redis::CannotConnectError
|
33
|
-
if retry_count < 10
|
34
|
-
retry_count += 1
|
35
|
-
sleep 0.01
|
36
|
-
retry
|
37
|
-
end
|
38
|
-
raise
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
config.before(:each) do
|
44
|
-
@redis = Redis.new(port: 9999)
|
45
|
-
@redis.flushall
|
46
|
-
|
47
|
-
RRRSpec.configuration = nil
|
48
|
-
RRRSpec.flushredis
|
49
|
-
RRRSpec.hostname = 'testhostname'
|
50
|
-
end
|
51
|
-
|
52
|
-
config.after(:suite) do
|
53
|
-
Process.kill('KILL', pid) if pid
|
54
|
-
end
|
55
|
-
end
|