1/* 2 * Copyright (C) 2023 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 16import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect, Assert} from 'deccjsunit/index'; 17import dataRdb from '@ohos.data.rdb'; 18import deviceInfo from '@ohos.deviceInfo'; 19 20const TAG = "[RDB_PREDICATES_PERF]"; 21 22const BASE_COUNT = 2000; // loop times 23const BASE_COUNT_FIRST = 200; 24const BASE_COUNT_SECOND = 10; 25const BASE_LINE_TABLE = 500; // callback tablet base line 26const BASE_LINE_PHONE = 1000; // callback phone base line 27const BASE_LINE = (deviceInfo.deviceType == "tablet" || deviceInfo.deviceType == "2in1") ? BASE_LINE_TABLE : BASE_LINE_PHONE; 28 29describe('predicatesPerf', function () { 30 beforeAll(async function () { 31 console.info(TAG + 'beforeAll'); 32 }) 33 beforeEach(async function () { 34 console.info(TAG + 'beforeEach'); 35 }) 36 afterEach(async function () { 37 console.info(TAG + 'afterEach'); 38 }) 39 afterAll(async function () { 40 console.info(TAG + 'afterAll'); 41 }) 42 43 console.log(TAG + "*************Unit Test Begin*************"); 44 45 it('SUB_DDM_PERF_RDB_Predicates_inDevices_001', 0, async function (done) { 46 let startTime = new Date().getTime(); 47 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 48 let predicates = new dataRdb.RdbPredicates("test"); 49 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 50 predicates.inDevices(['123']); 51 } 52 } 53 let endTime = new Date().getTime(); 54 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 55 console.info(TAG + " the Predicates_inDevices average time is: " + averageTime + " μs"); 56 expect(averageTime < BASE_LINE).assertTrue(); 57 done(); 58 }) 59 60 it('SUB_DDM_PERF_RDB_Predicates_inAllDevices_001', 0, async function (done) { 61 let startTime = new Date().getTime(); 62 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 63 let predicates = new dataRdb.RdbPredicates("test"); 64 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 65 predicates.inAllDevices(); 66 } 67 } 68 let endTime = new Date().getTime(); 69 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 70 console.info(TAG + " the Predicates_inAllDevices average time is: " + averageTime + " μs"); 71 expect(averageTime < BASE_LINE).assertTrue(); 72 done(); 73 }) 74 75 it('SUB_DDM_PERF_RDB_Predicates_equalTo_001', 0, async function (done) { 76 let startTime = new Date().getTime(); 77 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 78 let predicates = new dataRdb.RdbPredicates("test"); 79 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 80 predicates.equalTo("name", "lisi"); 81 } 82 } 83 let endTime = new Date().getTime(); 84 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 85 console.info(TAG + " the Predicates_equalTo average time is: " + averageTime + " μs"); 86 expect(averageTime < BASE_LINE).assertTrue(); 87 done(); 88 }) 89 90 it('SUB_DDM_PERF_RDB_Predicates_notEqualTo_001', 0, async function (done) { 91 let startTime = new Date().getTime(); 92 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 93 let predicates = new dataRdb.RdbPredicates("test"); 94 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 95 predicates.notEqualTo("name", "lisi"); 96 } 97 } 98 let endTime = new Date().getTime(); 99 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 100 console.info(TAG + " the Predicates_notEqualTo average time is: " + averageTime + " μs"); 101 expect(averageTime < BASE_LINE).assertTrue(); 102 done(); 103 }) 104 105 it('SUB_DDM_PERF_RDB_Predicates_beginWrap_001', 0, async function (done) { 106 let startTime = new Date().getTime(); 107 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 108 let predicates = new dataRdb.RdbPredicates("test"); 109 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 110 predicates.beginWrap(); 111 } 112 } 113 let endTime = new Date().getTime(); 114 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 115 console.info(TAG + " the Predicates_beginWrap average time is: " + averageTime + " μs"); 116 expect(averageTime < BASE_LINE).assertTrue(); 117 done(); 118 }) 119 120 it('SUB_DDM_PERF_RDB_Predicates_endWrap_001', 0, async function (done) { 121 let startTime = new Date().getTime(); 122 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 123 let predicates = new dataRdb.RdbPredicates("test"); 124 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 125 predicates.equalTo("name", "lisi"); 126 predicates.endWrap(); 127 } 128 } 129 let endTime = new Date().getTime(); 130 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 131 console.info(TAG + " the Predicates_endWrap average time is: " + averageTime + " μs"); 132 expect(averageTime < BASE_LINE).assertTrue(); 133 done(); 134 }) 135 136 it('SUB_DDM_PERF_RDB_Predicates_or_001', 0, async function (done) { 137 let startTime = new Date().getTime(); 138 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 139 let predicates = new dataRdb.RdbPredicates("test"); 140 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 141 predicates.equalTo("name", "lisi"); 142 predicates.or(); 143 predicates.equalTo("age", 18); 144 } 145 } 146 let endTime = new Date().getTime(); 147 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 148 console.info(TAG + " the Predicates_or average time is: " + averageTime + " μs"); 149 expect(averageTime < BASE_LINE).assertTrue(); 150 done(); 151 }) 152 153 it('SUB_DDM_PERF_RDB_Predicates_and_001', 1, async function (done) { 154 let startTime = new Date().getTime(); 155 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 156 let predicates = new dataRdb.RdbPredicates("test"); 157 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 158 predicates.equalTo("name", "lisi"); 159 predicates.and(); 160 predicates.equalTo("name", "zs"); 161 } 162 } 163 let endTime = new Date().getTime(); 164 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 165 console.info(TAG + " the Predicates_and average time is: " + averageTime + " μs"); 166 expect(averageTime < BASE_LINE).assertTrue(); 167 done(); 168 }) 169 170 it('SUB_DDM_PERF_RDB_Predicates_contains_001', 0, async function (done) { 171 let startTime = new Date().getTime(); 172 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 173 let predicates = new dataRdb.RdbPredicates("test"); 174 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 175 predicates.contains("name", "lisi"); 176 } 177 } 178 let endTime = new Date().getTime(); 179 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 180 console.info(TAG + " the Predicates_contains average time is: " + averageTime + " μs"); 181 expect(averageTime < BASE_LINE).assertTrue(); 182 done(); 183 }) 184 185 it('SUB_DDM_PERF_RDB_Predicates_beginsWith_001', 0, async function (done) { 186 let startTime = new Date().getTime(); 187 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 188 let predicates = new dataRdb.RdbPredicates("test"); 189 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 190 predicates.beginsWith("name", "lisi"); 191 } 192 } 193 let endTime = new Date().getTime(); 194 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 195 console.info(TAG + " the Predicates_beginsWith average time is: " + averageTime + " μs"); 196 expect(averageTime < BASE_LINE).assertTrue(); 197 done(); 198 }) 199 200 it('SUB_DDM_PERF_RDB_Predicates_endWith_001', 0, async function (done) { 201 let startTime = new Date().getTime(); 202 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 203 let predicates = new dataRdb.RdbPredicates("test"); 204 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 205 predicates.endsWith("name", "lisi"); 206 } 207 } 208 let endTime = new Date().getTime(); 209 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 210 console.info(TAG + " the Predicates_endWith average time is: " + averageTime + " μs"); 211 expect(averageTime < BASE_LINE).assertTrue(); 212 done(); 213 }) 214 215 it('SUB_DDM_PERF_RDB_Predicates_isNull_001', 0, async function (done) { 216 let startTime = new Date().getTime(); 217 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 218 let predicates = new dataRdb.RdbPredicates("test"); 219 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 220 predicates.isNull("name"); 221 } 222 } 223 let endTime = new Date().getTime(); 224 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 225 console.info(TAG + " the Predicates_isNull average time is: " + averageTime + " μs"); 226 expect(averageTime < BASE_LINE).assertTrue(); 227 done(); 228 }) 229 230 it('SUB_DDM_PERF_RDB_Predicates_isNotNull_001', 0, async function (done) { 231 let startTime = new Date().getTime(); 232 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 233 let predicates = new dataRdb.RdbPredicates("test"); 234 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 235 predicates.isNotNull("name"); 236 } 237 } 238 let endTime = new Date().getTime(); 239 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 240 console.info(TAG + " the Predicates_isNotNull average time is: " + averageTime + " μs"); 241 expect(averageTime < BASE_LINE).assertTrue(); 242 done(); 243 }) 244 245 it('SUB_DDM_PERF_RDB_Predicates_like_001', 0, async function (done) { 246 let startTime = new Date().getTime(); 247 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 248 let predicates = new dataRdb.RdbPredicates("test"); 249 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 250 predicates.like("name", "li"); 251 } 252 } 253 let endTime = new Date().getTime(); 254 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 255 console.info(TAG + " the Predicates_like average time is: " + averageTime + " μs"); 256 expect(averageTime < BASE_LINE).assertTrue(); 257 done(); 258 }) 259 260 it('SUB_DDM_PERF_RDB_Predicates_glob_001', 0, async function (done) { 261 let startTime = new Date().getTime(); 262 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 263 let predicates = new dataRdb.RdbPredicates("test"); 264 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 265 predicates.glob("name", "li"); 266 } 267 } 268 let endTime = new Date().getTime(); 269 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 270 console.info(TAG + " the Predicates_glob average time is: " + averageTime + " μs"); 271 expect(averageTime < BASE_LINE).assertTrue(); 272 done(); 273 }) 274 275 it('SUB_DDM_PERF_RDB_Predicates_between_001', 0, async function (done) { 276 let startTime = new Date().getTime(); 277 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 278 let predicates = new dataRdb.RdbPredicates("test"); 279 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 280 predicates.between("age", 1, 100); 281 } 282 } 283 let endTime = new Date().getTime(); 284 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 285 console.info(TAG + " the Predicates_between average time is: " + averageTime + " μs"); 286 expect(averageTime < BASE_LINE).assertTrue(); 287 done(); 288 }) 289 290 it('SUB_DDM_PERF_RDB_Predicates_notBetween_001', 0, async function (done) { 291 let startTime = new Date().getTime(); 292 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 293 let predicates = new dataRdb.RdbPredicates("test"); 294 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 295 predicates.notBetween("age", 1, 100); 296 } 297 } 298 let endTime = new Date().getTime(); 299 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 300 console.info(TAG + " the Predicates_notBetween average time is: " + averageTime + " μs"); 301 expect(averageTime < BASE_LINE).assertTrue(); 302 done(); 303 }) 304 305 it('SUB_DDM_PERF_RDB_Predicates_greaterThan_001', 0, async function (done) { 306 let startTime = new Date().getTime(); 307 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 308 let predicates = new dataRdb.RdbPredicates("test"); 309 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 310 predicates.greaterThan("age", 1); 311 } 312 } 313 let endTime = new Date().getTime(); 314 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 315 console.info(TAG + " the Predicates_greaterThan average time is: " + averageTime + " μs"); 316 expect(averageTime < BASE_LINE).assertTrue(); 317 done(); 318 }) 319 320 it('SUB_DDM_PERF_RDB_Predicates_lessThan_001', 0, async function (done) { 321 let startTime = new Date().getTime(); 322 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 323 let predicates = new dataRdb.RdbPredicates("test"); 324 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 325 predicates.lessThan("age", 1000); 326 } 327 } 328 let endTime = new Date().getTime(); 329 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 330 console.info(TAG + " the Predicates_lessThan average time is: " + averageTime + " μs"); 331 expect(averageTime < BASE_LINE).assertTrue(); 332 done(); 333 }) 334 335 it('SUB_DDM_PERF_RDB_Predicates_greaterThanOrEqualTo_001', 0, async function (done) { 336 let startTime = new Date().getTime(); 337 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 338 let predicates = new dataRdb.RdbPredicates("test"); 339 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 340 predicates.greaterThanOrEqualTo("age", 1000); 341 } 342 } 343 let endTime = new Date().getTime(); 344 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 345 console.info(TAG + " the Predicates_greaterThanOrEqualTo average time is: " + averageTime + " μs"); 346 expect(averageTime < BASE_LINE).assertTrue(); 347 done(); 348 }) 349 350 it('SUB_DDM_PERF_RDB_Predicates_lessThanOrEqualTo_001', 0, async function (done) { 351 let startTime = new Date().getTime(); 352 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 353 let predicates = new dataRdb.RdbPredicates("test"); 354 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 355 predicates.lessThanOrEqualTo("age", 1000); 356 } 357 } 358 let endTime = new Date().getTime(); 359 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 360 console.info(TAG + " the Predicates_lessThanOrEqualTo average time is: " + averageTime + " μs"); 361 expect(averageTime < BASE_LINE).assertTrue(); 362 done(); 363 }) 364 365 it('SUB_DDM_PERF_RDB_Predicates_orderByAsc_001', 0, async function (done) { 366 let startTime = new Date().getTime(); 367 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 368 let predicates = new dataRdb.RdbPredicates("test"); 369 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 370 predicates.orderByAsc("name"); 371 } 372 } 373 let endTime = new Date().getTime(); 374 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 375 console.info(TAG + " the Predicates_orderByAsc average time is: " + averageTime + " μs"); 376 expect(averageTime < BASE_LINE).assertTrue(); 377 done(); 378 }) 379 380 it('SUB_DDM_PERF_RDB_Predicates_orderByDesc_001', 0, async function (done) { 381 let startTime = new Date().getTime(); 382 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 383 let predicates = new dataRdb.RdbPredicates("test"); 384 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 385 predicates.orderByDesc("name"); 386 } 387 } 388 let endTime = new Date().getTime(); 389 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 390 console.info(TAG + " the Predicates_orderByDesc average time is: " + averageTime + " μs"); 391 expect(averageTime < BASE_LINE).assertTrue(); 392 done(); 393 }) 394 395 it('SUB_DDM_PERF_RDB_Predicates_distinct_001', 0, async function (done) { 396 let startTime = new Date().getTime(); 397 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 398 let predicates = new dataRdb.RdbPredicates("test"); 399 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 400 predicates.distinct(); 401 } 402 } 403 let endTime = new Date().getTime(); 404 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 405 console.info(TAG + " the Predicates_distinct average time is: " + averageTime + " μs"); 406 expect(averageTime < BASE_LINE).assertTrue(); 407 done(); 408 }) 409 410 it('SUB_DDM_PERF_RDB_Predicates_limitAs_001', 0, async function (done) { 411 let startTime = new Date().getTime(); 412 for (let i = 0; i < BASE_COUNT; i++) { 413 let predicates = new dataRdb.RdbPredicates("test"); 414 predicates.limitAs(6); 415 } 416 let endTime = new Date().getTime(); 417 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 418 console.info(TAG + " the Predicates_limitAs average time is: " + averageTime + " μs"); 419 expect(averageTime < BASE_LINE).assertTrue(); 420 done(); 421 }) 422 423 it('SUB_DDM_PERF_RDB_Predicates_offsetAs_001', 0, async function (done) { 424 let startTime = new Date().getTime(); 425 for (let i = 0; i < BASE_COUNT; i++) { 426 let predicates = new dataRdb.RdbPredicates("test"); 427 predicates.offsetAs(6); 428 } 429 let endTime = new Date().getTime(); 430 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 431 console.info(TAG + " the Predicates_offsetAs average time is: " + averageTime + " μs"); 432 expect(averageTime < BASE_LINE).assertTrue(); 433 done(); 434 }) 435 436 it('SUB_DDM_PERF_RDB_Predicates_groupBy_001', 0, async function (done) { 437 let nameArr = new Array(); 438 nameArr.push("id"); 439 nameArr.push("name"); 440 let startTime = new Date().getTime(); 441 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 442 let predicates = new dataRdb.RdbPredicates("test"); 443 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 444 predicates.groupBy(nameArr); 445 } 446 } 447 let endTime = new Date().getTime(); 448 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 449 console.info(TAG + " the Predicates_groupBy average time is: " + averageTime + " μs"); 450 expect(averageTime < BASE_LINE).assertTrue(); 451 done(); 452 }) 453 454 it('SUB_DDM_PERF_RDB_Predicates_indexedBy_001', 0, async function (done) { 455 let startTime = new Date().getTime(); 456 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 457 let predicates = new dataRdb.RdbPredicates("test"); 458 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 459 predicates.indexedBy("name"); 460 } 461 } 462 let endTime = new Date().getTime(); 463 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 464 console.info(TAG + " the Predicates_indexedBy average time is: " + averageTime + " μs"); 465 expect(averageTime < BASE_LINE).assertTrue(); 466 done(); 467 }) 468 469 it('SUB_DDM_PERF_RDB_Predicates_in_001', 0, async function (done) { 470 let nameArr = new Array(); 471 nameArr.push("id"); 472 nameArr.push("name"); 473 let startTime = new Date().getTime(); 474 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 475 let predicates = new dataRdb.RdbPredicates("test"); 476 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 477 predicates.in("name", nameArr); 478 } 479 } 480 let endTime = new Date().getTime(); 481 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 482 console.info(TAG + " the Predicates_in average time is: " + averageTime + " μs"); 483 expect(averageTime < BASE_LINE).assertTrue(); 484 done(); 485 }) 486 487 it('SUB_DDM_PERF_RDB_Predicates_notIn(_001', 0, async function (done) { 488 let nameArr = new Array(); 489 nameArr.push("zhangsan"); 490 nameArr.push("lisi"); 491 let startTime = new Date().getTime(); 492 for (let i = 0; i < BASE_COUNT_FIRST; i++) { 493 let predicates = new dataRdb.RdbPredicates("test"); 494 for (let j = 0; j < BASE_COUNT_SECOND; j++) { 495 predicates.notIn("name", nameArr); 496 } 497 } 498 let endTime = new Date().getTime(); 499 let averageTime = ((endTime - startTime) * 1000) / BASE_COUNT; 500 console.info(TAG + " the Predicates_notIn average time is: " + averageTime + " μs"); 501 expect(averageTime < BASE_LINE).assertTrue(); 502 done(); 503 }) 504 505 console.info(TAG + "*************Unit Test End*************") 506})