mt-uv-rays 2.4.7

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.
@@ -0,0 +1,118 @@
1
+ require 'mt-uv-rays'
2
+
3
+ describe MTUV::Scheduler do
4
+ before :each do
5
+ @general_failure = []
6
+ @reactor = MTLibuv::Reactor.new
7
+ @reactor.notifier do |error, context|
8
+ begin
9
+ @general_failure << "Log called: #{context}\n#{error.message}\n#{error.backtrace.join("\n") if error.backtrace}\n"
10
+ rescue Exception
11
+ @general_failure << "error in logger #{e.inspect}"
12
+ end
13
+ end
14
+
15
+ @timeout = @reactor.timer do
16
+ @reactor.stop
17
+ @general_failure << "test timed out"
18
+ end
19
+ @timeout.start(5000)
20
+ @scheduler = @reactor.scheduler
21
+ end
22
+
23
+ it "should be able to schedule a one shot event using 'in'" do
24
+ @reactor.run { |reactor|
25
+ @event = @scheduler.in('0.5s') do |triggered, event|
26
+ @triggered_at = triggered
27
+ @result = event
28
+ @reactor.stop
29
+ end
30
+ }
31
+
32
+ expect(@general_failure).to eq([])
33
+ expect(@event).to eq(@result)
34
+ @diff = @triggered_at - @event.last_scheduled
35
+ expect(@diff).to be >= 500
36
+ expect(@diff).to be < 750
37
+ end
38
+
39
+ it "should be able to schedule a one shot event using 'at'" do
40
+ @reactor.run { |reactor|
41
+ @event = @scheduler.at(Time.now + 1) do |triggered, event|
42
+ @triggered_at = triggered
43
+ @result = event
44
+ @reactor.stop
45
+ end
46
+ }
47
+
48
+ expect(@general_failure).to eq([])
49
+ expect(@event).to eq(@result)
50
+ @diff = @triggered_at - @event.last_scheduled
51
+ expect(@diff).to be >= 1000
52
+ expect(@diff).to be < 1250
53
+ end
54
+
55
+ it "should be able to schedule a repeat event" do
56
+ @reactor.run { |reactor|
57
+ @run = 0
58
+ @event = @scheduler.every('0.25s') do |triggered, event|
59
+ @triggered_at = triggered
60
+ @result = event
61
+
62
+ diff = triggered - event.last_scheduled
63
+ expect(diff).to be >= 250
64
+ expect(diff).to be < 500
65
+
66
+ @run += 1
67
+ if @run == 2
68
+ @event.pause
69
+ @reactor.stop
70
+ end
71
+ end
72
+ }
73
+
74
+ expect(@general_failure).to eq([])
75
+ expect(@run).to eq(2)
76
+ expect(@event).to eq(@result)
77
+ end
78
+
79
+ it "should be able to cancel an event" do
80
+ # Also tests events run in order of scheduled
81
+ # Also tests events are not inadvertently canceled by other test
82
+ @reactor.run { |reactor|
83
+ @triggered = []
84
+
85
+ @event1 = @scheduler.in('0.5s') do |triggered, event|
86
+ @triggered << 1
87
+ end
88
+
89
+ @event2 = @scheduler.in('0.5s') do |triggered, event|
90
+ @triggered << 2
91
+ end
92
+
93
+ @event3 = @scheduler.in('0.5s') do |triggered, event|
94
+ @triggered << 3
95
+ @reactor.stop
96
+ end
97
+
98
+ @scheduled, @schedules = @scheduler.instance_eval {
99
+ [@scheduled, @schedules]
100
+ }
101
+
102
+ expect(@scheduled.size).to eq(3)
103
+ expect(@schedules.size).to eq(3)
104
+
105
+ @event2.cancel
106
+
107
+ @reactor.next_tick do
108
+ expect(@scheduled.size).to eq(2)
109
+ expect(@schedules.size).to eq(2)
110
+ end
111
+ }
112
+
113
+ expect(@general_failure).to eq([])
114
+ expect(@triggered).to eq([1, 3])
115
+ expect(@scheduled.size).to eq(0)
116
+ expect(@schedules.size).to eq(0)
117
+ end
118
+ end
@@ -0,0 +1,132 @@
1
+
2
+ #
3
+ # Specifying rufus-scheduler
4
+ #
5
+ # Wed Apr 17 06:00:59 JST 2013
6
+ #
7
+
8
+ require 'mt-uv-rays'
9
+
10
+ describe MTUV::Scheduler do
11
+
12
+ describe '.parse_duration' do
13
+
14
+ def pd(s)
15
+ MTUV::Scheduler.parse_duration(s)
16
+ end
17
+
18
+ it 'parses duration strings' do
19
+
20
+ expect(pd('-1.0d1.0w1.0d')).to eq(-777600000)
21
+ expect(pd('-1d1w1d')).to eq(-777600000)
22
+ expect(pd('-1w2d')).to eq(-777600000)
23
+ expect(pd('-1h10s')).to eq(-3610000)
24
+ expect(pd('-1h')).to eq(-3600000)
25
+ expect(pd('-5.')).to eq(-5)
26
+ expect(pd('-2.5s')).to eq(-2500)
27
+ expect(pd('-1s')).to eq(-1000)
28
+ expect(pd('-500')).to eq(-500)
29
+ expect(pd('')).to eq(0)
30
+ expect(pd('5.0')).to eq(5)
31
+ expect(pd('0.5')).to eq(0)
32
+ expect(pd('.5')).to eq(0)
33
+ expect(pd('5.')).to eq(5)
34
+ expect(pd('500')).to eq(500)
35
+ expect(pd('1000')).to eq(1000)
36
+ expect(pd('1')).to eq(1)
37
+ expect(pd('1s')).to eq(1000)
38
+ expect(pd('2.5s')).to eq(2500)
39
+ expect(pd('1h')).to eq(3600000)
40
+ expect(pd('1h10s')).to eq(3610000)
41
+ expect(pd('1w2d')).to eq(777600000)
42
+ expect(pd('1d1w1d')).to eq(777600000)
43
+ expect(pd('1.0d1.0w1.0d')).to eq(777600000)
44
+
45
+ expect(pd('.5m')).to eq(30000)
46
+ expect(pd('5.m')).to eq(300000)
47
+ expect(pd('1m.5s')).to eq(60500)
48
+ expect(pd('-.5m')).to eq(-30000)
49
+
50
+ expect(pd('1')).to eq(1)
51
+ expect(pd('0.1')).to eq(0)
52
+ expect(pd('1s')).to eq(1000)
53
+ end
54
+
55
+ it 'calls #to_s on its input' do
56
+
57
+ expect(pd(1)).to eq(1)
58
+ end
59
+
60
+ it 'raises on wrong duration strings' do
61
+
62
+ expect { pd('-') }.to raise_error(ArgumentError)
63
+ expect { pd('h') }.to raise_error(ArgumentError)
64
+ expect { pd('whatever') }.to raise_error(ArgumentError)
65
+ expect { pd('hms') }.to raise_error(ArgumentError)
66
+
67
+ expect { pd(' 1h ') }.to raise_error(ArgumentError)
68
+ end
69
+ end
70
+
71
+ describe '.to_duration' do
72
+
73
+ def td(o, opts={})
74
+ MTUV::Scheduler.to_duration(o, opts)
75
+ end
76
+
77
+ it 'turns integers into duration strings' do
78
+
79
+ expect(td(0)).to eq('0s')
80
+ expect(td(60000)).to eq('1m')
81
+ expect(td(61000)).to eq('1m1s')
82
+ expect(td(3661000)).to eq('1h1m1s')
83
+ expect(td(24 * 3600 * 1000)).to eq('1d')
84
+ expect(td(7 * 24 * 3600 * 1000 + 1000)).to eq('1w1s')
85
+ expect(td(30 * 24 * 3600 * 1000 + 1000)).to eq('4w2d1s')
86
+ end
87
+
88
+ it 'ignores seconds and milliseconds if :drop_seconds => true' do
89
+
90
+ expect(td(0, :drop_seconds => true)).to eq('0m')
91
+ expect(td(5000, :drop_seconds => true)).to eq('0m')
92
+ expect(td(61000, :drop_seconds => true)).to eq('1m')
93
+ end
94
+
95
+ it 'displays months if :months => true' do
96
+
97
+ expect(td(1000, :months => true)).to eq('1s')
98
+ expect(td(30 * 24 * 3600 * 1000 + 1000, :months => true)).to eq('1M1s')
99
+ end
100
+
101
+ it 'turns floats into duration strings' do
102
+
103
+ expect(td(100)).to eq('100')
104
+ expect(td(1100)).to eq('1s100')
105
+ end
106
+ end
107
+
108
+ describe '.to_duration_hash' do
109
+
110
+ def tdh(o, opts={})
111
+ MTUV::Scheduler.to_duration_hash(o, opts)
112
+ end
113
+
114
+ it 'turns integers duration hashes' do
115
+
116
+ expect(tdh(0)).to eq({})
117
+ expect(tdh(60000)).to eq({ :m => 1 })
118
+ end
119
+
120
+ it 'turns floats duration hashes' do
121
+
122
+ expect(tdh(128)).to eq({ :ms => 128 })
123
+ expect(tdh(60127)).to eq({ :m => 1, :ms => 127 })
124
+ end
125
+
126
+ it 'drops seconds and milliseconds if :drop_seconds => true' do
127
+
128
+ expect(tdh(61127)).to eq({ :m => 1, :s => 1, :ms => 127 })
129
+ expect(tdh(61127, :drop_seconds => true)).to eq({ :m => 1 })
130
+ end
131
+ end
132
+ end
metadata ADDED
@@ -0,0 +1,300 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mt-uv-rays
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.4.7
5
+ platform: ruby
6
+ authors:
7
+ - Giallombardo Nathan
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-03-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mt-libuv
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.1'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 4.1.02
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '4.1'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 4.1.02
33
+ - !ruby/object:Gem::Dependency
34
+ name: bisect
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.1'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.1'
47
+ - !ruby/object:Gem::Dependency
48
+ name: tzinfo
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.2'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.2'
61
+ - !ruby/object:Gem::Dependency
62
+ name: cookiejar
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '0.3'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '0.3'
75
+ - !ruby/object:Gem::Dependency
76
+ name: ipaddress
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0.8'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '0.8'
89
+ - !ruby/object:Gem::Dependency
90
+ name: parse-cron
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '0.1'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '0.1'
103
+ - !ruby/object:Gem::Dependency
104
+ name: addressable
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '2.4'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '2.4'
117
+ - !ruby/object:Gem::Dependency
118
+ name: http-parser
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '1.2'
124
+ type: :runtime
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '1.2'
131
+ - !ruby/object:Gem::Dependency
132
+ name: activesupport
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '4'
138
+ - - "<"
139
+ - !ruby/object:Gem::Version
140
+ version: '6'
141
+ type: :runtime
142
+ prerelease: false
143
+ version_requirements: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '4'
148
+ - - "<"
149
+ - !ruby/object:Gem::Version
150
+ version: '6'
151
+ - !ruby/object:Gem::Dependency
152
+ name: rubyntlm
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '0.6'
158
+ type: :runtime
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '0.6'
165
+ - !ruby/object:Gem::Dependency
166
+ name: net-http-digest_auth
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: '1.4'
172
+ type: :runtime
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - "~>"
177
+ - !ruby/object:Gem::Version
178
+ version: '1.4'
179
+ - !ruby/object:Gem::Dependency
180
+ name: rspec
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '3.5'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '3.5'
193
+ - !ruby/object:Gem::Dependency
194
+ name: rake
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: '11.2'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - "~>"
205
+ - !ruby/object:Gem::Version
206
+ version: '11.2'
207
+ - !ruby/object:Gem::Dependency
208
+ name: yard
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - "~>"
212
+ - !ruby/object:Gem::Version
213
+ version: '0.9'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - "~>"
219
+ - !ruby/object:Gem::Version
220
+ version: '0.9'
221
+ - !ruby/object:Gem::Dependency
222
+ name: httpi
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - "~>"
226
+ - !ruby/object:Gem::Version
227
+ version: 2.4.2
228
+ type: :development
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - "~>"
233
+ - !ruby/object:Gem::Version
234
+ version: 2.4.2
235
+ description: Opinionated abstractions for Libuv
236
+ email:
237
+ - nathan.giallombardo@mapotempo.com
238
+ executables: []
239
+ extensions: []
240
+ extra_rdoc_files:
241
+ - README.md
242
+ files:
243
+ - LICENSE
244
+ - README.md
245
+ - Rakefile
246
+ - lib/faraday/adapter/mt-libuv.rb
247
+ - lib/handsoap/http/drivers/mt-libuv_driver.rb
248
+ - lib/httpi/adapter/mt-libuv.rb
249
+ - lib/mt-uv-rays.rb
250
+ - lib/mt-uv-rays/abstract_tokenizer.rb
251
+ - lib/mt-uv-rays/buffered_tokenizer.rb
252
+ - lib/mt-uv-rays/connection.rb
253
+ - lib/mt-uv-rays/http/encoding.rb
254
+ - lib/mt-uv-rays/http/parser.rb
255
+ - lib/mt-uv-rays/http/request.rb
256
+ - lib/mt-uv-rays/http_endpoint.rb
257
+ - lib/mt-uv-rays/ping.rb
258
+ - lib/mt-uv-rays/scheduler.rb
259
+ - lib/mt-uv-rays/scheduler/time.rb
260
+ - lib/mt-uv-rays/tcp_server.rb
261
+ - lib/mt-uv-rays/version.rb
262
+ - mt-uv-rays.gemspec
263
+ - spec/abstract_tokenizer_spec.rb
264
+ - spec/buffered_tokenizer_spec.rb
265
+ - spec/connection_spec.rb
266
+ - spec/http_endpoint_spec.rb
267
+ - spec/ping_spec.rb
268
+ - spec/scheduler_spec.rb
269
+ - spec/scheduler_time_spec.rb
270
+ homepage: https://github.com/mapotempo/mt-uv-rays
271
+ licenses:
272
+ - MIT
273
+ metadata: {}
274
+ post_install_message:
275
+ rdoc_options: []
276
+ require_paths:
277
+ - lib
278
+ required_ruby_version: !ruby/object:Gem::Requirement
279
+ requirements:
280
+ - - ">="
281
+ - !ruby/object:Gem::Version
282
+ version: 2.0.0
283
+ required_rubygems_version: !ruby/object:Gem::Requirement
284
+ requirements:
285
+ - - ">="
286
+ - !ruby/object:Gem::Version
287
+ version: '0'
288
+ requirements: []
289
+ rubygems_version: 3.1.6
290
+ signing_key:
291
+ specification_version: 4
292
+ summary: Abstractions for working with Libuv
293
+ test_files:
294
+ - spec/abstract_tokenizer_spec.rb
295
+ - spec/buffered_tokenizer_spec.rb
296
+ - spec/connection_spec.rb
297
+ - spec/http_endpoint_spec.rb
298
+ - spec/ping_spec.rb
299
+ - spec/scheduler_spec.rb
300
+ - spec/scheduler_time_spec.rb