blob: 9c2f2af4e461621bb030053f1d120e5e02574ddd [file] [log] [blame]
Alex Kleinb7cdbe62019-02-22 11:41:32 -07001# -*- 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
8from __future__ import print_function
9
10import os
11
12from chromite.api.controller import test_archive as test_archive_controller
Alex Klein7107bdd2019-03-14 17:14:31 -060013from chromite.api.gen.chromite.api import test_archive_pb2
Alex Kleinb7cdbe62019-02-22 11:41:32 -070014from chromite.lib import cros_build_lib
15from chromite.lib import cros_test_lib
16from chromite.lib import osutils
17from chromite.lib import path_util
18from chromite.service import test_archive as test_archive_service
19
20
21class 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)