rspecq 0.2.2 → 0.3.0

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
  SHA256:
3
- metadata.gz: 900fd0a0742c08ed5a99f922cecb585017109b875d18dbd013d1ed93ea879791
4
- data.tar.gz: 67537632a20c43c7da743571c30f5df6eeb826164ed6d9dc7b20ddb4d8761bf3
3
+ metadata.gz: 89dbfa98d1eaceb06c39d41ab85e7fa6923d0c87e9a15b9cbfaf7399ff2aaff3
4
+ data.tar.gz: b7cd028440e6eb03401dc623c7ee0fc0fe74f6ffa12a25ecc23d0cf54e6acd1e
5
5
  SHA512:
6
- metadata.gz: 42d517b6bfb37eb6bf12bef093e6db9bbfdd207155c7a30b7bf64d6dc114cde27f503323aa9b7e940a0a783db40fbb396c0567a780ee93f303291c083df29ddd
7
- data.tar.gz: a6fe68d291eb761202d366c9fccb7aeee387b6dad048ec2efb9fb81b705e8cd0826fc339cf447d2ff272d9cbd1e8b21d060181b3cc7d74539f8c911ee466533a
6
+ metadata.gz: a43f0630e8a02a001132f45c9f68cacf7edae8e90487112e640eb611e7d1345f68ad0ab163ae01c91cb38ebc879e98cda9b54044c0ee676293c7aa3bf7c17942
7
+ data.tar.gz: bf98027dc02ac56d02cc258700f5efa766c40d4d69c55c529d311083965d1fe4f76423b05fddb35a37496bb6eb3c11a8460a8e76f94897c4bb38a744b2fb40df
@@ -4,12 +4,24 @@ Breaking changes are prefixed with a "[BREAKING]" label.
4
4
 
5
5
  ## master (unreleased)
6
6
 
7
+ ## 0.3.0 (2020-10-05)
8
+
9
+ ### Added
10
+
11
+ - Providing a Redis URL is now possible using the `--redis-url` option
12
+ [[#40](https://github.com/skroutz/rspecq/pull/40)]
13
+
14
+ ### Changed
15
+
16
+ - [DEPRECATION] The `--redis` option is now deprecated. Use `--redis-host`
17
+ instead [[#40](https://github.com/skroutz/rspecq/pull/40)]
18
+
7
19
  ## 0.2.2 (2020-09-10)
8
20
 
9
21
  ### Fixed
10
22
  - Worker would fail if application code was writing to stderr
11
23
  [[#35](https://github.com/skroutz/rspecq/pull/35)]
12
-
24
+
13
25
  ## 0.2.1 (2020-09-09)
14
26
 
15
27
  ### Changed
data/README.md CHANGED
@@ -64,7 +64,9 @@ USAGE:
64
64
  OPTIONS:
65
65
  -b, --build ID A unique identifier for the build. Should be common among workers participating in the same build.
66
66
  -w, --worker ID An identifier for the worker. Workers participating in the same build should have distinct IDs.
67
- -r, --redis HOST Redis host to connect to (default: 127.0.0.1).
67
+ -r, --redis HOST --redis is deprecated. Use --redis-host or --redis-url instead. Redis host to connect to (default: 127.0.0.1).
68
+ --redis-host HOST Redis host to connect to (default: 127.0.0.1).
69
+ --redis-url URL Redis URL to connect to (e.g.: redis://127.0.0.1:6379/0).
68
70
  --update-timings Update the global job timings key with the timings of this build. Note: This key is used as the basis for job scheduling.
69
71
  --file-split-threshold N Split spec files slower than N seconds and schedule them as individual examples.
70
72
  --report Enable reporter mode: do not pull tests off the queue; instead print build progress and exit when it's finished.
data/bin/rspecq CHANGED
@@ -38,9 +38,20 @@ OptionParser.new do |o|
38
38
 
39
39
  o.on("-r", "--redis HOST", "Redis host to connect to " \
40
40
  "(default: #{DEFAULT_REDIS_HOST}).") do |v|
41
+ puts "--redis is deprecated. Use --redis-host or --redis-url instead"
41
42
  opts[:redis_host] = v
42
43
  end
43
44
 
45
+ o.on("--redis-host HOST", "Redis host to connect to " \
46
+ "(default: #{DEFAULT_REDIS_HOST}).") do |v|
47
+ opts[:redis_host] = v
48
+ end
49
+
50
+ o.on("--redis-url URL", "The URL of the Redis host to connect to " \
51
+ "(e.g.: redis://127.0.0.1:6379/0).") do |v|
52
+ opts[:redis_url] = v
53
+ end
54
+
44
55
  o.on("--update-timings", "Update the global job timings key with the " \
45
56
  "timings of this build. Note: This key is used as the basis for job " \
46
57
  "scheduling.") do |v|
@@ -91,15 +102,24 @@ opts[:file_split_threshold] ||= Integer(ENV["RSPECQ_FILE_SPLIT_THRESHOLD"] || 99
91
102
  opts[:report] ||= env_set?("RSPECQ_REPORT")
92
103
  opts[:report_timeout] ||= Integer(ENV["RSPECQ_REPORT_TIMEOUT"] || DEFAULT_REPORT_TIMEOUT)
93
104
  opts[:max_requeues] ||= Integer(ENV["RSPECQ_MAX_REQUEUES"] || DEFAULT_MAX_REQUEUES)
105
+ opts[:redis_url] ||= ENV["RSPECQ_REDIS_URL"]
94
106
 
95
107
  raise OptionParser::MissingArgument.new(:build) if opts[:build].nil?
96
108
  raise OptionParser::MissingArgument.new(:worker) if !opts[:report] && opts[:worker].nil?
97
109
 
110
+ redis_opts = {}
111
+
112
+ if opts[:redis_url]
113
+ redis_opts[:url] = opts[:redis_url]
114
+ else
115
+ redis_opts[:host] = opts[:redis_host]
116
+ end
117
+
98
118
  if opts[:report]
99
119
  reporter = RSpecQ::Reporter.new(
100
120
  build_id: opts[:build],
101
121
  timeout: opts[:report_timeout],
102
- redis_host: opts[:redis_host],
122
+ redis_opts: redis_opts,
103
123
  )
104
124
 
105
125
  reporter.report
@@ -107,7 +127,7 @@ else
107
127
  worker = RSpecQ::Worker.new(
108
128
  build_id: opts[:build],
109
129
  worker_id: opts[:worker],
110
- redis_host: opts[:redis_host]
130
+ redis_opts: redis_opts
111
131
  )
112
132
 
113
133
  worker.files_or_dirs_to_run = ARGV[0] if ARGV[0]
@@ -70,10 +70,10 @@ module RSpecQ
70
70
 
71
71
  attr_reader :redis
72
72
 
73
- def initialize(build_id, worker_id, redis_host)
73
+ def initialize(build_id, worker_id, redis_opts)
74
74
  @build_id = build_id
75
75
  @worker_id = worker_id
76
- @redis = Redis.new(host: redis_host, id: worker_id)
76
+ @redis = Redis.new(redis_opts.merge(id: worker_id))
77
77
  end
78
78
 
79
79
  # NOTE: jobs will be processed from head to tail (lpop)
@@ -9,10 +9,10 @@ module RSpecQ
9
9
  #
10
10
  # Reporters are readers of the queue.
11
11
  class Reporter
12
- def initialize(build_id:, timeout:, redis_host:)
12
+ def initialize(build_id:, timeout:, redis_opts:)
13
13
  @build_id = build_id
14
14
  @timeout = timeout
15
- @queue = Queue.new(build_id, "reporter", redis_host)
15
+ @queue = Queue.new(build_id, "reporter", redis_opts)
16
16
 
17
17
  # We want feedback to be immediattely printed to CI users, so
18
18
  # we disable buffering.
@@ -1,3 +1,3 @@
1
1
  module RSpecQ
2
- VERSION = "0.2.2".freeze
2
+ VERSION = "0.3.0".freeze
3
3
  end
@@ -42,10 +42,10 @@ module RSpecQ
42
42
 
43
43
  attr_reader :queue
44
44
 
45
- def initialize(build_id:, worker_id:, redis_host:)
45
+ def initialize(build_id:, worker_id:, redis_opts:)
46
46
  @build_id = build_id
47
47
  @worker_id = worker_id
48
- @queue = Queue.new(build_id, worker_id, redis_host)
48
+ @queue = Queue.new(build_id, worker_id, redis_opts)
49
49
  @files_or_dirs_to_run = "spec"
50
50
  @populate_timings = false
51
51
  @file_split_threshold = 999999
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspecq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Agis Anastasopoulos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-10 00:00:00.000000000 Z
11
+ date: 2020-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec-core
@@ -149,8 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
149
  - !ruby/object:Gem::Version
150
150
  version: '0'
151
151
  requirements: []
152
- rubyforge_project:
153
- rubygems_version: 2.7.6.2
152
+ rubygems_version: 3.1.4
154
153
  signing_key:
155
154
  specification_version: 4
156
155
  summary: Optimally distribute and run RSpec suites among parallel workers; for faster