rrrspec-client 0.4.2 → 0.4.3
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/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
|