| # |
| # Copyright (C) 2016 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| |
| class LinuxKselftestTestcase(object): |
| """Stores information needed to run the test case. |
| |
| Attrubutes: |
| _testname: string, name of the testcase. |
| _testsuite: string, name of suite this testcase belongs to. |
| _test_cmd: string, shell command used to invoke this testcase. |
| _supported_arch: string list, architectures this testcase supports, |
| e.g. ["arm", "x86"]. |
| _supported_bits: int list, bit version (32 or 64) of the testcase that |
| are currently supported, e.g. [32, 64]. |
| """ |
| def __init__(self, testsuite, test_cmd, supported_arch, supported_bits): |
| self._testsuite = testsuite |
| self._testname = "%s/%s" % (testsuite, test_cmd) |
| self._test_cmd = "./%s" % test_cmd |
| self._supported_arch = supported_arch |
| self._supported_bits = supported_bits |
| |
| @property |
| def testname(self): |
| """Get test name.""" |
| return self._testname |
| |
| @property |
| def testsuite(self): |
| """Get test suite.""" |
| return self._testsuite |
| |
| @property |
| def test_cmd(self): |
| """Get test command.""" |
| return self._test_cmd |
| |
| @property |
| def supported_arch(self): |
| """Get list of architectures this test can run against.""" |
| return self._supported_arch |
| |
| @property |
| def supported_bits(self): |
| """Get list of versions (32 or 64 bit) of the test case that can run.""" |
| return self._supported_bits |
| |
| def IsRelevant(self, cpu_abi, n_bit): |
| """Checks whether this test case can run in n_bit against this cpu_abi. |
| |
| Returns: |
| True if this testcase can run; False otherwise. |
| """ |
| if cpu_abi is None or n_bit is None: |
| return False |
| |
| if not n_bit in self._supported_bits: |
| return False |
| |
| for arch in self._supported_arch: |
| if cpu_abi.find(arch) >= 0: |
| return True |
| |
| return False |
| |