Adds extra fields to the test job offload notification.
BUG=chromium:660913
TEST=Unitest and Manual.
Change-Id: Id83f3a9fd1254e919c6486e55615e6d009ea06f5
Previous-Reviewed-on: https://chromium-review.googlesource.com/406447
(cherry picked from commit 2b00d9feb7b4fc3b151896b868c0f6c9e8019fed)
Reviewed-on: https://chromium-review.googlesource.com/406743
Reviewed-by: Moises Osorio <moisesosorio@chromium.org>
Reviewed-by: Michael Tang <ntang@chromium.org>
Commit-Queue: Michael Tang <ntang@chromium.org>
Tested-by: Michael Tang <ntang@chromium.org>
Trybot-Ready: Michael Tang <ntang@chromium.org>
diff --git a/client/common_lib/site_utils.py b/client/common_lib/site_utils.py
index a633d80..872afcd 100644
--- a/client/common_lib/site_utils.py
+++ b/client/common_lib/site_utils.py
@@ -149,6 +149,11 @@
return None
+def get_default_interface_mac_address():
+ """Returns the default moblab MAC address."""
+ return get_interface_mac_address(MOBLAB_ETH)
+
+
def get_interface_mac_address(interface):
"""Return the MAC address of a given interface.
diff --git a/site_utils/gs_offloader.py b/site_utils/gs_offloader.py
index 4114c7a..f4373bd 100755
--- a/site_utils/gs_offloader.py
+++ b/site_utils/gs_offloader.py
@@ -43,7 +43,7 @@
import job_directories
import pubsub_utils
-from autotest_lib.client.common_lib import global_config
+from autotest_lib.client.common_lib import global_config, site_utils
from autotest_lib.client.common_lib.cros.graphite import autotest_stats
from autotest_lib.scheduler import email_manager
from chromite.lib import parallel
@@ -132,6 +132,15 @@
_PUBSUB_TOPIC = global_config.global_config.get_config_value(
'CROS', 'cloud_notification_topic::', type='string', default=None)
+
+# Test upload pubsub notification attributes
+NOTIFICATION_ATTR_VERSION = 'version'
+NOTIFICATION_ATTR_GCS_URI = 'gcs_uri'
+NOTIFICATION_ATTR_MOBLAB_MAC = 'moblab_mac_address'
+NOTIFICATION_ATTR_MOBLAB_ID = 'moblab_id'
+NOTIFICATION_VERSION = '1'
+
+
# the message data for new test result notification.
NEW_TEST_RESULT_MESSAGE = 'NEW_TEST_RESULT'
@@ -431,7 +440,11 @@
data = base64.b64encode(NEW_TEST_RESULT_MESSAGE)
msg_payload = {'data': data}
msg_attributes = {}
- msg_attributes['gcs_uri'] = gs_path
+ msg_attributes[NOTIFICATION_ATTR_GCS_URI] = gs_path
+ msg_attributes[NOTIFICATION_ATTR_VERSION] = NOTIFICATION_VERSION
+ msg_attributes[NOTIFICATION_ATTR_MOBLAB_MAC] = \
+ site_utils.get_default_interface_mac_address()
+ msg_attributes[NOTIFICATION_ATTR_MOBLAB_ID] = site_utils.get_moblab_id()
msg_payload['attributes'] = msg_attributes
return msg_payload
diff --git a/site_utils/gs_offloader_unittest.py b/site_utils/gs_offloader_unittest.py
index 7eca0d9..b8bf584 100644
--- a/site_utils/gs_offloader_unittest.py
+++ b/site_utils/gs_offloader_unittest.py
@@ -20,7 +20,7 @@
import gs_offloader
import job_directories
-from autotest_lib.client.common_lib import global_config
+from autotest_lib.client.common_lib import global_config, site_utils
from autotest_lib.client.common_lib import time_utils
from autotest_lib.client.common_lib import utils
from autotest_lib.scheduler import email_manager
@@ -492,10 +492,30 @@
def test_create_test_result_notification(self):
"""Tests the test result notification message."""
+ self.mox.StubOutWithMock(site_utils, 'get_moblab_id')
+ self.mox.StubOutWithMock(site_utils,
+ 'get_default_interface_mac_address')
+ site_utils.get_default_interface_mac_address().AndReturn(
+ '1c:dc:d1:11:01:e1')
+ site_utils.get_moblab_id().AndReturn(
+ 'c8386d92-9ad1-11e6-80f5-111111111111')
+ self.mox.ReplayAll()
msg = gs_offloader._create_test_result_notification('gs://test_bucket')
self.assertEquals(base64.b64encode(
gs_offloader.NEW_TEST_RESULT_MESSAGE), msg['data'])
- self.assertEquals('gs://test_bucket', msg['attributes']['gcs_uri'])
+ self.assertEquals(
+ gs_offloader.NOTIFICATION_VERSION,
+ msg['attributes'][gs_offloader.NOTIFICATION_ATTR_VERSION])
+ self.assertEquals(
+ '1c:dc:d1:11:01:e1',
+ msg['attributes'][gs_offloader.NOTIFICATION_ATTR_MOBLAB_MAC])
+ self.assertEquals(
+ 'c8386d92-9ad1-11e6-80f5-111111111111',
+ msg['attributes'][gs_offloader.NOTIFICATION_ATTR_MOBLAB_ID])
+ self.assertEquals(
+ 'gs://test_bucket',
+ msg['attributes'][gs_offloader.NOTIFICATION_ATTR_GCS_URI])
+ self.mox.VerifyAll()
class _MockJob(object):