You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
5.2 KiB
131 lines
5.2 KiB
#!/usr/bin/python2
|
|
# Copyright 2017 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import base64
|
|
import mox
|
|
import unittest
|
|
|
|
import common
|
|
|
|
from autotest_lib.client.common_lib import utils
|
|
from autotest_lib.site_utils import cloud_console_client
|
|
from autotest_lib.site_utils import cloud_console_pb2 as cpcon
|
|
from autotest_lib.site_utils import pubsub_utils
|
|
|
|
class PubSubBasedClientTests(mox.MoxTestBase):
|
|
"""Tests for the 'PubSubBasedClient'."""
|
|
|
|
def setUp(self):
|
|
super(PubSubBasedClientTests, self).setUp()
|
|
self._pubsub_client_mock = self.mox.CreateMock(
|
|
pubsub_utils.PubSubClient)
|
|
self._stubs = mox.stubout.StubOutForTesting()
|
|
self._stubs.Set(cloud_console_client, '_create_pubsub_client',
|
|
lambda x: self._pubsub_client_mock)
|
|
|
|
def tearDown(self):
|
|
self._stubs.UnsetAll()
|
|
super(PubSubBasedClientTests, self).tearDown()
|
|
|
|
def test_create_test_result_notification(self):
|
|
"""Tests the test result notification message."""
|
|
self._console_client = cloud_console_client.PubSubBasedClient()
|
|
self.mox.StubOutWithMock(utils,
|
|
'get_moblab_serial_number')
|
|
utils.get_moblab_serial_number().AndReturn(
|
|
'PV120BB8JAC01E')
|
|
self.mox.StubOutWithMock(utils, 'get_moblab_id')
|
|
utils.get_moblab_id().AndReturn(
|
|
'c8386d92-9ad1-11e6-80f5-111111111111')
|
|
self.mox.ReplayAll()
|
|
console_client = cloud_console_client.PubSubBasedClient()
|
|
msg = console_client._create_test_job_offloaded_message(
|
|
'gs://test_bucket/123-moblab')
|
|
self.assertEquals(base64.b64encode(
|
|
cloud_console_client.LEGACY_TEST_OFFLOAD_MESSAGE), msg['data'])
|
|
self.assertEquals(
|
|
cloud_console_client.CURRENT_MESSAGE_VERSION,
|
|
msg['attributes'][cloud_console_client.LEGACY_ATTR_VERSION])
|
|
self.assertEquals(
|
|
'1c:dc:d1:11:01:e1',
|
|
msg['attributes'][cloud_console_client.LEGACY_ATTR_MOBLAB_MAC]
|
|
)
|
|
self.assertEquals(
|
|
'c8386d92-9ad1-11e6-80f5-111111111111',
|
|
msg['attributes'][cloud_console_client.LEGACY_ATTR_MOBLAB_ID])
|
|
self.assertEquals(
|
|
'gs://test_bucket/123-moblab',
|
|
msg['attributes'][cloud_console_client.LEGACY_ATTR_GCS_URI])
|
|
self.mox.VerifyAll()
|
|
|
|
def test_send_test_job_offloaded_message(self):
|
|
"""Tests send job offloaded notification."""
|
|
console_client = cloud_console_client.PubSubBasedClient(
|
|
pubsub_topic='test topic')
|
|
|
|
message = {'data': 'dummy data', 'attributes' : {'key' : 'value'}}
|
|
self.mox.StubOutWithMock(cloud_console_client.PubSubBasedClient,
|
|
'_create_test_job_offloaded_message')
|
|
console_client._create_test_job_offloaded_message(
|
|
'gs://test_bucket/123-moblab').AndReturn(message)
|
|
|
|
msg_ids = ['1']
|
|
self._pubsub_client_mock.publish_notifications(
|
|
'test topic', [message]).AndReturn(msg_ids)
|
|
|
|
self.mox.ReplayAll()
|
|
result = console_client.send_test_job_offloaded_message(
|
|
'gs://test_bucket/123-moblab')
|
|
self.assertTrue(result)
|
|
self.mox.VerifyAll()
|
|
|
|
def test_send_heartbeat(self):
|
|
"""Tests send heartbeat."""
|
|
console_client = cloud_console_client.PubSubBasedClient(
|
|
pubsub_topic='test topic')
|
|
self.mox.StubOutWithMock(utils, 'get_moblab_id')
|
|
utils.get_moblab_id().AndReturn(
|
|
'c8386d92-9ad1-11e6-80f5-111111111111')
|
|
|
|
message = {
|
|
'attributes' : {
|
|
'ATTR_MOBLAB_ID': 'c8386d92-9ad1-11e6-80f5-111111111111',
|
|
'ATTR_MESSAGE_VERSION': '1',
|
|
'ATTR_MESSAGE_TYPE': 'MSG_MOBLAB_HEARTBEAT',
|
|
'ATTR_MOBLAB_MAC_ADDRESS': '8c:dc:d4:56:06:e7'}}
|
|
msg_ids = ['1']
|
|
self._pubsub_client_mock.publish_notifications(
|
|
'test topic', [message]).AndReturn(msg_ids)
|
|
self.mox.ReplayAll()
|
|
console_client.send_heartbeat()
|
|
self.mox.VerifyAll()
|
|
|
|
def test_send_event(self):
|
|
"""Tests send heartbeat."""
|
|
console_client = cloud_console_client.PubSubBasedClient(
|
|
pubsub_topic='test topic')
|
|
self.mox.StubOutWithMock(utils, 'get_moblab_id')
|
|
utils.get_moblab_id().AndReturn(
|
|
'c8386d92-9ad1-11e6-80f5-111111111111')
|
|
|
|
message = {
|
|
'data': '\x08\x01\x12\x0ethis is a test',
|
|
'attributes' : {
|
|
'ATTR_MOBLAB_ID': 'c8386d92-9ad1-11e6-80f5-111111111111',
|
|
'ATTR_MESSAGE_VERSION': '1',
|
|
'ATTR_MESSAGE_TYPE': 'MSG_MOBLAB_REMOTE_EVENT',
|
|
'ATTR_MOBLAB_MAC_ADDRESS': '8c:dc:d4:56:06:e7'}}
|
|
msg_ids = ['1']
|
|
self._pubsub_client_mock.publish_notifications(
|
|
'test topic', [message]).AndReturn(msg_ids)
|
|
self.mox.ReplayAll()
|
|
console_client.send_event(
|
|
cpcon.RemoteEventMessage.EVENT_MOBLAB_BOOT_COMPLETE,
|
|
'this is a test')
|
|
self.mox.VerifyAll()
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|