• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "gtest/gtest.h"
17 #include <cstdlib>
18 #include <cstring>
19 #include <ctime>
20 #include <string>
21 
22 #include "client_executor/include/i_aie_client.inl"
23 #include "utils/aie_client_common.h"
24 #include "utils/aie_client_const.h"
25 #include "utils/service_dead_cb.h"
26 #include "utils/utils.h"
27 
28 using namespace ::testing;
29 using namespace testing::ext;
30 using namespace OHOS::AI;
31 
32 namespace {
33     const int DESCRIPTION_LENGTH_20 = 21;
34     const int DESCRIPTION_LENGTH_128 = 129;
35 }
36 
37 class AieClientInitFunctionTest : public testing::Test {};
38 
39 /**
40  * Tests AieClientInit.
41  *
42  * configDesc  The value or the input parameter ConfigInfo.description of AieClientInit.
43  * isAsync  The value or the input parameter AlgorithmInfo.isAsync of AieClientInit.
44  * bool isDeadCbNotNull Whether the dead callback parameter is not null.
45  */
TestAieClientInit(const char * configDesc,bool isAsync,bool isDeadCbNotNull)46 static void TestAieClientInit(const char *configDesc, bool isAsync, bool isDeadCbNotNull)
47 {
48     // Step 0: Defines variables.
49     ConfigInfo configInfo;
50     GetConfigInfo2(configInfo, configDesc);
51 
52     ClientInfo clientInfo;
53     GetClientInfo(clientInfo);
54 
55     AlgorithmInfo algorithmInfo;
56     int algorithmType = isAsync ? ALGORITHM_TYPE_ASYNC : ALGORITHM_TYPE_SYNC;
57     GetSyncAlgorithmInfo(algorithmInfo, isAsync, algorithmType);
58 
59     ServiceDeadCb *cb = nullptr;
60     if (isDeadCbNotNull) {
61         AIE_NEW(cb, ServiceDeadCb());
62     }
63 
64     // Step 1: Invokes AieClientInit.
65     int initReturnCode = AieClientInit(configInfo, clientInfo, algorithmInfo, cb);
66     EXPECT_EQ(RETCODE_SUCCESS, initReturnCode) << "AieClientInit is failed!";
67     EXPECT_EQ(true, clientInfo.clientId > 0) << "clientId(" << std::to_string(clientInfo.clientId) << ") is incorrect!";
68     EXPECT_EQ(true, clientInfo.sessionId > 0) << "sessionId(" << std::to_string(clientInfo.sessionId)
69                                               << ") is incorrect!";
70 
71     // Step 2: Invoke AieClientDestroy().
72     int destroyReturnCode = AieClientDestroy(clientInfo);
73     EXPECT_EQ(RETCODE_SUCCESS, destroyReturnCode) << "AieClientDestroy is failed!";
74 
75     AIE_DELETE(cb);
76 }
77 
78 /**
79  * @tc.number    : SUB_AI_AIDistributedAbility_HiAiEngine_Lite_Function_HiAiAPI_AIEClient_AieClientInit_configInfo_0100
80  * @tc.name      : 01. configInfo中的description设置为20位字符串,调用AieClientInit返回成功
81  * @tc.desc      : [C- SOFTWARE -0200]
82  */
83 HWTEST_F(AieClientInitFunctionTest, testAieClientInitFunction0101, Function | MediumTest | Level1)
84 {
85     HILOGI("[Test]testAieClientInitFunction0101.");
86     char configDesc[DESCRIPTION_LENGTH_20];
87     GetRandomString(DESCRIPTION_LENGTH_20, configDesc);
88     bool isAsync = GetRandomBool();
89     TestAieClientInit(configDesc, isAsync, true);
90 }
91 
92 /**
93  * @tc.number    : SUB_AI_AIDistributedAbility_HiAiEngine_Lite_Function_HiAiAPI_AIEClient_AieClientInit_configInfo_0200
94  * @tc.name      : 02. configInfo中的description设置为128位字符串,调用AieClientInit返回成功
95  * @tc.desc      : [C- SOFTWARE -0200]
96  */
97 HWTEST_F(AieClientInitFunctionTest, testAieClientInitFunction0102, Function | MediumTest | Level3)
98 {
99     HILOGI("[Test]testAieClientInitFunction0102.");
100     char configDesc[DESCRIPTION_LENGTH_128];
101     GetRandomString(DESCRIPTION_LENGTH_128, configDesc);
102     bool isAsync = GetRandomBool();
103     TestAieClientInit(configDesc, isAsync, true);
104 }
105 
106 /**
107  * @tc.number    : SUB_AI_AIDistributedAbility_HiAiEngine_Lite_Function_HiAiAPI_AIEClient_AieClientInit_configInfo_0300
108  * @tc.name      : 03. configInfo中的description设置为空,调用AieClientInit返回成功
109  * @tc.desc      : [C- SOFTWARE -0200]
110  */
111 HWTEST_F(AieClientInitFunctionTest, testAieClientInitFunction0103, Function | MediumTest | Level3)
112 {
113     HILOGI("[Test]testAieClientInitFunction0103.");
114     const char* configDesc = "";
115     bool isAsync = GetRandomBool();
116     TestAieClientInit(configDesc, isAsync, true);
117 }
118 
119 /**
120  * @tc.number : SUB_AI_AIDistributedAbility_HiAiEngine_Lite_Function_HiAiAPI_AIEClient_AieClientInit_algorithmInfo_0100
121  * @tc.name   : 01. algorithmInfo中isAsync=false,调用AieClientInit返回成功
122  * @tc.desc   : [C- SOFTWARE -0200]
123  */
124 HWTEST_F(AieClientInitFunctionTest, testAieClientInitFunction0201, Function | MediumTest | Level3)
125 {
126     HILOGI("[Test]testAieClientInitFunction0201.");
127     TestAieClientInit(CONFIG_DESCRIPTION, false, true);
128 }
129 
130 /**
131  * @tc.number : SUB_AI_AIDistributedAbility_HiAiEngine_Lite_Function_HiAiAPI_AIEClient_AieClientInit_algorithmInfo_0200
132  * @tc.name   : 02. algorithmInfo中isAsync=true,调用AieClientInit返回成功
133  * @tc.desc   : [C- SOFTWARE -0200]
134  */
135 HWTEST_F(AieClientInitFunctionTest, testAieClientInitFunction0202, Function | MediumTest | Level3)
136 {
137     HILOGI("[Test]testAieClientInitFunction0202.");
138     TestAieClientInit(CONFIG_DESCRIPTION, true, true);
139 }
140 
141 /**
142  * @tc.number    : SUB_AI_AIDistributedAbility_HiAiEngine_Lite_Function_HiAiAPI_AIEClient_AieClientInit_cb_0100
143  * @tc.name      : 01. cb=空,调用AieClientInit返回成功
144  * @tc.desc      : [C- SOFTWARE -0200]
145  */
146 HWTEST_F(AieClientInitFunctionTest, testAieClientInitFunction0301, Function | MediumTest | Level3)
147 {
148     HILOGI("[Test]testAieClientInitFunction0301.");
149     bool isAsync = GetRandomBool();
150     TestAieClientInit(CONFIG_DESCRIPTION, isAsync, false);
151 }
152