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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 68980fcfaebf4d6eecc9ab312862add3222cefb4
4
- data.tar.gz: 0024f08d44f75f481645d833d84a41d5acbeb337
3
+ metadata.gz: 0e56a821f500236e0b3045d395905afd91337cbd
4
+ data.tar.gz: 491eaccfa8a43c4564cce40fff21adcd6af147a4
5
5
  SHA512:
6
- metadata.gz: c36f5504895a7cf0dcbb39aec58c8c0c572202f8408efd0c6bdec275b9a40ba4eb13dd3ce99d30dee36d9aa4ad7721b66022dc7da71b742d21494f6e68059799
7
- data.tar.gz: 0de784b636ce34ba850a38fdd0a782ca36bb1c7138aa25998b1acf7f641e47b54ad94f2659983d80b0bf904bad33ab3fc4eb6c84a0b4a09cd99abaafdf6dae1b
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 'rspec/core/formatters/base_text_formatter'
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
- outbuf = ''
16
- errbuf = ''
17
- $stdout = StringIO.new(outbuf)
18
- $stderr = StringIO.new(errbuf)
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
@@ -1,5 +1,5 @@
1
1
  module RRRSpec
2
2
  module Client
3
- VERSION = "0.4.2"
3
+ VERSION = "0.4.3"
4
4
  end
5
5
  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.2
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: 2015-11-30 00:00:00.000000000 Z
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: '0'
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: '0'
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.4.5.1
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
@@ -1,2 +0,0 @@
1
- --color
2
- --format progress
data/Gemfile DELETED
@@ -1,3 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec
data/Rakefile DELETED
@@ -1 +0,0 @@
1
- require "bundler/gem_tasks"
@@ -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
@@ -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
@@ -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