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 <cstdlib>
170485dae0Sopenharmony_ci#include <cstring>
180485dae0Sopenharmony_ci#include <ctime>
190485dae0Sopenharmony_ci#include <string>
200485dae0Sopenharmony_ci
210485dae0Sopenharmony_ci#include "gtest/gtest.h"
220485dae0Sopenharmony_ci
230485dae0Sopenharmony_ci#include "client_executor/include/i_aie_client.inl"
240485dae0Sopenharmony_ci#include "service_dead_cb.h"
250485dae0Sopenharmony_ci
260485dae0Sopenharmony_ciusing namespace OHOS::AI;
270485dae0Sopenharmony_ciusing namespace testing::ext;
280485dae0Sopenharmony_ci
290485dae0Sopenharmony_cinamespace {
300485dae0Sopenharmony_ci    const char * const INPUT_CHARACTER = "inputData";
310485dae0Sopenharmony_ci    const char * const CONFIG_DESCRIPTION = "config information";
320485dae0Sopenharmony_ci    const long long CLIENT_INFO_VERSION = 1;
330485dae0Sopenharmony_ci    const int EXTEND_LENGTH = 10;
340485dae0Sopenharmony_ci    const long long ALGORITHM_INFO_CLIENT_VERSION = 2;
350485dae0Sopenharmony_ci    const int ALGORITHM_TYPE = 66;
360485dae0Sopenharmony_ci    const long long ALGORITHM_VERSION = 2;
370485dae0Sopenharmony_ci    const int OPERATE_ID = 2;
380485dae0Sopenharmony_ci    const int REQUEST_ID = 3;
390485dae0Sopenharmony_ci    const int CHAR_TYPE = 4;
400485dae0Sopenharmony_ci    const char MIN_UPPER_CASE_CHAR = 'A';
410485dae0Sopenharmony_ci    const char MIN_LOWER_CASE_CHAR = 'a';
420485dae0Sopenharmony_ci    const char MIN_NUMERIC_CHAR = '0';
430485dae0Sopenharmony_ci    const char TRAILING_CHAR = '\0';
440485dae0Sopenharmony_ci    const int NUMBER_OF_ALPHABETS = 26;
450485dae0Sopenharmony_ci    const int NUMBER_OF_DIGITS = 10;
460485dae0Sopenharmony_ci    const int CHAR_TYPE_UPPER_CASE = 1;
470485dae0Sopenharmony_ci    const int CHAR_TYPE_LOWER_CASE = 2;
480485dae0Sopenharmony_ci    const int CHAR_TYPE_WHITE_SPACE = 3;
490485dae0Sopenharmony_ci    const char WHITE_SPACE = ' ';
500485dae0Sopenharmony_ci}
510485dae0Sopenharmony_ci
520485dae0Sopenharmony_ciclass InitFunctionTest : public testing::Test {
530485dae0Sopenharmony_cipublic:
540485dae0Sopenharmony_ci    // SetUpTestCase:The preset action of the test suite is executed before the first TestCase
550485dae0Sopenharmony_ci    static void SetUpTestCase() {};
560485dae0Sopenharmony_ci
570485dae0Sopenharmony_ci    // TearDownTestCase:The test suite cleanup action is executed after the last TestCase
580485dae0Sopenharmony_ci    static void TearDownTestCase() {};
590485dae0Sopenharmony_ci
600485dae0Sopenharmony_ci    // SetUp:Execute before each test case
610485dae0Sopenharmony_ci    void SetUp() {};
620485dae0Sopenharmony_ci
630485dae0Sopenharmony_ci    // TearDown:Execute after each test case
640485dae0Sopenharmony_ci    void TearDown() {};
650485dae0Sopenharmony_ci};
660485dae0Sopenharmony_ci
670485dae0Sopenharmony_cistatic void RandStr(const int len, char *str)
680485dae0Sopenharmony_ci{
690485dae0Sopenharmony_ci    srand(time(nullptr));
700485dae0Sopenharmony_ci    int i;
710485dae0Sopenharmony_ci    for (i = 0; i < len - 1; ++i) {
720485dae0Sopenharmony_ci        switch (rand() % CHAR_TYPE) {
730485dae0Sopenharmony_ci            case CHAR_TYPE_UPPER_CASE:
740485dae0Sopenharmony_ci                str[i] = MIN_UPPER_CASE_CHAR + rand() % NUMBER_OF_ALPHABETS;
750485dae0Sopenharmony_ci                break;
760485dae0Sopenharmony_ci            case CHAR_TYPE_LOWER_CASE:
770485dae0Sopenharmony_ci                str[i] = MIN_LOWER_CASE_CHAR + rand() % NUMBER_OF_ALPHABETS;
780485dae0Sopenharmony_ci                break;
790485dae0Sopenharmony_ci            case CHAR_TYPE_WHITE_SPACE:
800485dae0Sopenharmony_ci                str[i] = WHITE_SPACE;
810485dae0Sopenharmony_ci                break;
820485dae0Sopenharmony_ci            default:
830485dae0Sopenharmony_ci                str[i] = MIN_NUMERIC_CHAR + rand() % NUMBER_OF_DIGITS;
840485dae0Sopenharmony_ci                break;
850485dae0Sopenharmony_ci        }
860485dae0Sopenharmony_ci    }
870485dae0Sopenharmony_ci
880485dae0Sopenharmony_ci    str[i] = TRAILING_CHAR;
890485dae0Sopenharmony_ci}
900485dae0Sopenharmony_ci
910485dae0Sopenharmony_ci/**
920485dae0Sopenharmony_ci * @tc.name: TestAieClientInitConfigInfo001
930485dae0Sopenharmony_ci * @tc.desc: Test initial execution of certain algorithm plugin.
940485dae0Sopenharmony_ci * @tc.type: FUNC
950485dae0Sopenharmony_ci * @tc.require: AR000F77NM
960485dae0Sopenharmony_ci */
970485dae0Sopenharmony_ciHWTEST_F(InitFunctionTest, TestAieClientInitConfigInfo001, TestSize.Level1)
980485dae0Sopenharmony_ci{
990485dae0Sopenharmony_ci    HILOGI("[Test]Begin TestAieClientInitConfigInfo001.");
1000485dae0Sopenharmony_ci    const char *str = INPUT_CHARACTER;
1010485dae0Sopenharmony_ci    char *inputData = const_cast<char*>(str);
1020485dae0Sopenharmony_ci
1030485dae0Sopenharmony_ci    char configDesc[21];
1040485dae0Sopenharmony_ci    RandStr(21, configDesc);
1050485dae0Sopenharmony_ci    ConfigInfo configInfo {.description = configDesc};
1060485dae0Sopenharmony_ci
1070485dae0Sopenharmony_ci    ClientInfo clientInfo = {
1080485dae0Sopenharmony_ci        .clientVersion = CLIENT_INFO_VERSION,
1090485dae0Sopenharmony_ci        .clientId = -1,
1100485dae0Sopenharmony_ci        .sessionId = -1,
1110485dae0Sopenharmony_ci        .serverUid = INVALID_UID,
1120485dae0Sopenharmony_ci        .clientUid = INVALID_UID,
1130485dae0Sopenharmony_ci        .extendLen = EXTEND_LENGTH,
1140485dae0Sopenharmony_ci        .extendMsg = reinterpret_cast<unsigned char*>(inputData),
1150485dae0Sopenharmony_ci    };
1160485dae0Sopenharmony_ci
1170485dae0Sopenharmony_ci    AlgorithmInfo algoInfo = {
1180485dae0Sopenharmony_ci        .clientVersion = ALGORITHM_INFO_CLIENT_VERSION,
1190485dae0Sopenharmony_ci        .isAsync = true,
1200485dae0Sopenharmony_ci        .algorithmType = ALGORITHM_TYPE,
1210485dae0Sopenharmony_ci        .algorithmVersion = ALGORITHM_VERSION,
1220485dae0Sopenharmony_ci        .isCloud = true,
1230485dae0Sopenharmony_ci        .operateId = OPERATE_ID,
1240485dae0Sopenharmony_ci        .requestId = REQUEST_ID,
1250485dae0Sopenharmony_ci        .extendLen = EXTEND_LENGTH,
1260485dae0Sopenharmony_ci        .extendMsg = reinterpret_cast<unsigned char*>(inputData),
1270485dae0Sopenharmony_ci    };
1280485dae0Sopenharmony_ci
1290485dae0Sopenharmony_ci    ServiceDeadCb cb = ServiceDeadCb();
1300485dae0Sopenharmony_ci    int initResult = AieClientInit(configInfo, clientInfo, algoInfo, &cb);
1310485dae0Sopenharmony_ci    ASSERT_EQ(initResult, RETCODE_SUCCESS);
1320485dae0Sopenharmony_ci    ASSERT_TRUE(clientInfo.clientId > 0);
1330485dae0Sopenharmony_ci    ASSERT_TRUE(clientInfo.sessionId > 0);
1340485dae0Sopenharmony_ci
1350485dae0Sopenharmony_ci    int destroyResult = AieClientDestroy(clientInfo);
1360485dae0Sopenharmony_ci    ASSERT_EQ(destroyResult, RETCODE_SUCCESS);
1370485dae0Sopenharmony_ci}
1380485dae0Sopenharmony_ci
1390485dae0Sopenharmony_ci/**
1400485dae0Sopenharmony_ci * @tc.name: TestAieClientInitConfigInfo002
1410485dae0Sopenharmony_ci * @tc.desc: Test initial execution of certain algorithm plugin with over-size config message.
1420485dae0Sopenharmony_ci * @tc.type: FUNC
1430485dae0Sopenharmony_ci * @tc.require: AR000F77NM
1440485dae0Sopenharmony_ci */
1450485dae0Sopenharmony_ciHWTEST_F(InitFunctionTest, TestAieClientInitConfigInfo002, TestSize.Level1)
1460485dae0Sopenharmony_ci{
1470485dae0Sopenharmony_ci    HILOGI("[Test]Begin TestAieClientInitConfigInfo002.");
1480485dae0Sopenharmony_ci    const char *str = INPUT_CHARACTER;
1490485dae0Sopenharmony_ci    char *inputData = const_cast<char*>(str);
1500485dae0Sopenharmony_ci
1510485dae0Sopenharmony_ci    char configDesc[129];
1520485dae0Sopenharmony_ci    RandStr(129, configDesc);
1530485dae0Sopenharmony_ci    ConfigInfo configInfo {.description = configDesc};
1540485dae0Sopenharmony_ci
1550485dae0Sopenharmony_ci    ClientInfo clientInfo = {
1560485dae0Sopenharmony_ci        .clientVersion = CLIENT_INFO_VERSION,
1570485dae0Sopenharmony_ci        .clientId = -1,
1580485dae0Sopenharmony_ci        .sessionId = -1,
1590485dae0Sopenharmony_ci        .serverUid = INVALID_UID,
1600485dae0Sopenharmony_ci        .clientUid = INVALID_UID,
1610485dae0Sopenharmony_ci        .extendLen = EXTEND_LENGTH,
1620485dae0Sopenharmony_ci        .extendMsg = reinterpret_cast<unsigned char*>(inputData),
1630485dae0Sopenharmony_ci    };
1640485dae0Sopenharmony_ci
1650485dae0Sopenharmony_ci    AlgorithmInfo algoInfo = {
1660485dae0Sopenharmony_ci        .clientVersion = ALGORITHM_INFO_CLIENT_VERSION,
1670485dae0Sopenharmony_ci        .isAsync = true,
1680485dae0Sopenharmony_ci        .algorithmType = ALGORITHM_TYPE,
1690485dae0Sopenharmony_ci        .algorithmVersion = ALGORITHM_VERSION,
1700485dae0Sopenharmony_ci        .isCloud = true,
1710485dae0Sopenharmony_ci        .operateId = OPERATE_ID,
1720485dae0Sopenharmony_ci        .requestId = REQUEST_ID,
1730485dae0Sopenharmony_ci        .extendLen = EXTEND_LENGTH,
1740485dae0Sopenharmony_ci        .extendMsg = reinterpret_cast<unsigned char*>(inputData),
1750485dae0Sopenharmony_ci    };
1760485dae0Sopenharmony_ci
1770485dae0Sopenharmony_ci    ServiceDeadCb cb = ServiceDeadCb();
1780485dae0Sopenharmony_ci    int initResult = AieClientInit(configInfo, clientInfo, algoInfo, &cb);
1790485dae0Sopenharmony_ci    ASSERT_EQ(initResult, RETCODE_SUCCESS);
1800485dae0Sopenharmony_ci    ASSERT_TRUE(clientInfo.clientId > 0);
1810485dae0Sopenharmony_ci    ASSERT_TRUE(clientInfo.sessionId > 0);
1820485dae0Sopenharmony_ci
1830485dae0Sopenharmony_ci    int destroyResult = AieClientDestroy(clientInfo);
1840485dae0Sopenharmony_ci    ASSERT_EQ(destroyResult, RETCODE_SUCCESS);
1850485dae0Sopenharmony_ci}
1860485dae0Sopenharmony_ci
1870485dae0Sopenharmony_ci/**
1880485dae0Sopenharmony_ci * @tc.name: TestAieClientInitConfigInfo003
1890485dae0Sopenharmony_ci * @tc.desc: Test initial execution of certain algorithm plugin with much shorter(length = 1) config message.
1900485dae0Sopenharmony_ci * @tc.type: FUNC
1910485dae0Sopenharmony_ci * @tc.require: AR000F77NM
1920485dae0Sopenharmony_ci */
1930485dae0Sopenharmony_ciHWTEST_F(InitFunctionTest, TestAieClientInitConfigInfo003, TestSize.Level1)
1940485dae0Sopenharmony_ci{
1950485dae0Sopenharmony_ci    HILOGI("[Test]Begin TestAieClientInitConfigInfo003.");
1960485dae0Sopenharmony_ci    const char *str = INPUT_CHARACTER;
1970485dae0Sopenharmony_ci    char *inputData = const_cast<char*>(str);
1980485dae0Sopenharmony_ci
1990485dae0Sopenharmony_ci    char configDesc[1];
2000485dae0Sopenharmony_ci    RandStr(1, configDesc);
2010485dae0Sopenharmony_ci    ConfigInfo configInfo {.description = configDesc};
2020485dae0Sopenharmony_ci
2030485dae0Sopenharmony_ci    ClientInfo clientInfo = {
2040485dae0Sopenharmony_ci        .clientVersion = CLIENT_INFO_VERSION,
2050485dae0Sopenharmony_ci        .clientId = -1,
2060485dae0Sopenharmony_ci        .sessionId = -1,
2070485dae0Sopenharmony_ci        .serverUid = INVALID_UID,
2080485dae0Sopenharmony_ci        .clientUid = INVALID_UID,
2090485dae0Sopenharmony_ci        .extendLen = EXTEND_LENGTH,
2100485dae0Sopenharmony_ci        .extendMsg = reinterpret_cast<unsigned char*>(inputData),
2110485dae0Sopenharmony_ci    };
2120485dae0Sopenharmony_ci
2130485dae0Sopenharmony_ci    AlgorithmInfo algoInfo = {
2140485dae0Sopenharmony_ci        .clientVersion = ALGORITHM_INFO_CLIENT_VERSION,
2150485dae0Sopenharmony_ci        .isAsync = true,
2160485dae0Sopenharmony_ci        .algorithmType = ALGORITHM_TYPE,
2170485dae0Sopenharmony_ci        .algorithmVersion = ALGORITHM_VERSION,
2180485dae0Sopenharmony_ci        .isCloud = true,
2190485dae0Sopenharmony_ci        .operateId = OPERATE_ID,
2200485dae0Sopenharmony_ci        .requestId = REQUEST_ID,
2210485dae0Sopenharmony_ci        .extendLen = EXTEND_LENGTH,
2220485dae0Sopenharmony_ci        .extendMsg = reinterpret_cast<unsigned char*>(inputData),
2230485dae0Sopenharmony_ci    };
2240485dae0Sopenharmony_ci
2250485dae0Sopenharmony_ci    ServiceDeadCb cb = ServiceDeadCb();
2260485dae0Sopenharmony_ci    int initResult = AieClientInit(configInfo, clientInfo, algoInfo, &cb);
2270485dae0Sopenharmony_ci    ASSERT_EQ(initResult, RETCODE_SUCCESS);
2280485dae0Sopenharmony_ci    ASSERT_TRUE(clientInfo.clientId > 0);
2290485dae0Sopenharmony_ci    ASSERT_TRUE(clientInfo.sessionId > 0);
2300485dae0Sopenharmony_ci
2310485dae0Sopenharmony_ci    int destroyResult = AieClientDestroy(clientInfo);
2320485dae0Sopenharmony_ci    ASSERT_EQ(destroyResult, RETCODE_SUCCESS);
2330485dae0Sopenharmony_ci}
2340485dae0Sopenharmony_ci
2350485dae0Sopenharmony_ci/**
2360485dae0Sopenharmony_ci * @tc.name: TestAieClientInitClientInfo001
2370485dae0Sopenharmony_ci * @tc.desc: Test initial execution of certain algorithm plugin with 'clientId' being -1.
2380485dae0Sopenharmony_ci * @tc.type: FUNC
2390485dae0Sopenharmony_ci * @tc.require: AR000F77NM
2400485dae0Sopenharmony_ci */
2410485dae0Sopenharmony_ciHWTEST_F(InitFunctionTest, TestAieClientInitClientInfo001, TestSize.Level1)
2420485dae0Sopenharmony_ci{
2430485dae0Sopenharmony_ci    HILOGI("[Test]Begin TestAieClientInitClientInfo001.");
2440485dae0Sopenharmony_ci    const char *str = INPUT_CHARACTER;
2450485dae0Sopenharmony_ci    char *inputData = const_cast<char*>(str);
2460485dae0Sopenharmony_ci
2470485dae0Sopenharmony_ci    ConfigInfo configInfo {.description = CONFIG_DESCRIPTION};
2480485dae0Sopenharmony_ci
2490485dae0Sopenharmony_ci    ClientInfo clientInfo = {
2500485dae0Sopenharmony_ci        .clientVersion = CLIENT_INFO_VERSION,
2510485dae0Sopenharmony_ci        .clientId = -1,
2520485dae0Sopenharmony_ci        .sessionId = -1,
2530485dae0Sopenharmony_ci        .serverUid = INVALID_UID,
2540485dae0Sopenharmony_ci        .clientUid = INVALID_UID,
2550485dae0Sopenharmony_ci        .extendLen = EXTEND_LENGTH,
2560485dae0Sopenharmony_ci        .extendMsg = reinterpret_cast<unsigned char*>(inputData),
2570485dae0Sopenharmony_ci    };
2580485dae0Sopenharmony_ci
2590485dae0Sopenharmony_ci    AlgorithmInfo algoInfo = {
2600485dae0Sopenharmony_ci        .clientVersion = ALGORITHM_INFO_CLIENT_VERSION,
2610485dae0Sopenharmony_ci        .isAsync = true,
2620485dae0Sopenharmony_ci        .algorithmType = ALGORITHM_TYPE,
2630485dae0Sopenharmony_ci        .algorithmVersion = ALGORITHM_VERSION,
2640485dae0Sopenharmony_ci        .isCloud = true,
2650485dae0Sopenharmony_ci        .operateId = OPERATE_ID,
2660485dae0Sopenharmony_ci        .requestId = REQUEST_ID,
2670485dae0Sopenharmony_ci        .extendLen = EXTEND_LENGTH,
2680485dae0Sopenharmony_ci        .extendMsg = reinterpret_cast<unsigned char*>(inputData),
2690485dae0Sopenharmony_ci    };
2700485dae0Sopenharmony_ci
2710485dae0Sopenharmony_ci    ServiceDeadCb cb = ServiceDeadCb();
2720485dae0Sopenharmony_ci    int initResult = AieClientInit(configInfo, clientInfo, algoInfo, &cb);
2730485dae0Sopenharmony_ci    ASSERT_EQ(initResult, RETCODE_SUCCESS);
2740485dae0Sopenharmony_ci
2750485dae0Sopenharmony_ci    int destroyResult = AieClientDestroy(clientInfo);
2760485dae0Sopenharmony_ci    ASSERT_EQ(destroyResult, RETCODE_SUCCESS);
2770485dae0Sopenharmony_ci}
2780485dae0Sopenharmony_ci
2790485dae0Sopenharmony_ci/**
2800485dae0Sopenharmony_ci * @tc.name: TestAieClientInitAlgoInfo001
2810485dae0Sopenharmony_ci * @tc.desc: Test initial execution of certain algorithm plugin with client
2820485dae0Sopenharmony_ci *           with 'clientId' being -1 and 'isAsync' being true.
2830485dae0Sopenharmony_ci * @tc.type: FUNC
2840485dae0Sopenharmony_ci * @tc.require: AR000F77NM
2850485dae0Sopenharmony_ci */
2860485dae0Sopenharmony_ciHWTEST_F(InitFunctionTest, TestAieClientInitAlgoInfo001, TestSize.Level1)
2870485dae0Sopenharmony_ci{
2880485dae0Sopenharmony_ci    HILOGI("[Test]Begin TestAieClientInitAlgoInfo001.");
2890485dae0Sopenharmony_ci    const char *str = INPUT_CHARACTER;
2900485dae0Sopenharmony_ci    char *inputData = const_cast<char*>(str);
2910485dae0Sopenharmony_ci
2920485dae0Sopenharmony_ci    ConfigInfo configInfo {.description = CONFIG_DESCRIPTION};
2930485dae0Sopenharmony_ci
2940485dae0Sopenharmony_ci    ClientInfo clientInfo = {
2950485dae0Sopenharmony_ci        .clientVersion = CLIENT_INFO_VERSION,
2960485dae0Sopenharmony_ci        .clientId = -1,
2970485dae0Sopenharmony_ci        .sessionId = -1,
2980485dae0Sopenharmony_ci        .serverUid = INVALID_UID,
2990485dae0Sopenharmony_ci        .clientUid = INVALID_UID,
3000485dae0Sopenharmony_ci        .extendLen = EXTEND_LENGTH,
3010485dae0Sopenharmony_ci        .extendMsg = reinterpret_cast<unsigned char*>(inputData),
3020485dae0Sopenharmony_ci    };
3030485dae0Sopenharmony_ci
3040485dae0Sopenharmony_ci    AlgorithmInfo algoInfo = {
3050485dae0Sopenharmony_ci        .clientVersion = ALGORITHM_INFO_CLIENT_VERSION,
3060485dae0Sopenharmony_ci        .isAsync = true,
3070485dae0Sopenharmony_ci        .algorithmType = ALGORITHM_TYPE,
3080485dae0Sopenharmony_ci        .algorithmVersion = ALGORITHM_VERSION,
3090485dae0Sopenharmony_ci        .isCloud = true,
3100485dae0Sopenharmony_ci        .operateId = OPERATE_ID,
3110485dae0Sopenharmony_ci        .requestId = REQUEST_ID,
3120485dae0Sopenharmony_ci        .extendLen = EXTEND_LENGTH,
3130485dae0Sopenharmony_ci        .extendMsg = reinterpret_cast<unsigned char*>(inputData),
3140485dae0Sopenharmony_ci    };
3150485dae0Sopenharmony_ci
3160485dae0Sopenharmony_ci    ServiceDeadCb cb = ServiceDeadCb();
3170485dae0Sopenharmony_ci    int initResult = AieClientInit(configInfo, clientInfo, algoInfo, &cb);
3180485dae0Sopenharmony_ci    ASSERT_EQ(initResult, RETCODE_SUCCESS);
3190485dae0Sopenharmony_ci
3200485dae0Sopenharmony_ci    int destroyResult = AieClientDestroy(clientInfo);
3210485dae0Sopenharmony_ci    ASSERT_EQ(destroyResult, RETCODE_SUCCESS);
3220485dae0Sopenharmony_ci}
3230485dae0Sopenharmony_ci
3240485dae0Sopenharmony_ci/**
3250485dae0Sopenharmony_ci * @tc.name: TestAieClientInitAlgoInfo002
3260485dae0Sopenharmony_ci * @tc.desc: Test initial execution of certain algorithm plugin with client
3270485dae0Sopenharmony_ci *           with 'clientId' being -1 and 'isAsync' being false.
3280485dae0Sopenharmony_ci * @tc.type: FUNC
3290485dae0Sopenharmony_ci * @tc.require: AR000F77NM
3300485dae0Sopenharmony_ci */
3310485dae0Sopenharmony_ciHWTEST_F(InitFunctionTest, TestAieClientInitAlgoInfo002, TestSize.Level1)
3320485dae0Sopenharmony_ci{
3330485dae0Sopenharmony_ci    HILOGI("[Test]Begin TestAieClientInitAlgoInfo002.");
3340485dae0Sopenharmony_ci    const char *str = INPUT_CHARACTER;
3350485dae0Sopenharmony_ci    char *inputData = const_cast<char*>(str);
3360485dae0Sopenharmony_ci
3370485dae0Sopenharmony_ci    ConfigInfo configInfo {.description = CONFIG_DESCRIPTION};
3380485dae0Sopenharmony_ci
3390485dae0Sopenharmony_ci    ClientInfo clientInfo = {
3400485dae0Sopenharmony_ci        .clientVersion = CLIENT_INFO_VERSION,
3410485dae0Sopenharmony_ci        .clientId = -1,
3420485dae0Sopenharmony_ci        .sessionId = -1,
3430485dae0Sopenharmony_ci        .serverUid = INVALID_UID,
3440485dae0Sopenharmony_ci        .clientUid = INVALID_UID,
3450485dae0Sopenharmony_ci        .extendLen = EXTEND_LENGTH,
3460485dae0Sopenharmony_ci        .extendMsg = reinterpret_cast<unsigned char*>(inputData),
3470485dae0Sopenharmony_ci    };
3480485dae0Sopenharmony_ci
3490485dae0Sopenharmony_ci    AlgorithmInfo algoInfo = {
3500485dae0Sopenharmony_ci        .clientVersion = ALGORITHM_INFO_CLIENT_VERSION,
3510485dae0Sopenharmony_ci        .isAsync = false,
3520485dae0Sopenharmony_ci        .algorithmType = ALGORITHM_TYPE,
3530485dae0Sopenharmony_ci        .algorithmVersion = ALGORITHM_VERSION,
3540485dae0Sopenharmony_ci        .isCloud = true,
3550485dae0Sopenharmony_ci        .operateId = OPERATE_ID,
3560485dae0Sopenharmony_ci        .requestId = REQUEST_ID,
3570485dae0Sopenharmony_ci        .extendLen = EXTEND_LENGTH,
3580485dae0Sopenharmony_ci        .extendMsg = reinterpret_cast<unsigned char*>(inputData),
3590485dae0Sopenharmony_ci    };
3600485dae0Sopenharmony_ci
3610485dae0Sopenharmony_ci    ServiceDeadCb cb = ServiceDeadCb();
3620485dae0Sopenharmony_ci    int initResult = AieClientInit(configInfo, clientInfo, algoInfo, &cb);
3630485dae0Sopenharmony_ci    ASSERT_EQ(initResult, RETCODE_SUCCESS);
3640485dae0Sopenharmony_ci
3650485dae0Sopenharmony_ci    int destroyResult = AieClientDestroy(clientInfo);
3660485dae0Sopenharmony_ci    ASSERT_EQ(destroyResult, RETCODE_SUCCESS);
3670485dae0Sopenharmony_ci}
368