crabfarm 0.7.0 → 0.7.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d58ed7568693ec48b019ca4bf3d8051073938d1b
4
- data.tar.gz: c0853a7063ef07de79950d23802993c5d5f4bc27
3
+ metadata.gz: c550699098370495349bb242274fee302050ec25
4
+ data.tar.gz: e422e85f42e800ed20c692e2d68e985962de9ae4
5
5
  SHA512:
6
- metadata.gz: cd5f294f3424f16316633894cfa3e25bfa464ef3a56aaa099d572a1eaf74873de840e89ee7afd7ff7f047f261d7179a9fb9c85c6549ba69b09cb4228e0a93a8c
7
- data.tar.gz: a27f2e4ff7adef226539f4ff24301d0c6c2162c47b4a35d519a1737aa0bc4d76878c1b5518cd4de1e5e47454393ba6ac08880364008bd1a620296e7c3c0e4763
6
+ metadata.gz: 72c0cfe98b46fec0d071b0d03ccec46307fc2698862aa11a11ed25d0bcd2b65c99502ab14c202b0d4da0c47757353ca4ff824262e36f0d57f84ce37177cb09ac
7
+ data.tar.gz: d519fa4e7b65275ffac76922654a10199f4e222a35a3789960e1d2baf1cc084260c10f966b7a3b3081aeea1b3e4a82f7aff66af71a19fae5a3a17a1e91df39ea
@@ -1,5 +1,5 @@
1
1
  require 'childprocess'
2
- require 'crabfarm/utils/stream_dumper'
2
+ require 'linedump'
3
3
 
4
4
  ChildProcess.posix_spawn = true
5
5
 
@@ -22,8 +22,8 @@ module Crabfarm::Utils
22
22
  we.close
23
23
 
24
24
  # register log consumers
25
- StreamDumper.register_stream(ro) { |l| _logger.info "[#{_name.upcase}] #{l}" }
26
- StreamDumper.register_stream(re) { |l| _logger.warn "[#{_name.upcase}] #{l}" }
25
+ Linedump.each_line(ro) { |l| _logger.info "[#{_name.upcase}] #{l}" }
26
+ Linedump.each_line(re) { |l| _logger.warn "[#{_name.upcase}] #{l}" }
27
27
 
28
28
  proc
29
29
  end
@@ -1,3 +1,3 @@
1
1
  module Crabfarm
2
- VERSION = "0.7.0"
2
+ VERSION = "0.7.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crabfarm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ignacio Baixas
@@ -112,14 +112,14 @@ dependencies:
112
112
  requirements:
113
113
  - - ~>
114
114
  - !ruby/object:Gem::Version
115
- version: '2.12'
115
+ version: '1.2'
116
116
  type: :runtime
117
117
  prerelease: false
118
118
  version_requirements: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - ~>
121
121
  - !ruby/object:Gem::Version
122
- version: '2.12'
122
+ version: '1.2'
123
123
  - !ruby/object:Gem::Dependency
124
124
  name: childprocess
125
125
  requirement: !ruby/object:Gem::Requirement
@@ -168,6 +168,20 @@ dependencies:
168
168
  - - ~>
169
169
  - !ruby/object:Gem::Version
170
170
  version: '3.2'
171
+ - !ruby/object:Gem::Dependency
172
+ name: linedump
173
+ requirement: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - ~>
176
+ - !ruby/object:Gem::Version
177
+ version: '0.1'
178
+ type: :runtime
179
+ prerelease: false
180
+ version_requirements: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ~>
183
+ - !ruby/object:Gem::Version
184
+ version: '0.1'
171
185
  - !ruby/object:Gem::Dependency
172
186
  name: selenium-webdriver
173
187
  requirement: !ruby/object:Gem::Requirement
@@ -540,7 +554,6 @@ files:
540
554
  - lib/crabfarm/utils/processes.rb
541
555
  - lib/crabfarm/utils/resolve.rb
542
556
  - lib/crabfarm/utils/rspec_runner.rb
543
- - lib/crabfarm/utils/stream_dumper.rb
544
557
  - lib/crabfarm/utils/webdriver.rb
545
558
  - lib/crabfarm/version.rb
546
559
  homepage: https://github.com/platanus/crabfarm-gem
@@ -1,142 +0,0 @@
1
- require 'thwait'
2
-
3
- module Crabfarm::Utils
4
-
5
- class StreamDumper
6
-
7
- class Reload < StandardError; end
8
-
9
- def self.consumer
10
- @@consumer ||= self.new
11
- end
12
-
13
- def self.register_stream(_stream, &_block)
14
- consumer.register_stream _stream, &_block
15
- consumer.restart
16
- end
17
-
18
- def initialize
19
- @streams = []
20
- @lock = Mutex.new
21
- @worker = nil
22
- end
23
-
24
- def register_stream(_stream, &_block)
25
- @lock.synchronize { @streams << Wrapper.new(_stream, _block) }
26
- end
27
-
28
- def restart
29
- @lock.synchronize do
30
- if @worker and @worker.alive?
31
- @worker.raise Reload # signal worker to reload streams
32
- else
33
- @worker = load_worker
34
- end
35
- end
36
- end
37
-
38
- private
39
-
40
- def load_worker
41
- Thread.new do
42
- looped = 0
43
- begin
44
- while @streams.count > 0
45
- all_streams = dump_streams
46
- result = IO.select(all_streams << $stdin, [], all_streams)
47
- if result
48
- process_ready_streams result[0]
49
- discard_errored_streams result[2]
50
- end
51
- looped += 1
52
- end
53
- rescue Reload
54
- retry
55
- rescue SystemExit
56
- # nothing
57
- end
58
- end
59
- end
60
-
61
- def process_ready_streams(_streams)
62
- _streams.each do |stream|
63
- wrapper = find_stream_wrapper stream
64
- if wrapper
65
- wrapper.process_lines
66
- remove_wrapper wrapper, :eof if wrapper.eof?
67
- end
68
- end
69
- end
70
-
71
- def discard_errored_streams(_streams)
72
- _streams.each do |stream|
73
- wrapper = find_stream_wrapper stream
74
- remove_wrapper wrapper, :error if wrapper
75
- end
76
- end
77
-
78
- def find_stream_wrapper(_stream)
79
- @streams.find { |s| s.stream == _stream }
80
- end
81
-
82
- def remove_wrapper(_wrapper, _reason)
83
- @lock.synchronize { @streams.delete _wrapper }
84
- end
85
-
86
- def dump_streams
87
- @streams.map(&:stream)
88
- end
89
-
90
- class Wrapper
91
-
92
- MAX_LENGTH = 2048
93
-
94
- attr_reader :stream
95
-
96
- def initialize(_stream, _block)
97
- @stream = _stream
98
- @block = _block
99
- @buffer = []
100
- @eof = false
101
- end
102
-
103
- def eof?
104
- @eof
105
- end
106
-
107
- def process_lines
108
- begin
109
- loop do
110
- chunk = @stream.read_nonblock(MAX_LENGTH)
111
- process_chunk chunk
112
- end
113
- rescue IO::WaitReadable
114
- # nothing, just stop looping
115
- rescue EOFError
116
- @eof = true
117
- rescue Exception => exc
118
- puts "Error in stream consumer: #{exc}"
119
- @eof = true
120
- end
121
- end
122
-
123
- def process_chunk(_chunk)
124
- index = _chunk.index $/
125
-
126
- unless index.nil?
127
- head = _chunk[0..index-1]
128
- tail = _chunk[index+1..-1]
129
-
130
- @block.call(@buffer.join + head)
131
- @buffer.clear
132
-
133
- process_chunk tail
134
- else
135
- @buffer << _chunk
136
- end
137
- end
138
-
139
- end
140
-
141
- end
142
- end