/* * Copyright (c) 2022-2024 Huawei Device Co., Ltd. * 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. */ #include #include #include #include "HdfUsbdBenchmarkTransferTest.h" #include "hdf_log.h" #include "securec.h" #include "v1_1/iusb_interface.h" using namespace benchmark::internal; using namespace OHOS; using namespace OHOS::USB; using namespace std; using namespace OHOS::HDI::Usb::V1_0; using namespace OHOS::HDI::Usb::V1_1; const int SLEEP_TIME = 3; const uint32_t MAX_BUFFER_LENGTH = 255; const uint8_t INTERFACEID_OK = 1; // data interface have 2 point : 1->bulk_out 2->bulk_in const uint8_t POINTID_BULK_IN = USB_ENDPOINT_DIR_IN | 2; const uint8_t POINTID_BULK_OUT = USB_ENDPOINT_DIR_OUT | 1; const int32_t ASHMEM_MAX_SIZE = 1024; const uint8_t SAMPLE_DATA_1 = 1; const uint8_t SAMPLE_DATA_2 = 2; const uint8_t SAMPLE_DATA_3 = 3; const int32_t TRANSFER_TIME_OUT = 1000; constexpr int32_t ITERATION_FREQUENCY = 100; constexpr int32_t REPETITION_FREQUENCY = 3; UsbDev HdfUsbdBenchmarkTransferTest::dev_ = { 0, 0 }; namespace { sptr g_usbInterface = nullptr; int32_t InitAshmemOne(sptr& asmptr, int32_t asmSize, uint8_t rflg) { asmptr = Ashmem::CreateAshmem("ttashmem000", asmSize); if (asmptr == nullptr) { return HDF_FAILURE; } asmptr->MapReadAndWriteAshmem(); if (rflg == 0) { uint8_t tdata[ASHMEM_MAX_SIZE]; int32_t offset = 0; int32_t tlen = 0; int32_t retSafe = memset_s(tdata, sizeof(tdata), 'Y', ASHMEM_MAX_SIZE); if (retSafe != EOK) { return HDF_FAILURE; } while (offset < asmSize) { tlen = (asmSize - offset) < ASHMEM_MAX_SIZE ? (asmSize - offset) : ASHMEM_MAX_SIZE; asmptr->WriteToAshmem(tdata, tlen, offset); offset += tlen; } } return HDF_SUCCESS; } int32_t SwitchErrCode(int32_t ret) { return ret == HDF_ERR_NOT_SUPPORT ? HDF_SUCCESS : ret; } void HdfUsbdBenchmarkTransferTest::SetUp(const ::benchmark::State& state) { g_usbInterface = OHOS::HDI::Usb::V1_1::IUsbInterface::Get(); ASSERT_NE(g_usbInterface, nullptr); auto ret = g_usbInterface->SetPortRole(DEFAULT_PORT_ID, POWER_ROLE_SOURCE, DATA_ROLE_HOST); sleep(SLEEP_TIME); ret = SwitchErrCode(ret); ASSERT_EQ(0, ret); } void HdfUsbdBenchmarkTransferTest::TearDown(const ::benchmark::State& state){} void HdfUsbdBenchmarkTransferTest::InitPara(const sptr &subscriber) { auto ret = g_usbInterface->BindUsbdSubscriber(subscriber); ASSERT_EQ(0, ret); dev_ = {subscriber->busNum_, subscriber->devAddr_}; ret = g_usbInterface->OpenDevice(dev_); ASSERT_EQ(0, ret); } void HdfUsbdBenchmarkTransferTest::ReleasePara(const sptr &subscriber) { ASSERT_TRUE(g_usbInterface != nullptr); auto ret = g_usbInterface->UnbindUsbdSubscriber(subscriber); EXPECT_EQ(0, ret); ret = g_usbInterface->CloseDevice(dev_); ASSERT_EQ(0, ret); } /** * @tc.name: SUB_USB_HostManager_HDI_Performance_1300 * @tc.desc: Benchmark test * @tc.desc: Test functions to ControlTransferRead(const UsbDev &dev, UsbCtrlTransfer &ctrl, * std::vector &data); * @tc.desc: Positive test: parameters correctly, standard request: get configuration * @tc.type: FUNC */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_1300) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); InitPara(subscriber); struct UsbDev dev = dev_; std::vector bufferData(MAX_BUFFER_LENGTH); struct UsbCtrlTransfer ctrlparmas = {USB_ENDPOINT_DIR_IN, USB_DDK_REQ_GET_CONFIGURATION, 0, 0, TRANSFER_TIME_OUT}; auto ret = -1; for (auto _ : st) { ret = g_usbInterface->ControlTransferRead(dev, ctrlparmas, bufferData); } ASSERT_EQ(0, ret); ReleasePara(subscriber); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_1300) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); /** * @tc.name: SUB_USB_HostManager_HDI_Performance_2000 * @tc.desc: Benchmark test * @tc.desc: Test functions to ControlTransferWrite(const UsbDev &dev, UsbCtrlTransfer &ctrl, * std::vector &data); * @tc.desc: Positive test: parameters correctly * @tc.type: FUNC */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_2000) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); InitPara(subscriber); struct UsbDev dev = dev_; std::vector bufferData(MAX_BUFFER_LENGTH); bufferData.push_back(SAMPLE_DATA_1); bufferData.push_back(SAMPLE_DATA_2); bufferData.push_back(SAMPLE_DATA_3); struct UsbCtrlTransfer ctrlparmas = {USB_ENDPOINT_DIR_OUT, USB_DDK_REQ_GET_CONFIGURATION, 0, 0, TRANSFER_TIME_OUT}; auto ret = -1; for (auto _ : st) { ret = g_usbInterface->ControlTransferWrite(dev, ctrlparmas, bufferData); } ASSERT_EQ(0, ret); ReleasePara(subscriber); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_2000) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); /** * @tc.name: SUB_USB_HostManager_HDI_Performance_1400 * @tc.desc: Benchmark test * @tc.desc: Test functions to BulkTransferRead(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, * std::vector &data); * @tc.desc: Positive test: parameters correctly * @tc.type: FUNC */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_1400) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); InitPara(subscriber); struct UsbDev dev = dev_; uint8_t interfaceId = INTERFACEID_OK; uint8_t pointId = POINTID_BULK_IN; auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1); ASSERT_EQ(0, ret); OHOS::HDI::Usb::V1_0::UsbPipe pipe = { interfaceId, pointId }; std::vector bufferData(MAX_BUFFER_LENGTH); for (auto _ : st) { ret = g_usbInterface->BulkTransferRead(dev, pipe, TRANSFER_TIME_OUT, bufferData); } ASSERT_EQ(0, ret); ReleasePara(subscriber); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_1400) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); /** * @tc.name: SUB_USB_HostManager_HDI_Performance_1500 * @tc.desc: Benchmark test * @tc.desc: Test functions to BulkTransferWrite(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, * std::vector &data); * @tc.desc: Positive test: parameters correctly * @tc.type: FUNC */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_1500) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); InitPara(subscriber); struct UsbDev dev = dev_; uint8_t interfaceId = INTERFACEID_OK; uint8_t pointId = POINTID_BULK_OUT; auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1); ASSERT_EQ(0, ret); OHOS::HDI::Usb::V1_0::UsbPipe pipe = { interfaceId, pointId }; std::vector bufferData = {'b', 'u', 'l', 'k', 'w', 'r', 'i', 't', 'e', '0', '1'}; for (auto _ : st) { ret = g_usbInterface->BulkTransferWrite(dev, pipe, TRANSFER_TIME_OUT, bufferData); } ASSERT_EQ(0, ret); ReleasePara(subscriber); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_1500) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); /** * @tc.name: SUB_USB_HostManager_HDI_Performance_1600 * @tc.desc: Benchmark test * @tc.desc: Test functions to InterruptTransferRead(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, * std::vector &data); * @tc.desc: Positive test: parameters correctly * @tc.type: FUNC */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_1600) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); InitPara(subscriber); struct UsbDev dev = dev_; uint8_t interfaceId = INTERFACEID_OK; uint8_t pointId = POINTID_BULK_IN; auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1); ASSERT_EQ(0, ret); OHOS::HDI::Usb::V1_0::UsbPipe pipe = { interfaceId, pointId }; std::vector bufferData(MAX_BUFFER_LENGTH); for (auto _ : st) { ret = g_usbInterface->InterruptTransferRead(dev, pipe, TRANSFER_TIME_OUT, bufferData); } ASSERT_EQ(0, ret); ReleasePara(subscriber); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_1600) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); /** * @tc.name: SUB_USB_HostManager_HDI_Performance_1700 * @tc.desc: Benchmark test * @tc.desc: Test functions to InterruptTransferWrite(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, * std::vector &data); * @tc.desc: Positive test: parameters correctly * @tc.type: FUNC */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_1700) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); InitPara(subscriber); struct UsbDev dev = dev_; uint8_t interfaceId = INTERFACEID_OK; uint8_t pointId = POINTID_BULK_OUT; auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1); ASSERT_EQ(0, ret); OHOS::HDI::Usb::V1_0::UsbPipe pipe = { interfaceId, pointId }; std::vector bufferData = {'i', 'n', 't', 'w', 'r', 'i', 't', 'e', '0', '1'}; for (auto _ : st) { ret = g_usbInterface->InterruptTransferWrite(dev, pipe, TRANSFER_TIME_OUT, bufferData); } ASSERT_EQ(0, ret); ReleasePara(subscriber); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_1700) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); /** * @tc.name: SUB_USB_HostManager_HDI_Performance_1800 * @tc.desc: Benchmark test * @tc.desc: Test functions to IsoTransferRead(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, * std::vector &data); * @tc.desc: Positive test: parameters correctly * @tc.type: FUNC */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_1800) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); InitPara(subscriber); struct UsbDev dev = dev_; uint8_t interfaceId = INTERFACEID_OK; uint8_t pointId = POINTID_BULK_IN; auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1); ASSERT_EQ(0, ret); OHOS::HDI::Usb::V1_0::UsbPipe pipe = { interfaceId, pointId }; std::vector bufferData(MAX_BUFFER_LENGTH); for (auto _ : st) { ret = g_usbInterface->IsoTransferRead(dev, pipe, TRANSFER_TIME_OUT, bufferData); } ASSERT_EQ(0, ret); ReleasePara(subscriber); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_1800) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); /** * @tc.name: SUB_USB_HostManager_HDI_Performance_1900 * @tc.desc: Benchmark test * @tc.desc: Test functions to IsoTransferWrite(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, * std::vector &data); * @tc.desc: Positive test: parameters correctly * @tc.type: FUNC */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_1900) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); InitPara(subscriber); struct UsbDev dev = dev_; uint8_t interfaceId = INTERFACEID_OK; uint8_t pointId = POINTID_BULK_OUT; auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1); ASSERT_EQ(0, ret); OHOS::HDI::Usb::V1_0::UsbPipe pipe = { interfaceId, pointId }; std::vector bufferData = {'i', 's', 'o', 'w', 'r', 'i', 't', 'e', '0', '1'}; for (auto _ : st) { ret = g_usbInterface->IsoTransferWrite(dev, pipe, TRANSFER_TIME_OUT, bufferData); } ASSERT_EQ(0, ret); ReleasePara(subscriber); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_1900) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); /** * @tc.name: SUB_USB_HostManager_HDI_Performance_2200 * @tc.desc: Benchmark test * @tc.desc: Test functions to int32_t BulkWrite(const UsbDev &dev, const UsbPipe &pipe, const sptr &ashmem) * @tc.desc: Positive test: parameters correctly * @tc.type: FUNC */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_2200) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); InitPara(subscriber); sptr ashmem; uint8_t rflg = 0; int32_t asmSize = MAX_BUFFER_LENGTH; struct UsbDev dev = dev_; uint8_t interfaceId = INTERFACEID_OK; uint8_t pointId = POINTID_BULK_IN; auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1); ASSERT_EQ(0, ret); OHOS::HDI::Usb::V1_0::UsbPipe pipe = { interfaceId, pointId }; (void)InitAshmemOne(ashmem, asmSize, rflg); for (auto _ : st) { ret = g_usbInterface->BulkWrite(dev, pipe, ashmem); } ASSERT_EQ(ret, 0); ReleasePara(subscriber); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_2200) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); /** * @tc.name: SUB_USB_HostManager_HDI_Performance_2300 * @tc.desc: Benchmark test * @tc.desc: Test functions to int32_t BulkRead(const UsbDev &dev, const UsbPipe &pipe, const sptr &ashmem) * @tc.desc: Positive test: parameters correctly * @tc.type: FUNC */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_2300) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); InitPara(subscriber); sptr ashmem; uint8_t rflg = 0; int32_t asmSize = MAX_BUFFER_LENGTH; struct UsbDev dev = dev_; uint8_t interfaceId = INTERFACEID_OK; uint8_t pointId = POINTID_BULK_IN; auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1); ASSERT_EQ(0, ret); OHOS::HDI::Usb::V1_0::UsbPipe pipe = { interfaceId, pointId }; (void)InitAshmemOne(ashmem, asmSize, rflg); for (auto _ : st) { ret = g_usbInterface->BulkRead(dev, pipe, ashmem); } ASSERT_EQ(ret, 0); ReleasePara(subscriber); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_2300) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); /** * @tc.name: SUB_USB_HostManager_HDI_Performance_2400 * @tc.desc: Benchmark test * @tc.desc: int32_t RegBulkCallback(const UsbDev &dev, const UsbPipe &pipe, const sptr &cb) * @tc.desc: Positive test: parameters correctly * @tc.type: FUNC */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_2400) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); InitPara(subscriber); struct UsbDev dev = dev_; uint8_t interfaceId = INTERFACEID_OK; uint8_t pointId = POINTID_BULK_OUT; OHOS::HDI::Usb::V1_0::UsbPipe pipe = {interfaceId, pointId}; sptr usbdBulkCallback = new UsbdBulkCallbackTest(); auto ret = -1; for (auto _ : st) { ret = g_usbInterface->RegBulkCallback(dev, pipe, usbdBulkCallback); } ASSERT_EQ(ret, 0); ReleasePara(subscriber); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_2400) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); /** * @tc.name: SUB_USB_HostManager_HDI_Performance_2500 * @tc.desc: Benchmark test * @tc.desc: Test functions to int32_t UnRegBulkCallback(const UsbDev &dev, const UsbPipe &pipe) * @tc.desc: Positive test: parameters correctly * @tc.type: FUNC */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_2500) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); InitPara(subscriber); struct UsbDev dev = dev_; uint8_t interfaceId = INTERFACEID_OK; uint8_t pointId = POINTID_BULK_OUT; OHOS::HDI::Usb::V1_0::UsbPipe pipe = {interfaceId, pointId}; sptr usbdBulkCallback = new UsbdBulkCallbackTest(); auto ret = g_usbInterface->RegBulkCallback(dev, pipe, usbdBulkCallback); ASSERT_EQ(ret, 0); for (auto _ : st) { ret = g_usbInterface->UnRegBulkCallback(dev, pipe); } ASSERT_EQ(ret, 0); ReleasePara(subscriber); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_2500) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); /** * @tc.name: SUB_USB_HostManager_HDI_Performance_2600 * @tc.desc: Benchmark test * @tc.desc: Test functions to int32_t BindUsbdSubscriber(const sptr &subscriber) * @tc.desc: Positive test: parameters correctly * @tc.type: FUNC */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_2600) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); InitPara(subscriber); auto ret = -1; for (auto _ : st) { ret = g_usbInterface->BindUsbdSubscriber(subscriber); } ASSERT_EQ(0, ret); ReleasePara(subscriber); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_2600) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); /** * @tc.name: SUB_USB_HostManager_HDI_Performance_2700 * @tc.desc: Benchmark test * @tc.desc: Test functions to int32_t UnbindUsbdSubscriber(const sptr &subscriber) * @tc.desc: Positive test: parameters correctly * @tc.type: FUNC */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_2700) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); auto ret = -1; for (auto _ : st) { ret = g_usbInterface->BindUsbdSubscriber(subscriber); dev_ = {subscriber->busNum_, subscriber->devAddr_}; ret = g_usbInterface->UnbindUsbdSubscriber(subscriber); } ASSERT_EQ(0, ret); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, SUB_USB_HostManager_HDI_Performance_2700) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); /** * @tc.number : SUB_USB_HostManager_HDI_Performance_3200 * @tc.name : BulkTransferReadwithLengthBenchmarkTest * @tc.desc : Test functions to BulkTransferReadwithLength benchmark test * @tc.desc : BulkTransferReadwithLength ([in] struct UsbDev dev, [in] struct UsbPipe pipe, [in] int timeout, * [in] int length, [out] unsigned char[] data) * @tc.desc : Positive test: parameters correctly * @tc.size : MediumTest * @tc.type : Function * @tc.level : Level 3 */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, BulkTransferReadwithLengthBenchmarkTest) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); InitPara(subscriber); struct UsbDev dev = dev_; uint8_t interfaceId = INTERFACEID_OK; uint8_t pointid = POINTID_BULK_IN; auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1); ASSERT_EQ(0, ret); OHOS::HDI::Usb::V1_0::UsbPipe pipe = {interfaceId, pointid}; for (auto _ : st) { std::vector bufferData(MAX_BUFFER_LENGTH); ret = g_usbInterface->BulkTransferReadwithLength(dev, pipe, TRANSFER_TIME_OUT, bufferData.size(), bufferData); } EXPECT_EQ(0, ret); ReleasePara(subscriber); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, BulkTransferReadwithLengthBenchmarkTest) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); /** * @tc.number : SUB_USB_HostManager_HDI_Performance_3300 * @tc.name : ControlTransferReadwithLengthBenchmarkTest * @tc.desc : Test functions to ControlTransferReadwithLength benchmark test * @tc.desc : ControlTransferReadwithLength ([in] struct UsbDev dev, [in] struct UsbPipe pipe, [in] int timeout, * [in] int length, [out] unsigned char[] data) * @tc.desc : Positive test: parameters correctly * @tc.size : MediumTest * @tc.type : Function * @tc.level : Level 3 */ BENCHMARK_F(HdfUsbdBenchmarkTransferTest, ControlTransferReadwithLengthBenchmarkTest) (benchmark::State& st) { ASSERT_TRUE(g_usbInterface != nullptr); sptr subscriber = new UsbSubscriberTest(); ASSERT_TRUE(subscriber != nullptr); InitPara(subscriber); struct UsbDev dev = dev_; std::vector bufferData(MAX_BUFFER_LENGTH); struct UsbCtrlTransferParams ctrlparmas = { USB_ENDPOINT_DIR_IN, USB_DDK_REQ_GET_CONFIGURATION, 0, 0, 0, TRANSFER_TIME_OUT}; auto ret = -1; for (auto _ : st) { ret = g_usbInterface->ControlTransferReadwithLength(dev, ctrlparmas, bufferData); } EXPECT_EQ(0, ret); ReleasePara(subscriber); } BENCHMARK_REGISTER_F(HdfUsbdBenchmarkTransferTest, ControlTransferReadwithLengthBenchmarkTest) ->Iterations(ITERATION_FREQUENCY) ->Repetitions(REPETITION_FREQUENCY) ->ReportAggregatesOnly(); } // namespace BENCHMARK_MAIN();