コード例 #1
0
    def testReadMultipleLines(self, socketMock):
        self.connect(socketMock)
        self.socket.recv.return_value = b"A:B\r\nC\r\n"

        self.assertEqual(
            Message("A", "B"), self.connection.recv(Deadline(TEST_TIMEOUT))
        )
        self.socket.recv.reset_mock()
        self.assertEqual(Message("C", ""), self.connection.recv(Deadline(TEST_TIMEOUT)))
コード例 #2
0
    def testReadPartialLine(self, socketMock):
        self.connect(socketMock)
        self.socket.recv.side_effect = [b"A:", b"B\r\n"]

        self.assertEqual(
            Message("A", "B"), self.connection.recv(Deadline(TEST_TIMEOUT))
        )
コード例 #3
0
    def testReadAMessage(self, socketMock):
        self.connect(socketMock)
        self.socket.recv.return_value = b"A:B\r\n"

        self.assertEqual(
            Message("A", "B"), self.connection.recv(Deadline(TEST_TIMEOUT))
        )
        self.socket.close.assert_not_called()
コード例 #4
0
    def testSendRadioMsgFailsOnLogicalError(self, ClassMock):
        self.init(ClassMock)
        self.connection.recv.side_effect = [L_CMD_SUCCESS, S_CMD_ERROR]

        deadline: Deadline = MagicMock(Deadline)
        deadline.is_expired.side_effect = [False, True]
        deadline.subtimeout.return_value = Deadline(TEST_TIMEOUT)
        self.assertFalse(self.__send_radio_msg(S_CMD_HEX, deadline))

        self.connection.send.assert_called_once_with(S_CMD)
        self.assertEqual(2, self.connection.recv.call_count)
        self.connection.close.assert_not_called()
        deadline.remaining.assert_not_called()
コード例 #5
0
    def testSendRadioMsgShouldNotRetryOnErrorWhenConnectionIsNew(self, ClassMock):
        self.init(ClassMock)
        self.connection.recv.side_effect = [L_CMD_SUCCESS]
        self.connection.send.side_effect = [OSError]

        deadline = MagicMock(Deadline)
        deadline.is_expired.side_effect = [False, True]
        deadline.subtimeout.return_value = Deadline(TEST_TIMEOUT)

        self.assertFalse(self.__send_radio_msg(S_CMD_HEX, deadline))

        self.connection.send.assert_called_once_with(S_CMD)
        self.connection.recv.assert_called_once()
        self.connection.close.assert_called_once()
コード例 #6
0
    def testReadTimeout(self, socketMock):
        self.connect(socketMock)
        self.socket.recv.side_effect = [socket.timeout]

        self.assertIsNone(self.connection.recv(Deadline(TEST_TIMEOUT)))
        self.socket.close.assert_not_called()
コード例 #7
0
    def testReadAtConnectionClosing(self, socketMock):
        self.connect(socketMock)
        self.socket.recv.return_value = b""

        self.assertIsNone(self.connection.recv(Deadline(TEST_TIMEOUT)))
        self.socket.close.assert_called_once()
コード例 #8
0
 def testToStringForExpiredDeadline(self, timeMock):
     timeMock.side_effect = [0.0, 1.1]
     deadline = Deadline(ONE_TIMEOUT)
     self.assertEqual("Deadline one[0/1]", str(deadline))
コード例 #9
0
 def testSubtimeoutHandlingWhenLargerThanTimeout(self, timeMock):
     timeMock.side_effect = [0.0, 9.1, 9.2]
     deadline = Deadline(ROOT_TIMEOUT)
     subdeadline = deadline.subtimeout(ONE_TIMEOUT)
     self.assertAlmostEqual(0.8, subdeadline.remaining())
コード例 #10
0
 def testSubtimeoutHandling(self, timeMock):
     timeMock.side_effect = [0.0, 0.1, 0.2, 0.2, 0.3]
     deadline = Deadline(ROOT_TIMEOUT)
     subdeadline = deadline.subtimeout(ONE_TIMEOUT)
     self.assertEqual("root[9.8/10]:one[0.9/1]", subdeadline.fullname())
     self.assertAlmostEqual(0.8, subdeadline.remaining())
コード例 #11
0
 def testZeroDeadlineIsAlreadyExpired(self, timeMock):
     timeMock.return_value = 0.0
     deadline = Deadline(ZERO_TIMEOUT)
     self.assertEqual("zero[0/0]", deadline.fullname())
     self.assertTrue(deadline.is_expired())
コード例 #12
0
 def testDeadlineIsExpired(self, timeMock):
     timeMock.side_effect = [0, 0.4, 1.0, 1.000001]
     deadline = Deadline(ONE_TIMEOUT)
     self.assertFalse(deadline.is_expired())
     self.assertTrue(deadline.is_expired())
     self.assertTrue(deadline.is_expired())
コード例 #13
0
 def testDeadlineUpperBoundForRemainingTime(self, timeMock):
     timeMock.side_effect = [0, 0.4, 0.6]
     deadline = Deadline(ONE_TIMEOUT)
     self.assertAlmostEqual(0.5, deadline.remaining(upper_bound=0.50))
     self.assertAlmostEqual(0.4, deadline.remaining(upper_bound=0.50))