Home | History | Annotate | Download | only in vts_hal_hidl_target
      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 #ifndef __VTS_HAL_HIDL_TARGET_TEST_ENV_BASE_H
     18 #define __VTS_HAL_HIDL_TARGET_TEST_ENV_BASE_H
     19 
     20 #include <gtest/gtest.h>
     21 
     22 using namespace std;
     23 
     24 namespace testing {
     25 
     26 // A class for test environment setup
     27 class VtsHalHidlTargetTestEnvBase : public ::testing::Environment {
     28  public:
     29   VtsHalHidlTargetTestEnvBase() {}
     30 
     31   /*
     32    * SetUp process, should not be overridden by the test.
     33    */
     34   void SetUp() final;
     35 
     36   /*
     37    * TearDown process, should not be overridden by the test.
     38    */
     39   void TearDown() final;
     40 
     41   /*
     42    * Test should override this method for any custom setup process.
     43    */
     44   virtual void HidlSetUp() {}
     45 
     46   /*
     47    * Test should override this method for any custom teardown process.
     48    */
     49   virtual void HidlTearDown() {}
     50 
     51   /*
     52    * Test should override this method to register hal services used in the test.
     53    */
     54   virtual void registerTestServices() {}
     55 
     56   /* Parses the command line argument, extracts the vts reserved flags and
     57    * leaves other options untouched.
     58    * Must be called when the test environment is created is registered.
     59    */
     60   void init(int* argc, char** argv);
     61 
     62   /*
     63    * Adds a hal sevice identified into registeredHalServices_.
     64    */
     65   template <class T>
     66   void registerTestService() {
     67     registerTestService(T::descriptor);
     68   }
     69 
     70   /*
     71    * Gets the service name for a hal instance. Returns empty string if the hal
     72    * instance is unkonwn (not in hal_instances_).
     73    */
     74   template <class T>
     75   string getServiceName() {
     76     return getServiceName(T::descriptor);
     77   }
     78 
     79  private:
     80   /*
     81    * Parses VTS specific flags, currently support two flags:
     82    * --list_registered_services to print all registered service.
     83    * --hal_service_instance to pass a running service instance. e.g.
     84    * --hal_service_instance=android.hardware.vibrator (at) 1.0::IVibrator/default
     85    * It is possible to have mulitple --hal_service_instance options passed if
     86    * mutliple hal service is used in the test.
     87    * Returns true if successfully pased the given arg, false if arg is null or
     88    * unknown flag.
     89    */
     90   bool parseVtsTestOption(const char* arg);
     91 
     92   /*
     93    * Prints all registered sercives.
     94    */
     95   void listRegisteredServices();
     96 
     97   /*
     98    * Internal method to get the service name for a hal instance.
     99    */
    100   string getServiceName(string instanceName);
    101 
    102   /*
    103    * Internal method to register a HAL sevice identified with the FQName.
    104    */
    105   void registerTestService(string FQName);
    106 
    107   /*
    108    * Internal method to add a hal service instance.
    109    */
    110   void addHalServiceInstance(string halServiceInstance);
    111 
    112   // Map of hal instances with their correpoding service names.
    113   map<string, string> halServiceInstances_;
    114   // Set of all hal services used in the test.
    115   set<string> registeredHalServices_;
    116   // Flag to print registered hal services and exit the process.
    117   bool listService_ = false;
    118   // Flag whether init is called.
    119   bool inited_ = false;
    120 };
    121 
    122 }  // namespace testing
    123 
    124 #endif  // __VTS_HAL_HIDL_TARGET_TEST_ENV_BASE_H
    125