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.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
60 // export switch on at 10
61 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, FIRST_ENABLED_SEQ);
62 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), FIRST_ENABLED_SEQ);
63 // export task finish at 150
64 manager.HandleExportTaskFinished(TEST_MODULE_NAME, FIRST_FINISH_SEQ);
65 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), FIRST_FINISH_SEQ);
66 // export switch off
67 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, INVALID_SEQ_VAL);
68 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
69 // export switch on at 100
70 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, SECOND_ENABLED_SEQ);
71 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), FIRST_FINISH_SEQ);
72 // export task finish at 200
73 manager.HandleExportTaskFinished(TEST_MODULE_NAME, SECOND_FINISH_SEQ);
74 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), SECOND_FINISH_SEQ);
75 // export switch off
76 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, INVALID_SEQ_VAL);
77 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
78 // export switch on at 350
79 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, THIRD_ENABLED_SEQ);
80 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), THIRD_ENABLED_SEQ);
81 // export task finish at 400
82 manager.HandleExportTaskFinished(TEST_MODULE_NAME, THIRD_FINISH_SEQ);
83 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), THIRD_FINISH_SEQ);
84 }
85
86 /**
87 * @tc.name: EventExportDbMgrTest002
88 * @tc.desc: ExportDbManager test with unnormal steps: switch on->init->switch on
89 * @tc.type: FUNC
90 * @tc.require: issueI9G6TM
91 */
92 HWTEST_F(EventExportDbMgrTest, EventExportDbMgrTest002, testing::ext::TestSize.Level3)
93 {
94 ExportDbManager manager("/data/test/test_data/db_dir2");
95 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
96 // export switch on at 10
97 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, FIRST_ENABLED_SEQ);
98 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), FIRST_ENABLED_SEQ);
99 // export switch on at 100
100 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, SECOND_ENABLED_SEQ);
101 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), SECOND_ENABLED_SEQ);
102 }
103
104 /**
105 * @tc.name: EventExportDbMgrTest003
106 * @tc.desc: ExportDbManager test with unnormal steps: switch off->init->switch->switch off->switch on
107 * @tc.type: FUNC
108 * @tc.require: issueI9G6TM
109 */
110 HWTEST_F(EventExportDbMgrTest, EventExportDbMgrTest003, testing::ext::TestSize.Level3)
111 {
112 ExportDbManager manager("/data/test/test_data/db_dir3");
113 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
114 // export switch off
115 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, INVALID_SEQ_VAL);
116 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
117 // export switch off
118 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, INVALID_SEQ_VAL);
119 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
120 // export switch on at 350
121 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, THIRD_ENABLED_SEQ);
122 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), THIRD_ENABLED_SEQ);
123 }
124
125 /**
126 * @tc.name: EventExportDbMgrTest004
127 * @tc.desc: ExportDbManager test with unnormal steps: task finished->init->task finished->switch on
128 * @tc.type: FUNC
129 * @tc.require: issueI9G6TM
130 */
131 HWTEST_F(EventExportDbMgrTest, EventExportDbMgrTest004, testing::ext::TestSize.Level3)
132 {
133 ExportDbManager manager("/data/test/test_data/db_dir4");
134 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
135 // export task finish at 150
136 manager.HandleExportTaskFinished(TEST_MODULE_NAME, FIRST_FINISH_SEQ);
137 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
138 // export task finish at 200
139 manager.HandleExportTaskFinished(TEST_MODULE_NAME, SECOND_FINISH_SEQ);
140 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), INVALID_SEQ_VAL);
141 // export switch on at 350
142 manager.HandleExportSwitchChanged(TEST_MODULE_NAME, THIRD_ENABLED_SEQ);
143 ASSERT_EQ(manager.GetExportBeginSeq(TEST_MODULE_NAME), THIRD_ENABLED_SEQ);
144 }
145 } // namespace HiviewDFX
146 } // namespace OHOS