Sha256: 75713c3e25cbae0c48ea9fc73b897f3c0ded6a905e2a3b3fbb25cd942f7115e1

Contents?: true

Size: 1.86 KB

Versions: 43

Compression:

Stored size: 1.86 KB

Contents

#!/usr/bin/env ruby

$:.unshift(File.join(File.dirname(__FILE__), '..', '..'))

require 'test/unit'
require 'rex'

class Rex::Socket::Tcp::UnitTest < Test::Unit::TestCase

	def test_tcp
		port = 65434
		listener = Rex::Socket.create_tcp_server( 'LocalPort' => port )
		client = nil

		begin
			# Connect to the temp server
			assert_nothing_raised {
				client = Rex::Socket.create_tcp(
					'PeerHost' => '127.0.0.1',
					'PeerPort' => port)
			}

			assert_kind_of(Rex::Socket::Tcp, client, 'kindof?')
			assert_equal('127.0.0.1', client.peerhost, 'peerhost')
			assert_equal(port, client.peerport, 'peerport')

			# Accept the client connection
			server = listener.accept
			assert_kind_of(Socket, server, "valid server socket connection")

			# do all of the tests, once for each side
			{ 'c/s' => [client, server], 's/c' => [server, client] }.each_pair { |mode, sockets|
				a = sockets[0]
				b = sockets[1]

				string = "test\n"
				assert_equal(false, a.has_read_data?(1), "#{mode} : has_read_data?, no data")
				assert_equal(string.length, b.write(string), "#{mode} : write")
				assert_equal(true, a.has_read_data?(1), "#{mode} : has_read_data?, with data")
				assert_equal(string, a.recv(string.length), "#{mode} : recv")

				string = "string\rtest\nwith\x00null"
				assert_equal(string.length, a << string, "#{mode} : append")
				tmp = ''; tmp = b.>>
				assert_equal(string, tmp, "#{mode} : append (reverse)")

				string = "\x00foobar\x00"
				assert_equal(string.length, a.send(string, 0), "#{mode} : send")
				assert_equal(string, b.get(), "#{mode} : get")
			}

			assert_equal(true, client.shutdown(::Socket::SHUT_RD), 'client: shutdown read handle')
			assert_equal(true, client.shutdown(::Socket::SHUT_WR), 'client: shutdown write handle')
			assert_nothing_raised {
				client.close
				client = nil
			}
		ensure
			client.close if (client)
			listener.close
		end
	end

end

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
librex-0.0.65 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.63 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.54 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.53 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.52 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.51 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.50 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.49 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.48 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.47 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.46 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.44 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.43 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.42 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.41 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.40 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.39 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.38 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.37 lib/rex/socket/tcp.rb.ut.rb
librex-0.0.36 lib/rex/socket/tcp.rb.ut.rb