jiggler 0.1.0.rc7 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +26 -14
- data/lib/jiggler/at_most_once/acknowledger.rb +2 -0
- data/lib/jiggler/cli.rb +16 -2
- data/lib/jiggler/version.rb +1 -1
- data/spec/examples.txt +93 -90
- data/spec/jiggler/cli_spec.rb +39 -2
- data/spec/jiggler/core_spec.rb +4 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2577f6dee9060ad4316eeea5edb918bfeadee7955cdf31e23acce1852fe1d34f
|
4
|
+
data.tar.gz: 1d3ee1d3e168a48e55ecbea3eb520e494885d99337accead870fecd2390f013f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91f59768ea4b10c2340730a98c9f506102c5f2d800f6b1dd7935ac5099568637e2df8d9ed4f54459ba6de4cb8acf1195cabbf885407b4c360e0c23d808119ace
|
7
|
+
data.tar.gz: a3c39de7d8432411eb8f639ccb3dc5283024c31e2e6a93e10d9afc34d91175d9c17b19717f081a2faf0ecd97cc5d7badeaf220f9372f719030fa8ff2bcb0e249
|
data/README.md
CHANGED
@@ -17,11 +17,6 @@ Install the gem:
|
|
17
17
|
gem install jiggler
|
18
18
|
```
|
19
19
|
|
20
|
-
Use `--pre` for release candidates:
|
21
|
-
```
|
22
|
-
gem install jiggler --pre
|
23
|
-
```
|
24
|
-
|
25
20
|
Start Jiggler server as a separate process with bin command:
|
26
21
|
```
|
27
22
|
jiggler -r <FILE_PATH>
|
@@ -33,8 +28,8 @@ Run `jiggler --help` to see the list of command line arguments.
|
|
33
28
|
|
34
29
|
### Performance
|
35
30
|
|
36
|
-
[Jiggler 0.1.0rc4 performance results (at most once delivery)](/docs/perf_results_0.1.0rc4.md)
|
37
|
-
[Jiggler 0.1.0 performance results](/docs/perf_results_0.1.0.md)
|
31
|
+
[Jiggler 0.1.0rc4 performance results (at most once delivery) against sidekiq 7.0.3](/docs/perf_results_0.1.0rc4.md) \
|
32
|
+
[Jiggler 0.1.0 performance results (at least once delivery) against (at most once delivery)](/docs/perf_results_0.1.0.md)
|
38
33
|
|
39
34
|
### Getting Started
|
40
35
|
|
@@ -42,10 +37,10 @@ Conceptually Jiggler consists of two parts: the `client` and the `server`. \
|
|
42
37
|
The `client` is responsible for pushing jobs to `Redis` and allows to read stats, while the `server` reads jobs from `Redis`, processes them, and writes stats.
|
43
38
|
|
44
39
|
The `server` uses async `Redis` connections. \
|
45
|
-
The `client` on default is `sync`. It's possible to configure the client to be async as well via setting `client_async` to `true`.
|
40
|
+
The `client` on default is `sync`. It's possible to configure the client to be async as well via setting `client_async` to `true`. \
|
46
41
|
Client settings are:
|
47
42
|
- `client_concurrency`
|
48
|
-
- `
|
43
|
+
- `client_async`
|
49
44
|
- `redis_url` (this one is shared with the `server`)
|
50
45
|
|
51
46
|
The rest of the settings are `server` specific.
|
@@ -57,8 +52,8 @@ require "jiggler"
|
|
57
52
|
|
58
53
|
Jiggler.configure do |config|
|
59
54
|
config[:client_concurrency] = 12 # Should equal to the number of threads/fibers in the client app. Defaults to 10
|
60
|
-
config[:concurrency] = 12 # The number of running
|
61
|
-
config[:timeout] = 12 # Seconds Jiggler wait for jobs to finish before
|
55
|
+
config[:concurrency] = 12 # The number of running workers on the server. Defaults to 10
|
56
|
+
config[:timeout] = 12 # Seconds Jiggler wait for jobs to finish before shutdown. Defaults to 25
|
62
57
|
config[:environment] = "myenv" # On default fetches the value ENV["APP_ENV"] and fallbacks to "development"
|
63
58
|
config[:require] = "./jobs.rb" # Path to file with jobs/app initializer
|
64
59
|
config[:redis_url] = ENV["REDIS_URL"] # On default fetches the value from ENV["REDIS_URL"]
|
@@ -88,11 +83,28 @@ In the future it might bring a lot of performance boost into Ruby fibers world (
|
|
88
83
|
|
89
84
|
#### Socketry stack
|
90
85
|
|
91
|
-
The gem allows to use libs from `socketry` stack (https://github.com/socketry) within workers.
|
86
|
+
The gem allows to use libs/calls from `socketry` stack (https://github.com/socketry) within workers. \
|
87
|
+
Sample:
|
88
|
+
|
89
|
+
```ruby
|
90
|
+
def perform(ids)
|
91
|
+
resources = Resource.where(id: ids)
|
92
|
+
Async do
|
93
|
+
resources.each do |resource|
|
94
|
+
Async do
|
95
|
+
result = api_client.get(resource)
|
96
|
+
resource.update(data: result) if result
|
97
|
+
rescue => err
|
98
|
+
logger.error(err)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
```
|
92
104
|
|
93
|
-
#### Core
|
105
|
+
#### Core components
|
94
106
|
|
95
|
-
Internally Jiggler server
|
107
|
+
Internally Jiggler `server` among others includes the next entities: `Manager`, `Poller`, `Monitor`. \
|
96
108
|
`Manager` is responsible for workers. \
|
97
109
|
`Poller` fetches data for retries and scheduled jobs. \
|
98
110
|
`Monitor` periodically loads stats data into redis. \
|
data/lib/jiggler/cli.rb
CHANGED
@@ -13,6 +13,16 @@ module Jiggler
|
|
13
13
|
class CLI
|
14
14
|
include Singleton
|
15
15
|
CONTEXT_SWITCHER_THRESHOLD = 0.5
|
16
|
+
NUMERIC_OPTIONS = %i[
|
17
|
+
concurrency
|
18
|
+
client_concurrency
|
19
|
+
timeout
|
20
|
+
in_process_interval
|
21
|
+
poll_interval
|
22
|
+
stats_interval
|
23
|
+
max_dead_jobs
|
24
|
+
dead_timeout
|
25
|
+
].freeze
|
16
26
|
|
17
27
|
attr_reader :logger, :config, :environment
|
18
28
|
|
@@ -46,7 +56,7 @@ module Jiggler
|
|
46
56
|
def start
|
47
57
|
return unless ping_redis
|
48
58
|
@cond = Async::Condition.new
|
49
|
-
Async do
|
59
|
+
Async do
|
50
60
|
setup_signal_handlers
|
51
61
|
patch_scheduler
|
52
62
|
@launcher = Launcher.new(config)
|
@@ -135,8 +145,12 @@ module Jiggler
|
|
135
145
|
if config[:queues].any? { |q| q.include?(':') }
|
136
146
|
raise ArgumentError, 'Queue names cannot contain colons'
|
137
147
|
end
|
148
|
+
|
149
|
+
[:at_most_once, :at_least_once].include?(config[:mode]) || raise(
|
150
|
+
ArgumentError, "Invalid mode: #{config[:mode]}. Valid modes are :at_most_once and :at_least_once"
|
151
|
+
)
|
138
152
|
|
139
|
-
|
153
|
+
NUMERIC_OPTIONS.each do |opt|
|
140
154
|
raise ArgumentError, "#{opt}: #{config[opt]} is not a valid value" if config[opt].to_i <= 0
|
141
155
|
end
|
142
156
|
end
|
data/lib/jiggler/version.rb
CHANGED
data/spec/examples.txt
CHANGED
@@ -1,96 +1,99 @@
|
|
1
1
|
example_id | status | run_time |
|
2
2
|
-------------------------------------------------------- | ------ | --------------- |
|
3
|
-
./spec/jiggler/at_least_once/acknowledger_spec.rb[1:1:1] | passed | 0.
|
4
|
-
./spec/jiggler/at_least_once/fetcher_spec.rb[1:1:1] | passed | 2.
|
5
|
-
./spec/jiggler/at_least_once/fetcher_spec.rb[1:1:2] | passed | 2.
|
6
|
-
./spec/jiggler/at_most_once/fetcher_spec.rb[1:1:1] | passed | 0.
|
7
|
-
./spec/jiggler/cleaner_spec.rb[1:1:1] | passed | 0.
|
8
|
-
./spec/jiggler/cleaner_spec.rb[1:2:1] | passed | 0.
|
9
|
-
./spec/jiggler/cleaner_spec.rb[1:3:1] | passed | 0.
|
10
|
-
./spec/jiggler/cleaner_spec.rb[1:4:1] | passed | 0.
|
11
|
-
./spec/jiggler/cleaner_spec.rb[1:5:1] | passed | 0.
|
12
|
-
./spec/jiggler/cleaner_spec.rb[1:6:1] | passed | 0.
|
13
|
-
./spec/jiggler/cleaner_spec.rb[1:7:1] | passed | 0.
|
14
|
-
./spec/jiggler/cleaner_spec.rb[1:8:1] | passed | 0.
|
15
|
-
./spec/jiggler/cleaner_spec.rb[1:9:1] | passed | 0.
|
16
|
-
./spec/jiggler/cleaner_spec.rb[1:9:2] | passed | 0.
|
17
|
-
./spec/jiggler/cleaner_spec.rb[1:10:1] | passed | 0.
|
18
|
-
./spec/jiggler/cleaner_spec.rb[1:11:1] | passed | 0.
|
19
|
-
./spec/jiggler/cli_spec.rb[1:1:1:1] | passed | 0.
|
20
|
-
./spec/jiggler/cli_spec.rb[1:1:2:1] | passed | 0.
|
21
|
-
./spec/jiggler/cli_spec.rb[1:1:2:2] | passed | 0.
|
22
|
-
./spec/jiggler/cli_spec.rb[1:1:2:3] | passed | 0.
|
23
|
-
./spec/jiggler/cli_spec.rb[1:1:2:4] | passed | 0.
|
24
|
-
./spec/jiggler/cli_spec.rb[1:1:2:5] | passed | 0.
|
25
|
-
./spec/jiggler/cli_spec.rb[1:1:2:6] | passed | 0.
|
26
|
-
./spec/jiggler/cli_spec.rb[1:1:2:7] | passed | 0.
|
27
|
-
./spec/jiggler/cli_spec.rb[1:1:2:8] | passed | 0.
|
28
|
-
./spec/jiggler/cli_spec.rb[1:1:2:9] | passed | 0.
|
29
|
-
./spec/jiggler/cli_spec.rb[1:1:3:1] | passed | 0.
|
30
|
-
./spec/jiggler/cli_spec.rb[1:1:3:2] | passed | 0.
|
31
|
-
./spec/jiggler/cli_spec.rb[1:1:3:3] | passed | 0.
|
32
|
-
./spec/jiggler/cli_spec.rb[1:1:3:4] | passed | 0.
|
33
|
-
./spec/jiggler/cli_spec.rb[1:1:3:5] | passed | 0.
|
34
|
-
./spec/jiggler/
|
35
|
-
./spec/jiggler/
|
36
|
-
./spec/jiggler/
|
37
|
-
./spec/jiggler/config_spec.rb[1:1:
|
38
|
-
./spec/jiggler/config_spec.rb[1:1:
|
39
|
-
./spec/jiggler/config_spec.rb[1:1:
|
40
|
-
./spec/jiggler/
|
41
|
-
./spec/jiggler/
|
42
|
-
./spec/jiggler/
|
43
|
-
./spec/jiggler/
|
44
|
-
./spec/jiggler/job_spec.rb[1:
|
45
|
-
./spec/jiggler/job_spec.rb[1:
|
46
|
-
./spec/jiggler/job_spec.rb[1:
|
47
|
-
./spec/jiggler/job_spec.rb[1:
|
48
|
-
./spec/jiggler/
|
49
|
-
./spec/jiggler/
|
50
|
-
./spec/jiggler/
|
51
|
-
./spec/jiggler/launcher_spec.rb[1:1:
|
52
|
-
./spec/jiggler/launcher_spec.rb[1:2:1
|
53
|
-
./spec/jiggler/launcher_spec.rb[1:
|
54
|
-
./spec/jiggler/launcher_spec.rb[1:
|
55
|
-
./spec/jiggler/launcher_spec.rb[1:2:
|
56
|
-
./spec/jiggler/
|
57
|
-
./spec/jiggler/
|
58
|
-
./spec/jiggler/
|
59
|
-
./spec/jiggler/manager_spec.rb[1:1:
|
60
|
-
./spec/jiggler/manager_spec.rb[1:2:1]
|
61
|
-
./spec/jiggler/manager_spec.rb[1:
|
62
|
-
./spec/jiggler/manager_spec.rb[1:
|
63
|
-
./spec/jiggler/manager_spec.rb[1:2:
|
64
|
-
./spec/jiggler/
|
65
|
-
./spec/jiggler/
|
66
|
-
./spec/jiggler/
|
67
|
-
./spec/jiggler/
|
68
|
-
./spec/jiggler/
|
69
|
-
./spec/jiggler/
|
70
|
-
./spec/jiggler/
|
71
|
-
./spec/jiggler/
|
72
|
-
./spec/jiggler/scheduled/enqueuer_spec.rb[1:
|
73
|
-
./spec/jiggler/scheduled/
|
3
|
+
./spec/jiggler/at_least_once/acknowledger_spec.rb[1:1:1] | passed | 0.50201 seconds |
|
4
|
+
./spec/jiggler/at_least_once/fetcher_spec.rb[1:1:1] | passed | 2.53 seconds |
|
5
|
+
./spec/jiggler/at_least_once/fetcher_spec.rb[1:1:2] | passed | 2.58 seconds |
|
6
|
+
./spec/jiggler/at_most_once/fetcher_spec.rb[1:1:1] | passed | 0.0035 seconds |
|
7
|
+
./spec/jiggler/cleaner_spec.rb[1:1:1] | passed | 0.00117 seconds |
|
8
|
+
./spec/jiggler/cleaner_spec.rb[1:2:1] | passed | 0.00173 seconds |
|
9
|
+
./spec/jiggler/cleaner_spec.rb[1:3:1] | passed | 0.00193 seconds |
|
10
|
+
./spec/jiggler/cleaner_spec.rb[1:4:1] | passed | 0.00113 seconds |
|
11
|
+
./spec/jiggler/cleaner_spec.rb[1:5:1] | passed | 0.00126 seconds |
|
12
|
+
./spec/jiggler/cleaner_spec.rb[1:6:1] | passed | 0.00159 seconds |
|
13
|
+
./spec/jiggler/cleaner_spec.rb[1:7:1] | passed | 0.0015 seconds |
|
14
|
+
./spec/jiggler/cleaner_spec.rb[1:8:1] | passed | 0.0011 seconds |
|
15
|
+
./spec/jiggler/cleaner_spec.rb[1:9:1] | passed | 0.00239 seconds |
|
16
|
+
./spec/jiggler/cleaner_spec.rb[1:9:2] | passed | 0.00145 seconds |
|
17
|
+
./spec/jiggler/cleaner_spec.rb[1:10:1] | passed | 0.00183 seconds |
|
18
|
+
./spec/jiggler/cleaner_spec.rb[1:11:1] | passed | 0.00203 seconds |
|
19
|
+
./spec/jiggler/cli_spec.rb[1:1:1:1] | passed | 0.00046 seconds |
|
20
|
+
./spec/jiggler/cli_spec.rb[1:1:2:1] | passed | 0.01297 seconds |
|
21
|
+
./spec/jiggler/cli_spec.rb[1:1:2:2] | passed | 0.0008 seconds |
|
22
|
+
./spec/jiggler/cli_spec.rb[1:1:2:3] | passed | 0.0004 seconds |
|
23
|
+
./spec/jiggler/cli_spec.rb[1:1:2:4] | passed | 0.00136 seconds |
|
24
|
+
./spec/jiggler/cli_spec.rb[1:1:2:5] | passed | 0.00048 seconds |
|
25
|
+
./spec/jiggler/cli_spec.rb[1:1:2:6] | passed | 0.00034 seconds |
|
26
|
+
./spec/jiggler/cli_spec.rb[1:1:2:7] | passed | 0.00844 seconds |
|
27
|
+
./spec/jiggler/cli_spec.rb[1:1:2:8] | passed | 0.00053 seconds |
|
28
|
+
./spec/jiggler/cli_spec.rb[1:1:2:9] | passed | 0.00044 seconds |
|
29
|
+
./spec/jiggler/cli_spec.rb[1:1:3:1] | passed | 0.00527 seconds |
|
30
|
+
./spec/jiggler/cli_spec.rb[1:1:3:2] | passed | 0.00056 seconds |
|
31
|
+
./spec/jiggler/cli_spec.rb[1:1:3:3] | passed | 0.00051 seconds |
|
32
|
+
./spec/jiggler/cli_spec.rb[1:1:3:4] | passed | 0.00154 seconds |
|
33
|
+
./spec/jiggler/cli_spec.rb[1:1:3:5] | passed | 0.00084 seconds |
|
34
|
+
./spec/jiggler/cli_spec.rb[1:1:4:1:1] | passed | 0.0005 seconds |
|
35
|
+
./spec/jiggler/cli_spec.rb[1:1:4:1:2] | passed | 0.00049 seconds |
|
36
|
+
./spec/jiggler/cli_spec.rb[1:1:4:2:1] | passed | 0.00284 seconds |
|
37
|
+
./spec/jiggler/config_spec.rb[1:1:1] | passed | 0.00047 seconds |
|
38
|
+
./spec/jiggler/config_spec.rb[1:1:2:1] | passed | 0.00022 seconds |
|
39
|
+
./spec/jiggler/config_spec.rb[1:1:2:2:1] | passed | 0.00021 seconds |
|
40
|
+
./spec/jiggler/config_spec.rb[1:1:2:3:1] | passed | 0.00021 seconds |
|
41
|
+
./spec/jiggler/config_spec.rb[1:1:3] | passed | 0.00063 seconds |
|
42
|
+
./spec/jiggler/config_spec.rb[1:1:4] | passed | 0.00039 seconds |
|
43
|
+
./spec/jiggler/core_spec.rb[1:1:1] | passed | 0.00012 seconds |
|
44
|
+
./spec/jiggler/job_spec.rb[1:1:1:1] | passed | 0.00063 seconds |
|
45
|
+
./spec/jiggler/job_spec.rb[1:1:2:1] | passed | 0.0012 seconds |
|
46
|
+
./spec/jiggler/job_spec.rb[1:2:1] | passed | 0.00134 seconds |
|
47
|
+
./spec/jiggler/job_spec.rb[1:3:1] | passed | 0.00469 seconds |
|
48
|
+
./spec/jiggler/job_spec.rb[1:4:1] | passed | 0.00153 seconds |
|
49
|
+
./spec/jiggler/job_spec.rb[1:4:2] | passed | 0.00225 seconds |
|
50
|
+
./spec/jiggler/job_spec.rb[1:5:1] | passed | 0.00216 seconds |
|
51
|
+
./spec/jiggler/launcher_spec.rb[1:1:1:1] | passed | 0.0004 seconds |
|
52
|
+
./spec/jiggler/launcher_spec.rb[1:1:2:1] | passed | 2.02 seconds |
|
53
|
+
./spec/jiggler/launcher_spec.rb[1:1:3:1] | passed | 2.01 seconds |
|
54
|
+
./spec/jiggler/launcher_spec.rb[1:1:4:1] | passed | 2.03 seconds |
|
55
|
+
./spec/jiggler/launcher_spec.rb[1:2:1:1] | passed | 0.00075 seconds |
|
56
|
+
./spec/jiggler/launcher_spec.rb[1:2:2:1] | passed | 2.1 seconds |
|
57
|
+
./spec/jiggler/launcher_spec.rb[1:2:3:1] | passed | 2.06 seconds |
|
58
|
+
./spec/jiggler/launcher_spec.rb[1:2:4:1] | passed | 2.05 seconds |
|
59
|
+
./spec/jiggler/manager_spec.rb[1:1:1] | passed | 0.00149 seconds |
|
60
|
+
./spec/jiggler/manager_spec.rb[1:1:2:1] | passed | 0.50872 seconds |
|
61
|
+
./spec/jiggler/manager_spec.rb[1:1:3:1] | passed | 1.51 seconds |
|
62
|
+
./spec/jiggler/manager_spec.rb[1:1:4:1] | passed | 3.51 seconds |
|
63
|
+
./spec/jiggler/manager_spec.rb[1:2:1] | passed | 0.00103 seconds |
|
64
|
+
./spec/jiggler/manager_spec.rb[1:2:2:1] | passed | 0.50582 seconds |
|
65
|
+
./spec/jiggler/manager_spec.rb[1:2:3:1] | passed | 2.09 seconds |
|
66
|
+
./spec/jiggler/manager_spec.rb[1:2:4:1] | passed | 2.5 seconds |
|
67
|
+
./spec/jiggler/redis_store_spec.rb[1:1:1] | passed | 0.00068 seconds |
|
68
|
+
./spec/jiggler/redis_store_spec.rb[1:1:2:1] | passed | 0.00008 seconds |
|
69
|
+
./spec/jiggler/retrier_spec.rb[1:1:1:1] | passed | 0.00419 seconds |
|
70
|
+
./spec/jiggler/retrier_spec.rb[1:1:1:2] | passed | 0.00217 seconds |
|
71
|
+
./spec/jiggler/retrier_spec.rb[1:1:2:1] | passed | 0.00032 seconds |
|
72
|
+
./spec/jiggler/scheduled/enqueuer_spec.rb[1:1:1] | passed | 0.00736 seconds |
|
73
|
+
./spec/jiggler/scheduled/enqueuer_spec.rb[1:1:2] | passed | 0.00591 seconds |
|
74
|
+
./spec/jiggler/scheduled/enqueuer_spec.rb[1:1:3] | passed | 0.00954 seconds |
|
75
|
+
./spec/jiggler/scheduled/enqueuer_spec.rb[1:2:1] | passed | 0.02883 seconds |
|
76
|
+
./spec/jiggler/scheduled/poller_spec.rb[1:1:1] | passed | 1.01 seconds |
|
74
77
|
./spec/jiggler/scheduled/poller_spec.rb[1:2:1] | passed | 1 second |
|
75
|
-
./spec/jiggler/scheduled/requeuer_spec.rb[1:1:1] | passed | 0.
|
76
|
-
./spec/jiggler/scheduled/requeuer_spec.rb[1:2:1] | passed | 0.
|
77
|
-
./spec/jiggler/scheduled/requeuer_spec.rb[1:3:1] | passed | 0.
|
78
|
-
./spec/jiggler/stats/monitor_spec.rb[1:1:1] | passed | 1.
|
79
|
-
./spec/jiggler/stats/monitor_spec.rb[1:2:1] | passed | 1.
|
80
|
-
./spec/jiggler/summary_spec.rb[1:1:1] | passed | 0.
|
81
|
-
./spec/jiggler/summary_spec.rb[1:1:2] | passed | 2.
|
82
|
-
./spec/jiggler/summary_spec.rb[1:1:3:1] | passed | 0.
|
78
|
+
./spec/jiggler/scheduled/requeuer_spec.rb[1:1:1] | passed | 0.00322 seconds |
|
79
|
+
./spec/jiggler/scheduled/requeuer_spec.rb[1:2:1] | passed | 0.00799 seconds |
|
80
|
+
./spec/jiggler/scheduled/requeuer_spec.rb[1:3:1] | passed | 0.00541 seconds |
|
81
|
+
./spec/jiggler/stats/monitor_spec.rb[1:1:1] | passed | 1.02 seconds |
|
82
|
+
./spec/jiggler/stats/monitor_spec.rb[1:2:1] | passed | 1.02 seconds |
|
83
|
+
./spec/jiggler/summary_spec.rb[1:1:1] | passed | 0.00959 seconds |
|
84
|
+
./spec/jiggler/summary_spec.rb[1:1:2] | passed | 2.04 seconds |
|
85
|
+
./spec/jiggler/summary_spec.rb[1:1:3:1] | passed | 0.00529 seconds |
|
83
86
|
./spec/jiggler/summary_spec.rb[1:2:1] | passed | 1.01 seconds |
|
84
87
|
./spec/jiggler/summary_spec.rb[1:3:1] | passed | 1.01 seconds |
|
85
|
-
./spec/jiggler/summary_spec.rb[1:4:1] | passed | 0.
|
86
|
-
./spec/jiggler/web_spec.rb[1:1:1] | passed | 0.
|
87
|
-
./spec/jiggler/web_spec.rb[1:1:2] | passed | 0.
|
88
|
-
./spec/jiggler/web_spec.rb[1:2:1] | passed | 0.
|
89
|
-
./spec/jiggler/web_spec.rb[1:2:2] | passed | 0.
|
90
|
-
./spec/jiggler/web_spec.rb[1:3:1] | passed | 0.
|
91
|
-
./spec/jiggler/web_spec.rb[1:3:2] | passed | 0.
|
92
|
-
./spec/jiggler/worker_spec.rb[1:1:1] | passed | 1
|
88
|
+
./spec/jiggler/summary_spec.rb[1:4:1] | passed | 0.01613 seconds |
|
89
|
+
./spec/jiggler/web_spec.rb[1:1:1] | passed | 0.00051 seconds |
|
90
|
+
./spec/jiggler/web_spec.rb[1:1:2] | passed | 0.00066 seconds |
|
91
|
+
./spec/jiggler/web_spec.rb[1:2:1] | passed | 0.00005 seconds |
|
92
|
+
./spec/jiggler/web_spec.rb[1:2:2] | passed | 0.00003 seconds |
|
93
|
+
./spec/jiggler/web_spec.rb[1:3:1] | passed | 0.00051 seconds |
|
94
|
+
./spec/jiggler/web_spec.rb[1:3:2] | passed | 0.00004 seconds |
|
95
|
+
./spec/jiggler/worker_spec.rb[1:1:1] | passed | 1.01 seconds |
|
93
96
|
./spec/jiggler/worker_spec.rb[1:1:2] | passed | 1.01 seconds |
|
94
|
-
./spec/jiggler/worker_spec.rb[1:1:3] | passed | 1.
|
95
|
-
./spec/jiggler/worker_spec.rb[1:2:1] | passed | 0.
|
96
|
-
./spec/jiggler/worker_spec.rb[1:3:1:1] | passed | 0.
|
97
|
+
./spec/jiggler/worker_spec.rb[1:1:3] | passed | 1.02 seconds |
|
98
|
+
./spec/jiggler/worker_spec.rb[1:2:1] | passed | 0.00138 seconds |
|
99
|
+
./spec/jiggler/worker_spec.rb[1:3:1:1] | passed | 0.50353 seconds |
|
data/spec/jiggler/cli_spec.rb
CHANGED
@@ -1,9 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative '../../lib/jiggler/cli.rb'
|
4
|
-
|
5
3
|
RSpec.describe Jiggler::CLI do
|
6
4
|
let(:cli) { Jiggler::CLI.instance }
|
5
|
+
before do
|
6
|
+
# reset
|
7
|
+
Jiggler.instance_variable_set(:@config, nil)
|
8
|
+
cli.instance_variable_set(:@config, nil)
|
9
|
+
end
|
10
|
+
after do
|
11
|
+
# reset
|
12
|
+
Jiggler.instance_variable_set(:@config, nil)
|
13
|
+
cli.instance_variable_set(:@config, nil)
|
14
|
+
end
|
7
15
|
|
8
16
|
describe '.parse_and_init' do
|
9
17
|
context 'with no args' do
|
@@ -81,5 +89,34 @@ RSpec.describe Jiggler::CLI do
|
|
81
89
|
it { expect { cli.parse_and_init(['-r', 'test.rb']) }.to raise_error(SystemExit) }
|
82
90
|
it { expect { cli.parse_and_init(['-q', 'in:va:lid']) }.to raise_error(ArgumentError) }
|
83
91
|
end
|
92
|
+
|
93
|
+
context 'config validation' do
|
94
|
+
context 'with mode' do
|
95
|
+
it 'raises an error when invalid mode' do
|
96
|
+
Jiggler.configure do |config|
|
97
|
+
config[:mode] = :invalid
|
98
|
+
end
|
99
|
+
expect { cli.parse_and_init }.to raise_error(ArgumentError)
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'does not raise an error when valid mode' do
|
103
|
+
Jiggler.configure do |config|
|
104
|
+
config[:mode] = :at_most_once
|
105
|
+
end
|
106
|
+
expect { cli.parse_and_init }.not_to raise_error
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
context 'with numeric values' do
|
111
|
+
it 'raises an error when invalid value' do
|
112
|
+
Jiggler::CLI::NUMERIC_OPTIONS.each do |option|
|
113
|
+
Jiggler.configure do |config|
|
114
|
+
config[option] = [0, -1, 'a'].sample
|
115
|
+
end
|
116
|
+
expect { cli.parse_and_init }.to raise_error(ArgumentError)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
84
121
|
end
|
85
122
|
end
|
data/spec/jiggler/core_spec.rb
CHANGED
@@ -16,6 +16,8 @@ RSpec.describe 'Core' do
|
|
16
16
|
config[:queues] = %w[foo bar]
|
17
17
|
config[:require] = 'foo'
|
18
18
|
config[:environment] = 'bar'
|
19
|
+
config[:mode] = :at_most_once
|
20
|
+
config[:in_process_interval] = 100
|
19
21
|
end
|
20
22
|
expect(Jiggler.config[:concurrency]).to be 1
|
21
23
|
expect(Jiggler.config[:client_concurrency]).to be 2
|
@@ -29,6 +31,8 @@ RSpec.describe 'Core' do
|
|
29
31
|
expect(Jiggler.config[:queues]).to eq %w[foo bar]
|
30
32
|
expect(Jiggler.config[:require]).to eq 'foo'
|
31
33
|
expect(Jiggler.config[:environment]).to eq 'bar'
|
34
|
+
expect(Jiggler.config[:mode]).to eq :at_most_once
|
35
|
+
expect(Jiggler.config[:in_process_interval]).to be 100
|
32
36
|
# reset config
|
33
37
|
Jiggler.instance_variable_set(:@config, nil)
|
34
38
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jiggler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julija Alieckaja
|
@@ -225,9 +225,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
225
225
|
version: '0'
|
226
226
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
227
227
|
requirements:
|
228
|
-
- - "
|
228
|
+
- - ">="
|
229
229
|
- !ruby/object:Gem::Version
|
230
|
-
version:
|
230
|
+
version: '0'
|
231
231
|
requirements: []
|
232
232
|
rubygems_version: 3.4.6
|
233
233
|
signing_key:
|