示例#1
0
    def test_wait_for_messages(self, _status):
        status = _status.return_value = deepcopy(mock_status)
        t = Talisman([], timeout=self.timeout)

        def set_status(unit, message):
            service = unit.split('/')[0]
            status['services'][service]['units'][unit]['workload-status']['message'] = message

        t.wait_for_messages({'meteor': 'ready'}, self.timeout)
        t.wait_for_messages({'meteor': re.compile('r..dy')}, self.timeout)
        t.wait_for_messages({'meteor': {'ready'}}, self.timeout)
        t.wait_for_messages({'meteor': re.compile('ready|ok')}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages, {'meteor': {'ready', 'ok'}}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages, {'meteor': ['ready', 'ok']}, self.timeout)

        set_status('meteor/0', 'ok')
        self.assertRaises(TimeoutError, t.wait_for_messages, {'meteor': 'ready'}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages, {'meteor': re.compile('r..dy')}, self.timeout)
        t.wait_for_messages({'meteor': {'ready'}}, self.timeout)
        t.wait_for_messages({'meteor': re.compile('ready|ok')}, self.timeout)
        t.wait_for_messages({'meteor': {'ready', 'ok'}}, self.timeout)
        t.wait_for_messages({'meteor': ['ready', 'ok']}, self.timeout)

        set_status('meteor/1', 'ok')
        self.assertRaises(TimeoutError, t.wait_for_messages, {'meteor': 'ready'}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages, {'meteor': re.compile('r..dy')}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages, {'meteor': {'ready'}}, self.timeout)
        t.wait_for_messages({'meteor': re.compile('ready|ok')}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages, {'meteor': {'ready', 'ok'}}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages, {'meteor': ['ready', 'ok']}, self.timeout)

        set_status('meteor/0', 'ready')
        status['services']['meteor']['units']['meteor/2'] = {
            'workload-status': {
                'current': 'active',
                'message': 'working',
            },
        }
        t.wait_for_messages({'meteor': {'ready', 'ok'}})
        self.assertRaises(TimeoutError, t.wait_for_messages, {'meteor': ['ready', 'ok']}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages, {'meteor': ['ready', 'ok', 'ready']}, self.timeout)

        t.wait_for_messages({'rsyslog-forwarder': 'rsyslog'}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages, {'rsyslog-forwarder': 'ready'}, self.timeout)

        self.assertRaises(UnsupportedError, t.wait_for_messages, {'old': 'ready'}, self.timeout)
示例#2
0
    def test_wait_for_messages(self, _status):
        status = _status.return_value = deepcopy(mock_status)
        t = Talisman([], timeout=self.timeout)

        def set_status(unit, message):
            service = unit.split('/')[0]
            status['services'][service]['units'][unit]['workload-status'][
                'message'] = message

        t.wait_for_messages({'meteor': 'ready'}, self.timeout)
        t.wait_for_messages({'meteor': re.compile('r..dy')}, self.timeout)
        t.wait_for_messages({'meteor': {'ready'}}, self.timeout)
        t.wait_for_messages({'meteor': re.compile('ready|ok')}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages,
                          {'meteor': {'ready', 'ok'}}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages,
                          {'meteor': ['ready', 'ok']}, self.timeout)

        set_status('meteor/0', 'ok')
        self.assertRaises(TimeoutError, t.wait_for_messages,
                          {'meteor': 'ready'}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages,
                          {'meteor': re.compile('r..dy')}, self.timeout)
        t.wait_for_messages({'meteor': {'ready'}}, self.timeout)
        t.wait_for_messages({'meteor': re.compile('ready|ok')}, self.timeout)
        t.wait_for_messages({'meteor': {'ready', 'ok'}}, self.timeout)
        t.wait_for_messages({'meteor': ['ready', 'ok']}, self.timeout)

        set_status('meteor/1', 'ok')
        self.assertRaises(TimeoutError, t.wait_for_messages,
                          {'meteor': 'ready'}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages,
                          {'meteor': re.compile('r..dy')}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages,
                          {'meteor': {'ready'}}, self.timeout)
        t.wait_for_messages({'meteor': re.compile('ready|ok')}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages,
                          {'meteor': {'ready', 'ok'}}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages,
                          {'meteor': ['ready', 'ok']}, self.timeout)

        set_status('meteor/0', 'ready')
        status['services']['meteor']['units']['meteor/2'] = {
            'workload-status': {
                'current': 'active',
                'message': 'working',
            },
        }
        t.wait_for_messages({'meteor': {'ready', 'ok'}})
        self.assertRaises(TimeoutError, t.wait_for_messages,
                          {'meteor': ['ready', 'ok']}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages,
                          {'meteor': ['ready', 'ok', 'ready']}, self.timeout)

        t.wait_for_messages({'rsyslog-forwarder': 'rsyslog'}, self.timeout)
        self.assertRaises(TimeoutError, t.wait_for_messages,
                          {'rsyslog-forwarder': 'ready'}, self.timeout)

        self.assertRaises(UnsupportedError, t.wait_for_messages,
                          {'old': 'ready'}, self.timeout)