def test_init_simple(self, which): """ Test class build """ connection_mock = mock.MagicMock() connection_mock.get_connection_string.return_value = 'test_conn' pgbasebackup = command_wrappers.PgBaseBackup( destination='/fake/path', command='/usr/bin/pg_basebackup', connection=connection_mock, version='9.3', app_name='fake_app_name') assert pgbasebackup.args == [ "--dbname=test_conn", "-v", "--no-password", '--pgdata=/fake/path'] assert pgbasebackup.cmd == '/usr/bin/pg_basebackup' assert pgbasebackup.check is True assert pgbasebackup.close_fds is True assert pgbasebackup.allowed_retval == (0,) assert pgbasebackup.err_handler assert pgbasebackup.out_handler connection_mock.conn_parameters = {'host': 'fake host', 'port': 'fake_port', 'user': '******'} pgbasebackup = command_wrappers.PgBaseBackup( destination='/fake/target', command='/usr/bin/pg_basebackup', connection=connection_mock, version='9.2', app_name='fake_app_name' ) assert pgbasebackup.args == [ "--host=fake host", "--port=fake_port", "--username=fake_user", "-v", "--no-password", '--pgdata=/fake/target'] which.return_value = None which.side_effect = None with pytest.raises(CommandFailedException): # Expect an exception for pg_basebackup not in path command_wrappers.PgBaseBackup(destination='/fake/target', connection=connection_mock, command='fake/path', version='9.3', app_name='fake_app_name')
def test_simple_invocation(self, popen, pipe_processor_loop, caplog): ret = 0 out = 'out' err = 'err' pipe = _mock_pipe(popen, pipe_processor_loop, ret, out, err) connection_mock = mock.MagicMock() connection_mock.get_connection_string.return_value = 'fake_connstring' cmd = command_wrappers.PgBaseBackup(destination='/fake/target', connection=connection_mock, version='9.4', app_name='fake_app_name') result = cmd.execute() popen.assert_called_with( [ 'pg_basebackup', '--dbname=fake_connstring', '-v', '--no-password', '--pgdata=/fake/target' ], close_fds=True, env=None, preexec_fn=mock.ANY, shell=False, stdout=mock.ANY, stderr=mock.ANY, stdin=mock.ANY, ) assert not pipe.stdin.write.called pipe.stdin.close.assert_called_once_with() assert result == ret assert cmd.ret == ret assert cmd.out is None assert cmd.err is None assert ('PgBaseBackup', INFO, out) in caplog.record_tuples assert ('PgBaseBackup', WARNING, err) in caplog.record_tuples
def test_init_args(self): """ Test class build """ connection_mock = mock.MagicMock() connection_mock.get_connection_string.return_value = 'test_connstring' pg_basebackup = command_wrappers.PgBaseBackup( command='/path/to/pg_basebackup', connection=connection_mock, version='9.4', destination='/dest/dir', args=['a', 'b']) assert pg_basebackup.args == [ "--dbname=test_connstring", "-v", "--no-password", "--pgdata=/dest/dir", "a", "b", ] assert pg_basebackup.cmd == '/path/to/pg_basebackup' assert pg_basebackup.check is True assert pg_basebackup.close_fds is True assert pg_basebackup.allowed_retval == (0, ) assert pg_basebackup.err_handler assert pg_basebackup.out_handler
def test_pg_basebackup10_no_wals(self): """ Test that --no-slot and --wal-method options are correctly passed if pg_basebackup client version is >= 10 """ connection_mock = mock.MagicMock() connection_mock.get_connection_string.return_value = 'test_connstring' pg_basebackup = command_wrappers.PgBaseBackup( command='/path/to/pg_basebackup', connection=connection_mock, version='10', destination='/dest/dir', args=['a', 'b']) assert pg_basebackup.args == [ "--dbname=test_connstring", "-v", "--no-password", "--pgdata=/dest/dir", "--no-slot", "--wal-method=none", "a", "b", ] assert pg_basebackup.cmd == '/path/to/pg_basebackup' assert pg_basebackup.check is True assert pg_basebackup.close_fds is True assert pg_basebackup.allowed_retval == (0,) assert pg_basebackup.err_handler assert pg_basebackup.out_handler