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')
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, '')
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()
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)
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()
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()
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)
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)
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)
def testunit_open_WHEN_no_reader_RAISES_VsysOpenException(self): vsys = mlab.VsysFrontend('mock_target') self.assertRaises(mlab.VsysOpenException, vsys.open)