Home | History | Annotate | Download | only in DRIVER
      1 #include "android/hardware/tests/msgq/1.0/TestMsgQ.vts.h"
      2 #include "vts_measurement.h"
      3 #include <android-base/logging.h>
      4 #include <android/hidl/allocator/1.0/IAllocator.h>
      5 #include <fmq/MessageQueue.h>
      6 #include <sys/stat.h>
      7 #include <unistd.h>
      8 
      9 
     10 using namespace android::hardware::tests::msgq::V1_0;
     11 namespace android {
     12 namespace vts {
     13 ::android::hardware::tests::msgq::V1_0::ITestMsgQ::EventFlagBits EnumValue__android__hardware__tests__msgq__V1_0__ITestMsgQ__EventFlagBits(const ScalarDataValueMessage& arg) {
     14     return (::android::hardware::tests::msgq::V1_0::ITestMsgQ::EventFlagBits) arg.uint32_t();
     15 }
     16 uint32_t Random__android__hardware__tests__msgq__V1_0__ITestMsgQ__EventFlagBits() {
     17     uint32_t choice = (uint32_t) rand() / 2;
     18     if (choice == (uint32_t) 1UL) return static_cast<uint32_t>(::android::hardware::tests::msgq::V1_0::ITestMsgQ::EventFlagBits::FMQ_NOT_EMPTY);
     19     if (choice == (uint32_t) 2UL) return static_cast<uint32_t>(::android::hardware::tests::msgq::V1_0::ITestMsgQ::EventFlagBits::FMQ_NOT_FULL);
     20     return static_cast<uint32_t>(::android::hardware::tests::msgq::V1_0::ITestMsgQ::EventFlagBits::FMQ_NOT_EMPTY);
     21 }
     22 bool Verify__android__hardware__tests__msgq__V1_0__ITestMsgQ__EventFlagBits(const VariableSpecificationMessage& expected_result __attribute__((__unused__)), const VariableSpecificationMessage& actual_result __attribute__((__unused__))){
     23     if (actual_result.scalar_value().uint32_t() != expected_result.scalar_value().uint32_t()) { return false; }
     24     return true;
     25 }
     26 
     27 void SetResult__android__hardware__tests__msgq__V1_0__ITestMsgQ__EventFlagBits(VariableSpecificationMessage* result_msg, ::android::hardware::tests::msgq::V1_0::ITestMsgQ::EventFlagBits result_value __attribute__((__unused__))){
     28     result_msg->set_type(TYPE_ENUM);
     29     result_msg->set_scalar_type("uint32_t");
     30     result_msg->mutable_scalar_value()->set_uint32_t(static_cast<uint32_t>(result_value));
     31 }
     32 
     33 bool FuzzerExtended_android_hardware_tests_msgq_V1_0_ITestMsgQ::GetService(bool get_stub, const char* service_name) {
     34     static bool initialized = false;
     35     if (!initialized) {
     36         LOG(INFO) << "HIDL getService";
     37         if (service_name) {
     38           LOG(INFO) << "  - service name: " << service_name;
     39         }
     40         hw_binder_proxy_ = ::android::hardware::tests::msgq::V1_0::ITestMsgQ::getService(service_name, get_stub);
     41         if (hw_binder_proxy_ == nullptr) {
     42             LOG(ERROR) << "getService() returned a null pointer.";
     43             return false;
     44         }
     45         LOG(DEBUG) << "hw_binder_proxy_ = " << hw_binder_proxy_.get();
     46         initialized = true;
     47     }
     48     return true;
     49 }
     50 
     51 
     52 ::android::hardware::Return<void> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::configureFmqSyncReadWrite(
     53     std::function<void(bool arg0,const ::android::hardware::MQDescriptorSync<uint16_t>& arg1)> cb) {
     54     LOG(INFO) << "configureFmqSyncReadWrite called";
     55     AndroidSystemCallbackRequestMessage callback_message;
     56     callback_message.set_id(GetCallbackID("configureFmqSyncReadWrite"));
     57     callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::configureFmqSyncReadWrite");
     58     RpcCallToAgent(callback_message, callback_socket_name_);
     59     cb(static_cast<bool>(0), ::android::hardware::MQDescriptorSync<uint16_t>());
     60     return ::android::hardware::Void();
     61 }
     62 
     63 ::android::hardware::Return<void> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::getFmqUnsyncWrite(
     64     bool arg0 __attribute__((__unused__)), std::function<void(bool arg0,const ::android::hardware::MQDescriptorUnsync<uint16_t>& arg1)> cb) {
     65     LOG(INFO) << "getFmqUnsyncWrite called";
     66     AndroidSystemCallbackRequestMessage callback_message;
     67     callback_message.set_id(GetCallbackID("getFmqUnsyncWrite"));
     68     callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::getFmqUnsyncWrite");
     69     VariableSpecificationMessage* var_msg0 = callback_message.add_arg();
     70     var_msg0->set_type(TYPE_SCALAR);
     71     var_msg0->set_scalar_type("bool_t");
     72     var_msg0->mutable_scalar_value()->set_bool_t(arg0);
     73     RpcCallToAgent(callback_message, callback_socket_name_);
     74     cb(static_cast<bool>(0), ::android::hardware::MQDescriptorUnsync<uint16_t>());
     75     return ::android::hardware::Void();
     76 }
     77 
     78 ::android::hardware::Return<bool> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestWriteFmqSync(
     79     int32_t arg0 __attribute__((__unused__))) {
     80     LOG(INFO) << "requestWriteFmqSync called";
     81     AndroidSystemCallbackRequestMessage callback_message;
     82     callback_message.set_id(GetCallbackID("requestWriteFmqSync"));
     83     callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestWriteFmqSync");
     84     VariableSpecificationMessage* var_msg0 = callback_message.add_arg();
     85     var_msg0->set_type(TYPE_SCALAR);
     86     var_msg0->set_scalar_type("int32_t");
     87     var_msg0->mutable_scalar_value()->set_int32_t(arg0);
     88     RpcCallToAgent(callback_message, callback_socket_name_);
     89     return static_cast<bool>(0);
     90 }
     91 
     92 ::android::hardware::Return<bool> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestReadFmqSync(
     93     int32_t arg0 __attribute__((__unused__))) {
     94     LOG(INFO) << "requestReadFmqSync called";
     95     AndroidSystemCallbackRequestMessage callback_message;
     96     callback_message.set_id(GetCallbackID("requestReadFmqSync"));
     97     callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestReadFmqSync");
     98     VariableSpecificationMessage* var_msg0 = callback_message.add_arg();
     99     var_msg0->set_type(TYPE_SCALAR);
    100     var_msg0->set_scalar_type("int32_t");
    101     var_msg0->mutable_scalar_value()->set_int32_t(arg0);
    102     RpcCallToAgent(callback_message, callback_socket_name_);
    103     return static_cast<bool>(0);
    104 }
    105 
    106 ::android::hardware::Return<bool> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestWriteFmqUnsync(
    107     int32_t arg0 __attribute__((__unused__))) {
    108     LOG(INFO) << "requestWriteFmqUnsync called";
    109     AndroidSystemCallbackRequestMessage callback_message;
    110     callback_message.set_id(GetCallbackID("requestWriteFmqUnsync"));
    111     callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestWriteFmqUnsync");
    112     VariableSpecificationMessage* var_msg0 = callback_message.add_arg();
    113     var_msg0->set_type(TYPE_SCALAR);
    114     var_msg0->set_scalar_type("int32_t");
    115     var_msg0->mutable_scalar_value()->set_int32_t(arg0);
    116     RpcCallToAgent(callback_message, callback_socket_name_);
    117     return static_cast<bool>(0);
    118 }
    119 
    120 ::android::hardware::Return<bool> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestReadFmqUnsync(
    121     int32_t arg0 __attribute__((__unused__))) {
    122     LOG(INFO) << "requestReadFmqUnsync called";
    123     AndroidSystemCallbackRequestMessage callback_message;
    124     callback_message.set_id(GetCallbackID("requestReadFmqUnsync"));
    125     callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestReadFmqUnsync");
    126     VariableSpecificationMessage* var_msg0 = callback_message.add_arg();
    127     var_msg0->set_type(TYPE_SCALAR);
    128     var_msg0->set_scalar_type("int32_t");
    129     var_msg0->mutable_scalar_value()->set_int32_t(arg0);
    130     RpcCallToAgent(callback_message, callback_socket_name_);
    131     return static_cast<bool>(0);
    132 }
    133 
    134 ::android::hardware::Return<void> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestBlockingRead(
    135     int32_t arg0 __attribute__((__unused__))) {
    136     LOG(INFO) << "requestBlockingRead called";
    137     AndroidSystemCallbackRequestMessage callback_message;
    138     callback_message.set_id(GetCallbackID("requestBlockingRead"));
    139     callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestBlockingRead");
    140     VariableSpecificationMessage* var_msg0 = callback_message.add_arg();
    141     var_msg0->set_type(TYPE_SCALAR);
    142     var_msg0->set_scalar_type("int32_t");
    143     var_msg0->mutable_scalar_value()->set_int32_t(arg0);
    144     RpcCallToAgent(callback_message, callback_socket_name_);
    145     return ::android::hardware::Void();
    146 }
    147 
    148 ::android::hardware::Return<void> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestBlockingReadDefaultEventFlagBits(
    149     int32_t arg0 __attribute__((__unused__))) {
    150     LOG(INFO) << "requestBlockingReadDefaultEventFlagBits called";
    151     AndroidSystemCallbackRequestMessage callback_message;
    152     callback_message.set_id(GetCallbackID("requestBlockingReadDefaultEventFlagBits"));
    153     callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestBlockingReadDefaultEventFlagBits");
    154     VariableSpecificationMessage* var_msg0 = callback_message.add_arg();
    155     var_msg0->set_type(TYPE_SCALAR);
    156     var_msg0->set_scalar_type("int32_t");
    157     var_msg0->mutable_scalar_value()->set_int32_t(arg0);
    158     RpcCallToAgent(callback_message, callback_socket_name_);
    159     return ::android::hardware::Void();
    160 }
    161 
    162 ::android::hardware::Return<void> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestBlockingReadRepeat(
    163     int32_t arg0 __attribute__((__unused__)),
    164     int32_t arg1 __attribute__((__unused__))) {
    165     LOG(INFO) << "requestBlockingReadRepeat called";
    166     AndroidSystemCallbackRequestMessage callback_message;
    167     callback_message.set_id(GetCallbackID("requestBlockingReadRepeat"));
    168     callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestBlockingReadRepeat");
    169     VariableSpecificationMessage* var_msg0 = callback_message.add_arg();
    170     var_msg0->set_type(TYPE_SCALAR);
    171     var_msg0->set_scalar_type("int32_t");
    172     var_msg0->mutable_scalar_value()->set_int32_t(arg0);
    173     VariableSpecificationMessage* var_msg1 = callback_message.add_arg();
    174     var_msg1->set_type(TYPE_SCALAR);
    175     var_msg1->set_scalar_type("int32_t");
    176     var_msg1->mutable_scalar_value()->set_int32_t(arg1);
    177     RpcCallToAgent(callback_message, callback_socket_name_);
    178     return ::android::hardware::Void();
    179 }
    180 
    181 sp<::android::hardware::tests::msgq::V1_0::ITestMsgQ> VtsFuzzerCreateVts_android_hardware_tests_msgq_V1_0_ITestMsgQ(const string& callback_socket_name) {
    182     static sp<::android::hardware::tests::msgq::V1_0::ITestMsgQ> result;
    183     result = new Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ(callback_socket_name);
    184     return result;
    185 }
    186 
    187 bool FuzzerExtended_android_hardware_tests_msgq_V1_0_ITestMsgQ::Fuzz(
    188     FunctionSpecificationMessage* /*func_msg*/,
    189     void** /*result*/, const string& /*callback_socket_name*/) {
    190     return true;
    191 }
    192 bool FuzzerExtended_android_hardware_tests_msgq_V1_0_ITestMsgQ::GetAttribute(
    193     FunctionSpecificationMessage* /*func_msg*/,
    194     void** /*result*/) {
    195     LOG(ERROR) << "attribute not found.";
    196     return false;
    197 }
    198 bool FuzzerExtended_android_hardware_tests_msgq_V1_0_ITestMsgQ::CallFunction(
    199     const FunctionSpecificationMessage& func_msg,
    200     const string& callback_socket_name __attribute__((__unused__)),
    201     FunctionSpecificationMessage* result_msg) {
    202     const char* func_name = func_msg.name().c_str();
    203     if (hw_binder_proxy_ == nullptr) {
    204         LOG(ERROR) << "hw_binder_proxy_ is null. ";
    205         return false;
    206     }
    207     if (!strcmp(func_name, "configureFmqSyncReadWrite")) {
    208         LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get();
    209         bool result0;
    210         std::unique_ptr<::android::hardware::MQDescriptorSync<uint16_t>> result1;
    211         hw_binder_proxy_->configureFmqSyncReadWrite([&](bool arg0,const ::android::hardware::MQDescriptorSync<uint16_t>& arg1){
    212             LOG(INFO) << "callback configureFmqSyncReadWrite called";
    213             result0 = arg0;
    214             result1.reset(new (std::nothrow) ::android::hardware::MQDescriptorSync<uint16_t>(arg1));
    215         });
    216         result_msg->set_name("configureFmqSyncReadWrite");
    217         VariableSpecificationMessage* result_val_0 = result_msg->add_return_type_hidl();
    218         result_val_0->set_type(TYPE_SCALAR);
    219         result_val_0->set_scalar_type("bool_t");
    220         result_val_0->mutable_scalar_value()->set_bool_t(result0);
    221         VariableSpecificationMessage* result_val_1 = result_msg->add_return_type_hidl();
    222         result_val_1->set_type(TYPE_FMQ_SYNC);
    223         /* ERROR: TYPE_FMQ_SYNC is not supported yet. */
    224         return true;
    225     }
    226     if (!strcmp(func_name, "getFmqUnsyncWrite")) {
    227         bool arg0 = 0;
    228         arg0 = func_msg.arg(0).scalar_value().bool_t();
    229         LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get();
    230         bool result0;
    231         std::unique_ptr<::android::hardware::MQDescriptorUnsync<uint16_t>> result1;
    232         hw_binder_proxy_->getFmqUnsyncWrite(arg0, [&](bool arg0,const ::android::hardware::MQDescriptorUnsync<uint16_t>& arg1){
    233             LOG(INFO) << "callback getFmqUnsyncWrite called";
    234             result0 = arg0;
    235             result1.reset(new (std::nothrow) ::android::hardware::MQDescriptorUnsync<uint16_t>(arg1));
    236         });
    237         result_msg->set_name("getFmqUnsyncWrite");
    238         VariableSpecificationMessage* result_val_0 = result_msg->add_return_type_hidl();
    239         result_val_0->set_type(TYPE_SCALAR);
    240         result_val_0->set_scalar_type("bool_t");
    241         result_val_0->mutable_scalar_value()->set_bool_t(result0);
    242         VariableSpecificationMessage* result_val_1 = result_msg->add_return_type_hidl();
    243         result_val_1->set_type(TYPE_FMQ_UNSYNC);
    244         /* ERROR: TYPE_FMQ_UNSYNC is not supported yet. */
    245         return true;
    246     }
    247     if (!strcmp(func_name, "requestWriteFmqSync")) {
    248         int32_t arg0 = 0;
    249         arg0 = func_msg.arg(0).scalar_value().int32_t();
    250         LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get();
    251         bool result0;
    252         result0 = hw_binder_proxy_->requestWriteFmqSync(arg0);
    253         result_msg->set_name("requestWriteFmqSync");
    254         VariableSpecificationMessage* result_val_0 = result_msg->add_return_type_hidl();
    255         result_val_0->set_type(TYPE_SCALAR);
    256         result_val_0->set_scalar_type("bool_t");
    257         result_val_0->mutable_scalar_value()->set_bool_t(result0);
    258         return true;
    259     }
    260     if (!strcmp(func_name, "requestReadFmqSync")) {
    261         int32_t arg0 = 0;
    262         arg0 = func_msg.arg(0).scalar_value().int32_t();
    263         LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get();
    264         bool result0;
    265         result0 = hw_binder_proxy_->requestReadFmqSync(arg0);
    266         result_msg->set_name("requestReadFmqSync");
    267         VariableSpecificationMessage* result_val_0 = result_msg->add_return_type_hidl();
    268         result_val_0->set_type(TYPE_SCALAR);
    269         result_val_0->set_scalar_type("bool_t");
    270         result_val_0->mutable_scalar_value()->set_bool_t(result0);
    271         return true;
    272     }
    273     if (!strcmp(func_name, "requestWriteFmqUnsync")) {
    274         int32_t arg0 = 0;
    275         arg0 = func_msg.arg(0).scalar_value().int32_t();
    276         LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get();
    277         bool result0;
    278         result0 = hw_binder_proxy_->requestWriteFmqUnsync(arg0);
    279         result_msg->set_name("requestWriteFmqUnsync");
    280         VariableSpecificationMessage* result_val_0 = result_msg->add_return_type_hidl();
    281         result_val_0->set_type(TYPE_SCALAR);
    282         result_val_0->set_scalar_type("bool_t");
    283         result_val_0->mutable_scalar_value()->set_bool_t(result0);
    284         return true;
    285     }
    286     if (!strcmp(func_name, "requestReadFmqUnsync")) {
    287         int32_t arg0 = 0;
    288         arg0 = func_msg.arg(0).scalar_value().int32_t();
    289         LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get();
    290         bool result0;
    291         result0 = hw_binder_proxy_->requestReadFmqUnsync(arg0);
    292         result_msg->set_name("requestReadFmqUnsync");
    293         VariableSpecificationMessage* result_val_0 = result_msg->add_return_type_hidl();
    294         result_val_0->set_type(TYPE_SCALAR);
    295         result_val_0->set_scalar_type("bool_t");
    296         result_val_0->mutable_scalar_value()->set_bool_t(result0);
    297         return true;
    298     }
    299     if (!strcmp(func_name, "requestBlockingRead")) {
    300         int32_t arg0 = 0;
    301         arg0 = func_msg.arg(0).scalar_value().int32_t();
    302         LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get();
    303         hw_binder_proxy_->requestBlockingRead(arg0);
    304         result_msg->set_name("requestBlockingRead");
    305         return true;
    306     }
    307     if (!strcmp(func_name, "requestBlockingReadDefaultEventFlagBits")) {
    308         int32_t arg0 = 0;
    309         arg0 = func_msg.arg(0).scalar_value().int32_t();
    310         LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get();
    311         hw_binder_proxy_->requestBlockingReadDefaultEventFlagBits(arg0);
    312         result_msg->set_name("requestBlockingReadDefaultEventFlagBits");
    313         return true;
    314     }
    315     if (!strcmp(func_name, "requestBlockingReadRepeat")) {
    316         int32_t arg0 = 0;
    317         arg0 = func_msg.arg(0).scalar_value().int32_t();
    318         int32_t arg1 = 0;
    319         arg1 = func_msg.arg(1).scalar_value().int32_t();
    320         LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get();
    321         hw_binder_proxy_->requestBlockingReadRepeat(arg0, arg1);
    322         result_msg->set_name("requestBlockingReadRepeat");
    323         return true;
    324     }
    325     if (!strcmp(func_name, "notifySyspropsChanged")) {
    326         LOG(INFO) << "Call notifySyspropsChanged";
    327         hw_binder_proxy_->notifySyspropsChanged();
    328         result_msg->set_name("notifySyspropsChanged");
    329         return true;
    330     }
    331     return false;
    332 }
    333 
    334 bool FuzzerExtended_android_hardware_tests_msgq_V1_0_ITestMsgQ::VerifyResults(const FunctionSpecificationMessage& expected_result __attribute__((__unused__)),
    335     const FunctionSpecificationMessage& actual_result __attribute__((__unused__))) {
    336     if (!strcmp(actual_result.name().c_str(), "configureFmqSyncReadWrite")) {
    337         if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; }
    338         if (actual_result.return_type_hidl(0).scalar_value().bool_t() != expected_result.return_type_hidl(0).scalar_value().bool_t()) { return false; }
    339         /* ERROR: TYPE_FMQ_SYNC is not supported yet. */
    340         return true;
    341     }
    342     if (!strcmp(actual_result.name().c_str(), "getFmqUnsyncWrite")) {
    343         if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; }
    344         if (actual_result.return_type_hidl(0).scalar_value().bool_t() != expected_result.return_type_hidl(0).scalar_value().bool_t()) { return false; }
    345         /* ERROR: TYPE_FMQ_UNSYNC is not supported yet. */
    346         return true;
    347     }
    348     if (!strcmp(actual_result.name().c_str(), "requestWriteFmqSync")) {
    349         if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; }
    350         if (actual_result.return_type_hidl(0).scalar_value().bool_t() != expected_result.return_type_hidl(0).scalar_value().bool_t()) { return false; }
    351         return true;
    352     }
    353     if (!strcmp(actual_result.name().c_str(), "requestReadFmqSync")) {
    354         if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; }
    355         if (actual_result.return_type_hidl(0).scalar_value().bool_t() != expected_result.return_type_hidl(0).scalar_value().bool_t()) { return false; }
    356         return true;
    357     }
    358     if (!strcmp(actual_result.name().c_str(), "requestWriteFmqUnsync")) {
    359         if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; }
    360         if (actual_result.return_type_hidl(0).scalar_value().bool_t() != expected_result.return_type_hidl(0).scalar_value().bool_t()) { return false; }
    361         return true;
    362     }
    363     if (!strcmp(actual_result.name().c_str(), "requestReadFmqUnsync")) {
    364         if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; }
    365         if (actual_result.return_type_hidl(0).scalar_value().bool_t() != expected_result.return_type_hidl(0).scalar_value().bool_t()) { return false; }
    366         return true;
    367     }
    368     if (!strcmp(actual_result.name().c_str(), "requestBlockingRead")) {
    369         if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; }
    370         return true;
    371     }
    372     if (!strcmp(actual_result.name().c_str(), "requestBlockingReadDefaultEventFlagBits")) {
    373         if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; }
    374         return true;
    375     }
    376     if (!strcmp(actual_result.name().c_str(), "requestBlockingReadRepeat")) {
    377         if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; }
    378         return true;
    379     }
    380     return false;
    381 }
    382 
    383 extern "C" {
    384 android::vts::DriverBase* vts_func_4_android_hardware_tests_msgq_V1_0_ITestMsgQ_() {
    385     return (android::vts::DriverBase*) new android::vts::FuzzerExtended_android_hardware_tests_msgq_V1_0_ITestMsgQ();
    386 }
    387 
    388 android::vts::DriverBase* vts_func_4_android_hardware_tests_msgq_V1_0_ITestMsgQ_with_arg(uint64_t hw_binder_proxy) {
    389     ::android::hardware::tests::msgq::V1_0::ITestMsgQ* arg = nullptr;
    390     if (hw_binder_proxy) {
    391         arg = reinterpret_cast<::android::hardware::tests::msgq::V1_0::ITestMsgQ*>(hw_binder_proxy);
    392     } else {
    393         LOG(INFO) << " Creating DriverBase with null proxy.";
    394     }
    395     android::vts::DriverBase* result =
    396         new android::vts::FuzzerExtended_android_hardware_tests_msgq_V1_0_ITestMsgQ(
    397             arg);
    398     if (arg != nullptr) {
    399         arg->decStrong(arg);
    400     }
    401     return result;
    402 }
    403 
    404 }
    405 }  // namespace vts
    406 }  // namespace android
    407