Sha256: 9ea6d642755aa4fd43102bc94de69f58f7d4de842ee2236d0daaf05d061bd845

Contents?: true

Size: 1.57 KB

Versions: 5

Compression:

Stored size: 1.57 KB

Contents

require 'mt-libuv'
require 'thread'


describe MTLibuv::UDP do
	before :each do
		@log = []
		@general_failure = []

		@reactor = MTLibuv::Reactor.new
		@server = @reactor.udp
		@client = @reactor.udp
		@timeout = @reactor.timer do
			@reactor.stop
			@general_failure << "test timed out"
		end
		@timeout.start(5000)

		@reactor.notifier do |error, context|
			begin
				@general_failure << "Log called: #{context}\n#{error.message}\n#{error.backtrace.join("\n") if error.backtrace}\n"
			rescue Exception => e
				@general_failure << "error in logger #{e.inspect}"
			end
		end

		@reactor.all(@server, @client, @timeout).catch do |reason|
			@general_failure << reason.inspect
		end
	end
	
	describe 'basic client server' do
		it "should send a ping and return a pong", :network => true do
			@reactor.run { |reactor|
				@server.bind('127.0.0.1', 34567)
				@server.progress do |data, ip, port, server|
					@log << data
					server.send(ip, port, 'pong')
				end
				@server.start_read

				# catch errors
				@server.catch do |reason|
					@general_failure << reason.inspect
				end


				# connect client to server
				@client.bind('127.0.0.1', 34568)
				@client.progress do |data, ip, port, client|
					@log << data
					client.close
				end
				@client.start_read
				@client.send('127.0.0.1', 34567, 'ping')

				# catch errors
				@client.catch do |reason|
					@general_failure << reason.inspect
				end

				# close the handle
				@client.finally do
					@server.close
					@reactor.stop
				end
			}

			expect(@log).to eq(['ping', 'pong'])
			expect(@general_failure).to eq([])
		end
	end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
mt-libuv-4.1.04 spec/udp_spec.rb
mt-libuv-4.1.03 spec/udp_spec.rb
mt-libuv-4.1.02 spec/udp_spec.rb
mt-libuv-4.1.01 spec/udp_spec.rb
mt-libuv-4.1.0 spec/udp_spec.rb