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#include <numeric>
16#include <iostream>
17#include <gtest/gtest.h>
18#include <vector>
19#include <map>
20#include <sstream>
21#include <stdlib.h>
22#include <stdio.h>
23#include <time.h>
24#include <ctime>
25#include "hiappevent.h"
26#include "hiappevent_config.h"
27#include "hilog/log.h"
28#include "file_utils.h"
29#include <securec.h>
30
31#define BUFF_SIZE 100
32using namespace std;
33using namespace testing;
34using namespace testing::ext;
35using namespace OHOS::HiviewDFX;
36
37namespace{
38    const char* TEST_DOMAIN_NAME = "test_domain";
39    const char* TEST_EVENT_NAME = "test_event";
40    string g_reDiRectTimeout = "5";
41    string logPath = "/data/test/hiappevent/";
42    string delelogPath = "/data/test/hiappevent/*";
43}
44
45class HiAppEventCPPTest : public testing::Test{
46public:
47    void TearDown();
48private:
49};
50void HiAppEventCPPTest::TearDown()
51{
52    std::cout << "TearDown" << std::endl;
53    std::vector<std::string> cmdret;
54    string cmd = "rm -f " + delelogPath;
55    ExecCmdWithRet(cmd, cmdret);
56}
57
58/**
59* @tc.name Test of the HiAppEvent Native Write Interface in which the keyvalue
60*          is of the boolean type and the bool value is false.
61* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_0100
62* @author f00601390
63* @tc.desc The keyvalue is of the boolean type and the bool value is false.
64*/
65HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_0100, Function|MediumTest|Level3){
66    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_0100 start" << endl;
67    bool result = false;
68    bool boolean = false;
69    string getlogFile;
70    string path;
71    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
72    ParamList list = OH_HiAppEvent_CreateParamList();
73    OH_HiAppEvent_AddBoolParam(list, "bool_key", boolean);
74    EventType eventType = EventType::FAULT;
75    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
76    sleep(1); //等待1s
77    std::vector<std::string> file;
78    file = getfileinpath(logPath);
79    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
80    path = logPath + getlogFile;
81    string fileinfo = "";
82    fileinfo = ReadFile(path);
83    std::vector<std::string> para = {"test_event", "\"type_\":1", "\"bool_key\":false"};
84    if (fileinfo != "") {
85        result = CheckInfo(para, fileinfo);
86    } else {
87        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_0100 file error" << std::endl;
88    }
89    OH_HiAppEvent_DestroyParamList(list);
90    ASSERT_TRUE(result);
91    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_0100 end" << endl;
92}
93
94/**
95* @tc.name Test of the HiAppEvent Native Write Interface in which the keyvalue
96*          is of the boolean type and the bool value is true.
97* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_0200
98* @author f00601390
99* @tc.desc The keyvalue is of the boolean type and the bool value is false.
100*/
101HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_0200, Function|MediumTest|Level3){
102    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_0200 start" << endl;
103    bool result = false;
104    bool boolean = true;
105    string getlogFile;
106    string path;
107    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
108    ParamList list = OH_HiAppEvent_CreateParamList();
109    OH_HiAppEvent_AddBoolParam(list, "bool_key", boolean);
110    EventType eventType = EventType::FAULT;
111    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
112    sleep(1); //等待1s
113    std::vector<std::string> file;
114    file = getfileinpath(logPath);
115    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
116    path = logPath + getlogFile;
117    string fileinfo = "";
118    fileinfo = ReadFile(path);
119    std::vector<std::string> para = {"test_event", "\"type_\":1", "\"bool_key\":true"};
120    if (fileinfo != "") {
121        result = CheckInfo(para, fileinfo);
122    } else {
123        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_0200 file error" << std::endl;
124    }
125    OH_HiAppEvent_DestroyParamList(list);
126    ASSERT_TRUE(result);
127    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_0200 end" << endl;
128}
129
130/**
131* @tc.name HiAppEvent Native Write Interface Test, Reporting the Keyvalue of the Boolean List Type.
132* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_0300
133* @author f00601390
134* @tc.desc The keyvalue is reported as a boolean list.
135*/
136HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_0300, Function|MediumTest|Level3){
137    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_0300 start" << endl;
138    bool result = false;
139    bool booleans[] = {true, true};
140    string getlogFile;
141    string path;
142    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
143    ParamList list = OH_HiAppEvent_CreateParamList();
144    OH_HiAppEvent_AddBoolArrayParam(list, "bool_arr_key", booleans, sizeof(booleans) / sizeof(booleans[0]));
145    EventType eventType = EventType::FAULT;
146    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
147    sleep(1); //等待1s
148    std::vector<std::string> file;
149    file = getfileinpath(logPath);
150    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
151    path = logPath + getlogFile;
152    string fileinfo = "";
153    fileinfo = ReadFile(path);
154    std::vector<std::string> para = {"test_event", "\"type_\":1", "\"bool_arr_key\":[true,true]"};
155    if (fileinfo != "") {
156        result = CheckInfo(para, fileinfo);
157    } else {
158        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_0300 file error" << std::endl;
159    }
160    OH_HiAppEvent_DestroyParamList(list);
161    ASSERT_TRUE(result);
162    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_0300 end" << endl;
163}
164
165/**
166* @tc.name HiAppEvent Native Write Interface Test, Reporting the Keyvalue of the Boolean List Type.
167* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_0400
168* @author f00601390
169* @tc.desc The keyvalue is reported as a boolean list.
170*/
171HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_0400, Function|MediumTest|Level3){
172    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_0400 start" << endl;
173    bool result = false;
174    char str[] = "hello";
175    string getlogFile;
176    string path;
177    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
178    ParamList list = OH_HiAppEvent_CreateParamList();
179    OH_HiAppEvent_AddStringParam(list, "str_key", str);
180    EventType eventType = EventType::BEHAVIOR;
181    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
182    sleep(1); //等待1s
183    std::vector<std::string> file;
184    file = getfileinpath(logPath);
185    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
186    path = logPath + getlogFile;
187    string fileinfo = "";
188    fileinfo = ReadFile(path);
189    std::vector<std::string> para = {"test_event", "\"type_\":4", "\"str_key\":\"hello\""};
190    if (fileinfo != "") {
191        result = CheckInfo(para, fileinfo);
192    } else {
193        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_0400 file error" << std::endl;
194    }
195    OH_HiAppEvent_DestroyParamList(list);
196    ASSERT_TRUE(result);
197    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_0400 end" << endl;
198}
199
200/**
201* @tc.name HiAppEvent Native Write Interface Test, Reporting the Keyvalue of the Boolean List Type.
202* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_0500
203* @author f00601390
204* @tc.desc The keyvalue is reported as a boolean list.
205*/
206HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_0500, Function|MediumTest|Level3){
207    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_0500 start" << endl;
208    bool result = false;
209    char str1[] = "hello";
210    char str2[] = "world";
211    char* strs[] = {str1, str2};
212    string getlogFile;
213    string path;
214    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
215    ParamList list = OH_HiAppEvent_CreateParamList();
216    OH_HiAppEvent_AddStringArrayParam(list, "str_arr_key", strs, sizeof(strs) / sizeof(strs[0]));
217    EventType eventType = EventType::BEHAVIOR;
218    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
219    sleep(1); //等待1s
220    std::vector<std::string> file;
221    file = getfileinpath(logPath);
222    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
223    path = logPath + getlogFile;
224    string fileinfo = "";
225    fileinfo = ReadFile(path);
226    std::vector<std::string> para = {"test_event", "\"type_\":4", "\"str_arr_key\":[\"hello\",\"world\"]"};
227    if (fileinfo != "") {
228        result = CheckInfo(para, fileinfo);
229    } else {
230        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_0500 file error" << std::endl;
231    }
232    OH_HiAppEvent_DestroyParamList(list);
233    ASSERT_TRUE(result);
234    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_0500 end" << endl;
235}
236
237/**
238* @tc.name Testing the Native Write Interface of the HiAppEvent, Reporting the Keyvalue of the Double Type.
239* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_0800
240* @author f00601390
241* @tc.desc The keyvalue type is double.
242*/
243HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_0800, Function|MediumTest|Level3){
244    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_0800 start" << endl;
245    bool result = false;
246    double num = 30949.374;
247    string getlogFile;
248    string path;
249    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
250    ParamList list = OH_HiAppEvent_CreateParamList();
251    OH_HiAppEvent_AddDoubleParam(list, "double_key", num);
252    EventType eventType = EventType::FAULT;
253    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
254    sleep(1); //等待1s
255    std::vector<std::string> file;
256    file = getfileinpath(logPath);
257    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
258    path = logPath + getlogFile;
259    string fileinfo = "";
260    fileinfo = ReadFile(path);
261    std::vector<std::string> para = {"test_event", "\"type_\":1", "\"double_key\":30949.374"};
262    if (fileinfo != "") {
263        result = CheckInfo(para, fileinfo);
264    } else {
265        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_0800 file error" << std::endl;
266    }
267    OH_HiAppEvent_DestroyParamList(list);
268    ASSERT_TRUE(result);
269    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_0800 end" << endl;
270}
271
272/**
273* @tc.name HiAppEvent Native Write Interface Test, Reporting the Keyvalue of a Double List.
274* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_0900
275* @author f00601390
276* @tc.desc The keyvalue is reported as a double list.
277*/
278HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_0900, Function|MediumTest|Level3){
279    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_0900 start" << endl;
280    bool result = false;
281    double nums[] = {123.22, 30949.374, 131312.46464};
282    string getlogFile;
283    string path;
284    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
285    ParamList list = OH_HiAppEvent_CreateParamList();
286    OH_HiAppEvent_AddDoubleArrayParam(list, "double_arr_key", nums, sizeof(nums) / sizeof(nums[0]));
287    EventType eventType = EventType::STATISTIC;
288    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
289    sleep(1); //等待1s
290    std::vector<std::string> file;
291    file = getfileinpath(logPath);
292    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
293    path = logPath + getlogFile;
294    string fileinfo = "";
295    fileinfo = ReadFile(path);
296    std::vector<std::string> para = {"test_event", "\"type_\":2", "\"double_arr_key\":[123.22,30949.374,131312.46464]"};
297    if (fileinfo != "") {
298        result = CheckInfo(para, fileinfo);
299    } else {
300        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_0900 file error" << std::endl;
301    }
302    OH_HiAppEvent_DestroyParamList(list);
303    ASSERT_TRUE(result);
304    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_0900 end" << endl;
305}
306
307/**
308* @tc.name HiAppEvent Native Write Interface Test, Reporting the KeyValue of the Floating Type.
309* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_1000
310* @author f00601390
311* @tc.desc The keyvalue type is float.
312*/
313HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_1000, Function|MediumTest|Level3){
314    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1000 start" << endl;
315    bool result = false;
316    float num = 234.5f;
317    string getlogFile;
318    string path;
319    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
320    ParamList list = OH_HiAppEvent_CreateParamList();
321    OH_HiAppEvent_AddFloatParam(list, "float_key", num);
322    EventType eventType = EventType::STATISTIC;
323    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
324    sleep(1); //等待1s
325    std::vector<std::string> file;
326    file = getfileinpath(logPath);
327    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
328    path = logPath + getlogFile;
329    string fileinfo = "";
330    fileinfo = ReadFile(path);
331    std::vector<std::string> para = {"test_event", "\"type_\":2", "\"float_key\":234.5"};
332    if (fileinfo != "") {
333        result = CheckInfo(para, fileinfo);
334    } else {
335        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_1000 file error" << std::endl;
336    }
337    OH_HiAppEvent_DestroyParamList(list);
338    ASSERT_TRUE(result);
339    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1000 end" << endl;
340}
341
342/**
343* @tc.name HiAppEvent Native Write Interface Test, Reporting the Keyvalue of a Floating List.
344* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_1100
345* @author f00601390
346* @tc.desc The keyvalue is reported as a float list.
347*/
348HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_1100, Function|MediumTest|Level3){
349    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1100 start" << endl;
350    bool result = false;
351    float nums[] = {123.22f, 234.5f, 131312.46464f};
352    string getlogFile;
353    string path;
354    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
355    ParamList list = OH_HiAppEvent_CreateParamList();
356    OH_HiAppEvent_AddFloatArrayParam(list, "float_arr_key", nums, sizeof(nums) / sizeof(nums[0]));
357    EventType eventType = EventType::STATISTIC;
358    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
359    sleep(1); //等待1s
360    std::vector<std::string> file;
361    file = getfileinpath(logPath);
362    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
363    path = logPath + getlogFile;
364    string fileinfo = "";
365    fileinfo = ReadFile(path);
366    std::vector<std::string> para = {"test_event", "\"type_\":2", "\"float_arr_key\":[123.22", "234.5", "131312.46"};
367    if (fileinfo != "") {
368        result = CheckInfo(para, fileinfo);
369    } else {
370        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_1100 file error" << std::endl;
371    }
372    OH_HiAppEvent_DestroyParamList(list);
373    ASSERT_TRUE(result);
374    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1100 end" << endl;
375}
376
377/**
378* @tc.name HiAppEvent Native Write Interface Test, Reported When the Keyvalue Is of the Int Type.
379* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_1200
380* @author f00601390
381* @tc.desc The keyvalue is of the int type.
382*/
383HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_1200, Function|MediumTest|Level3){
384    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1200 start" << endl;
385    bool result = false;
386    int num = 1;
387    string getlogFile;
388    string path;
389    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
390    ParamList list = OH_HiAppEvent_CreateParamList();
391    OH_HiAppEvent_AddInt8Param(list, "int8_key", num);
392    EventType eventType = EventType::SECURITY;
393    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
394    sleep(1); //等待1s
395    std::vector<std::string> file;
396    file = getfileinpath(logPath);
397    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
398    path = logPath + getlogFile;
399    string fileinfo = "";
400    fileinfo = ReadFile(path);
401    std::vector<std::string> para = {"test_event", "\"type_\":3", "\"int8_key\":1"};
402    if (fileinfo != "") {
403        result = CheckInfo(para, fileinfo);
404    } else {
405        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_1200 file error" << std::endl;
406    }
407    OH_HiAppEvent_DestroyParamList(list);
408    ASSERT_TRUE(result);
409    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1200 end" << endl;
410}
411
412/**
413* @tc.name HiAppEvent Native Write Interface Test, Reporting of the int List Type of Keyvalue.
414* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_1300
415* @author f00601390
416* @tc.desc The keyvalue is reported as an int list.
417*/
418HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_1300, Function|MediumTest|Level3){
419    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1300 start" << endl;
420    bool result = false;
421    int8_t nums[] = {1, 10, 100};
422    string getlogFile;
423    string path;
424    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
425    ParamList list = OH_HiAppEvent_CreateParamList();
426    OH_HiAppEvent_AddInt8ArrayParam(list, "int8_arr_key", nums, sizeof(nums) / sizeof(nums[0]));
427    EventType eventType = EventType::SECURITY;
428    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
429    sleep(1); //等待1s
430    std::vector<std::string> file;
431    file = getfileinpath(logPath);
432    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
433    path = logPath + getlogFile;
434    string fileinfo = "";
435    fileinfo = ReadFile(path);
436    std::vector<std::string> para = {"test_event", "\"type_\":3", "\"int8_arr_key\":[1,10,100]"};
437    if (fileinfo != "") {
438        result = CheckInfo(para, fileinfo);
439    } else {
440        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_1300 file error" << std::endl;
441    }
442    OH_HiAppEvent_DestroyParamList(list);
443    ASSERT_TRUE(result);
444    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1300 end" << endl;
445}
446
447/**
448* @tc.name HiAppEvent Native Write Interface Test Reported When the Keyvalue Is of the Long Type.
449* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_1400
450* @author f00601390
451* @tc.desc The keyvalue type is long.
452*/
453HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_1400, Function|MediumTest|Level3){
454    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1400 start" << endl;
455    bool result = false;
456    int16_t num = 1;
457    string getlogFile;
458    string path;
459    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
460    ParamList list = OH_HiAppEvent_CreateParamList();
461    OH_HiAppEvent_AddInt16Param(list, "int16_key", num);
462    EventType eventType = EventType::SECURITY;
463    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
464    sleep(1); //等待1s
465    std::vector<std::string> file;
466    file = getfileinpath(logPath);
467    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
468    path = logPath + getlogFile;
469    string fileinfo = "";
470    fileinfo = ReadFile(path);
471    std::vector<std::string> para = {"test_event", "\"type_\":3", "\"int16_key\":1"};
472    if (fileinfo != "") {
473        result = CheckInfo(para, fileinfo);
474    } else {
475        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_1400 file error" << std::endl;
476    }
477    OH_HiAppEvent_DestroyParamList(list);
478    ASSERT_TRUE(result);
479    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1400 end" << endl;
480}
481
482/**
483* @tc.name HiAppEvent Native Write Interface Test Reported When the Keyvalue Is of the Long Type.
484* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_1500
485* @author f00601390
486* @tc.desc The keyvalue type is long.
487*/
488HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_1500, Function|MediumTest|Level3){
489    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1500 start" << endl;
490    bool result = false;
491    int16_t nums[] = {1, 1000, 5000};
492    string getlogFile;
493    string path;
494    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
495    ParamList list = OH_HiAppEvent_CreateParamList();
496    OH_HiAppEvent_AddInt16ArrayParam(list, "int16_arr_key", nums, sizeof(nums) / sizeof(nums[0]));
497    EventType eventType = EventType::SECURITY;
498    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
499    sleep(1); //等待1s
500    std::vector<std::string> file;
501    file = getfileinpath(logPath);
502    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
503    path = logPath + getlogFile;
504    string fileinfo = "";
505    fileinfo = ReadFile(path);
506    std::vector<std::string> para = {"test_event", "\"type_\":3", "\"int16_arr_key\":[1,1000,5000]"};
507    if (fileinfo != "") {
508        result = CheckInfo(para, fileinfo);
509    } else {
510        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_1500 file error" << std::endl;
511    }
512    OH_HiAppEvent_DestroyParamList(list);
513    ASSERT_TRUE(result);
514    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1500 end" << endl;
515}
516
517/**
518* @tc.name HiAppEvent Native Write Interface Test Reported When the Keyvalue Is of the Long Type.
519* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_1600
520* @author f00601390
521* @tc.desc The keyvalue type is long.
522*/
523HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_1600, Function|MediumTest|Level3){
524    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1600 start" << endl;
525    bool result = false;
526     int32_t num = 1;
527    string getlogFile;
528    string path;
529    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
530    ParamList list = OH_HiAppEvent_CreateParamList();
531    OH_HiAppEvent_AddInt32Param(list, "int32_key", num);
532    EventType eventType = EventType::SECURITY;
533    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
534    sleep(1); //等待1s
535    std::vector<std::string> file;
536    file = getfileinpath(logPath);
537    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
538    path = logPath + getlogFile;
539    string fileinfo = "";
540    fileinfo = ReadFile(path);
541    std::vector<std::string> para = {"test_event", "\"type_\":3", "\"int32_key\":1"};
542    if (fileinfo != "") {
543        result = CheckInfo(para, fileinfo);
544    } else {
545        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_1600 file error" << std::endl;
546    }
547    OH_HiAppEvent_DestroyParamList(list);
548    ASSERT_TRUE(result);
549    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1600 end" << endl;
550}
551
552/**
553* @tc.name HiAppEvent Native Write Interface Test Reported When the Keyvalue Is of the Long Type.
554* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_1700
555* @author f00601390
556* @tc.desc The keyvalue type is long.
557*/
558HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_1700, Function|MediumTest|Level3){
559    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1700 start" << endl;
560    bool result = false;
561    int32_t nums[] = {1, 100000, 500000};
562    string getlogFile;
563    string path;
564    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
565    ParamList list = OH_HiAppEvent_CreateParamList();
566    OH_HiAppEvent_AddInt32ArrayParam(list, "int32_arr_key", nums, sizeof(nums) / sizeof(nums[0]));
567    EventType eventType = EventType::SECURITY;
568    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
569    sleep(1); //等待1s
570    std::vector<std::string> file;
571    file = getfileinpath(logPath);
572    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
573    path = logPath + getlogFile;
574    string fileinfo = "";
575    fileinfo = ReadFile(path);
576    std::vector<std::string> para = {"test_event", "\"type_\":3", "\"int32_arr_key\":[1,100000,500000]"};
577    if (fileinfo != "") {
578        result = CheckInfo(para, fileinfo);
579    } else {
580        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_1700 file error" << std::endl;
581    }
582    OH_HiAppEvent_DestroyParamList(list);
583    ASSERT_TRUE(result);
584    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1700 end" << endl;
585}
586
587/**
588* @tc.name HiAppEvent Native Write Interface Test Reported When the Keyvalue Is of the Long Type.
589* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_1800
590* @author f00601390
591* @tc.desc The keyvalue type is long.
592*/
593HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_1800, Function|MediumTest|Level3){
594    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1800 start" << endl;
595    bool result = false;
596    int64_t num = 1;
597    string getlogFile;
598    string path;
599    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
600    ParamList list = OH_HiAppEvent_CreateParamList();
601    OH_HiAppEvent_AddInt64Param(list, "int64_key", num);
602    EventType eventType = EventType::SECURITY;
603    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
604    sleep(1); //等待1s
605    std::vector<std::string> file;
606    file = getfileinpath(logPath);
607    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
608    path = logPath + getlogFile;
609    string fileinfo = "";
610    fileinfo = ReadFile(path);
611    std::vector<std::string> para = {"test_event", "\"type_\":3", "\"int64_key\":1"};
612    if (fileinfo != "") {
613        result = CheckInfo(para, fileinfo);
614    } else {
615        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_1800 file error" << std::endl;
616    }
617    OH_HiAppEvent_DestroyParamList(list);
618    ASSERT_TRUE(result);
619    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1800 end" << endl;
620}
621
622/**
623* @tc.name HiAppEvent Native Write Interface Test Reported When the Keyvalue Is of the Long Type.
624* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_1900
625* @author f00601390
626* @tc.desc The keyvalue type is long.
627*/
628HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_1900, Function|MediumTest|Level3){
629    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1900 start" << endl;
630    bool result = false;
631    int64_t nums[] = {1, 10000000, 50000000};
632    string getlogFile;
633    string path;
634    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
635    ParamList list = OH_HiAppEvent_CreateParamList();
636    OH_HiAppEvent_AddInt64ArrayParam(list, "int64_arr_key", nums, sizeof(nums) / sizeof(nums[0]));
637    EventType eventType = EventType::SECURITY;
638    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
639    sleep(1); //等待1s
640    std::vector<std::string> file;
641    file = getfileinpath(logPath);
642    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
643    path = logPath + getlogFile;
644    string fileinfo = "";
645    fileinfo = ReadFile(path);
646    std::vector<std::string> para = {"test_event", "\"type_\":3", "\"int64_arr_key\":[1,10000000,50000000]"};
647    if (fileinfo != "") {
648        result = CheckInfo(para, fileinfo);
649    } else {
650        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_1900 file error" << std::endl;
651    }
652    OH_HiAppEvent_DestroyParamList(list);
653    ASSERT_TRUE(result);
654    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_1900 end" << endl;
655}
656
657/**
658* @tc.name HiAppEvent Native Write Interface Test, Reporting the Keyvalue of the string List Type.
659* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_2100
660* @author f00601390
661* @tc.desc The keyvalue is reported as a string list, 100 list parameters .
662*/
663HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_2100, Function|MediumTest|Level3){
664    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2100 start" << endl;
665    bool result = false;
666    char* strs[100];
667    int num = 32;
668    for(int i=0;i<100;i++){
669	strs[i] = new char[32];
670        sprintf_s(strs[i], num,"hello_world_%d",i);
671	std::cout << sizeof(strs[i]) << std::endl;
672	std::cout << strs[i] << std::endl;
673    }
674    string getlogFile;
675    string path;
676    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
677    ParamList list = OH_HiAppEvent_CreateParamList();
678    OH_HiAppEvent_AddStringArrayParam(list, "str_arr_key", strs, sizeof(strs) / sizeof(strs[0]));
679    EventType eventType = EventType::BEHAVIOR;
680    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
681    sleep(1); //等待1s
682    std::vector<std::string> file;
683    file = getfileinpath(logPath);
684    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
685    path = logPath + getlogFile;
686    string fileinfo = "";
687    fileinfo = ReadFile(path);
688    std::vector<std::string> para = {"test_event", "\"type_\":4"};
689    if (fileinfo != "") {
690        result = CheckInfo(para, fileinfo);
691    } else {
692        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_2100 file error" << std::endl;
693    }
694    OH_HiAppEvent_DestroyParamList(list);
695    ASSERT_TRUE(result);
696    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2100 end" << endl;
697}
698
699/**
700* @tc.name HiAppEvent Native Write Interface Test, Reporting the Keyvalue of the string Type.
701* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_2200
702* @author f00601390
703* @tc.desc The keyvalue is reported as a string, 8 * 1024 lenth.
704*/
705HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_2200, Function|MediumTest|Level4){
706    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2200 start" << endl;
707    bool result = false;
708    string strs = "";
709    for(int i=0;i<1024;i++){
710        strs.append("abcdefgh");
711    }
712    string getlogFile;
713    string path;
714    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
715    ParamList list = OH_HiAppEvent_CreateParamList();
716    OH_HiAppEvent_AddStringParam(list, "str_key", strs.c_str());
717    EventType eventType = EventType::BEHAVIOR;
718    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
719    sleep(1); //等待1s
720    std::vector<std::string> file;
721    file = getfileinpath(logPath);
722    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
723    path = logPath + getlogFile;
724    string fileinfo = "";
725    fileinfo = ReadFile(path);
726    std::vector<std::string> para = {"test_event", "\"type_\":4"};
727    if (fileinfo != "") {
728        result = CheckInfo(para, fileinfo);
729    } else {
730        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_2200 file error" << std::endl;
731    }
732    OH_HiAppEvent_DestroyParamList(list);
733    ASSERT_TRUE(result);
734    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2200 end" << endl;
735}
736
737/**
738* @tc.name HiAppEvent Native Write Interface Test, Reporting the event name is null.
739* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_2300
740* @author f00601390
741* @tc.desc Reported event name is null.
742*/
743HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_2300, Function|MediumTest|Level4){
744    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2300 start" << endl;
745    char str[] = "hello";
746    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
747    ParamList list = OH_HiAppEvent_CreateParamList();
748    OH_HiAppEvent_AddStringParam(list, "str_key", str);
749    EventType eventType = EventType::FAULT;
750    int ret = OH_HiAppEvent_Write(TEST_DOMAIN_NAME, NULL, eventType, list);
751    sleep(1); //等待1s
752    OH_HiAppEvent_DestroyParamList(list);
753    ASSERT_TRUE(ret == -1);
754    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2300 end" << endl;
755}
756
757/**
758* @tc.name HiAppEvent Native Write Interface Test, Reporting the event name is empty.
759* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_2400
760* @author f00601390
761* @tc.desc Reported event name is empty.
762*/
763HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_2400, Function|MediumTest|Level3){
764    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2400 start" << endl;
765    char str[] = "hello";
766    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
767    ParamList list = OH_HiAppEvent_CreateParamList();
768    OH_HiAppEvent_AddStringParam(list, "str_key", str);
769    EventType eventType = EventType::FAULT;
770    int ret = OH_HiAppEvent_Write(TEST_DOMAIN_NAME, "", eventType, list);
771    sleep(1); //等待1s
772    OH_HiAppEvent_DestroyParamList(list);
773    ASSERT_TRUE(ret == -1);
774    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2400 end" << endl;
775}
776
777/**
778* @tc.name HiAppEvent Native Write Interface Test, Reporting the event name starts with number.
779* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_2500
780* @author f00601390
781* @tc.desc Reported event name starts with number.
782*/
783HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_2500, Function|MediumTest|Level3){
784    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2500 start" << endl;
785    char str[] = "hello";
786    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
787    ParamList list = OH_HiAppEvent_CreateParamList();
788    OH_HiAppEvent_AddStringParam(list, "str_key", str);
789    EventType eventType = EventType::FAULT;
790    int ret = OH_HiAppEvent_Write(TEST_DOMAIN_NAME, "9527_test_event", eventType, list);
791    sleep(1); //等待1s
792    OH_HiAppEvent_DestroyParamList(list);
793    ASSERT_TRUE(ret == -1);
794    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2500 end" << endl;
795}
796
797/**
798* @tc.name HiAppEvent Native Write Interface Test, 33 parameters are reported.
799* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_2700
800* @author f00601390
801* @tc.desc key and values 33 parameters are reported.
802*/
803HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_2700, Function|MediumTest|Level4){
804    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2700 start" << endl;
805    bool result = false;
806    string getlogFile;
807    string path;
808    int maxLen = 32;
809    string keys[maxLen + 1];
810    string values[maxLen + 1];
811    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
812    ParamList list = OH_HiAppEvent_CreateParamList();
813    for (int i = 0; i <= maxLen; i++){
814        keys[i] = "key" + std::to_string(i);
815        values[i] = "value" + std::to_string(i);
816        OH_HiAppEvent_AddStringParam(list, keys[i].c_str(), values[i].c_str());
817    }
818    EventType eventType = EventType::FAULT;
819    int ret = OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
820    sleep(1); //等待1s
821    std::vector<std::string> file;
822    file = getfileinpath(logPath);
823    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
824    path = logPath + getlogFile;
825    string fileinfo = "";
826    fileinfo = ReadFile(path);
827    std::vector<std::string> para = {"test_event", "\"type_\":1", "\"key31\":\"value31\"", "\"key15\":\"value15\""};
828    if (fileinfo != "") {
829        result = CheckInfo(para, fileinfo);
830    } else {
831        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_2700 file error" << std::endl;
832    }
833    OH_HiAppEvent_DestroyParamList(list);
834    ASSERT_TRUE(ret == 5);
835    ASSERT_TRUE(result);
836    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2700 end" << endl;
837}
838
839/**
840* @tc.name HiAppEvent Native Write Interface Test, key and value is empty.
841* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_2800
842* @author f00601390
843* @tc.desc key and value is empty.
844*/
845HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_2800, Function|MediumTest|Level3){
846    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2800 start" << endl;
847    bool result = false;
848    string getlogFile;
849    string path;
850    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
851    ParamList list = OH_HiAppEvent_CreateParamList();
852    OH_HiAppEvent_AddStringParam(list, "", "");
853    EventType eventType = EventType::FAULT;
854    int ret = OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
855    sleep(1); //等待1s
856    std::vector<std::string> file;
857    file = getfileinpath(logPath);
858    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
859    path = logPath + getlogFile;
860    string fileinfo = "";
861    fileinfo = ReadFile(path);
862    std::vector<std::string> para = {"test_event", "\"type_\":1"};
863    if (fileinfo != "") {
864        result = CheckInfo(para, fileinfo);
865    } else {
866        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_2800 file error" << std::endl;
867    }
868    OH_HiAppEvent_DestroyParamList(list);
869    ASSERT_TRUE(result);
870    ASSERT_TRUE(ret == 1);
871    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2800 end" << endl;
872}
873
874/**
875* @tc.name HiAppEvent Native Write Interface Test, key is not string type.
876* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_2900
877* @author f00601390
878* @tc.desc key is not string type.
879*/
880HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_2900, Function|MediumTest|Level4){
881    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2900 start" << endl;
882    bool result = false;
883    string getlogFile;
884    string path;
885    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
886    ParamList list = OH_HiAppEvent_CreateParamList();
887    OH_HiAppEvent_AddStringParam(list, "", "hello");
888    EventType eventType = EventType::FAULT;
889    int ret = OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
890    sleep(1); //等待1s
891    std::vector<std::string> file;
892    file = getfileinpath(logPath);
893    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
894    path = logPath + getlogFile;
895    string fileinfo = "";
896    fileinfo = ReadFile(path);
897    std::vector<std::string> para = {"test_event", "\"type_\":1"};
898    if (fileinfo != "") {
899        result = CheckInfo(para, fileinfo);
900    } else {
901        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_2900 file error" << std::endl;
902    }
903    OH_HiAppEvent_DestroyParamList(list);
904    ASSERT_TRUE(result);
905    ASSERT_TRUE(ret == 1);
906    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_2900 end" << endl;
907}
908
909/**
910* @tc.name HiAppEvent Native Write Interface Test, key start with number.
911* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_3000
912* @author f00601390
913* @tc.desc key start with number.
914*/
915HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_3000, Function|MediumTest|Level4){
916    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3000 start" << endl;
917    bool result = false;
918    string getlogFile;
919    string path;
920    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
921    ParamList list = OH_HiAppEvent_CreateParamList();
922    OH_HiAppEvent_AddStringParam(list, "9527_hello", "world");
923    EventType eventType = EventType::FAULT;
924    int ret = OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
925    sleep(1); //等待1s
926    std::vector<std::string> file;
927    file = getfileinpath(logPath);
928    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
929    path = logPath + getlogFile;
930    string fileinfo = "";
931    fileinfo = ReadFile(path);
932    std::vector<std::string> para = {"test_event", "\"type_\":1"};
933    if (fileinfo != "") {
934        result = CheckInfo(para, fileinfo);
935    } else {
936        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_3000 file error" << std::endl;
937    }
938    OH_HiAppEvent_DestroyParamList(list);
939    ASSERT_TRUE(result);
940    ASSERT_TRUE(ret == 1);
941    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3000 end" << endl;
942}
943
944/**
945* @tc.name HiAppEvent Native Write Interface Test, Reporting the Key value of the string Type.
946* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_3100
947* @author f00601390
948* @tc.desc The keyvalue is reported as a string, 8 * 1024 + 1 length.
949*/
950HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_3100, Function|MediumTest|Level4){
951    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3100 start" << endl;
952    bool result = false;
953    string strs = "";
954    for(int i=0;i<1024;i++){
955        strs.append("abcdefgh");
956    }
957    strs.append("a");
958    string getlogFile;
959    string path;
960    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
961    ParamList list = OH_HiAppEvent_CreateParamList();
962    OH_HiAppEvent_AddStringParam(list, "str_key", strs.c_str());
963    EventType eventType = EventType::FAULT;
964    int ret = OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
965    sleep(1); //等待1s
966    std::vector<std::string> file;
967    file = getfileinpath(logPath);
968    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
969    path = logPath + getlogFile;
970    string fileinfo = "";
971    fileinfo = ReadFile(path);
972    std::vector<std::string> para = {"test_event", "\"type_\":1"};
973    if (fileinfo != "") {
974        result = CheckInfo(para, fileinfo);
975    } else {
976        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_3100 file error" << std::endl;
977    }
978    OH_HiAppEvent_DestroyParamList(list);
979    ASSERT_TRUE(result);
980    ASSERT_TRUE(ret == 4);
981    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3100 end" << endl;
982}
983
984/**
985* @tc.name HiAppEvent Native Write Interface Test, key and value is NULL.
986* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_3200
987* @author f00601390
988* @tc.desc key and value is NULL.
989*/
990HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_3200, Function|MediumTest|Level3){
991    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3200 start" << endl;
992    bool result = false;
993    string getlogFile;
994    string path;
995    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
996    ParamList list = OH_HiAppEvent_CreateParamList();
997    OH_HiAppEvent_AddStringParam(list, NULL, NULL);
998    EventType eventType = EventType::FAULT;
999    int ret = OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
1000    sleep(1); //等待1s
1001    std::vector<std::string> file;
1002    file = getfileinpath(logPath);
1003    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
1004    path = logPath + getlogFile;
1005    string fileinfo = "";
1006    fileinfo = ReadFile(path);
1007    std::vector<std::string> para = {"test_event", "\"type_\":1"};
1008    if (fileinfo != "") {
1009        result = CheckInfo(para, fileinfo);
1010    } else {
1011        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_3200 file error" << std::endl;
1012    }
1013    OH_HiAppEvent_DestroyParamList(list);
1014    ASSERT_TRUE(ret == 0);
1015    ASSERT_TRUE(result);
1016    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3200 end" << endl;
1017}
1018
1019/**
1020* @tc.name HiAppEvent Native Write Interface Test, List Type Reporting,101 List Parameters.
1021* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_3300
1022* @author f00601390
1023* @tc.desc 101 List Parameters.
1024*/
1025HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_3300, Function|MediumTest|Level4){
1026    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3300 start" << endl;
1027    bool result = false;
1028    char* strs[101];
1029    int num = 32;
1030    for(int i=0;i<101;i++){
1031	strs[i] = new char[32];
1032        sprintf_s(strs[i], num,"hello_world_%d",i);
1033	std::cout << sizeof(strs[i]) << std::endl;
1034	std::cout << strs[i] << std::endl;
1035    }
1036    string getlogFile;
1037    string path;
1038    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
1039    ParamList list = OH_HiAppEvent_CreateParamList();
1040    OH_HiAppEvent_AddStringArrayParam(list, "str_arr_key", strs, sizeof(strs) / sizeof(strs[0]));
1041    EventType eventType = EventType::BEHAVIOR;
1042    int ret = OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
1043    sleep(1); //等待1s
1044    std::vector<std::string> file;
1045    file = getfileinpath(logPath);
1046    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
1047    path = logPath + getlogFile;
1048    string fileinfo = "";
1049    fileinfo = ReadFile(path);
1050    std::vector<std::string> para = {"test_event", "\"type_\":4", "\"str_arr_key\":[\"hello_world_0\",\"hello_world_1\",\"hello_world_2\"", "hello_world_99"};
1051    if (fileinfo != "") {
1052        result = CheckInfo(para, fileinfo);
1053    } else {
1054        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_3300 file error" << std::endl;
1055    }
1056    OH_HiAppEvent_DestroyParamList(list);
1057    ASSERT_TRUE(ret == 6);
1058    ASSERT_TRUE(result);
1059    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3300 end" << endl;
1060}
1061
1062/**
1063* @tc.name HiAppEvent Native Write Interface Test, 32 parameters are reported.
1064* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_3400
1065* @author f00601390
1066* @tc.desc key and values 32 parameters are reported.
1067*/
1068HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_3400, Function|MediumTest|Level4){
1069    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3400 start" << endl;
1070    bool result = false;
1071    string getlogFile;
1072    string path;
1073    int maxLen = 32;
1074    string keys[maxLen+1];
1075    string values[maxLen+1];
1076    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
1077    ParamList list = OH_HiAppEvent_CreateParamList();
1078    for (int i = 0; i <= maxLen; i++){
1079        keys[i] = "key" + std::to_string(i);
1080        values[i] = "value" + std::to_string(i);
1081        OH_HiAppEvent_AddStringParam(list, keys[i].c_str(), values[i].c_str());
1082    }
1083    EventType eventType = EventType::FAULT;
1084    int ret = OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
1085    sleep(1); //等待1s
1086    std::vector<std::string> file;
1087    file = getfileinpath(logPath);
1088    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
1089    path = logPath + getlogFile;
1090    string fileinfo = "";
1091    fileinfo = ReadFile(path);
1092    std::vector<std::string> para = {"test_event", "\"type_\":1", "\"key31\":\"value31\"","\"key15\":\"value15\"","\"key0\":\"value0\""};
1093    if (fileinfo != "") {
1094        result = CheckInfo(para, fileinfo);
1095    } else {
1096        std::cout << "DFX_DFT_HiviewKit_HiAppEvent_Native_3400 file error" << std::endl;
1097    }
1098    OH_HiAppEvent_DestroyParamList(list);
1099    ASSERT_TRUE(ret == 5);
1100    ASSERT_TRUE(result);
1101    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3400 end" << endl;
1102}
1103
1104/**
1105* @tc.name HiAppEvent Native Write Interface Test, 32 parameters are reported.
1106* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_3500
1107* @author f00601390
1108* @tc.desc key and values 32 parameters are reported.
1109*/
1110HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_3500, Function|MediumTest|Level4){
1111    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3500 start" << endl;
1112    string getlogFile;
1113    string path;
1114    OH_HiAppEvent_Configure("max_storage", "10M");
1115    int maxLen = 32;
1116    string keys[maxLen+1];
1117    string values[maxLen+1];
1118    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
1119    std::vector<std::string> cmdret;
1120    time_t nowtime;
1121    struct tm* p;
1122    time(&nowtime);
1123    p = localtime(&nowtime);
1124    char s[25];
1125    sprintf_s(s, sizeof(s),"app_event_%d%02d%02d.log", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday);
1126    std::cout << s << std::endl;
1127    string fname = s;
1128    string cmd = "dd if=/dev/zero of=/data/test/hiappevent/" + fname + " bs=11M count=1";
1129    ExecCmdWithRet(cmd, cmdret);
1130    ParamList list = OH_HiAppEvent_CreateParamList();
1131    for (int i = 0; i <= maxLen; i++){
1132        keys[i] = "key" + std::to_string(i);
1133        values[i] = "value" + std::to_string(i);
1134        OH_HiAppEvent_AddStringParam(list, keys[i].c_str(), values[i].c_str());
1135    }
1136    EventType eventType = EventType::FAULT;
1137    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
1138    sleep(1); //等待1s
1139    std::vector<std::string> file;
1140    file = getfileinpath(logPath);
1141    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
1142    path = logPath + getlogFile;
1143    bool result = false;
1144    string fileinfo = ReadFile(path);
1145    std::vector<std::string> para = {"test_event", "\"type_\":1", "\"key31\":\"value31\"","\"key15\":\"value15\"","\"key0\":\"value0\""};
1146    if (fileinfo != "") {
1147        result = CheckInfo(para, fileinfo);
1148    }
1149    OH_HiAppEvent_DestroyParamList(list);
1150    ASSERT_TRUE(result);
1151    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3500 end" << endl;
1152}
1153
1154/**
1155* @tc.name HiAppEvent Native Write Interface Test, 32 parameters are reported.
1156* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_3500
1157* @author f00601390
1158* @tc.desc key and values 32 parameters are reported.
1159*/
1160HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_3600, Function|MediumTest|Level4){
1161    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3600 start" << endl;
1162    string getlogFile;
1163    string path;
1164    OH_HiAppEvent_Configure("max_storage", "1M");
1165    int maxLen = 32;
1166    string keys[maxLen+1];
1167    string values[maxLen+1];
1168    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
1169    std::vector<std::string> cmdret;
1170    time_t nowtime;
1171    struct tm* p;
1172    time(&nowtime);
1173    p = localtime(&nowtime);
1174    char s[25];
1175    sprintf_s(s, sizeof(s),"app_event_%d%02d%02d.log", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday);
1176    string fname = s;
1177    string cmd = "dd if=/dev/zero of=/data/test/hiappevent/" + fname + " bs=1.5M count=1";
1178    ExecCmdWithRet(cmd, cmdret);
1179    ParamList list = OH_HiAppEvent_CreateParamList();
1180    for (int i = 0; i <= maxLen; i++){
1181        keys[i] = "key" + std::to_string(i);
1182        values[i] = "value" + std::to_string(i);
1183        OH_HiAppEvent_AddStringParam(list, keys[i].c_str(), values[i].c_str());
1184    }
1185    EventType eventType = EventType::FAULT;
1186    OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
1187    sleep(1); //等待1s
1188    std::vector<std::string> file;
1189    file = getfileinpath(logPath);
1190    getlogFile = accumulate(file.begin(), file.end(), getlogFile);
1191    path = logPath + getlogFile;
1192    bool result = false;
1193    string fileinfo = ReadFile(path);
1194    std::vector<std::string> para = {"test_event", "\"type_\":1", "\"key31\":\"value31\"","\"key15\":\"value15\"","\"key0\":\"value0\""};
1195    if (fileinfo != "") {
1196        result = CheckInfo(para, fileinfo);
1197    }
1198    OH_HiAppEvent_DestroyParamList(list);
1199    ASSERT_TRUE(result);
1200    OH_HiAppEvent_Configure("max_storage", "10M");
1201    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3600 end" << endl;
1202}
1203
1204/**
1205* @tc.name Test of the HiAppEvent Native Write Interface in which the keyvalue
1206*          is of the boolean type and the bool value is true.
1207* @tc.number DFX_DFT_HiviewKit_HiAppEvent_Native_3700
1208* @author f00601390
1209* @tc.desc The keyvalue is of the boolean type and the bool value is false.
1210*/
1211HWTEST_F(HiAppEventCPPTest, DFX_DFT_HiviewKit_HiAppEvent_Native_3700, Function|MediumTest|Level3){
1212    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3700 start" << endl;
1213    OH_HiAppEvent_Configure("disable", "true");
1214    bool boolean = true;
1215    OHOS::HiviewDFX::HiAppEventConfig::GetInstance().SetStorageDir("/data/test/hiappevent/");
1216    ParamList list = OH_HiAppEvent_CreateParamList();
1217    OH_HiAppEvent_AddBoolParam(list, "bool_key", boolean);
1218    EventType eventType = EventType::FAULT;
1219    int ret = OH_HiAppEvent_Write(TEST_DOMAIN_NAME, TEST_EVENT_NAME, eventType, list);
1220    sleep(1); //等待1s
1221    std::vector<std::string> file;
1222    file = getfileinpath(logPath);
1223    OH_HiAppEvent_DestroyParamList(list);
1224    ASSERT_TRUE(file.size() == 0);
1225    ASSERT_TRUE(ret == -99);
1226    OH_HiAppEvent_Configure("disable", "false");
1227    GTEST_LOG_(INFO) << "DFX_DFT_HiviewKit_HiAppEvent_Native_3700 end" << endl;
1228}
1229