emitter emits Structs faster by avoiding lookups during iteration
[lwes-ruby.git] / test / test_helper.rb
blobe2d671cfee1f7bb5610b00b80f9b5e852b7d953d
1 require 'pp'
2 require 'tempfile'
3 require 'test/unit'
4 require 'lwes'
6 unless defined?(LISTENER_DEFAULTS)
7   BEFORE_DELAY = ENV['BEFORE_DELAY'] ? ENV['BEFORE_DELAY'].to_f : 0.5
8   AFTER_DELAY = ENV['AFTER_DELAY'] ? ENV['AFTER_DELAY'].to_f : 0.5
9   LISTENER_DEFAULTS = {
10     :address => ENV["LWES_TEST_ADDRESS"] || "127.0.0.1",
11     :iface => ENV["LWES_TEST_IFACE"] || "0.0.0.0",
12     :port => ENV["LWES_TEST_PORT"] ? ENV["LWES_TEST_PORT"].to_i : 12345,
13     :ttl => 60, # nil for no ttl)
14   }
15 end
17 private_bin = "ext/lwes/.inst/bin"
18 if test ?d, private_bin
19   ENV['PATH'] = "#{private_bin}:#{ENV['PATH']}"
20 end
22 def lwes_listener(&block)
23   cmd = "lwes-event-printing-listener" \
24         " -m #{@options[:address]}" \
25         " -i #{@options[:iface]}" \
26         " -p #{@options[:port]}"
27   out = Tempfile.new("out")
28   err = Tempfile.new("err")
29   $stdout.flush
30   $stderr.flush
31   pid = fork do
32     $stdout.reopen(out.path)
33     $stderr.reopen(err.path)
34     exec cmd
35   end
36   begin
37     # since everything executes asynchronously and our messaging,
38     # we need to ensure our listener is ready, then ensure our
39     # listener has printed something...
40     # XXX racy
41     sleep BEFORE_DELAY
42     yield
43     sleep AFTER_DELAY
44   ensure
45     Process.kill(:TERM, pid)
46     Process.waitpid2(pid)
47     assert_equal 0, err.size
48   end
49   out
50 end