# encoding: utf-8 $:.unshift "../lib" require 'th_mauve' require 'th_mauve_resolv' require 'mauve/udp_server' require 'mauve/server' class TcMauveUdpServer < Mauve::UnitTest # Note: this test fires up the UDP socket. It *will* fail if more # than one instance runs at the same time on the same machine. include Mauve def setup super Server.instance.packet_buffer.clear # blarg! @server = UDPServer.instance # blarg! end def test_listens update = generic_update() t = Thread.new do @server.__send__(:main_loop) end sleep(0.2) sender.send(update) Timeout.timeout(2) do t.join end assert_equal update, Proto::AlertUpdate.new.parse_from_string(Server.packet_pop[0]) end def test_closes update = generic_update() t = @server.run sleep(0.2) @server.stop sleep(0.2) sender.send(update) Timeout.timeout(2) do t.join end assert_nil Server.packet_pop end def sender Sender.new(["#{@server.ip}:#{@server.port}"]) end def generic_update update = Proto::AlertUpdate.new alert = Proto::Alert.new alert.id = "alertid" update.alert << alert update end end