Ejemplo n.º 1
0
    def test_patroni_main(self, mock_machines):
        with patch('subprocess.call', Mock(return_value=1)):
            sys.argv = ['patroni.py', 'postgres0.yml']

            mock_machines.__get__ = Mock(return_value=['http://remotehost:2379'])
            with patch.object(Patroni, 'run', Mock(side_effect=SleepException)):
                self.assertRaises(SleepException, _main)
            with patch.object(Patroni, 'run', Mock(side_effect=KeyboardInterrupt())):
                _main()
Ejemplo n.º 2
0
    def test_patroni_main(self, mock_machines):
        with patch('subprocess.call', Mock(return_value=1)):
            sys.argv = ['patroni.py', 'postgres0.yml']

            mock_machines.__get__ = Mock(return_value=['http://remotehost:2379'])
            with patch.object(Patroni, 'run', Mock(side_effect=SleepException)):
                self.assertRaises(SleepException, _main)
            with patch.object(Patroni, 'run', Mock(side_effect=KeyboardInterrupt())):
                with patch('patroni.ha.Ha.is_paused', Mock(return_value=True)):
                    _main()
Ejemplo n.º 3
0
    def test_patroni_main(self, mock_popen, mock_getpid):
        mock_getpid.return_value = 2
        _main()

        with patch('sys.frozen', Mock(return_value=True),
                   create=True), patch('os.setsid', Mock()):
            sys.argv = [
                '/patroni', 'pg_ctl_start', 'postgres', '-D', '/data',
                '--max_connections=100'
            ]
            _main()

        mock_getpid.return_value = 1

        def mock_signal(signo, handler):
            handler(signo, None)

        with patch('signal.signal', mock_signal):
            with patch('os.waitpid', Mock(side_effect=[(1, 0), (0, 0)])):
                _main()
            with patch('os.waitpid', Mock(side_effect=OSError)):
                _main()

        ref = {'passtochild': lambda signo, stack_frame: 0}

        def mock_sighup(signo, handler):
            if signo == signal.SIGHUP:
                ref['passtochild'] = handler

        def mock_wait():
            ref['passtochild'](0, None)

        mock_popen.return_value.wait = mock_wait
        with patch('signal.signal', mock_sighup), patch('os.kill', Mock()):
            self.assertIsNone(_main())
Ejemplo n.º 4
0
    def test_patroni_main(self, mock_popen, mock_getpid):
        mock_getpid.return_value = 2
        _main()

        with patch('sys.frozen', Mock(return_value=True), create=True):
            sys.argv = ['/patroni', 'pg_ctl_start', 'postgres', '-D', '/data', '--max_connections=100']
            _main()

        mock_getpid.return_value = 1

        def mock_signal(signo, handler):
            handler(signo, None)

        with patch('signal.signal', mock_signal):
            with patch('os.waitpid', Mock(side_effect=[(1, 0), (0, 0)])):
                _main()
            with patch('os.waitpid', Mock(side_effect=OSError)):
                _main()

        ref = {'passtochild': lambda signo, stack_frame: 0}

        def mock_sighup(signo, handler):
            if signo == signal.SIGHUP:
                ref['passtochild'] = handler

        def mock_wait():
            ref['passtochild'](0, None)

        mock_popen.return_value.wait = mock_wait
        with patch('signal.signal', mock_sighup), patch('os.kill', Mock()):
            self.assertIsNone(_main())
Ejemplo n.º 5
0
    def test_patroni_main(self, mock_machines):
        _main()
        sys.argv = ['patroni.py', 'postgres0.yml']

        mock_machines.__get__ = Mock(return_value=['http://remotehost:2379'])
        with patch.object(Patroni, 'run', Mock(side_effect=SleepException)):
            self.assertRaises(SleepException, _main)
        with patch.object(Patroni, 'run', Mock(side_effect=KeyboardInterrupt())):
            _main()
        sys.argv = ['patroni.py']
        # read the content of the yaml configuration file into the environment variable
        # in order to test how does patroni handle the configuration passed from the environment.
        with open('postgres0.yml', 'r') as f:
            os.environ[Patroni.PATRONI_CONFIG_VARIABLE] = f.read()
        with patch.object(Patroni, 'run', Mock(side_effect=SleepException())):
            self.assertRaises(SleepException, _main)
        del os.environ[Patroni.PATRONI_CONFIG_VARIABLE]
Ejemplo n.º 6
0
    def test_patroni_main(self, mock_process, mock_getpid):
        mock_getpid.return_value = 2
        _main()

        mock_getpid.return_value = 1

        def mock_signal(signo, handler):
            handler(signo, None)

        with patch('signal.signal', mock_signal):
            with patch('os.waitpid', Mock(side_effect=[(1, 0), (0, 0)])):
                _main()
            with patch('os.waitpid', Mock(side_effect=OSError)):
                _main()

        ref = {'passtochild': lambda signo, stack_frame: 0}

        def mock_sighup(signo, handler):
            if hasattr(signal, 'SIGHUP') and signo == signal.SIGHUP:
                ref['passtochild'] = handler

        def mock_join():
            ref['passtochild'](0, None)

        mock_process.return_value.join = mock_join
        with patch('signal.signal', mock_sighup), patch('os.kill', Mock()):
            self.assertIsNone(_main())
Ejemplo n.º 7
0
    def test_patroni_main(self, mock_machines):
        with patch('subprocess.call', Mock(return_value=1)):
            _main()
            sys.argv = ['patroni.py', 'postgres0.yml']

            mock_machines.__get__ = Mock(
                return_value=['http://remotehost:2379'])
            with patch.object(Patroni, 'run',
                              Mock(side_effect=SleepException)):
                self.assertRaises(SleepException, _main)
            with patch.object(Patroni, 'run',
                              Mock(side_effect=KeyboardInterrupt())):
                _main()
            sys.argv = ['patroni.py']
            # read the content of the yaml configuration file into the environment variable
            # in order to test how does patroni handle the configuration passed from the environment.
            with open('postgres0.yml', 'r') as f:
                os.environ[Patroni.PATRONI_CONFIG_VARIABLE] = f.read()
            with patch.object(Patroni, 'run',
                              Mock(side_effect=SleepException())):
                self.assertRaises(SleepException, _main)
            del os.environ[Patroni.PATRONI_CONFIG_VARIABLE]