Пример #1
0
    def testunit_sendrecv_AFTER_close_RAISES_VsysException(self):
        self.backend.set('fake_request', 'will not be returned')

        vsys = mlab.VsysFrontend('mock_target', open_nonblock=False)
        vsys.open()
        vsys.close()
        self.assertRaises(mlab.VsysException, vsys.sendrecv, 'fake_request')
Пример #2
0
    def testunit_sendrecv_WHEN_send_empty_reply_RETURNS_empty_reply(self):
        vsys = mlab.VsysFrontend('mock_target', open_nonblock=False)
        vsys.open()
        returned_value = vsys.sendrecv('send_empty_reply')

        vsys.close()
        self.assertEqual(returned_value, '')
Пример #3
0
    def testunit_sendrecv_WHEN_shutdown_writer_RAISES_VsysException(self):
        vsys = mlab.VsysFrontend('mock_target', open_nonblock=False)
        vsys.open()

        self.assertRaises(mlab.VsysException, vsys.sendrecv, 'shutdown_writer',
                          1)
        vsys.close()
Пример #4
0
    def testunit_open_RAISES_OSError(self, mock_open):
        def side_effect(*unused_args):
            """Manages a two-step return value."""

            # Hi! welcome to an old version of the mock module. In this old version,
            # side_effect behavior is managed manually. For this test the second call
            # to os.open should raise an OSError. So, on the first call we reset the
            # side_effect reference to 'second_call' which raises the exception we
            # need the second time os.open is called.
            #
            # More recent versions of mock allow side_effect to be an array, and
            # automatically raises objects of type Exception.
            #
            # If mock is updated, this will keep working, but a better approach is:
            #     mock_open.side_effect = [3, OSError(-1, 'Forced OS error')]
            def second_call(*unused_args):
                """Raises OSError."""
                raise OSError(-1, 'Forced OS error')

            mock_open.side_effect = second_call
            return 3  # Any integer like a file descriptor from os.open.

        mock_open.side_effect = side_effect
        (fifo_in, fifo_out) = mlab.get_vsys_fifo_names('mock_target')
        expected_calls = [
            mock.call(fifo_in, os.O_WRONLY),
            mock.call(fifo_out, os.O_RDONLY)
        ]
        vsys = mlab.VsysFrontend('mock_target', open_nonblock=False)

        self.assertRaises(mlab.VsysOpenException, vsys.open)
        self.assertEqual(mock_open.mock_calls, expected_calls)
Пример #5
0
    def testunit_sendrecv_WHEN_request_take_too_long_RAISES_VsysException(
            self):
        vsys = mlab.VsysFrontend('mock_target', open_nonblock=False)
        vsys.open()

        self.assertRaises(mlab.VsysException, vsys.sendrecv, 'take_too_long',
                          1)
        vsys.close()
Пример #6
0
    def testunit_sendrecv_WHEN_read_fails_RAISES_VsysException(
            self, mock_read):
        mock_read.side_effect = OSError(-1, 'fake os error')
        self.backend.set('fake_request', 'expected_response')

        vsys = mlab.VsysFrontend('mock_target', open_nonblock=False)
        vsys.open()

        self.assertRaises(mlab.VsysException, vsys.sendrecv, 'fake_request', 1)
        vsys.close()
Пример #7
0
    def testunit_sendrecv_RETURNS_correctly(self):
        expected_response = '{"version": 1, "data": {"rss": 3000000}}'
        self.backend.set('fake_request', expected_response)

        vsys = mlab.VsysFrontend('mock_target', open_nonblock=False)
        vsys.open()
        received_result = vsys.sendrecv('fake_request')
        vsys.close()

        self.assertEqual(received_result, expected_response)
Пример #8
0
    def testunit_sendrecv_WHEN_recving_bad_extra_data_RETURNS_good_reply(self):
        expected_response = '{"version": 1, "data": {"rss": 3000000}}'
        self.backend.set('fake_request',
                         'bad-extra-data\n' + expected_response)

        vsys = mlab.VsysFrontend('mock_target', open_nonblock=False)
        vsys.open()
        received_result = vsys.sendrecv('fake_request')
        vsys.close()

        self.assertEqual(received_result, expected_response)
Пример #9
0
    def testunit_open_RAISES_OSError(self, mock_open):
        mock_open.side_effect = [3, OSError(-1, 'Forced OS error')]
        (fifo_in, fifo_out) = mlab.get_vsys_fifo_names('mock_target')
        expected_calls = [
            mock.call(fifo_in, os.O_WRONLY),
            mock.call(fifo_out, os.O_RDONLY)
        ]
        vsys = mlab.VsysFrontend('mock_target', open_nonblock=False)

        self.assertRaises(mlab.VsysOpenException, vsys.open)
        self.assertEqual(mock_open.mock_calls, expected_calls)
Пример #10
0
    def testunit_open_WHEN_no_reader_RAISES_VsysOpenException(self):
        vsys = mlab.VsysFrontend('mock_target')

        self.assertRaises(mlab.VsysOpenException, vsys.open)