diff options
Diffstat (limited to 'test/tc_mauve_udp_server.rb')
-rw-r--r-- | test/tc_mauve_udp_server.rb | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/test/tc_mauve_udp_server.rb b/test/tc_mauve_udp_server.rb new file mode 100644 index 0000000..9a82de8 --- /dev/null +++ b/test/tc_mauve_udp_server.rb @@ -0,0 +1,54 @@ +# 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 |