Alex Klein | b7cdbe6 | 2019-02-22 11:41:32 -0700 | [diff] [blame] | 1 | # -*- coding: utf-8 -*- |
| 2 | # Copyright 2019 The Chromium OS Authors. All rights reserved. |
| 3 | # Use of this source code is governed by a BSD-style license that can be |
| 4 | # found in the LICENSE file. |
| 5 | |
| 6 | """Test Archive tests.""" |
| 7 | |
| 8 | from __future__ import print_function |
| 9 | |
| 10 | import os |
| 11 | |
| 12 | from chromite.api.controller import test_archive as test_archive_controller |
Alex Klein | 7107bdd | 2019-03-14 17:14:31 -0600 | [diff] [blame^] | 13 | from chromite.api.gen.chromite.api import test_archive_pb2 |
Alex Klein | b7cdbe6 | 2019-02-22 11:41:32 -0700 | [diff] [blame] | 14 | from chromite.lib import cros_build_lib |
| 15 | from chromite.lib import cros_test_lib |
| 16 | from chromite.lib import osutils |
| 17 | from chromite.lib import path_util |
| 18 | from chromite.service import test_archive as test_archive_service |
| 19 | |
| 20 | |
| 21 | class CreateHwTestArchivesTest(cros_test_lib.MockTempDirTestCase): |
| 22 | """CreateHwTestArchives tests.""" |
| 23 | _SUCCESS_RETURN = { |
| 24 | test_archive_service.ARCHIVE_CONTROL_FILES: '/path/to/control.tar', |
| 25 | test_archive_service.ARCHIVE_PACKAGES: '/path/to/packages.tar', |
| 26 | test_archive_service.ARCHIVE_SERVER_PACKAGES: '/path/to/server.tar', |
| 27 | test_archive_service.ARCHIVE_TEST_SUITES: '/path/to/tests.tar', |
| 28 | } |
| 29 | |
| 30 | def setUp(self): |
| 31 | self.board = 'board' |
| 32 | self.PatchObject(path_util, 'FromChrootPath', |
| 33 | side_effect=lambda x: os.path.join(self.tempdir, x)) |
| 34 | |
| 35 | osutils.SafeMakedirs(os.path.join(self.tempdir, 'build', self.board)) |
| 36 | |
| 37 | def testSuccess(self): |
| 38 | """Successful call response building test.""" |
| 39 | self.PatchObject(test_archive_service, 'CreateHwTestArchives', |
| 40 | return_value=self._SUCCESS_RETURN) |
| 41 | |
| 42 | request = test_archive_pb2.CreateArchiveRequest() |
| 43 | request.build_target.name = self.board |
| 44 | request.output_directory = self.tempdir |
| 45 | |
| 46 | response = test_archive_pb2.CreateArchiveResponse() |
| 47 | |
| 48 | test_archive_controller.CreateHwTestArchives(request, response) |
| 49 | |
| 50 | expected_files = self._SUCCESS_RETURN.values() |
| 51 | for result_file in response.files: |
| 52 | self.assertIn(result_file.path, expected_files) |
| 53 | expected_files.remove(result_file.path) |
| 54 | # Make sure it was a perfect intersection. |
| 55 | self.assertEqual([], expected_files) |
| 56 | |
| 57 | def testRequiredArguments(self): |
| 58 | """Test argument validation.""" |
| 59 | request = test_archive_pb2.CreateArchiveRequest() |
| 60 | response = test_archive_pb2.CreateArchiveResponse() |
| 61 | |
| 62 | # Missing everything. |
| 63 | with self.assertRaises(cros_build_lib.DieSystemExit): |
| 64 | test_archive_controller.CreateHwTestArchives(request, response) |
| 65 | |
| 66 | request.build_target.name = self.board |
| 67 | # Only missing output directory. |
| 68 | with self.assertRaises(cros_build_lib.DieSystemExit): |
| 69 | test_archive_controller.CreateHwTestArchives(request, response) |
| 70 | |
| 71 | request.build_target.name = '' |
| 72 | request.output_directory = self.tempdir |
| 73 | # Only missing board. |
| 74 | with self.assertRaises(cros_build_lib.DieSystemExit): |
| 75 | test_archive_controller.CreateHwTestArchives(request, response) |