1 /*
2  * Copyright (c) 2021-2022 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 "stability_test.h"
17 
18 #include <sys/time.h>
19 
20 #include "test_common.h"
21 
22 namespace Contacts {
23 namespace Test {
StabilityTest()24 StabilityTest::StabilityTest()
25 {
26 }
27 
~StabilityTest()28 StabilityTest::~StabilityTest()
29 {
30 }
31 
DeleteContact()32 void StabilityTest::DeleteContact()
33 {
34     OHOS::DataShare::DataSharePredicates predicates;
35     OHOS::Uri uriRawContact(ContactsUri::RAW_CONTACT);
36     predicates.NotEqualTo("id", "0");
37     predicates.And();
38     predicates.EqualTo("is_deleted", "0");
39     contactsDataAbility.Delete(uriRawContact, predicates);
40     int count = 0;
41     int deleteCount = 9999;
42     std::vector<std::string> columns;
43     OHOS::Uri uriRawContactComplete(ContactsUri::DELETED_RAW_CONTACT);
44     while (count < deleteCount) {
45         int time = Time::SLEEP_TIME_MERGE_DELETE;
46         std::chrono::milliseconds dura(time);
47         std::this_thread::sleep_for(dura);
48         OHOS::DataShare::DataSharePredicates predicates2;
49         std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet =
50             contactsDataAbility.Query(uriRawContactComplete, predicates2, columns);
51         resultSet->GetRowCount(count);
52         resultSet->Close();
53     }
54     int time = Time::SLEEP_TIME_MERGE_DELETE;
55     std::chrono::milliseconds dura(time);
56     std::this_thread::sleep_for(dura);
57     OHOS::DataShare::DataSharePredicates predicates3;
58     predicates3.NotEqualTo("id", "0");
59     contactsDataAbility.Delete(uriRawContactComplete, predicates3);
60 }
61 
62 /*
63  * @tc.number  raw_contact_insert_performance_test_900
64  * @tc.name    raw_contact stability testing add 10000
65  * @tc.desc    add 10000
66  * @tc.level   Level1
67  * @tc.size    MediumTest
68  * @tc.type    Function
69  */
HWTEST_F(StabilityTest, raw_contact_insert_performance_test_900, testing::ext::TestSize.Level1)70 HWTEST_F(StabilityTest, raw_contact_insert_performance_test_900, testing::ext::TestSize.Level1)
71 {
72     HILOG_INFO("--- raw_contact_insert_performance_test_900 is starting! ---");
73     OHOS::Uri uriRawContact(ContactsUri::RAW_CONTACT);
74     std::vector<OHOS::DataShare::DataShareValuesBucket> values;
75     for (int i = 0; i < 10000; i++) {
76         OHOS::DataShare::DataShareValuesBucket rawContactValues;
77         std::string name("小严");
78         name.append(std::to_string(i + 1));
79         rawContactValues.Put("display_name", name);
80         rawContactValues.Put("company", "company");
81         rawContactValues.Put("position", "position");
82         values.push_back(rawContactValues);
83     }
84     int batchInsertCode = contactsDataAbility.BatchInsert(uriRawContact, values);
85     EXPECT_EQ(batchInsertCode, 0);
86 }
87 
88 /*
89  * @tc.number  raw_contact_update_performance_test_1000
90  * @tc.name    raw_contact stability testing update 10000
91  * @tc.desc    update 10000
92  * @tc.level   Level1
93  * @tc.size    MediumTest
94  * @tc.type    Function
95  */
HWTEST_F(StabilityTest, raw_contact_update_performance_test_1000, testing::ext::TestSize.Level1)96 HWTEST_F(StabilityTest, raw_contact_update_performance_test_1000, testing::ext::TestSize.Level1)
97 {
98     HILOG_INFO("--- raw_contact_update_performance_test_1000 is starting! ---");
99     OHOS::Uri uriRawContact(ContactsUri::RAW_CONTACT);
100     OHOS::DataShare::DataShareValuesBucket updateValues;
101     updateValues.Put("favorite", 1);
102     OHOS::DataShare::DataSharePredicates predicates;
103     predicates.GreaterThan("id", "0");
104     predicates.And();
105     predicates.EqualTo("is_deleted", "0");
106     int updateCode = contactsDataAbility.Update(uriRawContact, predicates, updateValues);
107     EXPECT_EQ(updateCode, 0);
108 }
109 
110 /*
111  * @tc.number  raw_contact_query_performance_test_1100
112  * @tc.name    raw_contact stability testing query 10000
113  * @tc.desc    query 10000
114  * @tc.level   Level1
115  * @tc.size    MediumTest
116  * @tc.type    Function
117  */
HWTEST_F(StabilityTest, raw_contact_query_performance_test_1100, testing::ext::TestSize.Level1)118 HWTEST_F(StabilityTest, raw_contact_query_performance_test_1100, testing::ext::TestSize.Level1)
119 {
120     HILOG_INFO("--- raw_contact_query_performance_test_1100 is starting! ---");
121     OHOS::Uri uriRawContact(ContactsUri::RAW_CONTACT);
122     std::vector<std::string> columns;
123     columns.push_back("id");
124     columns.push_back("display_name");
125     columns.push_back("company");
126     columns.push_back("position");
127     OHOS::DataShare::DataSharePredicates predicates;
128     predicates.GreaterThan("id", "0");
129     predicates.And();
130     predicates.EqualTo("is_deleted", "0");
131     std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet =
132         contactsDataAbility.Query(uriRawContact, predicates, columns);
133     int rowCount = 0;
134     resultSet->GetRowCount(rowCount);
135     EXPECT_GT(rowCount, 9999);
136     resultSet->Close();
137 }
138 
139 /*
140  * @tc.number  raw_contact_delete_performance_test_1200
141  * @tc.name    raw_contact stability testing delete 10000
142  * @tc.desc    delete 10000
143  * @tc.level   Level1
144  * @tc.size    MediumTest
145  * @tc.type    Function
146  */
HWTEST_F(StabilityTest, raw_contact_delete_performance_test_1200, testing::ext::TestSize.Level1)147 HWTEST_F(StabilityTest, raw_contact_delete_performance_test_1200, testing::ext::TestSize.Level1)
148 {
149     HILOG_INFO("--- raw_contact_delete_performance_test_1200 is starting! ---");
150     OHOS::Uri uriRawContact(ContactsUri::RAW_CONTACT);
151     OHOS::DataShare::DataSharePredicates predicates;
152     predicates.GreaterThan("id", "0");
153     predicates.And();
154     predicates.EqualTo("is_deleted", "0");
155     int deleteCode = contactsDataAbility.Delete(uriRawContact, predicates);
156     HILOG_INFO("raw_contact_delete_performance_test_1200 : deleteCode = %{public}d", deleteCode);
157     EXPECT_EQ(deleteCode, 0);
158 }
159 
160 /*
161  * @tc.number  contact_data_insert_performance_test_1300
162  * @tc.name    contact_data stability testing add 10000
163  * @tc.desc    add 10000
164  * @tc.level   Level1
165  * @tc.size    MediumTest
166  * @tc.type    Function
167  */
HWTEST_F(StabilityTest, contact_data_insert_performance_test_1300, testing::ext::TestSize.Level1)168 HWTEST_F(StabilityTest, contact_data_insert_performance_test_1300, testing::ext::TestSize.Level1)
169 {
170     OHOS::Uri uriRawContact(ContactsUri::RAW_CONTACT);
171     OHOS::DataShare::DataShareValuesBucket rawContactValues;
172     std::string rawName("xiaoyan");
173     rawContactValues.Put("display_name", rawName);
174     rawContactValues.Put("company", "company");
175     rawContactValues.Put("position", "position");
176     int rawContactId = contactsDataAbility.Insert(uriRawContact, rawContactValues);
177     OHOS::DataShare::DataSharePredicates predicates;
178     predicates.NotEqualTo("id", "0");
179     predicates.And();
180     predicates.EqualTo("is_deleted", "0");
181     contactsDataAbility.Delete(uriRawContact, predicates);
182     OHOS::Uri uriContactData(ContactsUri::CONTACT_DATA);
183     std::vector<OHOS::DataShare::DataShareValuesBucket> values;
184     for (int i = 0; i < 10000; i++) {
185         OHOS::DataShare::DataShareValuesBucket contactDataValues;
186         std::string name("xiaoyan");
187         name.append(std::to_string(i + 1));
188         contactDataValues.Put("raw_contact_id", rawContactId);
189         contactDataValues.Put("content_type", "name");
190         contactDataValues.Put("detail_info", name);
191         values.push_back(contactDataValues);
192     }
193     int batchInsertCode = contactsDataAbility.BatchInsert(uriContactData, values);
194     EXPECT_EQ(batchInsertCode, 0);
195 }
196 
197 /*
198  * @tc.number  contact_data_update_performance_test_1400
199  * @tc.name    contact_data stability testing update 10000
200  * @tc.desc    update 10000
201  * @tc.level   Level1
202  * @tc.size    MediumTest
203  * @tc.type    Function
204  */
HWTEST_F(StabilityTest, contact_data_update_performance_test_1400, testing::ext::TestSize.Level1)205 HWTEST_F(StabilityTest, contact_data_update_performance_test_1400, testing::ext::TestSize.Level1)
206 {
207     HILOG_INFO("--- contact_data_update_performance_test_1400 is starting! ---");
208     OHOS::Uri uriContactData(ContactsUri::CONTACT_DATA);
209     OHOS::DataShare::DataShareValuesBucket updateValues;
210     updateValues.Put("syn_1", "test");
211     OHOS::DataShare::DataSharePredicates predicates;
212     predicates.GreaterThan("id", "0");
213     int updateCode = contactsDataAbility.Update(uriContactData, predicates, updateValues);
214     EXPECT_EQ(updateCode, 0);
215 }
216 
217 /*
218  * @tc.number  contact_data_query_performance_test_1500
219  * @tc.name    contact_data stability testing query 10000
220  * @tc.desc    query 10000
221  * @tc.level   Level1
222  * @tc.size    MediumTest
223  * @tc.type    Function
224  */
HWTEST_F(StabilityTest, contact_data_query_performance_test_1500, testing::ext::TestSize.Level1)225 HWTEST_F(StabilityTest, contact_data_query_performance_test_1500, testing::ext::TestSize.Level1)
226 {
227     HILOG_INFO("--- contact_data_query_performance_test_1500 is starting! ---");
228     OHOS::Uri uriContactData(ContactsUri::CONTACT_DATA);
229     std::vector<std::string> columns;
230     columns.push_back("raw_contact_id");
231     columns.push_back("detail_info");
232     OHOS::DataShare::DataSharePredicates predicates;
233     predicates.GreaterThan("id", "0");
234     std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet =
235         contactsDataAbility.Query(uriContactData, predicates, columns);
236     int rowCount = 0;
237     resultSet->GetRowCount(rowCount);
238     EXPECT_GT(rowCount, 9999);
239     resultSet->Close();
240 }
241 
242 /*
243  * @tc.number  contact_data_delete_performance_test_1600
244  * @tc.name    contact_data stability testing delete 10000
245  * @tc.desc    delete 10000
246  * @tc.level   Level1
247  * @tc.size    MediumTest
248  * @tc.type    Function
249  */
HWTEST_F(StabilityTest, contact_data_delete_performance_test_1600, testing::ext::TestSize.Level1)250 HWTEST_F(StabilityTest, contact_data_delete_performance_test_1600, testing::ext::TestSize.Level1)
251 {
252     HILOG_INFO("--- contact_data_delete_performance_test_1600 is starting! ---");
253     OHOS::Uri uriContactData(ContactsUri::CONTACT_DATA);
254     OHOS::DataShare::DataSharePredicates predicates;
255     predicates.GreaterThan("id", "0");
256     int deleteCode = contactsDataAbility.Delete(uriContactData, predicates);
257     EXPECT_EQ(deleteCode, 0);
258 }
259 
260 /*
261  * @tc.number  calllog_insert_performance_test_100
262  * @tc.name    calllog calllog stability testing add 10000
263  * @tc.desc    add 10000
264  * @tc.level   Level1
265  * @tc.size    MediumTest
266  * @tc.type    Function
267  */
HWTEST_F(StabilityTest, calllog_insert_performance_test_100, testing::ext::TestSize.Level1)268 HWTEST_F(StabilityTest, calllog_insert_performance_test_100, testing::ext::TestSize.Level1)
269 {
270     OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
271     OHOS::DataShare::DataSharePredicates predicatesOne;
272     predicatesOne.GreaterThan("id", "0");
273     HILOG_INFO("calllog_insert_performance_test_100 deleted  start! ");
274     calllogAbility.Delete(uriCalllog, predicatesOne);
275     HILOG_INFO("--- calllog_insert_performance_test_100 is starting! ---");
276     std::vector<OHOS::DataShare::DataShareValuesBucket> values;
277     for (int i = 0; i < 10000; i++) {
278         OHOS::DataShare::DataShareValuesBucket calllogValues;
279         calllogValues.Put("phone_number", std::to_string(i + 1));
280         values.push_back(calllogValues);
281     }
282     int batchInsertCode = calllogAbility.BatchInsert(uriCalllog, values);
283     EXPECT_EQ(batchInsertCode, 0);
284 }
285 
286 /*
287  * @tc.number  calllog_update_performance_test_200
288  * @tc.name    calllog calllog stability testing update 10000
289  * @tc.desc    update 10000
290  * @tc.level   Level1
291  * @tc.size    MediumTest
292  * @tc.type    Function
293  */
HWTEST_F(StabilityTest, calllog_update_performance_test_200, testing::ext::TestSize.Level1)294 HWTEST_F(StabilityTest, calllog_update_performance_test_200, testing::ext::TestSize.Level1)
295 {
296     HILOG_INFO("--- calllog_update_performance_test_200 is starting! ---");
297     OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
298     OHOS::DataShare::DataShareValuesBucket updateValues;
299     updateValues.Put("answer_state", 1);
300     OHOS::DataShare::DataSharePredicates predicates;
301     predicates.GreaterThan("id", "0");
302     int updateCode = calllogAbility.Update(uriCalllog, predicates, updateValues);
303     HILOG_INFO("calllog_update_performance_test_200 : updateCode = %{public}d", updateCode);
304     EXPECT_EQ(updateCode, 0);
305 }
306 
307 /*
308  * @tc.number  calllog_query_performance_test_300
309  * @tc.name    calllog calllog stability testing query 10000
310  * @tc.desc    query 10000
311  * @tc.level   Level1
312  * @tc.size    MediumTest
313  * @tc.type    Function
314  */
HWTEST_F(StabilityTest, calllog_query_performance_test_300, testing::ext::TestSize.Level1)315 HWTEST_F(StabilityTest, calllog_query_performance_test_300, testing::ext::TestSize.Level1)
316 {
317     HILOG_INFO("--- calllog_query_performance_test_300 is starting! ---");
318     OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
319     std::vector<std::string> columns;
320     columns.push_back("id");
321     columns.push_back("phone_number");
322     OHOS::DataShare::DataSharePredicates predicates;
323     predicates.GreaterThan("id", "0");
324     std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet =
325         calllogAbility.Query(uriCalllog, predicates, columns);
326     int rowCount = 0;
327     resultSet->GetRowCount(rowCount);
328     EXPECT_GT(rowCount, 9999);
329     resultSet->Close();
330 }
331 
332 /*
333  * @tc.number  calllog_delete_performance_test_400
334  * @tc.name    calllog calllog stability testing delete 10000
335  * @tc.desc    delete 10000
336  * @tc.level   Level1
337  * @tc.size    MediumTest
338  * @tc.type    Function
339  */
HWTEST_F(StabilityTest, calllog_delete_performance_test_400, testing::ext::TestSize.Level1)340 HWTEST_F(StabilityTest, calllog_delete_performance_test_400, testing::ext::TestSize.Level1)
341 {
342     HILOG_INFO("--- calllog_delete_performance_test_400 is starting! ---");
343     OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
344     OHOS::DataShare::DataSharePredicates predicates;
345     predicates.GreaterThan("id", "0");
346     int deleteCode = calllogAbility.Delete(uriCalllog, predicates);
347     EXPECT_EQ(deleteCode, 0);
348 }
349 
350 /*
351  * @tc.number  voicemail_insert_performance_test_500
352  * @tc.name    voicemail stability testing delete 10000
353  * @tc.desc    delete 10000
354  * @tc.level   Level1
355  * @tc.size    MediumTest
356  * @tc.type    Function
357  */
HWTEST_F(StabilityTest, voicemail_insert_performance_test_500, testing::ext::TestSize.Level1)358 HWTEST_F(StabilityTest, voicemail_insert_performance_test_500, testing::ext::TestSize.Level1)
359 {
360     OHOS::Uri uriVoiceMail(VoicemailUri::VOICEMAIL);
361     OHOS::DataShare::DataSharePredicates predicatesOne;
362     predicatesOne.GreaterThan("id", "0");
363     HILOG_INFO("voicemail_insert_performance_test_500 deleted  start! ");
364     voicemailAbility.Delete(uriVoiceMail, predicatesOne);
365     HILOG_INFO("--- voicemail_insert_performance_test_500 is starting! ---");
366     std::vector<OHOS::DataShare::DataShareValuesBucket> values;
367     for (int i = 0; i < 10000; i++) {
368         OHOS::DataShare::DataShareValuesBucket voicemailValues;
369         voicemailValues.Put("phone_number", std::to_string(i + 1));
370         values.push_back(voicemailValues);
371     }
372     int batchInsertCode = voicemailAbility.BatchInsert(uriVoiceMail, values);
373     EXPECT_EQ(batchInsertCode, 0);
374 }
375 
376 /*
377  * @tc.number  voicemail_update_performance_test_600
378  * @tc.name    voicemail stability testing update 10000
379  * @tc.desc    update 10000
380  * @tc.level   Level1
381  * @tc.size    MediumTest
382  * @tc.type    Function
383  */
HWTEST_F(StabilityTest, voicemail_update_performance_test_600, testing::ext::TestSize.Level1)384 HWTEST_F(StabilityTest, voicemail_update_performance_test_600, testing::ext::TestSize.Level1)
385 {
386     HILOG_INFO("--- voicemail_update_performance_test_600 is starting! ---");
387     OHOS::Uri uriVoiceMail(VoicemailUri::VOICEMAIL);
388     OHOS::DataShare::DataShareValuesBucket updateValues;
389     updateValues.Put("origin_type", "origin");
390     OHOS::DataShare::DataSharePredicates predicates;
391     predicates.GreaterThan("id", "0");
392     int updateCode = voicemailAbility.Update(uriVoiceMail, predicates, updateValues);
393     EXPECT_EQ(updateCode, 0);
394 }
395 
396 /*
397  * @tc.number  voicemail_query_performance_test_700
398  * @tc.name    voicemail stability testing query 10000
399  * @tc.desc    query 10000
400  * @tc.level   Level1
401  * @tc.size    MediumTest
402  * @tc.type    Function
403  */
HWTEST_F(StabilityTest, voicemail_query_performance_test_700, testing::ext::TestSize.Level1)404 HWTEST_F(StabilityTest, voicemail_query_performance_test_700, testing::ext::TestSize.Level1)
405 {
406     HILOG_INFO("--- voicemail_query_performance_test_700 is starting! ---");
407     OHOS::Uri uriVoiceMail(VoicemailUri::VOICEMAIL);
408     std::vector<std::string> columns;
409     columns.push_back("id");
410     columns.push_back("phone_number");
411     OHOS::DataShare::DataSharePredicates predicates;
412     predicates.GreaterThan("id", "0");
413     std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet =
414         voicemailAbility.Query(uriVoiceMail, predicates, columns);
415     int rowCount = 0;
416     resultSet->GetRowCount(rowCount);
417     EXPECT_GT(rowCount, 9999);
418     resultSet->Close();
419 }
420 
421 /*
422  * @tc.number  voicemail_delete_performance_test_800
423  * @tc.name    voicemail stability testing delete 10000
424  * @tc.desc    delete 10000
425  * @tc.level   Level1
426  * @tc.size    MediumTest
427  * @tc.type    Function
428  */
HWTEST_F(StabilityTest, voicemail_delete_performance_test_800, testing::ext::TestSize.Level1)429 HWTEST_F(StabilityTest, voicemail_delete_performance_test_800, testing::ext::TestSize.Level1)
430 {
431     HILOG_INFO("--- voicemail_delete_performance_test_800 is starting! ---");
432     OHOS::Uri uriVoiceMail(VoicemailUri::VOICEMAIL);
433     OHOS::DataShare::DataSharePredicates predicates;
434     predicates.GreaterThan("id", "0");
435     int deleteCode = voicemailAbility.Delete(uriVoiceMail, predicates);
436     EXPECT_EQ(deleteCode, 0);
437 }
438 
HWTEST_F(StabilityTest, PerformanceTestDeleted, testing::ext::TestSize.Level1)439 HWTEST_F(StabilityTest, PerformanceTestDeleted, testing::ext::TestSize.Level1)
440 {
441     DeleteContact();
442 }
443 } // namespace Test
444 } // namespace Contacts