コード例 #1
0
 def test__tryUpdateNodes_sends_work_to_dbtasks(self):
     nodes_with_tokens = yield deferToDatabase(self.make_nodes_with_tokens)
     node_messages = {
         node: [self.make_message() for _ in range(3)]
         for node, _ in nodes_with_tokens
     }
     dbtasks = Mock()
     dbtasks.addTask = Mock()
     worker = StatusWorkerService(dbtasks)
     for node, token in nodes_with_tokens:
         for message in node_messages[node]:
             worker.queueMessage(token.key, message)
     yield worker._tryUpdateNodes()
     call_args = [
         (call_arg[0][1], call_arg[0][2])
         for call_arg in dbtasks.addTask.call_args_list
     ]
     self.assertThat(
         call_args,
         MatchesSetwise(
             *[
                 MatchesListwise([Equals(node), Equals(messages)])
                 for node, messages in node_messages.items()
             ]
         ),
     )
コード例 #2
0
 def test_queueMessages_processes_top_level_message_instantly(self):
     worker = StatusWorkerService(sentinel.dbtasks)
     mock_processMessage = self.patch(worker, "_processMessage")
     message = self.make_message()
     message['event_type'] = 'finish'
     nodes_with_tokens = yield deferToDatabase(self.make_nodes_with_tokens)
     node, token = nodes_with_tokens[0]
     yield worker.queueMessage(token.key, message)
     self.assertThat(mock_processMessage, MockCalledOnceWith(node, message))
コード例 #3
0
 def test_queueMessages_processes_top_level_status_messages_instantly(self):
     for name in EVENT_STATUS_MESSAGES.keys():
         worker = StatusWorkerService(sentinel.dbtasks)
         mock_processMessage = self.patch(worker, "_processMessage")
         message = self.make_message()
         message["event_type"] = "start"
         message["name"] = name
         nodes_with_tokens = yield deferToDatabase(
             self.make_nodes_with_tokens)
         node, token = nodes_with_tokens[0]
         yield worker.queueMessage(token.key, message)
         self.assertThat(mock_processMessage,
                         MockCalledOnceWith(node, message))
コード例 #4
0
 def test_queueMessages_processes_files_message_instantly(self):
     worker = StatusWorkerService(sentinel.dbtasks)
     mock_processMessage = self.patch(worker, "_processMessage")
     contents = b'These are the contents of the file.'
     encoded_content = encode_as_base64(bz2.compress(contents))
     message = self.make_message()
     message['files'] = [{
         "path": "sample.txt",
         "encoding": "uuencode",
         "compression": "bzip2",
         "content": encoded_content
     }]
     nodes_with_tokens = yield deferToDatabase(self.make_nodes_with_tokens)
     node, token = nodes_with_tokens[0]
     yield worker.queueMessage(token.key, message)
     self.assertThat(mock_processMessage, MockCalledOnceWith(node, message))
コード例 #5
0
 def test_queueMessages_handled_invalid_nodekey_with_instant_msg(self):
     worker = StatusWorkerService(sentinel.dbtasks)
     mock_processMessage = self.patch(worker, "_processMessage")
     contents = b"These are the contents of the file."
     encoded_content = encode_as_base64(bz2.compress(contents))
     message = self.make_message()
     message["files"] = [{
         "path": "sample.txt",
         "encoding": "uuencode",
         "compression": "bzip2",
         "content": encoded_content,
     }]
     nodes_with_tokens = yield deferToDatabase(self.make_nodes_with_tokens)
     node, token = nodes_with_tokens[0]
     yield deferToDatabase(token.delete)
     yield worker.queueMessage(token.key, message)
     self.assertThat(mock_processMessage, MockNotCalled())