def test_xlogdb(self, lock_file_mock, os_mock, tmpdir): """ Testing the normal execution of xlog-db operations. :param lock_file_mock: mock for LockFile object :param os_mock: mock for os module :param tmpdir: temporary directory unique to the test invocation """ # unpatch os.path os_mock.path = os.path # Setup temp dir and server server = Server(self.build_config(tmpdir)) # Test the execution of the fsync on xlogdb file with server.xlogdb('w') as fxlogdb: fxlogdb.write("00000000000000000000") # Check for calls on fsync method. If the call have been issued # the "exit" method of the contextmanager have been executed assert os_mock.fsync.called # Check for enter and exit calls on mocked LockFile lock_file_mock.return_value.__enter__.assert_called_once_with() lock_file_mock.return_value.__exit__.assert_called_once_with( None, None, None) os_mock.fsync.reset_mock() with server.xlogdb(): # nothing to do here. pass # Check for calls on fsync method. # If the file is readonly exit method of the context manager must # skip calls on fsync method assert not os_mock.fsync.called
def test_xlogdb_with_exception(self, os_mock, tmpdir): """ Testing the execution of xlog-db operations with an Exception :param os_mock: mock for os module :param tmpdir: temporary directory unique to the test invocation """ # unpatch os.path os_mock.path = os.path # Setup temp dir and server server = Server(self.build_config(tmpdir)) # Test the execution of the fsync on xlogdb file forcing an exception with pytest.raises(ExceptionTest): with server.xlogdb('w') as fxlogdb: fxlogdb.write("00000000000000000000") raise ExceptionTest() # Check call on fsync method. If the call have been issued, # the "exit" section of the contextmanager have been executed assert os_mock.fsync.called