Exemplo n.º 1
0
    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')
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
 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