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

Method testSecondCmsgTruncInData

Lib/test/test_socket.py:4813–4847  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

4811 @requireAttrs(socket, "CMSG_SPACE", "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT",
4812 "IPV6_RECVTCLASS", "IPV6_TCLASS")
4813 def testSecondCmsgTruncInData(self):
4814 # Test truncation of the second of two control messages inside
4815 # its associated data.
4816 self.serv_sock.setsockopt(socket.IPPROTO_IPV6,
4817 socket.IPV6_RECVHOPLIMIT, 1)
4818 self.serv_sock.setsockopt(socket.IPPROTO_IPV6,
4819 socket.IPV6_RECVTCLASS, 1)
4820 self.misc_event.set()
4821 with downgrade_malformed_data_warning(): # TODO: gh-110012
4822 msg, ancdata, flags, addr = self.doRecvmsg(
4823 self.serv_sock, len(MSG),
4824 socket.CMSG_SPACE(SIZEOF_INT) + socket.CMSG_LEN(SIZEOF_INT) - 1)
4825
4826 self.assertEqual(msg, MSG)
4827 self.checkRecvmsgAddress(addr, self.cli_addr)
4828 self.checkFlags(flags, eor=True, checkset=socket.MSG_CTRUNC)
4829
4830 cmsg_types = {socket.IPV6_TCLASS, socket.IPV6_HOPLIMIT}
4831
4832 cmsg_level, cmsg_type, cmsg_data = ancdata.pop(0)
4833 self.assertEqual(cmsg_level, socket.IPPROTO_IPV6)
4834 cmsg_types.remove(cmsg_type)
4835 self.assertEqual(len(cmsg_data), SIZEOF_INT)
4836 a = array.array("i")
4837 a.frombytes(cmsg_data)
4838 self.assertGreaterEqual(a[0], 0)
4839 self.assertLessEqual(a[0], 255)
4840
4841 if ancdata:
4842 cmsg_level, cmsg_type, cmsg_data = ancdata.pop(0)
4843 self.assertEqual(cmsg_level, socket.IPPROTO_IPV6)
4844 cmsg_types.remove(cmsg_type)
4845 self.assertLess(len(cmsg_data), SIZEOF_INT)
4846
4847 self.assertEqual(ancdata, [])
4848
4849 @testSecondCmsgTruncInData.client_skip
4850 def _testSecondCmsgTruncInData(self):

Callers

nothing calls this directly

Calls 12

checkFlagsMethod · 0.80
assertGreaterEqualMethod · 0.80
assertLessEqualMethod · 0.80
setsockoptMethod · 0.45
setMethod · 0.45
doRecvmsgMethod · 0.45
assertEqualMethod · 0.45
checkRecvmsgAddressMethod · 0.45
popMethod · 0.45
removeMethod · 0.45
assertLessMethod · 0.45

Tested by

no test coverage detected