nebraska: Ignore miniOS app mismatches
MiniOS version is not atomic with OS version.
BUG=b:205716602
TEST=./run_unittests
Change-Id: Ie98a6b57eade8b860fde735af8ebdffb8cec1ba2
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/dev-util/+/3274107
Tested-by: Jae Hoon Kim <kimjae@chromium.org>
Reviewed-by: Kyle Shimabukuro <kyleshima@chromium.org>
Commit-Queue: Jae Hoon Kim <kimjae@chromium.org>
diff --git a/nebraska/nebraska.py b/nebraska/nebraska.py
index 984d6eb..9ae40ef 100755
--- a/nebraska/nebraska.py
+++ b/nebraska/nebraska.py
@@ -38,6 +38,8 @@
# This is the same for all images on canary channel.
_CANARY_APP_ID = '{90F229CE-83E2-4FAF-8479-E368A34938B1}'
+_MINIOS_APP_ID_SUFFIX = '_minios'
+
class Error(Exception):
"""The base class for failures raised by Nebraska."""
@@ -165,6 +167,8 @@
for all apps if existed. It can optionally be in one or more apps, but
they are all equal.
+ Ignores all miniOS apps due to the out of sync nature for updates.
+
Args:
attribute: An attribute of the app tag.
in_all: If true, the attribute should exist among all apps.
@@ -175,7 +179,10 @@
The value of the attribute. If no valid attribute value is found,
ignore_value will be returned.
"""
- all_attrs = [getattr(x, attribute) for x in self.app_requests]
+ # Exclude miniOS apps.
+ all_attrs = [getattr(x, attribute)
+ for x in self.app_requests
+ if not x.appid.endswith(_MINIOS_APP_ID_SUFFIX)]
if in_all and (ignore_value in all_attrs):
raise InvalidRequestError(
'All apps should have "%s" attribute.' % attribute)
diff --git a/nebraska/nebraska_unittest.py b/nebraska/nebraska_unittest.py
index 782b500..60503b8 100755
--- a/nebraska/nebraska_unittest.py
+++ b/nebraska/nebraska_unittest.py
@@ -18,9 +18,9 @@
import shutil
import tempfile
import unittest
+import unittest.mock as mock
from xml.etree import ElementTree
-import mock
import nebraska
@@ -726,6 +726,16 @@
with self.assertRaises(nebraska.InvalidRequestError):
nebraska.Request(request)
+ def testParseRequestMiniOSMismatchedVersion(self):
+ """Tests ParseRequest handling of miniOS mismtach update."""
+ request = GenerateXMLRequest([
+ GenerateXMLAppRequest(version='1.0.0'),
+ GenerateXMLAppRequest(appid='foo' + nebraska._MINIOS_APP_ID_SUFFIX,
+ version='2.0.0'),
+ ])
+ # Should not assert.
+ nebraska.Request(request)
+
def testParseRequestMismatchedVersionInstall(self):
"""Tests ParseRequest handling of mismatched install version numbers."""
request = GenerateXMLRequest([