Sha256: 7975b09c0de84a83c2c8e8a23c28c1660fa2adc4468f492b07f57832d2cfe901

Contents?: true

Size: 1008 Bytes

Versions: 5

Compression:

Stored size: 1008 Bytes

Contents

# -*- encoding: binary -*-
require 'test/unit'
require 'raindrops'
require 'socket'
require 'benchmark'
$stderr.sync = $stdout.sync = true

class TestLinuxAllTcpListenStatsLeak < Test::Unit::TestCase

  TEST_ADDR = ENV['UNICORN_TEST_ADDR'] || '127.0.0.1'


  def rss_kb
    File.readlines("/proc/#$$/status").grep(/VmRSS:/)[0].split(/\s+/)[1].to_i
  end
  def test_leak
    s = TCPServer.new(TEST_ADDR, 0)
    start_kb = rss_kb
    p [ :start_kb, start_kb ]
    assert_nothing_raised do
      p(Benchmark.measure {
        1000.times { Raindrops::Linux.all_tcp_listener_stats }
      })
    end
    cur_kb = rss_kb
    p [ :cur_kb, cur_kb ]
    now = Time.now.to_i
    fin = now + 60
    assert_nothing_raised do
      1000000000.times { |i|
        if (i % 1024) == 0
          now = Time.now.to_i
          break if now > fin
        end
        Raindrops::Linux.all_tcp_listener_stats
      }
    end
    cur_kb = rss_kb
    p [ :cur_kb, cur_kb ]
  ensure
    s.close
  end
end if ENV["STRESS"].to_i != 0

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
raindrops-maintained-0.21.0 test/test_linux_all_tcp_listen_stats_leak.rb
raindrops-0.20.1 test/test_linux_all_tcp_listen_stats_leak.rb
raindrops-0.20.0 test/test_linux_all_tcp_listen_stats_leak.rb
raindrops-0.19.2 test/test_linux_all_tcp_listen_stats_leak.rb
raindrops-0.19.1 test/test_linux_all_tcp_listen_stats_leak.rb