Sha256: 66f71608d0ab838331be5745b1b7ed2d662fda45f4a55bae07bd0c890842fb26

Contents?: true

Size: 984 Bytes

Versions: 4

Compression:

Stored size: 984 Bytes

Contents

require "logstash/devutils/rspec/spec_helper"
require "socket"

class StatsdServer

  attr_reader :received, :port

  def initialize
    @sync_lock = Mutex.new
    @terminated = false
    @received   = []
  end

  def register(port)
    @port   = port
    @socket = UDPSocket.new
    @socket.bind("127.0.0.1", port)
  end

  def run(port)
    register(port)
    Thread.new do
      while(!closed?)
        metric, _ = @socket.recvfrom(100)
        append(metric)
      end
    end
    self
  end

  def append(metric)
    @sync_lock.synchronize do
      @received << metric
    end
  end

  def close
    @sync_lock.synchronize do
      @terminated = true
    end
  end

  def closed?
    @terminated == true
  end

end

module StatdHelpers

  def random_port
    rand(2000..10000)
  end

end

RSpec.configure do |c|

  c.include StatdHelpers

  c.before(:all) do
    srand(c.seed)
    @server = StatsdServer.new.run(random_port)
  end

  c.after(:all) do
    @server.close
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
logstash-output-statsd-1.1.1 spec/spec_helper.rb
logstash-output-statsd-2.0.1 spec/spec_helper.rb
logstash-output-statsd-2.0.0 spec/spec_helper.rb
logstash-output-statsd-1.1.0 spec/spec_helper.rb