zold 0.16.10 → 0.16.11

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
  SHA256:
3
- metadata.gz: 5bdb355d25ef5197cfcc131d383d5391bec683efb8f5db52ba6b60d690bf4e3f
4
- data.tar.gz: dc2f83cf4bdbc787de4232aa56fb3570f721f887b93069b4fa766fc0eeee2597
3
+ metadata.gz: 7821595a3b9487ea3138bbee7e70a4f6b960004d7e91a08147f5760a3bd6125c
4
+ data.tar.gz: 37450f49b0f2d5e47ba9476ac83d14667eac4cf6b5b65fc10dd142fb8584b6ee
5
5
  SHA512:
6
- metadata.gz: de19e0642f74972e9a28f7506fea7397d51473d7bc308b0da64353e9177cea7c2f16a56f1f0ca537f15f90d8001b6625c9762b9f1294eda20888539dc018c890
7
- data.tar.gz: 19275bbdfe0cc8baea050d14656edcacad9b1d87846f4ddd9752f85517c20009515079c46050727bbb843b8448a5bd5feebcf8406584536720f9323c565b5011
6
+ metadata.gz: 3d09fdf2081fb1494a1e06b1b28ba8644b5cf4bf7197a6501811dd1f918ca5c7ac5979d1abc6f3b33fd80043922875a87ffe49f51a96c289ed27a2619aef8a6c
7
+ data.tar.gz: 53b7bb8a8ded97904c9182f4bcc073b85d22b4b3b1cf1b878111a26c07d5c674880d8890e32bc398a1fb4262471b313d1f6b3ce9b644035d0f65a599b5641a3e
@@ -23,6 +23,7 @@
23
23
  require 'open3'
24
24
  require 'backtrace'
25
25
  require 'zold/score'
26
+ require 'shellwords'
26
27
  require_relative '../log'
27
28
  require_relative '../age'
28
29
 
@@ -50,7 +51,17 @@ module Zold
50
51
  start = Time.now
51
52
  bin = File.expand_path(File.join(File.dirname(__FILE__), '../../../bin/zold'))
52
53
  raise "Zold binary not found at #{bin}" unless File.exist?(bin)
53
- Open3.popen2e("ruby #{bin} --skip-upgrades --low-priority next \"#{score}\"") do |stdin, stdout, thr|
54
+ cmd = [
55
+ 'ruby',
56
+ Shellwords.escape(bin),
57
+ '--skip-upgrades',
58
+ Shellwords.escape("--info-thread=#{Thread.current.name}"),
59
+ Shellwords.escape("--info-start=#{Time.now.utc.iso8601}"),
60
+ '--low-priority',
61
+ 'next',
62
+ Shellwords.escape(score)
63
+ ].join(' ')
64
+ Open3.popen2e(cmd) do |stdin, stdout, thr|
54
65
  Thread.current.thread_variable_set(:pid, thr.pid.to_s)
55
66
  @log.debug("Scoring started in proc ##{thr.pid} \
56
67
  for #{score.value}/#{score.strength} at #{score.host}:#{score.port}")
@@ -26,9 +26,6 @@ require 'eventmachine'
26
26
  require 'thin'
27
27
  require 'json'
28
28
  require 'sinatra/base'
29
- require 'get_process_mem'
30
- require 'diffy'
31
- require 'usagewatch_ext'
32
29
  require 'concurrent'
33
30
  require 'backtrace'
34
31
  require 'zache'
@@ -188,10 +185,19 @@ in #{Age.new(@start, limit: 1)}")
188
185
  protocol: settings.protocol,
189
186
  score: score.to_h,
190
187
  pid: Process.pid,
191
- cpus: settings.zache.get(:cpus) { Concurrent.processor_count },
192
- memory: GetProcessMem.new.bytes.to_i,
188
+ processes: processes_count,
189
+ cpus: settings.zache.get(:cpus) do
190
+ Concurrent.processor_count
191
+ end,
192
+ memory: settings.zache.get(:load, lifetime: 5 * 60) do
193
+ require 'get_process_mem'
194
+ GetProcessMem.new.bytes.to_i
195
+ end,
193
196
  platform: RUBY_PLATFORM,
194
- load: settings.zache.get(:load, lifetime: 5 * 60) { Usagewatch.uw_load.to_f },
197
+ load: settings.zache.get(:load, lifetime: 5 * 60) do
198
+ require 'usagewatch_ext'
199
+ Usagewatch.uw_load.to_f
200
+ end,
195
201
  threads: "#{Thread.list.select { |t| t.status == 'run' }.count}/#{Thread.list.count}",
196
202
  wallets: total_wallets,
197
203
  remotes: all_remotes.count,
@@ -397,6 +403,11 @@ in #{Age.new(@start, limit: 1)}")
397
403
  ].flatten.join("\n\n")
398
404
  end
399
405
 
406
+ get '/ps' do
407
+ content_type('text/plain')
408
+ `ps ax`
409
+ end
410
+
400
411
  not_found do
401
412
  status(404)
402
413
  content_type('text/plain')
@@ -442,6 +453,12 @@ in #{Age.new(@start, limit: 1)}")
442
453
  end
443
454
  end
444
455
 
456
+ def processes_count
457
+ settings.zache.get(:processes, lifetime: settings.network == Wallet::MAIN_NETWORK ? 60 : 0) do
458
+ `ps ax | grep zold | wc -l`
459
+ end
460
+ end
461
+
445
462
  def score
446
463
  settings.zache.get(:score, lifetime: settings.network == Wallet::MAIN_NETWORK ? 60 : 0) do
447
464
  b = settings.farm.best
data/lib/zold/version.rb CHANGED
@@ -25,6 +25,6 @@
25
25
  # Copyright:: Copyright (c) 2018 Yegor Bugayenko
26
26
  # License:: MIT
27
27
  module Zold
28
- VERSION = '0.16.10'
28
+ VERSION = '0.16.11'
29
29
  PROTOCOL = 2
30
30
  end
@@ -44,6 +44,12 @@ class TestClean < Minitest::Test
44
44
  end
45
45
  end
46
46
 
47
+ def test_cleans_empty_wallets
48
+ FakeHome.new(log: test_log).run do |home|
49
+ Zold::Clean.new(wallets: home.wallets, copies: File.join(home.dir, 'c'), log: test_log).run(['clean'])
50
+ end
51
+ end
52
+
47
53
  def test_cleans_copies_in_threads
48
54
  FakeHome.new(log: test_log).run do |home|
49
55
  wallet = home.create_wallet
@@ -67,7 +67,8 @@ class FrontTest < Minitest::Test
67
67
  '/metronome',
68
68
  '/score',
69
69
  '/trace',
70
- '/threads'
70
+ '/threads',
71
+ '/ps'
71
72
  ],
72
73
  '404' => [
73
74
  '/this-is-absent',
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zold
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.10
4
+ version: 0.16.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko