10485dae0Sopenharmony_ci/* 20485dae0Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 30485dae0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 40485dae0Sopenharmony_ci * you may not use this file except in compliance with the License. 50485dae0Sopenharmony_ci * You may obtain a copy of the License at 60485dae0Sopenharmony_ci * 70485dae0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 80485dae0Sopenharmony_ci * 90485dae0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 100485dae0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 110485dae0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 120485dae0Sopenharmony_ci * See the License for the specific language governing permissions and 130485dae0Sopenharmony_ci * limitations under the License. 140485dae0Sopenharmony_ci */ 150485dae0Sopenharmony_ci 160485dae0Sopenharmony_ci#include <cstring> 170485dae0Sopenharmony_ci#include <unistd.h> 180485dae0Sopenharmony_ci 190485dae0Sopenharmony_ci#include "gtest/gtest.h" 200485dae0Sopenharmony_ci 210485dae0Sopenharmony_ci#include "client_executor/include/i_aie_client.inl" 220485dae0Sopenharmony_ci#include "protocol/retcode_inner/aie_retcode_inner.h" 230485dae0Sopenharmony_ci#include "server_executor/include/server_executor.h" 240485dae0Sopenharmony_ci#include "service_dead_cb.h" 250485dae0Sopenharmony_ci#include "utils/aie_macros.h" 260485dae0Sopenharmony_ci#include "utils/constants/constants.h" 270485dae0Sopenharmony_ci#include "utils/log/aie_log.h" 280485dae0Sopenharmony_ci 290485dae0Sopenharmony_ciusing namespace OHOS::AI; 300485dae0Sopenharmony_ciusing namespace testing::ext; 310485dae0Sopenharmony_ci 320485dae0Sopenharmony_cinamespace { 330485dae0Sopenharmony_ci const int REQUEST_ID = 1; 340485dae0Sopenharmony_ci const int OPERATE_ID = 2; 350485dae0Sopenharmony_ci const long long CLIENT_INFO_VERSION = 1; 360485dae0Sopenharmony_ci const int SESSION_ID = -1; 370485dae0Sopenharmony_ci const long long ALGORITHM_INFO_CLIENT_VERSION = 1; 380485dae0Sopenharmony_ci const int ALGORITHM_SYNC_TYPE = 0; 390485dae0Sopenharmony_ci const int ALGORITHM_ASYNC_TYPE = 1; 400485dae0Sopenharmony_ci const long long ALGORITHM_VERSION = 1; 410485dae0Sopenharmony_ci const char * const CONFIG_DESCRIPTION = "Prepare config information"; 420485dae0Sopenharmony_ci const char * const PREPARE_INPUT_SYNC = "Sync prepare inputData"; 430485dae0Sopenharmony_ci const char * const PREPARE_INPUT_ASYNC = "Async prepare inputData"; 440485dae0Sopenharmony_ci} 450485dae0Sopenharmony_ci 460485dae0Sopenharmony_ciclass ClientCallback : public IClientCb { 470485dae0Sopenharmony_cipublic: 480485dae0Sopenharmony_ci ClientCallback() = default; 490485dae0Sopenharmony_ci ~ClientCallback() override = default; 500485dae0Sopenharmony_ci void OnResult(const DataInfo &result, int resultCode, int requestId) override 510485dae0Sopenharmony_ci { 520485dae0Sopenharmony_ci HILOGI("[Test]TestAieClientAsyncProcess execute ClientCallbackOnResult."\ 530485dae0Sopenharmony_ci " resultCode[%d], requestId[%d], resultData[%s], resultLength[%d].", 540485dae0Sopenharmony_ci resultCode, requestId, result.data, result.length); 550485dae0Sopenharmony_ci } 560485dae0Sopenharmony_ci}; 570485dae0Sopenharmony_ci 580485dae0Sopenharmony_ciclass PrepareFunctionTest : public testing::Test { 590485dae0Sopenharmony_cipublic: 600485dae0Sopenharmony_ci // SetUpTestCase:The preset action of the test suite is executed before the first TestCase 610485dae0Sopenharmony_ci static void SetUpTestCase() {}; 620485dae0Sopenharmony_ci 630485dae0Sopenharmony_ci // TearDownTestCase:The test suite cleanup action is executed after the last TestCase 640485dae0Sopenharmony_ci static void TearDownTestCase() {}; 650485dae0Sopenharmony_ci 660485dae0Sopenharmony_ci // SetUp:Execute before each test case 670485dae0Sopenharmony_ci void SetUp() {}; 680485dae0Sopenharmony_ci 690485dae0Sopenharmony_ci // TearDown:Execute after each test case 700485dae0Sopenharmony_ci void TearDown() {}; 710485dae0Sopenharmony_ci}; 720485dae0Sopenharmony_ci 730485dae0Sopenharmony_ci/** 740485dae0Sopenharmony_ci * @tc.name: TestAlgorithmInfo001 750485dae0Sopenharmony_ci * @tc.desc: Test preparing execution of certain synchronous plugin. 760485dae0Sopenharmony_ci * @tc.type: FUNC 770485dae0Sopenharmony_ci * @tc.require: AR000F77NN 780485dae0Sopenharmony_ci */ 790485dae0Sopenharmony_ciHWTEST_F(PrepareFunctionTest, TestAlgorithmInfo001, TestSize.Level1) 800485dae0Sopenharmony_ci{ 810485dae0Sopenharmony_ci HILOGI("[Test]TestAlgorithmInfo001."); 820485dae0Sopenharmony_ci const char *str = PREPARE_INPUT_SYNC; 830485dae0Sopenharmony_ci char *inputData = const_cast<char*>(str); 840485dae0Sopenharmony_ci int len = strlen(str) + 1; 850485dae0Sopenharmony_ci 860485dae0Sopenharmony_ci ConfigInfo configInfo {.description = CONFIG_DESCRIPTION}; 870485dae0Sopenharmony_ci 880485dae0Sopenharmony_ci ClientInfo clientInfo = { 890485dae0Sopenharmony_ci .clientVersion = CLIENT_INFO_VERSION, 900485dae0Sopenharmony_ci .clientId = INVALID_CLIENT_ID, 910485dae0Sopenharmony_ci .sessionId = SESSION_ID, 920485dae0Sopenharmony_ci .serverUid = INVALID_UID, 930485dae0Sopenharmony_ci .clientUid = INVALID_UID, 940485dae0Sopenharmony_ci .extendLen = len, 950485dae0Sopenharmony_ci .extendMsg = reinterpret_cast<unsigned char*>(inputData), 960485dae0Sopenharmony_ci }; 970485dae0Sopenharmony_ci 980485dae0Sopenharmony_ci AlgorithmInfo algoInfo = { 990485dae0Sopenharmony_ci .clientVersion = ALGORITHM_INFO_CLIENT_VERSION, 1000485dae0Sopenharmony_ci .isAsync = false, 1010485dae0Sopenharmony_ci .algorithmType = ALGORITHM_SYNC_TYPE, 1020485dae0Sopenharmony_ci .algorithmVersion = ALGORITHM_VERSION, 1030485dae0Sopenharmony_ci .isCloud = true, 1040485dae0Sopenharmony_ci .operateId = OPERATE_ID, 1050485dae0Sopenharmony_ci .requestId = REQUEST_ID, 1060485dae0Sopenharmony_ci .extendLen = len, 1070485dae0Sopenharmony_ci .extendMsg = reinterpret_cast<unsigned char*>(inputData), 1080485dae0Sopenharmony_ci }; 1090485dae0Sopenharmony_ci 1100485dae0Sopenharmony_ci ServiceDeadCb cb = ServiceDeadCb(); 1110485dae0Sopenharmony_ci int initRetCode = AieClientInit(configInfo, clientInfo, algoInfo, &cb); 1120485dae0Sopenharmony_ci ASSERT_EQ(initRetCode, RETCODE_SUCCESS); 1130485dae0Sopenharmony_ci ASSERT_TRUE(clientInfo.clientId > 0); 1140485dae0Sopenharmony_ci 1150485dae0Sopenharmony_ci DataInfo inputInfo = { 1160485dae0Sopenharmony_ci .data = reinterpret_cast<unsigned char*>(inputData), 1170485dae0Sopenharmony_ci .length = len, 1180485dae0Sopenharmony_ci }; 1190485dae0Sopenharmony_ci 1200485dae0Sopenharmony_ci DataInfo outputInfo; 1210485dae0Sopenharmony_ci int prepareRetCode = AieClientPrepare(clientInfo, algoInfo, inputInfo, outputInfo, nullptr); 1220485dae0Sopenharmony_ci ASSERT_EQ(prepareRetCode, RETCODE_SUCCESS); 1230485dae0Sopenharmony_ci ASSERT_NE(outputInfo.data, nullptr); 1240485dae0Sopenharmony_ci 1250485dae0Sopenharmony_ci AieClientRelease(clientInfo, algoInfo, inputInfo); 1260485dae0Sopenharmony_ci 1270485dae0Sopenharmony_ci AieClientDestroy(clientInfo); 1280485dae0Sopenharmony_ci} 1290485dae0Sopenharmony_ci 1300485dae0Sopenharmony_ci/** 1310485dae0Sopenharmony_ci * @tc.name: TestAlgorithmInfo002 1320485dae0Sopenharmony_ci * @tc.desc: Test preparing execution of certain asynchronous plugin. 1330485dae0Sopenharmony_ci * @tc.type: FUNC 1340485dae0Sopenharmony_ci * @tc.require: AR000F77NN 1350485dae0Sopenharmony_ci */ 1360485dae0Sopenharmony_ciHWTEST_F(PrepareFunctionTest, TestAlgorithmInfo002, TestSize.Level1) 1370485dae0Sopenharmony_ci{ 1380485dae0Sopenharmony_ci HILOGI("[Test]TestAlgorithmInfo002."); 1390485dae0Sopenharmony_ci const char *str = PREPARE_INPUT_ASYNC; 1400485dae0Sopenharmony_ci char *inputData = const_cast<char*>(str); 1410485dae0Sopenharmony_ci int len = strlen(str) + 1; 1420485dae0Sopenharmony_ci 1430485dae0Sopenharmony_ci ConfigInfo configInfo {.description = CONFIG_DESCRIPTION}; 1440485dae0Sopenharmony_ci 1450485dae0Sopenharmony_ci ClientInfo clientInfo = { 1460485dae0Sopenharmony_ci .clientVersion = CLIENT_INFO_VERSION, 1470485dae0Sopenharmony_ci .clientId = INVALID_CLIENT_ID, 1480485dae0Sopenharmony_ci .sessionId = SESSION_ID, 1490485dae0Sopenharmony_ci .serverUid = INVALID_UID, 1500485dae0Sopenharmony_ci .clientUid = INVALID_UID, 1510485dae0Sopenharmony_ci .extendLen = len, 1520485dae0Sopenharmony_ci .extendMsg = reinterpret_cast<unsigned char*>(inputData), 1530485dae0Sopenharmony_ci }; 1540485dae0Sopenharmony_ci 1550485dae0Sopenharmony_ci AlgorithmInfo algoInfo = { 1560485dae0Sopenharmony_ci .clientVersion = ALGORITHM_INFO_CLIENT_VERSION, 1570485dae0Sopenharmony_ci .isAsync = true, 1580485dae0Sopenharmony_ci .algorithmType = ALGORITHM_ASYNC_TYPE, 1590485dae0Sopenharmony_ci .algorithmVersion = ALGORITHM_VERSION, 1600485dae0Sopenharmony_ci .isCloud = true, 1610485dae0Sopenharmony_ci .operateId = OPERATE_ID, 1620485dae0Sopenharmony_ci .requestId = REQUEST_ID, 1630485dae0Sopenharmony_ci .extendLen = len, 1640485dae0Sopenharmony_ci .extendMsg = reinterpret_cast<unsigned char*>(inputData), 1650485dae0Sopenharmony_ci }; 1660485dae0Sopenharmony_ci 1670485dae0Sopenharmony_ci ServiceDeadCb cb = ServiceDeadCb(); 1680485dae0Sopenharmony_ci int initRetCode = AieClientInit(configInfo, clientInfo, algoInfo, &cb); 1690485dae0Sopenharmony_ci ASSERT_EQ(initRetCode, RETCODE_SUCCESS); 1700485dae0Sopenharmony_ci ASSERT_TRUE(clientInfo.clientId > 0); 1710485dae0Sopenharmony_ci 1720485dae0Sopenharmony_ci DataInfo inputInfo = { 1730485dae0Sopenharmony_ci .data = reinterpret_cast<unsigned char*>(inputData), 1740485dae0Sopenharmony_ci .length = len, 1750485dae0Sopenharmony_ci }; 1760485dae0Sopenharmony_ci 1770485dae0Sopenharmony_ci DataInfo outputInfo = { 1780485dae0Sopenharmony_ci .data = nullptr, 1790485dae0Sopenharmony_ci .length = 0 1800485dae0Sopenharmony_ci }; 1810485dae0Sopenharmony_ci ClientCallback callback = ClientCallback(); 1820485dae0Sopenharmony_ci int prepareRetCode = AieClientPrepare(clientInfo, algoInfo, inputInfo, outputInfo, &callback); 1830485dae0Sopenharmony_ci ASSERT_EQ(prepareRetCode, RETCODE_SUCCESS); 1840485dae0Sopenharmony_ci ASSERT_NE(outputInfo.data, nullptr); 1850485dae0Sopenharmony_ci 1860485dae0Sopenharmony_ci AieClientRelease(clientInfo, algoInfo, inputInfo); 1870485dae0Sopenharmony_ci 1880485dae0Sopenharmony_ci AieClientDestroy(clientInfo); 1890485dae0Sopenharmony_ci} 1900485dae0Sopenharmony_ci 1910485dae0Sopenharmony_ci/** 1920485dae0Sopenharmony_ci * @tc.name: TestInputInfo001 1930485dae0Sopenharmony_ci * @tc.desc: Test preparing execution of certain synchronous plugin 1940485dae0Sopenharmony_ci * with 'inputInfo.data = nullptr' and 'outputInfo.data = nullptr'. 1950485dae0Sopenharmony_ci * @tc.type: FUNC 1960485dae0Sopenharmony_ci * @tc.require: AR000F77NN 1970485dae0Sopenharmony_ci */ 1980485dae0Sopenharmony_ciHWTEST_F(PrepareFunctionTest, TestInputInfo001, TestSize.Level1) 1990485dae0Sopenharmony_ci{ 2000485dae0Sopenharmony_ci HILOGI("[Test]TestInputInfo001."); 2010485dae0Sopenharmony_ci const char *str = PREPARE_INPUT_ASYNC; 2020485dae0Sopenharmony_ci char *inputData = const_cast<char*>(str); 2030485dae0Sopenharmony_ci int len = strlen(str) + 1; 2040485dae0Sopenharmony_ci 2050485dae0Sopenharmony_ci ConfigInfo configInfo {.description = CONFIG_DESCRIPTION}; 2060485dae0Sopenharmony_ci 2070485dae0Sopenharmony_ci ClientInfo clientInfo = { 2080485dae0Sopenharmony_ci .clientVersion = CLIENT_INFO_VERSION, 2090485dae0Sopenharmony_ci .clientId = INVALID_CLIENT_ID, 2100485dae0Sopenharmony_ci .sessionId = SESSION_ID, 2110485dae0Sopenharmony_ci .serverUid = INVALID_UID, 2120485dae0Sopenharmony_ci .clientUid = INVALID_UID, 2130485dae0Sopenharmony_ci .extendLen = len, 2140485dae0Sopenharmony_ci .extendMsg = reinterpret_cast<unsigned char*>(inputData), 2150485dae0Sopenharmony_ci }; 2160485dae0Sopenharmony_ci 2170485dae0Sopenharmony_ci AlgorithmInfo algoInfo = { 2180485dae0Sopenharmony_ci .clientVersion = ALGORITHM_INFO_CLIENT_VERSION, 2190485dae0Sopenharmony_ci .isAsync = false, 2200485dae0Sopenharmony_ci .algorithmType = ALGORITHM_SYNC_TYPE, 2210485dae0Sopenharmony_ci .algorithmVersion = ALGORITHM_VERSION, 2220485dae0Sopenharmony_ci .isCloud = true, 2230485dae0Sopenharmony_ci .operateId = OPERATE_ID, 2240485dae0Sopenharmony_ci .requestId = REQUEST_ID, 2250485dae0Sopenharmony_ci .extendLen = len, 2260485dae0Sopenharmony_ci .extendMsg = reinterpret_cast<unsigned char*>(inputData), 2270485dae0Sopenharmony_ci }; 2280485dae0Sopenharmony_ci 2290485dae0Sopenharmony_ci ServiceDeadCb cb = ServiceDeadCb(); 2300485dae0Sopenharmony_ci int initRetCode = AieClientInit(configInfo, clientInfo, algoInfo, &cb); 2310485dae0Sopenharmony_ci ASSERT_EQ(initRetCode, RETCODE_SUCCESS); 2320485dae0Sopenharmony_ci ASSERT_TRUE(clientInfo.clientId > 0); 2330485dae0Sopenharmony_ci 2340485dae0Sopenharmony_ci DataInfo inputInfo = { 2350485dae0Sopenharmony_ci .data = nullptr, 2360485dae0Sopenharmony_ci .length = 0, 2370485dae0Sopenharmony_ci }; 2380485dae0Sopenharmony_ci 2390485dae0Sopenharmony_ci DataInfo outputInfo = { 2400485dae0Sopenharmony_ci .data = nullptr, 2410485dae0Sopenharmony_ci .length = 0 2420485dae0Sopenharmony_ci }; 2430485dae0Sopenharmony_ci int prepareRetCode = AieClientPrepare(clientInfo, algoInfo, inputInfo, outputInfo, nullptr); 2440485dae0Sopenharmony_ci ASSERT_EQ(prepareRetCode, RETCODE_SUCCESS); 2450485dae0Sopenharmony_ci ASSERT_NE(outputInfo.data, nullptr); 2460485dae0Sopenharmony_ci 2470485dae0Sopenharmony_ci AieClientRelease(clientInfo, algoInfo, inputInfo); 2480485dae0Sopenharmony_ci 2490485dae0Sopenharmony_ci AieClientDestroy(clientInfo); 2500485dae0Sopenharmony_ci} 2510485dae0Sopenharmony_ci 2520485dae0Sopenharmony_ci/** 2530485dae0Sopenharmony_ci * @tc.name: TestInputInfo002 2540485dae0Sopenharmony_ci * @tc.desc: Test preparing execution of certain asynchronous plugin 2550485dae0Sopenharmony_ci * with 'inputInfo.data = nullptr' and 'outputInfo.data = nullptr'. 2560485dae0Sopenharmony_ci * @tc.type: FUNC 2570485dae0Sopenharmony_ci * @tc.require: AR000F77NJ 2580485dae0Sopenharmony_ci */ 2590485dae0Sopenharmony_ciHWTEST_F(PrepareFunctionTest, TestInputInfo002, TestSize.Level1) 2600485dae0Sopenharmony_ci{ 2610485dae0Sopenharmony_ci HILOGI("[Test]TestInputInfo002."); 2620485dae0Sopenharmony_ci const char *str = PREPARE_INPUT_ASYNC; 2630485dae0Sopenharmony_ci char *inputData = const_cast<char*>(str); 2640485dae0Sopenharmony_ci int len = strlen(str) + 1; 2650485dae0Sopenharmony_ci 2660485dae0Sopenharmony_ci ConfigInfo configInfo {.description = CONFIG_DESCRIPTION}; 2670485dae0Sopenharmony_ci 2680485dae0Sopenharmony_ci ClientInfo clientInfo = { 2690485dae0Sopenharmony_ci .clientVersion = CLIENT_INFO_VERSION, 2700485dae0Sopenharmony_ci .clientId = INVALID_CLIENT_ID, 2710485dae0Sopenharmony_ci .sessionId = SESSION_ID, 2720485dae0Sopenharmony_ci .serverUid = INVALID_UID, 2730485dae0Sopenharmony_ci .clientUid = INVALID_UID, 2740485dae0Sopenharmony_ci .extendLen = len, 2750485dae0Sopenharmony_ci .extendMsg = reinterpret_cast<unsigned char*>(inputData), 2760485dae0Sopenharmony_ci }; 2770485dae0Sopenharmony_ci 2780485dae0Sopenharmony_ci AlgorithmInfo algoInfo = { 2790485dae0Sopenharmony_ci .clientVersion = ALGORITHM_INFO_CLIENT_VERSION, 2800485dae0Sopenharmony_ci .isAsync = true, 2810485dae0Sopenharmony_ci .algorithmType = ALGORITHM_ASYNC_TYPE, 2820485dae0Sopenharmony_ci .algorithmVersion = ALGORITHM_VERSION, 2830485dae0Sopenharmony_ci .isCloud = true, 2840485dae0Sopenharmony_ci .operateId = OPERATE_ID, 2850485dae0Sopenharmony_ci .requestId = REQUEST_ID, 2860485dae0Sopenharmony_ci .extendLen = len, 2870485dae0Sopenharmony_ci .extendMsg = reinterpret_cast<unsigned char*>(inputData), 2880485dae0Sopenharmony_ci }; 2890485dae0Sopenharmony_ci 2900485dae0Sopenharmony_ci ServiceDeadCb cb = ServiceDeadCb(); 2910485dae0Sopenharmony_ci int initRetCode = AieClientInit(configInfo, clientInfo, algoInfo, &cb); 2920485dae0Sopenharmony_ci ASSERT_EQ(initRetCode, RETCODE_SUCCESS); 2930485dae0Sopenharmony_ci ASSERT_TRUE(clientInfo.clientId > 0); 2940485dae0Sopenharmony_ci 2950485dae0Sopenharmony_ci DataInfo inputInfo = { 2960485dae0Sopenharmony_ci .data = nullptr, 2970485dae0Sopenharmony_ci .length = 0, 2980485dae0Sopenharmony_ci }; 2990485dae0Sopenharmony_ci 3000485dae0Sopenharmony_ci DataInfo outputInfo = { 3010485dae0Sopenharmony_ci .data = nullptr, 3020485dae0Sopenharmony_ci .length = 0 3030485dae0Sopenharmony_ci }; 3040485dae0Sopenharmony_ci ClientCallback callback = ClientCallback(); 3050485dae0Sopenharmony_ci int prepareRetCode = AieClientPrepare(clientInfo, algoInfo, inputInfo, outputInfo, &callback); 3060485dae0Sopenharmony_ci ASSERT_EQ(prepareRetCode, RETCODE_SUCCESS); 3070485dae0Sopenharmony_ci ASSERT_NE(outputInfo.data, nullptr); 3080485dae0Sopenharmony_ci 3090485dae0Sopenharmony_ci AieClientRelease(clientInfo, algoInfo, inputInfo); 3100485dae0Sopenharmony_ci 3110485dae0Sopenharmony_ci AieClientDestroy(clientInfo); 3120485dae0Sopenharmony_ci} 3130485dae0Sopenharmony_ci 3140485dae0Sopenharmony_ci/** 3150485dae0Sopenharmony_ci * @tc.name: TestCallback001 3160485dae0Sopenharmony_ci * @tc.desc: Test preparing execution of certain plugin 3170485dae0Sopenharmony_ci * with 'isAsync = false' and 'callback != nullptr'. 3180485dae0Sopenharmony_ci * @tc.type: FUNC 3190485dae0Sopenharmony_ci * @tc.require: AR000F77NJ 3200485dae0Sopenharmony_ci */ 3210485dae0Sopenharmony_ciHWTEST_F(PrepareFunctionTest, TestCallback001, TestSize.Level1) 3220485dae0Sopenharmony_ci{ 3230485dae0Sopenharmony_ci HILOGI("[Test]TestCallback001."); 3240485dae0Sopenharmony_ci const char *str = PREPARE_INPUT_ASYNC; 3250485dae0Sopenharmony_ci char *inputData = const_cast<char*>(str); 3260485dae0Sopenharmony_ci int len = strlen(str) + 1; 3270485dae0Sopenharmony_ci 3280485dae0Sopenharmony_ci ConfigInfo configInfo {.description = CONFIG_DESCRIPTION}; 3290485dae0Sopenharmony_ci 3300485dae0Sopenharmony_ci ClientInfo clientInfo = { 3310485dae0Sopenharmony_ci .clientVersion = CLIENT_INFO_VERSION, 3320485dae0Sopenharmony_ci .clientId = INVALID_CLIENT_ID, 3330485dae0Sopenharmony_ci .sessionId = SESSION_ID, 3340485dae0Sopenharmony_ci .serverUid = INVALID_UID, 3350485dae0Sopenharmony_ci .clientUid = INVALID_UID, 3360485dae0Sopenharmony_ci .extendLen = len, 3370485dae0Sopenharmony_ci .extendMsg = reinterpret_cast<unsigned char*>(inputData), 3380485dae0Sopenharmony_ci }; 3390485dae0Sopenharmony_ci 3400485dae0Sopenharmony_ci AlgorithmInfo algoInfo = { 3410485dae0Sopenharmony_ci .clientVersion = ALGORITHM_INFO_CLIENT_VERSION, 3420485dae0Sopenharmony_ci .isAsync = false, 3430485dae0Sopenharmony_ci .algorithmType = ALGORITHM_SYNC_TYPE, 3440485dae0Sopenharmony_ci .algorithmVersion = ALGORITHM_VERSION, 3450485dae0Sopenharmony_ci .isCloud = true, 3460485dae0Sopenharmony_ci .operateId = OPERATE_ID, 3470485dae0Sopenharmony_ci .requestId = REQUEST_ID, 3480485dae0Sopenharmony_ci .extendLen = len, 3490485dae0Sopenharmony_ci .extendMsg = reinterpret_cast<unsigned char*>(inputData), 3500485dae0Sopenharmony_ci }; 3510485dae0Sopenharmony_ci 3520485dae0Sopenharmony_ci ServiceDeadCb cb = ServiceDeadCb(); 3530485dae0Sopenharmony_ci int initRetCode = AieClientInit(configInfo, clientInfo, algoInfo, &cb); 3540485dae0Sopenharmony_ci ASSERT_EQ(initRetCode, RETCODE_SUCCESS); 3550485dae0Sopenharmony_ci ASSERT_TRUE(clientInfo.clientId > 0); 3560485dae0Sopenharmony_ci 3570485dae0Sopenharmony_ci DataInfo inputInfo = { 3580485dae0Sopenharmony_ci .data = reinterpret_cast<unsigned char*>(inputData), 3590485dae0Sopenharmony_ci .length = len, 3600485dae0Sopenharmony_ci }; 3610485dae0Sopenharmony_ci 3620485dae0Sopenharmony_ci DataInfo outputInfo = { 3630485dae0Sopenharmony_ci .data = nullptr, 3640485dae0Sopenharmony_ci .length = 0 3650485dae0Sopenharmony_ci }; 3660485dae0Sopenharmony_ci ClientCallback callback = ClientCallback(); 3670485dae0Sopenharmony_ci int prepareRetCode = AieClientPrepare(clientInfo, algoInfo, inputInfo, outputInfo, &callback); 3680485dae0Sopenharmony_ci ASSERT_EQ(prepareRetCode, RETCODE_SUCCESS); 3690485dae0Sopenharmony_ci ASSERT_NE(outputInfo.data, nullptr); 3700485dae0Sopenharmony_ci 3710485dae0Sopenharmony_ci AieClientRelease(clientInfo, algoInfo, inputInfo); 3720485dae0Sopenharmony_ci 3730485dae0Sopenharmony_ci AieClientDestroy(clientInfo); 3740485dae0Sopenharmony_ci} 3750485dae0Sopenharmony_ci 3760485dae0Sopenharmony_ci/** 3770485dae0Sopenharmony_ci * @tc.name: TestCallback002 3780485dae0Sopenharmony_ci * @tc.desc: Test preparing execution of certain plugin 3790485dae0Sopenharmony_ci * with 'isAsync = true' and 'callback = nullptr'. 3800485dae0Sopenharmony_ci * @tc.type: FUNC 3810485dae0Sopenharmony_ci * @tc.require: AR000F77NJ 3820485dae0Sopenharmony_ci */ 3830485dae0Sopenharmony_ciHWTEST_F(PrepareFunctionTest, TestCallback002, TestSize.Level1) 3840485dae0Sopenharmony_ci{ 3850485dae0Sopenharmony_ci HILOGI("[Test]TestCallback002."); 3860485dae0Sopenharmony_ci const char *str = PREPARE_INPUT_ASYNC; 3870485dae0Sopenharmony_ci char *inputData = const_cast<char*>(str); 3880485dae0Sopenharmony_ci int len = strlen(str) + 1; 3890485dae0Sopenharmony_ci 3900485dae0Sopenharmony_ci ConfigInfo configInfo {.description = CONFIG_DESCRIPTION}; 3910485dae0Sopenharmony_ci 3920485dae0Sopenharmony_ci ClientInfo clientInfo = { 3930485dae0Sopenharmony_ci .clientVersion = CLIENT_INFO_VERSION, 3940485dae0Sopenharmony_ci .clientId = INVALID_CLIENT_ID, 3950485dae0Sopenharmony_ci .sessionId = SESSION_ID, 3960485dae0Sopenharmony_ci .serverUid = INVALID_UID, 3970485dae0Sopenharmony_ci .clientUid = INVALID_UID, 3980485dae0Sopenharmony_ci .extendLen = len, 3990485dae0Sopenharmony_ci .extendMsg = reinterpret_cast<unsigned char*>(inputData), 4000485dae0Sopenharmony_ci }; 4010485dae0Sopenharmony_ci 4020485dae0Sopenharmony_ci AlgorithmInfo algoInfo = { 4030485dae0Sopenharmony_ci .clientVersion = ALGORITHM_INFO_CLIENT_VERSION, 4040485dae0Sopenharmony_ci .isAsync = true, 4050485dae0Sopenharmony_ci .algorithmType = ALGORITHM_ASYNC_TYPE, 4060485dae0Sopenharmony_ci .algorithmVersion = ALGORITHM_VERSION, 4070485dae0Sopenharmony_ci .isCloud = true, 4080485dae0Sopenharmony_ci .operateId = OPERATE_ID, 4090485dae0Sopenharmony_ci .requestId = REQUEST_ID, 4100485dae0Sopenharmony_ci .extendLen = len, 4110485dae0Sopenharmony_ci .extendMsg = reinterpret_cast<unsigned char*>(inputData), 4120485dae0Sopenharmony_ci }; 4130485dae0Sopenharmony_ci 4140485dae0Sopenharmony_ci ServiceDeadCb cb = ServiceDeadCb(); 4150485dae0Sopenharmony_ci int initRetCode = AieClientInit(configInfo, clientInfo, algoInfo, &cb); 4160485dae0Sopenharmony_ci ASSERT_EQ(initRetCode, RETCODE_SUCCESS); 4170485dae0Sopenharmony_ci ASSERT_TRUE(clientInfo.clientId > 0); 4180485dae0Sopenharmony_ci 4190485dae0Sopenharmony_ci DataInfo inputInfo = { 4200485dae0Sopenharmony_ci .data = reinterpret_cast<unsigned char*>(inputData), 4210485dae0Sopenharmony_ci .length = len, 4220485dae0Sopenharmony_ci }; 4230485dae0Sopenharmony_ci 4240485dae0Sopenharmony_ci DataInfo outputInfo = { 4250485dae0Sopenharmony_ci .data = nullptr, 4260485dae0Sopenharmony_ci .length = 0 4270485dae0Sopenharmony_ci }; 4280485dae0Sopenharmony_ci int prepareRetCode = AieClientPrepare(clientInfo, algoInfo, inputInfo, outputInfo, nullptr); 4290485dae0Sopenharmony_ci ASSERT_NE(prepareRetCode, RETCODE_SUCCESS); 4300485dae0Sopenharmony_ci ASSERT_EQ(outputInfo.data, nullptr); 4310485dae0Sopenharmony_ci 4320485dae0Sopenharmony_ci AieClientRelease(clientInfo, algoInfo, inputInfo); 4330485dae0Sopenharmony_ci 4340485dae0Sopenharmony_ci AieClientDestroy(clientInfo); 4350485dae0Sopenharmony_ci} 4360485dae0Sopenharmony_ci 4370485dae0Sopenharmony_ci/** 4380485dae0Sopenharmony_ci * @tc.name: TestRegisterCallbackProxy001 4390485dae0Sopenharmony_ci * @tc.desc: Test preparing execution of certain plugin 4400485dae0Sopenharmony_ci * with 'isAsync = true' and 'callback != nullptr'. 4410485dae0Sopenharmony_ci * @tc.type: FUNC 4420485dae0Sopenharmony_ci * @tc.require: AR000F77NJ 4430485dae0Sopenharmony_ci */ 4440485dae0Sopenharmony_cistatic HWTEST_F(PrepareFunctionTest, TestRegisterCallbackProxy001, TestSize.Level1) 4450485dae0Sopenharmony_ci{ 4460485dae0Sopenharmony_ci HILOGI("[Test]TestRegisterCallbackProxy001."); 4470485dae0Sopenharmony_ci const char *str = PREPARE_INPUT_ASYNC; 4480485dae0Sopenharmony_ci char *inputData = const_cast<char*>(str); 4490485dae0Sopenharmony_ci int len = strlen(str) + 1; 4500485dae0Sopenharmony_ci 4510485dae0Sopenharmony_ci ConfigInfo configInfo {.description = CONFIG_DESCRIPTION}; 4520485dae0Sopenharmony_ci 4530485dae0Sopenharmony_ci ClientInfo clientInfo = { 4540485dae0Sopenharmony_ci .clientVersion = CLIENT_INFO_VERSION, 4550485dae0Sopenharmony_ci .clientId = INVALID_CLIENT_ID, 4560485dae0Sopenharmony_ci .sessionId = SESSION_ID, 4570485dae0Sopenharmony_ci .serverUid = INVALID_UID, 4580485dae0Sopenharmony_ci .clientUid = INVALID_UID, 4590485dae0Sopenharmony_ci .extendLen = len, 4600485dae0Sopenharmony_ci .extendMsg = reinterpret_cast<unsigned char*>(inputData), 4610485dae0Sopenharmony_ci }; 4620485dae0Sopenharmony_ci 4630485dae0Sopenharmony_ci AlgorithmInfo algoInfo = { 4640485dae0Sopenharmony_ci .clientVersion = ALGORITHM_INFO_CLIENT_VERSION, 4650485dae0Sopenharmony_ci .isAsync = true, 4660485dae0Sopenharmony_ci .algorithmType = ALGORITHM_ASYNC_TYPE, 4670485dae0Sopenharmony_ci .algorithmVersion = ALGORITHM_VERSION, 4680485dae0Sopenharmony_ci .isCloud = true, 4690485dae0Sopenharmony_ci .operateId = OPERATE_ID, 4700485dae0Sopenharmony_ci .requestId = REQUEST_ID, 4710485dae0Sopenharmony_ci .extendLen = len, 4720485dae0Sopenharmony_ci .extendMsg = reinterpret_cast<unsigned char*>(inputData), 4730485dae0Sopenharmony_ci }; 4740485dae0Sopenharmony_ci 4750485dae0Sopenharmony_ci ServiceDeadCb cb = ServiceDeadCb(); 4760485dae0Sopenharmony_ci int initRetCode = AieClientInit(configInfo, clientInfo, algoInfo, &cb); 4770485dae0Sopenharmony_ci ASSERT_EQ(initRetCode, RETCODE_SUCCESS); 4780485dae0Sopenharmony_ci ASSERT_TRUE(clientInfo.clientId > 0); 4790485dae0Sopenharmony_ci 4800485dae0Sopenharmony_ci DataInfo inputInfo = { 4810485dae0Sopenharmony_ci .data = reinterpret_cast<unsigned char*>(inputData), 4820485dae0Sopenharmony_ci .length = len, 4830485dae0Sopenharmony_ci }; 4840485dae0Sopenharmony_ci 4850485dae0Sopenharmony_ci DataInfo outputInfo = { 4860485dae0Sopenharmony_ci .data = nullptr, 4870485dae0Sopenharmony_ci .length = 0 4880485dae0Sopenharmony_ci }; 4890485dae0Sopenharmony_ci ClientCallback callback = ClientCallback(); 4900485dae0Sopenharmony_ci int prepareRetCode = AieClientPrepare(clientInfo, algoInfo, inputInfo, outputInfo, &callback); 4910485dae0Sopenharmony_ci ASSERT_NE(prepareRetCode, RETCODE_SUCCESS); 4920485dae0Sopenharmony_ci ASSERT_EQ(outputInfo.data, nullptr); 4930485dae0Sopenharmony_ci 4940485dae0Sopenharmony_ci AieClientRelease(clientInfo, algoInfo, inputInfo); 4950485dae0Sopenharmony_ci 4960485dae0Sopenharmony_ci AieClientDestroy(clientInfo); 4970485dae0Sopenharmony_ci} 498