Пример #1
0
 def test_pending(self):
     """Pending event operations.
     """
     event = events.PendingTraceEvent(timestamp=2,
                                      source='tests',
                                      instanceid='proid.foo#123',
                                      payload={'foo': 'bar'})
     self.assertEqual(
         event.to_dict(), {
             'event_type': 'pending',
             'timestamp': 2,
             'source': 'tests',
             'instanceid': 'proid.foo#123',
             'payload': {
                 'foo': 'bar'
             },
         })
     self.assertEqual(event.to_data(), (
         2,
         'tests',
         'proid.foo#123',
         'pending',
         None,
         {
             'foo': 'bar'
         },
     ))
     self.assertEqual(
         event,
         events.PendingTraceEvent.from_data(timestamp=2,
                                            source='tests',
                                            instanceid='proid.foo#123',
                                            event_type='pending',
                                            event_data='',
                                            payload={'foo': 'bar'}))
Пример #2
0
    def test_post_zk(self):
        """Test appevents.post.zk."""
        zkclient_mock = mock.Mock()
        zkclient_mock.get_children.return_value = []

        appevents.post_zk(
            zkclient_mock,
            events.PendingTraceEvent(
                instanceid='foo.bar#123',
                why='created',
                payload=''
            )
        )
        zkclient_mock.create.assert_called_once_with(
            '/trace/007B/foo.bar#123,100,baz,pending,created',
            b'',
            ephemeral=False, makepath=True, sequence=False,
            acl=mock.ANY
        )
        zkclient_mock.reset_mock()

        appevents.post_zk(
            zkclient_mock,
            events.PendingDeleteTraceEvent(
                instanceid='foo.bar#123',
                why='deleted'
            )
        )
        zkclient_mock.create.assert_called_once_with(
            '/trace/007B/foo.bar#123,100,baz,pending_delete,deleted',
            b'',
            ephemeral=False, makepath=True, sequence=False,
            acl=mock.ANY
        )
        zkclient_mock.reset_mock()

        appevents.post_zk(
            zkclient_mock,
            events.AbortedTraceEvent(
                instanceid='foo.bar#123',
                why='test'
            )
        )
        zkclient_mock.create.assert_has_calls([
            mock.call(
                '/trace/007B/foo.bar#123,100,baz,aborted,test',
                b'',
                ephemeral=False, makepath=True, sequence=False,
                acl=mock.ANY
            ),
            mock.call(
                '/finished/foo.bar#123',
                b'{data: test, host: baz, state: aborted, when: \'100\'}\n',
                ephemeral=False, makepath=True, sequence=False,
                acl=mock.ANY
            )
        ])
Пример #3
0
 def _update_task(self, appname, server, why):
     """Creates/updates application task with the new placement."""
     # Servers in the cell have full control over task node.
     if self.events_dir:
         if server:
             appevents.post(
                 self.events_dir,
                 traceevents.ScheduledTraceEvent(instanceid=appname,
                                                 where=server,
                                                 why=why))
         else:
             appevents.post(
                 self.events_dir,
                 traceevents.PendingTraceEvent(instanceid=appname, why=why))
Пример #4
0
    def test_pending(self, stdout_mock):
        """Test printing Pending event.
        """
        event = events.PendingTraceEvent(why='created',
                                         timestamp=2,
                                         source='tests',
                                         instanceid='proid.foo#123',
                                         payload={'foo': 'bar'})

        self.trace_printer.process(event)

        self.assertEqual(
            stdout_mock.getvalue(), 'Thu, 01 Jan 1970 00:00:02+0000 - '
            'proid.foo#123 pending: created\n')
Пример #5
0
def create_apps(zkclient, app_id, app, count, created_by=None):
    """Schedules new apps."""
    instance_ids = []
    acl = zkclient.make_servers_acl()
    for _idx in range(0, count):
        node_path = zkutils.put(zkclient,
                                _app_node(app_id, existing=False),
                                app,
                                sequence=True,
                                acl=[acl])
        instance_id = os.path.basename(node_path)
        instance_ids.append(instance_id)

        appevents.post_zk(
            zkclient,
            traceevents.PendingTraceEvent(
                instanceid=instance_id,
                why='%s:created' % created_by if created_by else 'created',
                payload=''))

    return instance_ids
Пример #6
0
    def test_post(self):
        """Test appevents.post."""
        # Disable W0212(protected-access)
        # pylint: disable=W0212
        zkclient_mock = mock.Mock()
        zkclient_mock.get_children.return_value = []
        watcher = appevents.AppEventsWatcher(zkclient_mock, self.root)

        appevents.post(
            self.root,
            events.PendingTraceEvent(
                instanceid='foo.bar#123',
                why='created',
            ))
        path = os.path.join(self.root, '100,foo.bar#123,pending,created')
        self.assertTrue(os.path.exists(path))
        watcher._on_created(path)
        zkclient_mock.create.assert_called_once_with(
            '/trace/007B/foo.bar#123,100,baz,pending,created',
            b'',
            ephemeral=False,
            makepath=True,
            sequence=False,
            acl=mock.ANY)

        zkclient_mock.reset_mock()
        appevents.post(
            self.root,
            events.PendingDeleteTraceEvent(instanceid='foo.bar#123',
                                           why='deleted'))
        path = os.path.join(self.root,
                            '100,foo.bar#123,pending_delete,deleted')
        self.assertTrue(os.path.exists(path))
        watcher._on_created(path)
        zkclient_mock.create.assert_called_once_with(
            '/trace/007B/foo.bar#123,100,baz,pending_delete,deleted',
            b'',
            ephemeral=False,
            makepath=True,
            sequence=False,
            acl=mock.ANY)

        zkclient_mock.reset_mock()
        appevents.post(
            self.root,
            events.AbortedTraceEvent(instanceid='foo.bar#123', why='test'))
        path = os.path.join(self.root, '100,foo.bar#123,aborted,test')
        self.assertTrue(os.path.exists(path))
        watcher._on_created(path)
        self.assertEqual(zkclient_mock.create.call_args_list, [
            mock.call('/trace/007B/foo.bar#123,100,baz,aborted,test',
                      b'',
                      ephemeral=False,
                      makepath=True,
                      sequence=False,
                      acl=mock.ANY),
            mock.call(
                '/finished/foo.bar#123',
                b'{data: test, host: baz, state: aborted, when: \'100\'}\n',
                makepath=True,
                ephemeral=False,
                acl=mock.ANY,
                sequence=False)
        ])