def test_should_publish_as_finished_event_when_return_code_is_zero(self): mock_reason = Mock() mock_reason.value.exitCode = 0 mock_protocol = Mock(ProcessProtocol) ProcessProtocol.processExited(mock_protocol, mock_reason) self.assertEquals(call(), mock_protocol.publish_finished.call_args)
def test_should_accumulate_error_output(self, mock_log): mock_broadcaster = Mock() protocol = ProcessProtocol( 'hostname', mock_broadcaster, 'devabc123', '/usr/bin/python abc 123', tracking_id='tracking-id') self.assertEqual(protocol.error_buffer.getvalue(), '') protocol.errReceived('foo\nbar') protocol.errReceived('baz') self.assertEqual('foo\nbarbaz', protocol.error_buffer.getvalue())
def test_should_publish_finished_event(self): mock_protocol = Mock(ProcessProtocol) mock_broadcaster = Mock() mock_protocol.broadcaster = mock_broadcaster mock_protocol.hostname = 'hostname' mock_protocol.target = 'dev123' mock_protocol.readable_command = '/usr/bin/python abc' mock_protocol.tracking_id = 'tracking-id' mock_protocol.error_buffer = Mock() ProcessProtocol.publish_finished(mock_protocol) self.assertEquals(call('dev123', '/usr/bin/python abc', 'finished', '(hostname) target[dev123] request finished: "/usr/bin/python abc" succeeded.', tracking_id='tracking-id'), mock_broadcaster.publish_cmd_for_target.call_args) self.assertEqual(METRICS['commands_succeeded.dev123'], 1)
def test_should_publish_failed_event_with_stderr_from_process(self, mock_log): mock_protocol = Mock(ProcessProtocol) mock_broadcaster = Mock() mock_protocol.broadcaster = mock_broadcaster mock_protocol.hostname = 'hostname' mock_protocol.target = 'dev123' mock_protocol.readable_command = '/usr/bin/python abc' mock_protocol.tracking_id = 'tracking_id' mock_protocol.error_buffer = StringIO( 'Someone has shut down the internet.') ProcessProtocol.publish_failed(mock_protocol, 123) self.assertEquals(call('dev123', '/usr/bin/python abc', 'failed', message='Someone has shut down the internet.', tracking_id='tracking_id'), mock_broadcaster.publish_cmd_for_target.call_args) self.assertEqual(METRICS['commands_failed.dev123'], 1)
def test_should_publish_finished_event(self): mock_protocol = Mock(ProcessProtocol) mock_broadcaster = Mock() mock_protocol.broadcaster = mock_broadcaster mock_protocol.hostname = 'hostname' mock_protocol.target = 'dev123' mock_protocol.readable_command = '/usr/bin/python abc' mock_protocol.tracking_id = 'tracking-id' mock_protocol.error_buffer = Mock() ProcessProtocol.publish_finished(mock_protocol) self.assertEquals( call( 'dev123', '/usr/bin/python abc', 'finished', '(hostname) target[dev123] request finished: "/usr/bin/python abc" succeeded.', tracking_id='tracking-id'), mock_broadcaster.publish_cmd_for_target.call_args) self.assertEqual(METRICS['commands_succeeded.dev123'], 1)
def test_should_publish_failed_event_with_stderr_from_process( self, mock_log): mock_protocol = Mock(ProcessProtocol) mock_broadcaster = Mock() mock_protocol.broadcaster = mock_broadcaster mock_protocol.hostname = 'hostname' mock_protocol.target = 'dev123' mock_protocol.readable_command = '/usr/bin/python abc' mock_protocol.tracking_id = 'tracking_id' mock_protocol.error_buffer = StringIO( 'Someone has shut down the internet.') ProcessProtocol.publish_failed(mock_protocol, 123) self.assertEquals( call('dev123', '/usr/bin/python abc', 'failed', message='Someone has shut down the internet.', tracking_id='tracking_id'), mock_broadcaster.publish_cmd_for_target.call_args) self.assertEqual(METRICS['commands_failed.dev123'], 1)
def test_should_initialize_with_given_properties(self): mock_broadcaster = Mock() protocol = ProcessProtocol('hostname', mock_broadcaster, 'devabc123', '/usr/bin/python abc 123', tracking_id='tracking-id') self.assertEquals('hostname', protocol.hostname) self.assertEquals(mock_broadcaster, protocol.broadcaster) self.assertEquals('devabc123', protocol.target) self.assertEquals('/usr/bin/python abc 123', protocol.readable_command) self.assertEqual('tracking-id', protocol.tracking_id)
def test_should_accumulate_error_output(self, mock_log): mock_broadcaster = Mock() protocol = ProcessProtocol('hostname', mock_broadcaster, 'devabc123', '/usr/bin/python abc 123', tracking_id='tracking-id') self.assertEqual(protocol.error_buffer.getvalue(), '') protocol.errReceived('foo\nbar') protocol.errReceived('baz') self.assertEqual('foo\nbarbaz', protocol.error_buffer.getvalue())