jiggler 0.1.0.rc7 → 0.1.0
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/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:
|