示例#1
0
 def test__processMessages_doesnt_call_when_node_deleted(self):
     worker = StatusWorkerService(sentinel.dbtasks)
     mock_processMessage = self.patch(worker, "_processMessage")
     mock_processMessage.return_value = False
     mock_updateLastPing = self.patch(worker, "_updateLastPing")
     yield deferToDatabase(worker._processMessages, sentinel.node,
                           [sentinel.message1, sentinel.message2])
     self.assertThat(mock_processMessage,
                     MockCalledOnceWith(sentinel.node, sentinel.message1))
     self.assertThat(mock_updateLastPing, MockNotCalled())
示例#2
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())
示例#3
0
 def test__processMessages_calls_processMessage(self):
     worker = StatusWorkerService(sentinel.dbtasks)
     mock_processMessage = self.patch(worker, "_processMessage")
     yield deferToDatabase(
         worker._processMessages, sentinel.node,
         [sentinel.message1, sentinel.message2])
     self.assertThat(
         mock_processMessage,
         MockCallsMatch(
             call(sentinel.node, sentinel.message1),
             call(sentinel.node, sentinel.message2)))
示例#4
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()
         ]))
示例#5
0
 def processMessage(self, node, payload):
     worker = StatusWorkerService(sentinel.dbtasks)
     return worker._processMessage(node, payload)
示例#6
0
 def test__processMessageNow_fails_when_in_transaction(self):
     worker = StatusWorkerService(sentinel.dbtasks)
     with ExpectedException(TransactionManagementError):
         yield deferToDatabase(transactional(worker._processMessageNow),
                               sentinel.node, sentinel.message)
示例#7
0
 def test__tryUpdateNodes_returns_None_when_empty_queue(self):
     worker = StatusWorkerService(sentinel.dbtasks)
     self.assertIsNone(worker._tryUpdateNodes())
示例#8
0
 def test__init__(self):
     worker = StatusWorkerService(sentinel.dbtasks, clock=sentinel.reactor)
     self.assertEqual(sentinel.dbtasks, worker.dbtasks)
     self.assertEqual(sentinel.reactor, worker.clock)
     self.assertEqual(60, worker.step)
     self.assertEqual((worker._tryUpdateNodes, tuple(), {}), worker.call)
示例#9
0
def make_StatusWorkerService(dbtasks):
    from metadataserver.api_twisted import StatusWorkerService
    return StatusWorkerService(dbtasks)
示例#10
0
 def updateLastPing(self, node, payload):
     worker = StatusWorkerService(sentinel.dbtasks)
     worker._updateLastPing(node, payload)