1 # 2 # Copyright (C) 2017 The Android Open Source Project 3 # 4 # Licensed under the Apache License, Version 2.0 (the "License"); 5 # you may not use this file except in compliance with the License. 6 # You may obtain a copy of the License at 7 # 8 # http://www.apache.org/licenses/LICENSE-2.0 9 # 10 # Unless required by applicable law or agreed to in writing, software 11 # distributed under the License is distributed on an "AS IS" BASIS, 12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 # See the License for the specific language governing permissions and 14 # limitations under the License. 15 # 16 17 import logging 18 import os 19 import subprocess 20 21 from vts.runners.host import asserts 22 from vts.runners.host import base_test 23 from vts.runners.host import keys 24 from vts.runners.host import test_runner 25 from vts.utils.python.common import cmd_utils 26 27 28 class HostBinaryTest(base_test.BaseTestClass): 29 """Base class to run a host-side, native binary test. 30 31 Note that a host-side binary test is not highly recommended because 32 such can be written in Python. Currently, this is used only for legacy 33 host-side native tests. And all new host-side native tests should be 34 written in Python or Java. 35 """ 36 37 def setUpClass(self): 38 """Retrieves the required param.""" 39 required_params = [keys.ConfigKeys.IKEY_BINARY_TEST_SOURCE] 40 self.getUserParams(req_param_names=required_params) 41 42 def testHostBinary(self): 43 """Tests host-side binaries.""" 44 android_build_top = os.getenv("ANDROID_BUILD_TOP", "") 45 asserts.assertTrue( 46 android_build_top, 47 "$ANDROID_BUILD_TOP is not set. Please run lunch <build target>") 48 49 for binary_test_source in self.binary_test_source: 50 binary_test_source = str(binary_test_source) 51 binary_path = os.path.join(android_build_top, binary_test_source) 52 53 cmd_result = cmd_utils.ExecuteShellCommand(binary_path) 54 asserts.assertFalse( 55 any(cmd_result[cmd_utils.EXIT_CODE]), 56 "Test failed with the following results:\n " 57 "command result: %s" % cmd_result) 58 59 60 if __name__ == "__main__": 61 test_runner.main() 62