1 /*
2 * Copyright (c) 2024 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 "event_export_db_mgr_test.h"
17
18 #include <limits>
19
20 #include "export_db_manager.h"
21
22 namespace OHOS {
23 namespace HiviewDFX {
24 namespace {
25 constexpr char TEST_MODULE_NAME[] = "test_module";
26 constexpr int64_t FIRST_ENABLED_SEQ = 10;
27 constexpr int64_t SECOND_ENABLED_SEQ = 100;
28 constexpr int64_t THIRD_ENABLED_SEQ = 350;
29 constexpr int64_t FIRST_FINISH_SEQ = 150;
30 constexpr int64_t SECOND_FINISH_SEQ = 200;
31 constexpr int64_t THIRD_FINISH_SEQ = 400;
32 }
33
SetUpTestCase()34 void EventExportDbMgrTest::SetUpTestCase()
35 {
36 }
37
TearDownTestCase()38 void EventExportDbMgrTest::TearDownTestCase()
39 {
40 }
41
SetUp()42 void EventExportDbMgrTest::SetUp()
43 {
44 }
45
TearDown()46 void EventExportDbMgrTest::TearDown()
47 {
48 }
49
50 /**
51 * @tc.name: EventExportDbMgrTest001
52 * @tc.desc: ExportDbManager test with normal steps
53 * @tc.type: FUNC
54 * @tc.require: issueI9G6TM
55 */
56 HWTEST_F(EventExportDbMgrTest, EventExportDbMgrTest001, testing::ext::TestSize.Level3)
57 {
58 ExportDbManager manager("/data/test/test_data/db_dir1/");
59 ASSERT_EQ(manager.GetEventInheritFlagPath(), "/data/test/test_data/db_dir1/event_inherit_flag");
60 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
61 // export switch on at 10
62 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, FIRST_ENABLED_SEQ);
63 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), FIRST_ENABLED_SEQ);
64 // export task finish at 150
65 manager.HandleExportTaskFinished(TEST_MODULE_NAME, FIRST_FINISH_SEQ);
66 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), FIRST_FINISH_SEQ);
67 // export switch off
68 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, INVALID_SEQ_VAL);
69 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
70 // export switch on at 100
71 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, SECOND_ENABLED_SEQ);
72 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), FIRST_FINISH_SEQ);
73 // export task finish at 200
74 manager.HandleExportTaskFinished(TEST_MODULE_NAME, SECOND_FINISH_SEQ);
75 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), SECOND_FINISH_SEQ);
76 // export switch off
77 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, INVALID_SEQ_VAL);
78 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
79 // export switch on at 350
80 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, THIRD_ENABLED_SEQ);
81 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), THIRD_ENABLED_SEQ);
82 // export task finish at 400
83 manager.HandleExportTaskFinished(TEST_MODULE_NAME, THIRD_FINISH_SEQ);
84 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), THIRD_FINISH_SEQ);
85 }
86
87 /**
88 * @tc.name: EventExportDbMgrTest002
89 * @tc.desc: ExportDbManager test with unnormal steps: switch on->init->switch on
90 * @tc.type: FUNC
91 * @tc.require: issueI9G6TM
92 */
93 HWTEST_F(EventExportDbMgrTest, EventExportDbMgrTest002, testing::ext::TestSize.Level3)
94 {
95 ExportDbManager manager("/data/test/test_data/db_dir2");
96 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
97 // export switch on at 10
98 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, FIRST_ENABLED_SEQ);
99 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), FIRST_ENABLED_SEQ);
100 // export switch on at 100
101 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, SECOND_ENABLED_SEQ);
102 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), SECOND_ENABLED_SEQ);
103 }
104
105 /**
106 * @tc.name: EventExportDbMgrTest003
107 * @tc.desc: ExportDbManager test with unnormal steps: switch off->init->switch->switch off->switch on
108 * @tc.type: FUNC
109 * @tc.require: issueI9G6TM
110 */
111 HWTEST_F(EventExportDbMgrTest, EventExportDbMgrTest003, testing::ext::TestSize.Level3)
112 {
113 ExportDbManager manager("/data/test/test_data/db_dir3");
114 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
115 // export switch off
116 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, INVALID_SEQ_VAL);
117 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
118 // export switch off
119 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, INVALID_SEQ_VAL);
120 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
121 // export switch on at 350
122 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, THIRD_ENABLED_SEQ);
123 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), THIRD_ENABLED_SEQ);
124 }
125
126 /**
127 * @tc.name: EventExportDbMgrTest004
128 * @tc.desc: ExportDbManager test with unnormal steps: task finished->init->task finished->switch on
129 * @tc.type: FUNC
130 * @tc.require: issueI9G6TM
131 */
132 HWTEST_F(EventExportDbMgrTest, EventExportDbMgrTest004, testing::ext::TestSize.Level3)
133 {
134 ExportDbManager manager("/data/test/test_data/db_dir4");
135 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
136 // export task finish at 150
137 manager.HandleExportTaskFinished(TEST_MODULE_NAME, FIRST_FINISH_SEQ);
138 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
139 // export task finish at 200
140 manager.HandleExportTaskFinished(TEST_MODULE_NAME, SECOND_FINISH_SEQ);
141 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
142 // export switch on at 350
143 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, THIRD_ENABLED_SEQ);
144 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), THIRD_ENABLED_SEQ);
145 }
146 } // namespace HiviewDFX
147 } // namespace OHOS