blob: 7da19ed1da918e61b25cf439e8cda1ac096b3832 [file] [log] [blame]
Evan Hernandezd437b4e2019-03-25 13:48:30 -06001# -*- 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"""Unittests for Binhost operations."""
7
8from __future__ import print_function
9
10import mock
11
12from chromite.api.controller import binhost
13from chromite.api.gen.chromite.api import binhost_pb2
14from chromite.lib import cros_test_lib
15from chromite.service import binhost as binhost_service
16
17class PrepareBinhostUploadsTest(cros_test_lib.MockTestCase):
18 """Unittests for PrepareBinhostUploads."""
19
20 def setUp(self):
21 self.PatchObject(binhost_service, 'GetPrebuiltsRoot',
22 return_value='/build/target/packages')
23 self.PatchObject(binhost_service, 'GetPrebuiltsFiles',
24 return_value=['foo.tbz2', 'bar.tbz2'])
25 self.PatchObject(binhost_service, 'UpdatePackageIndex',
26 return_value='/build/target/packages/Packages')
27
28 def testPrepareBinhostUploads(self):
29 """PrepareBinhostUploads returns Packages and tar files."""
30 input_proto = binhost_pb2.PrepareBinhostUploadsRequest()
31 input_proto.build_target.name = 'target'
32 input_proto.uri = 'gs://chromeos-prebuilt/target'
33 output_proto = binhost_pb2.PrepareBinhostUploadsResponse()
34 binhost.PrepareBinhostUploads(input_proto, output_proto)
35 self.assertEqual(output_proto.uploads_dir, '/build/target/packages')
36 self.assertItemsEqual(
37 [ut.path for ut in output_proto.upload_targets],
38 ['Packages', 'foo.tbz2', 'bar.tbz2'])
39
40 def testPrepareBinhostUploadsNonGsUri(self):
41 """PrepareBinhostUploads dies when URI does not point to GS."""
42 input_proto = binhost_pb2.PrepareBinhostUploadsRequest()
43 input_proto.build_target.name = 'target'
44 input_proto.uri = 'https://foo.bar'
45 output_proto = binhost_pb2.PrepareBinhostUploadsResponse()
46 with self.assertRaises(ValueError):
47 binhost.PrepareBinhostUploads(input_proto, output_proto)
48
49
50class SetBinhostTest(cros_test_lib.MockTestCase):
51 """Unittests for SetBinhost."""
52
53 def testSetBinhost(self):
54 """SetBinhost calls service with correct args."""
55 set_binhost = self.PatchObject(binhost_service, 'SetBinhost',
56 return_value='/path/to/BINHOST.conf')
57
58 input_proto = binhost_pb2.SetBinhostRequest()
59 input_proto.build_target.name = 'target'
60 input_proto.private = True
61 input_proto.key = binhost_pb2.POSTSUBMIT_BINHOST
62 input_proto.uri = 'gs://chromeos-prebuilt/target'
63
64 output_proto = binhost_pb2.SetBinhostResponse()
65
66 binhost.SetBinhost(input_proto, output_proto)
67
68 self.assertEqual(output_proto.output_file, '/path/to/BINHOST.conf')
69 self.assertEqual(
70 set_binhost.call_args_list,
71 [mock.call('target', 'POSTSUBMIT_BINHOST',
72 'gs://chromeos-prebuilt/target', private=True)])