zold 0.13.16 → 0.13.17
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 +0 -1
- data/lib/zold/commands/node.rb +8 -5
- data/lib/zold/node/farm.rb +9 -10
- data/lib/zold/remotes.rb +1 -1
- data/lib/zold/version.rb +1 -1
- data/test/node/test_farm.rb +20 -0
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 7eec03fc76e3770883b2f0febeb6ff7d565cc0a0
         | 
| 4 | 
            +
              data.tar.gz: 121dd3d167f8a894c6c7a6a222f67bcb67356621
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 5a34855ba55d40556a011ab566962db6e072b6b97cf4eeef28491a9eb66d23db54fd64511e43ff69fec78324efcd75002dc6061ec5eb1c0773013eab2e26ea66
         | 
| 7 | 
            +
              data.tar.gz: d04f55a00d7578f0ba7dca6b7ed1c9a351c5da22a0376e44fce9363ddb39c2484ec8f2194c0f4a65df82b605882af91d9a41d64d3681ca55d50840f12e22cec8
         | 
    
        data/README.md
    CHANGED
    
    | @@ -11,7 +11,6 @@ | |
| 11 11 | 
             
            [](http://badge.fury.io/rb/zold)
         | 
| 12 12 | 
             
            [](https://codecov.io/github/zold-io/zold?branch=master)
         | 
| 13 13 |  | 
| 14 | 
            -
            [](https://gemnasium.com/zold-io/zold)
         | 
| 15 14 | 
             
            [](https://codeclimate.com/github/zold-io/zold/maintainability)
         | 
| 16 15 |  | 
| 17 16 | 
             
            **NOTICE**: It's an experiment and a very early draft! Please, feel free to
         | 
    
        data/lib/zold/commands/node.rb
    CHANGED
    
    | @@ -59,8 +59,8 @@ module Zold | |
| 59 59 | 
             
                    o.integer '--bind-port',
         | 
| 60 60 | 
             
                      "TCP port to listen on (default: #{Remotes::PORT})",
         | 
| 61 61 | 
             
                      default: Remotes::PORT
         | 
| 62 | 
            -
                    o.string '--host', | 
| 63 | 
            -
                       | 
| 62 | 
            +
                    o.string '--host',
         | 
| 63 | 
            +
                      'Host name (will attempt to auto-detect it, if not specified)'
         | 
| 64 64 | 
             
                    o.integer '--strength',
         | 
| 65 65 | 
             
                      "The strength of the score (default: #{Score::STRENGTH})",
         | 
| 66 66 | 
             
                      default: Score::STRENGTH
         | 
| @@ -125,6 +125,9 @@ module Zold | |
| 125 125 | 
             
                  @log.info("Home directory: #{Dir.pwd}")
         | 
| 126 126 | 
             
                  @log.info("Ruby version: #{RUBY_VERSION}")
         | 
| 127 127 | 
             
                  @log.info("Zold gem version: #{Zold::VERSION}")
         | 
| 128 | 
            +
                  host = opts[:host] || ip
         | 
| 129 | 
            +
                  address = "#{host}:#{opts[:port]}".downcase
         | 
| 130 | 
            +
                  @log.info("Node location: #{address}")
         | 
| 128 131 | 
             
                  Front.set(
         | 
| 129 132 | 
             
                    :server_settings,
         | 
| 130 133 | 
             
                    Logger: WebrickLog.new(@log),
         | 
| @@ -138,7 +141,6 @@ module Zold | |
| 138 141 | 
             
                  Front.set(:wallets, @wallets)
         | 
| 139 142 | 
             
                  Front.set(:remotes, @remotes)
         | 
| 140 143 | 
             
                  Front.set(:copies, @copies)
         | 
| 141 | 
            -
                  address = "#{opts[:host]}:#{opts[:port]}".downcase
         | 
| 142 144 | 
             
                  Front.set(:address, address)
         | 
| 143 145 | 
             
                  entrance = Entrance.new(@wallets, @remotes, @copies, address, log: @log)
         | 
| 144 146 | 
             
                  Front.set(:entrance, entrance)
         | 
| @@ -160,7 +162,7 @@ module Zold | |
| 160 162 | 
             
                  Front.set(:farm, farm)
         | 
| 161 163 | 
             
                  metronome = metronome(farm, entrance, opts)
         | 
| 162 164 | 
             
                  begin
         | 
| 163 | 
            -
                    @log.info("Starting up the web front at http://#{ | 
| 165 | 
            +
                    @log.info("Starting up the web front at http://#{host}:#{opts[:port]}...")
         | 
| 164 166 | 
             
                    Front.run!
         | 
| 165 167 | 
             
                  ensure
         | 
| 166 168 | 
             
                    farm.stop
         | 
| @@ -242,7 +244,8 @@ module Zold | |
| 242 244 | 
             
                  addr = Socket.ip_address_list.detect do |i|
         | 
| 243 245 | 
             
                    i.ipv4? && !i.ipv4_loopback? && !i.ipv4_multicast? && !i.ipv4_private?
         | 
| 244 246 | 
             
                  end
         | 
| 245 | 
            -
                   | 
| 247 | 
            +
                  raise 'Can\'t detect your IP address, you have to specify it in --host' if addr.nil?
         | 
| 248 | 
            +
                  addr.ip_address
         | 
| 246 249 | 
             
                end
         | 
| 247 250 |  | 
| 248 251 | 
             
                # Log facility for nohup
         | 
    
        data/lib/zold/node/farm.rb
    CHANGED
    
    | @@ -69,7 +69,7 @@ module Zold | |
| 69 69 | 
             
                      VerboseThread.new(@log).run do
         | 
| 70 70 | 
             
                        Thread.current.name = "farm-#{t}"
         | 
| 71 71 | 
             
                        loop do
         | 
| 72 | 
            -
                          if @scores.length <  | 
| 72 | 
            +
                          if @scores.length < threads
         | 
| 73 73 | 
             
                            @scores << Score.new(
         | 
| 74 74 | 
             
                              Time.now, host, port, @invoice,
         | 
| 75 75 | 
             
                              strength: strength
         | 
| @@ -79,22 +79,22 @@ module Zold | |
| 79 79 | 
             
                          next unless s.valid?
         | 
| 80 80 | 
             
                          next unless s.host == host
         | 
| 81 81 | 
             
                          next unless s.port == port
         | 
| 82 | 
            -
                          next  | 
| 83 | 
            -
                           | 
| 82 | 
            +
                          next unless s.strength >= strength
         | 
| 83 | 
            +
                          n = s.next
         | 
| 84 84 | 
             
                          @semaphore.synchronize do
         | 
| 85 | 
            -
                            save(s)
         | 
| 86 85 | 
             
                            before = @best.map(&:value).max
         | 
| 87 | 
            -
                             | 
| 86 | 
            +
                            save(n)
         | 
| 87 | 
            +
                            @best << n
         | 
| 88 88 | 
             
                            after = @best.map(&:value).max
         | 
| 89 | 
            -
                            @best | 
| 90 | 
            -
                            @log.debug("#{Thread.current.name}: best score is #{@best[0]}") if before != after
         | 
| 89 | 
            +
                            @best = @best.reject(&:expired?).sort_by(&:value).reverse.take(threads)
         | 
| 90 | 
            +
                            @log.debug("#{Thread.current.name}: best score is #{@best[0]}") if before != after && !after.zero?
         | 
| 91 91 | 
             
                          end
         | 
| 92 | 
            -
                          @scores <<  | 
| 92 | 
            +
                          @scores << n
         | 
| 93 93 | 
             
                        end
         | 
| 94 94 | 
             
                      end
         | 
| 95 95 | 
             
                    end
         | 
| 96 96 | 
             
                  end
         | 
| 97 | 
            -
                  @log.info("Farm started with #{threads} threads at #{host}:#{port}")
         | 
| 97 | 
            +
                  @log.info("Farm started with #{threads} threads at #{host}:#{port}, strength is #{strength}")
         | 
| 98 98 | 
             
                end
         | 
| 99 99 |  | 
| 100 100 | 
             
                def stop
         | 
| @@ -119,7 +119,6 @@ module Zold | |
| 119 119 | 
             
                    AtomicFile.new(@cache).read
         | 
| 120 120 | 
             
                      .split(/\n/)
         | 
| 121 121 | 
             
                      .map { |t| Score.parse(t) }
         | 
| 122 | 
            -
                      .reject(&:expired?)
         | 
| 123 122 | 
             
                      .select(&:valid?)
         | 
| 124 123 | 
             
                      .sort_by(&:value)
         | 
| 125 124 | 
             
                      .reverse
         | 
    
        data/lib/zold/remotes.rb
    CHANGED
    
    
    
        data/lib/zold/version.rb
    CHANGED
    
    
    
        data/test/node/test_farm.rb
    CHANGED
    
    | @@ -60,4 +60,24 @@ class FarmTest < Minitest::Test | |
| 60 60 | 
             
                  farm.stop
         | 
| 61 61 | 
             
                end
         | 
| 62 62 | 
             
              end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
              def test_drops_expired_scores_from_history
         | 
| 65 | 
            +
                Dir.mktmpdir 'test' do |dir|
         | 
| 66 | 
            +
                  cache = File.join(dir, 'cache')
         | 
| 67 | 
            +
                  score = Zold::Score.new(
         | 
| 68 | 
            +
                    Time.parse('2017-07-19T21:24:51Z'),
         | 
| 69 | 
            +
                    'some-host', 9999, 'NOPREFIX@ffffffffffffffff', ['13f7f01'],
         | 
| 70 | 
            +
                    strength: 6
         | 
| 71 | 
            +
                  )
         | 
| 72 | 
            +
                  File.write(cache, score.to_s)
         | 
| 73 | 
            +
                  farm = Zold::Farm.new('NOPREFIX@ffffffffffffffff', cache, log: test_log)
         | 
| 74 | 
            +
                  farm.start(score.host, score.port, threads: 1, strength: score.strength)
         | 
| 75 | 
            +
                  10.times do
         | 
| 76 | 
            +
                    break if farm.best[0].value.zero?
         | 
| 77 | 
            +
                    sleep(1)
         | 
| 78 | 
            +
                  end
         | 
| 79 | 
            +
                  assert_equal(0, farm.best[0].value)
         | 
| 80 | 
            +
                  farm.stop
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
              end
         | 
| 63 83 | 
             
            end
         | 
    
        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.13. | 
| 4 | 
            +
              version: 0.13.17
         | 
| 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-06- | 
| 11 | 
            +
            date: 2018-06-14 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: concurrent-ruby
         |