Home | History | Annotate | Download | only in host_binary_test
      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