zold 0.14.40 → 0.14.41

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
  SHA1:
3
- metadata.gz: d7b45f4c26031db16e0648325a3bb697fd815f30
4
- data.tar.gz: 4ef739093a92027005789d04be4b70e2607eed47
3
+ metadata.gz: 6b4683993fc4c2115b2cf6cf69ea4bc157eb05c2
4
+ data.tar.gz: 83a3040d404d3b71c2af331bf4085950bfa17fd3
5
5
  SHA512:
6
- metadata.gz: aee52e4cd446e7c235f3edf8fbd4a0116772c02e0983e33f010424f286daa7fe6cfeae243d7d7d8cbef471c7a734bfb58464e9dc1a1a1d60196279885e891056
7
- data.tar.gz: ad64f721708ac64e46ab64c3e3276cce4e429f6d98cf52b6d9d213f30f916060af9af49f85ffb000ec8c91797c34d731f4e78d8f29c23461c2ae7ba102ed3b6d
6
+ metadata.gz: d28d9c5c4170478c60793e1f7bcab3a50af9cc5fd06b33f78500bd0c8c862010c738a2ca2c00bcf42a20a35512a8955f0e99c8ecb6b55cc6d2016f091ee5997b
7
+ data.tar.gz: d078e2ec1833d55e2087926e5eac1ac50fc2c199e93f8326a3e8b410f1ba969381d89416d5ca2b09cfd46d2a99ffe527a628e1aa0e1a985aa0702ffb8cba3de1
data/bin/zold CHANGED
@@ -31,8 +31,6 @@ end
31
31
 
32
32
  require 'slop'
33
33
  require 'rainbow'
34
- require 'cachy'
35
- require 'moneta'
36
34
  require_relative '../lib/zold'
37
35
  require_relative '../lib/zold/version'
38
36
  require_relative '../lib/zold/wallet'
@@ -49,8 +47,6 @@ require_relative '../lib/zold/version_file'
49
47
 
50
48
  Thread.current.name = 'main'
51
49
 
52
- Cachy.cache_store = Moneta.new(:Memory)
53
-
54
50
  Encoding.default_external = Encoding::UTF_8
55
51
  Encoding.default_internal = Encoding::UTF_8
56
52
 
@@ -127,6 +127,9 @@ module Zold
127
127
  'Maximum amount of nohup re-starts (-1 by default, which means forever)',
128
128
  require: true,
129
129
  default: -1
130
+ o.string '--home',
131
+ "Home directory (default: #{Dir.pwd})",
132
+ default: Dir.pwd
130
133
  o.bool '--no-metronome',
131
134
  'Don\'t run the metronome',
132
135
  required: true,
@@ -156,9 +159,9 @@ module Zold
156
159
  Front.set(:protocol, Zold::PROTOCOL)
157
160
  Front.set(:logging, @log.debug?)
158
161
  Front.set(:halt, opts['halt-code'])
159
- Front.set(:home, Dir.pwd)
162
+ Front.set(:home, opts['home'])
160
163
  @log.info("Time: #{Time.now.utc.iso8601}")
161
- @log.info("Home directory: #{Dir.pwd}")
164
+ @log.info("Home directory: #{opts['home']}")
162
165
  @log.info("Ruby version: #{RUBY_VERSION}")
163
166
  @log.info("Zold gem version: #{Zold::VERSION}")
164
167
  @log.info("Zold protocol version: #{Zold::PROTOCOL}")
@@ -189,7 +192,7 @@ module Zold
189
192
  Front.set(:remotes, @remotes)
190
193
  Front.set(:copies, @copies)
191
194
  Front.set(:address, address)
192
- Front.set(:root, Dir.pwd)
195
+ Front.set(:root, opts['home'])
193
196
  Front.set(:dump_errors, opts['dump-errors'])
194
197
  Front.set(:port, opts['bind-port'])
195
198
  Front.set(:reboot, !opts['never-reboot'])
@@ -215,21 +218,21 @@ module Zold
215
218
  @remotes, @copies, address,
216
219
  log: @log, network: opts['network']
217
220
  ),
218
- File.join(Dir.pwd, '.zoldata/entrance'),
221
+ File.join(opts['home'], '.zoldata/entrance'),
219
222
  log: @log
220
223
  ),
221
224
  @wallets, @remotes, address,
222
225
  log: @log,
223
226
  ignore_score_weakeness: opts['ignore-score-weakness']
224
227
  ),
225
- File.join(Dir.pwd, '.zoldata/entrance'), log: @log
228
+ File.join(opts['home'], '.zoldata/entrance'), log: @log
226
229
  ),
227
230
  @wallets
228
231
  ),
229
232
  network: opts['network']
230
233
  ).start do |entrance|
231
234
  Front.set(:entrance, entrance)
232
- Farm.new(invoice, File.join(Dir.pwd, 'farm'), log: @log)
235
+ Farm.new(invoice, File.join(opts['home'], 'farm'), log: @log)
233
236
  .start(host, opts[:port], threads: opts[:threads], strength: opts[:strength]) do |farm|
234
237
  Front.set(:farm, farm)
235
238
  metronome(farm, opts).start do |metronome|
@@ -38,10 +38,6 @@ module Zold
38
38
  # Queue length
39
39
  MAX_QUEUE = Concurrent.processor_count * 64
40
40
 
41
- # Max items in the queue. If there will be more, push() requests
42
- # will be rejected.
43
- MAX_QUEUE = 128
44
-
45
41
  def initialize(entrance, dir, log: Log::Quiet.new)
46
42
  raise 'Entrance can\'t be nil' if entrance.nil?
47
43
  @entrance = entrance
@@ -26,6 +26,7 @@ require 'json'
26
26
  require 'sinatra/base'
27
27
  require 'webrick'
28
28
  require 'cachy'
29
+ require 'moneta'
29
30
  require 'get_process_mem'
30
31
  require 'diffy'
31
32
  require 'usagewatch_ext'
@@ -48,6 +49,7 @@ module Zold
48
49
  class Front < Sinatra::Base
49
50
  configure do
50
51
  Thread.current.name = 'sinatra'
52
+ Cachy.cache_store = Moneta.new(:Memory)
51
53
  set :bind, '0.0.0.0'
52
54
  set :suppress_messages, true
53
55
  set :start, Time.now
@@ -25,6 +25,6 @@
25
25
  # Copyright:: Copyright (c) 2018 Yegor Bugayenko
26
26
  # License:: MIT
27
27
  module Zold
28
- VERSION = '0.14.40'
28
+ VERSION = '0.14.41'
29
29
  PROTOCOL = 2
30
30
  end
@@ -22,6 +22,7 @@
22
22
 
23
23
  require 'tmpdir'
24
24
  require 'webmock/minitest'
25
+ require 'random-port'
25
26
  require_relative '../fake_home'
26
27
  require_relative '../../lib/zold/log'
27
28
  require_relative '../../lib/zold/http'
@@ -33,27 +34,21 @@ require_relative '../../lib/zold/node/front'
33
34
  # Copyright:: Copyright (c) 2018 Yegor Bugayenko
34
35
  # License:: MIT
35
36
  class FakeNode
36
- # rubocop:disable Style/ClassVars
37
- @@ports = Set.new
38
- # rubocop:enable Style/ClassVars
39
-
40
37
  def initialize(log: Zold::Log::Quiet.new)
41
38
  @log = log
42
39
  end
43
40
 
44
41
  def run(args = ['--standalone'])
45
42
  WebMock.allow_net_connect!
46
- start = Dir.pwd
47
- begin
48
- FakeHome.new.run do |home|
49
- port = FakeNode.random_port
43
+ FakeHome.new.run do |home|
44
+ RandomPort::Pool::SINGLETON.acquire do |port|
50
45
  node = Thread.new do
51
46
  Zold::VerboseThread.new(@log).run do
52
47
  Thread.current.abort_on_exception = true
53
- Dir.chdir(home.dir)
54
48
  require_relative '../../lib/zold/commands/node'
55
49
  Zold::Node.new(wallets: home.wallets, remotes: home.remotes, copies: home.copies.root, log: @log).run(
56
50
  [
51
+ '--home', home.dir,
57
52
  '--network=test',
58
53
  '--port', port.to_s,
59
54
  '--host=localhost',
@@ -82,19 +77,6 @@ class FakeNode
82
77
  node.join
83
78
  end
84
79
  end
85
- ensure
86
- Dir.chdir(start)
87
- end
88
- end
89
-
90
- def self.random_port
91
- loop do
92
- server = TCPServer.new('127.0.0.1', 0)
93
- port = server.addr[1]
94
- server.close
95
- next if @@ports.include?(port)
96
- @@ports << port
97
- return port
98
80
  end
99
81
  end
100
82
  end
@@ -24,7 +24,6 @@ gem 'openssl'
24
24
  require 'openssl'
25
25
  require 'minitest/autorun'
26
26
  require 'concurrent'
27
- require 'cachy'
28
27
  require 'moneta'
29
28
 
30
29
  STDOUT.sync = true
@@ -38,8 +37,6 @@ if ENV['CI'] == 'true'
38
37
  SimpleCov.formatter = SimpleCov::Formatter::Codecov
39
38
  end
40
39
 
41
- Cachy.cache_store = Moneta.new(:Memory)
42
-
43
40
  module Minitest
44
41
  class Test
45
42
  def assert_wait(max: 30)
@@ -77,6 +77,7 @@ and suggests a different architecture for digital wallet maintenance.'
77
77
  s.add_runtime_dependency 'xcop', '~>0.5'
78
78
  s.add_development_dependency 'codecov', '0.1.10'
79
79
  s.add_development_dependency 'minitest', '5.11.3'
80
+ s.add_development_dependency 'random-port', '~>0.1'
80
81
  s.add_development_dependency 'rdoc', '4.2.0'
81
82
  s.add_development_dependency 'rspec-rails', '3.1.0'
82
83
  s.add_development_dependency 'webmock', '3.4.2'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zold
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.40
4
+ version: 0.14.41
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-03 00:00:00.000000000 Z
11
+ date: 2018-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cachy
@@ -332,6 +332,20 @@ dependencies:
332
332
  - - '='
333
333
  - !ruby/object:Gem::Version
334
334
  version: 5.11.3
335
+ - !ruby/object:Gem::Dependency
336
+ name: random-port
337
+ requirement: !ruby/object:Gem::Requirement
338
+ requirements:
339
+ - - "~>"
340
+ - !ruby/object:Gem::Version
341
+ version: '0.1'
342
+ type: :development
343
+ prerelease: false
344
+ version_requirements: !ruby/object:Gem::Requirement
345
+ requirements:
346
+ - - "~>"
347
+ - !ruby/object:Gem::Version
348
+ version: '0.1'
335
349
  - !ruby/object:Gem::Dependency
336
350
  name: rdoc
337
351
  requirement: !ruby/object:Gem::Requirement