MCPcopy Index your code
hub / github.com/python/cpython / test_recv_send

Method test_recv_send

Lib/test/test_ssl.py:3839–3973  ·  view source on GitHub ↗

Test recv(), send() and friends.

(self)

Source from the content-addressed store, hash-verified

3837 sys.stdout.write(" client: connection closed.\n")
3838
3839 def test_recv_send(self):
3840 """Test recv(), send() and friends."""
3841 if support.verbose:
3842 sys.stdout.write("\n")
3843
3844 server = ThreadedEchoServer(CERTFILE,
3845 certreqs=ssl.CERT_NONE,
3846 ssl_version=ssl.PROTOCOL_TLS_SERVER,
3847 cacerts=CERTFILE,
3848 chatty=True,
3849 connectionchatty=False)
3850 with server:
3851 s = test_wrap_socket(socket.socket(),
3852 server_side=False,
3853 certfile=CERTFILE,
3854 ca_certs=CERTFILE,
3855 cert_reqs=ssl.CERT_NONE)
3856 s.connect((HOST, server.port))
3857 # helper methods for standardising recv* method signatures
3858 def _recv_into():
3859 b = bytearray(b"\0"*100)
3860 count = s.recv_into(b)
3861 return b[:count]
3862
3863 def _recvfrom_into():
3864 b = bytearray(b"\0"*100)
3865 count, addr = s.recvfrom_into(b)
3866 return b[:count]
3867
3868 # (name, method, expect success?, *args, return value func)
3869 send_methods = [
3870 ('send', s.send, True, [], len),
3871 ('sendto', s.sendto, False, ["some.address"], len),
3872 ('sendall', s.sendall, True, [], lambda x: None),
3873 ]
3874 # (name, method, whether to expect success, *args)
3875 recv_methods = [
3876 ('recv', s.recv, True, []),
3877 ('recvfrom', s.recvfrom, False, ["some.address"]),
3878 ('recv_into', _recv_into, True, []),
3879 ('recvfrom_into', _recvfrom_into, False, []),
3880 ]
3881 data_prefix = "PREFIX_"
3882
3883 for (meth_name, send_meth, expect_success, args,
3884 ret_val_meth) in send_methods:
3885 indata = (data_prefix + meth_name).encode('ascii')
3886 try:
3887 ret = send_meth(indata, *args)
3888 msg = "sending with {}".format(meth_name)
3889 self.assertEqual(ret, ret_val_meth(indata), msg=msg)
3890 outdata = s.read()
3891 if outdata != indata.lower():
3892 self.fail(
3893 "While sending with <<{name:s}>> bad data "
3894 "<<{outdata:r}>> ({nout:d}) received; "
3895 "expected <<{indata:r}>> ({nin:d})\n".format(
3896 name=meth_name, outdata=outdata[:20],

Callers

nothing calls this directly

Calls 15

ThreadedEchoServerClass · 0.85
test_wrap_socketFunction · 0.85
strFunction · 0.85
socketMethod · 0.80
writeMethod · 0.45
connectMethod · 0.45
encodeMethod · 0.45
formatMethod · 0.45
assertEqualMethod · 0.45
readMethod · 0.45
lowerMethod · 0.45
failMethod · 0.45

Tested by

no test coverage detected