1fb726d48Sopenharmony_ci/* 2fb726d48Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd. 3fb726d48Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4fb726d48Sopenharmony_ci * you may not use this file except in compliance with the License. 5fb726d48Sopenharmony_ci * You may obtain a copy of the License at 6fb726d48Sopenharmony_ci * 7fb726d48Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8fb726d48Sopenharmony_ci * 9fb726d48Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10fb726d48Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11fb726d48Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12fb726d48Sopenharmony_ci * See the License for the specific language governing permissions and 13fb726d48Sopenharmony_ci * limitations under the License. 14fb726d48Sopenharmony_ci */ 15fb726d48Sopenharmony_ci 16fb726d48Sopenharmony_ciimport { 17fb726d48Sopenharmony_ci SystemCpuSummary, 18fb726d48Sopenharmony_ci SystemDiskIOSummary, 19fb726d48Sopenharmony_ci ProcessHistory, 20fb726d48Sopenharmony_ci LiveProcess, 21fb726d48Sopenharmony_ci SystemNetworkSummary, 22fb726d48Sopenharmony_ci SystemMemorySummary, 23fb726d48Sopenharmony_ci Dma 24fb726d48Sopenharmony_ci} from '../../../src/trace/bean/AbilityMonitor'; 25fb726d48Sopenharmony_ci 26fb726d48Sopenharmony_cijest.mock('../../../src/trace/bean/NativeHook', () => { 27fb726d48Sopenharmony_ci return {}; 28fb726d48Sopenharmony_ci}); 29fb726d48Sopenharmony_ci 30fb726d48Sopenharmony_cidescribe('AbilityMonitor Test', () => { 31fb726d48Sopenharmony_ci let systemCpuSummary = new SystemCpuSummary(); 32fb726d48Sopenharmony_ci let systemDiskIOSummary = new SystemDiskIOSummary(); 33fb726d48Sopenharmony_ci let processHistory = new ProcessHistory(); 34fb726d48Sopenharmony_ci let liveProcess = new LiveProcess(); 35fb726d48Sopenharmony_ci let systemNetworkSummary = new SystemNetworkSummary(); 36fb726d48Sopenharmony_ci let systemMemorySummary = new SystemMemorySummary(); 37fb726d48Sopenharmony_ci let dma = new Dma() 38fb726d48Sopenharmony_ci 39fb726d48Sopenharmony_ci it('SystemCpuSummaryTest', function () { 40fb726d48Sopenharmony_ci systemCpuSummary = { 41fb726d48Sopenharmony_ci startTime: -1, 42fb726d48Sopenharmony_ci startTimeStr: 'startTimeStr', 43fb726d48Sopenharmony_ci duration: -1, 44fb726d48Sopenharmony_ci durationStr: 'durationStr', 45fb726d48Sopenharmony_ci totalLoad: -1, 46fb726d48Sopenharmony_ci totalLoadStr: 'totalLoadStr', 47fb726d48Sopenharmony_ci userLoad: -1, 48fb726d48Sopenharmony_ci userLoadStr: 'userLoadStr', 49fb726d48Sopenharmony_ci systemLoad: -1, 50fb726d48Sopenharmony_ci systemLoadStr: 'systemLoadStr', 51fb726d48Sopenharmony_ci threads: -1, 52fb726d48Sopenharmony_ci threadsStr: 'threadsStr', 53fb726d48Sopenharmony_ci }; 54fb726d48Sopenharmony_ci 55fb726d48Sopenharmony_ci expect(systemCpuSummary).not.toBeUndefined(); 56fb726d48Sopenharmony_ci expect(systemCpuSummary).toMatchInlineSnapshot( 57fb726d48Sopenharmony_ci{ 58fb726d48Sopenharmony_ci startTime: expect.any(Number), 59fb726d48Sopenharmony_ci startTimeStr: expect.any(String), 60fb726d48Sopenharmony_ci duration: expect.any(Number), 61fb726d48Sopenharmony_ci durationStr: expect.any(String), 62fb726d48Sopenharmony_ci totalLoad: expect.any(Number), 63fb726d48Sopenharmony_ci totalLoadStr: expect.any(String), 64fb726d48Sopenharmony_ci userLoad: expect.any(Number), 65fb726d48Sopenharmony_ci userLoadStr: expect.any(String), 66fb726d48Sopenharmony_ci systemLoad: expect.any(Number), 67fb726d48Sopenharmony_ci systemLoadStr: expect.any(String), 68fb726d48Sopenharmony_ci threads: expect.any(Number), 69fb726d48Sopenharmony_ci threadsStr: expect.any(String) }, ` 70fb726d48Sopenharmony_ci{ 71fb726d48Sopenharmony_ci "duration": Any<Number>, 72fb726d48Sopenharmony_ci "durationStr": Any<String>, 73fb726d48Sopenharmony_ci "startTime": Any<Number>, 74fb726d48Sopenharmony_ci "startTimeStr": Any<String>, 75fb726d48Sopenharmony_ci "systemLoad": Any<Number>, 76fb726d48Sopenharmony_ci "systemLoadStr": Any<String>, 77fb726d48Sopenharmony_ci "threads": Any<Number>, 78fb726d48Sopenharmony_ci "threadsStr": Any<String>, 79fb726d48Sopenharmony_ci "totalLoad": Any<Number>, 80fb726d48Sopenharmony_ci "totalLoadStr": Any<String>, 81fb726d48Sopenharmony_ci "userLoad": Any<Number>, 82fb726d48Sopenharmony_ci "userLoadStr": Any<String>, 83fb726d48Sopenharmony_ci} 84fb726d48Sopenharmony_ci`); 85fb726d48Sopenharmony_ci }); 86fb726d48Sopenharmony_ci 87fb726d48Sopenharmony_ci it('SystemCpuSummaryTest', function () { 88fb726d48Sopenharmony_ci systemDiskIOSummary = { 89fb726d48Sopenharmony_ci startTime: 1, 90fb726d48Sopenharmony_ci startTimeStr: 'startTimeStr', 91fb726d48Sopenharmony_ci duration: 1, 92fb726d48Sopenharmony_ci durationStr: 'durationStr', 93fb726d48Sopenharmony_ci dataRead: 1, 94fb726d48Sopenharmony_ci dataReadStr: 'dataReadStr', 95fb726d48Sopenharmony_ci dataReadSec: 1, 96fb726d48Sopenharmony_ci dataReadSecStr: 'dataReadSecStr', 97fb726d48Sopenharmony_ci dataWrite: 1, 98fb726d48Sopenharmony_ci dataWriteStr: 'dataWriteStr', 99fb726d48Sopenharmony_ci dataWriteSec: 1, 100fb726d48Sopenharmony_ci dataWriteSecStr: 'dataWriteSecStr', 101fb726d48Sopenharmony_ci readsIn: 1, 102fb726d48Sopenharmony_ci readsInStr: 'readsInStr', 103fb726d48Sopenharmony_ci readsInSec: 1, 104fb726d48Sopenharmony_ci readsInSecStr: 'readsInSecStr', 105fb726d48Sopenharmony_ci writeOut: 1, 106fb726d48Sopenharmony_ci writeOutStr: 'writeOutStr', 107fb726d48Sopenharmony_ci writeOutSec: 1, 108fb726d48Sopenharmony_ci writeOutSecStr: 'writeOutSecStr', 109fb726d48Sopenharmony_ci }; 110fb726d48Sopenharmony_ci expect(systemDiskIOSummary).not.toBeUndefined(); 111fb726d48Sopenharmony_ci expect(systemDiskIOSummary).toMatchInlineSnapshot(` 112fb726d48Sopenharmony_ci{ 113fb726d48Sopenharmony_ci "dataRead": 1, 114fb726d48Sopenharmony_ci "dataReadSec": 1, 115fb726d48Sopenharmony_ci "dataReadSecStr": "dataReadSecStr", 116fb726d48Sopenharmony_ci "dataReadStr": "dataReadStr", 117fb726d48Sopenharmony_ci "dataWrite": 1, 118fb726d48Sopenharmony_ci "dataWriteSec": 1, 119fb726d48Sopenharmony_ci "dataWriteSecStr": "dataWriteSecStr", 120fb726d48Sopenharmony_ci "dataWriteStr": "dataWriteStr", 121fb726d48Sopenharmony_ci "duration": 1, 122fb726d48Sopenharmony_ci "durationStr": "durationStr", 123fb726d48Sopenharmony_ci "readsIn": 1, 124fb726d48Sopenharmony_ci "readsInSec": 1, 125fb726d48Sopenharmony_ci "readsInSecStr": "readsInSecStr", 126fb726d48Sopenharmony_ci "readsInStr": "readsInStr", 127fb726d48Sopenharmony_ci "startTime": 1, 128fb726d48Sopenharmony_ci "startTimeStr": "startTimeStr", 129fb726d48Sopenharmony_ci "writeOut": 1, 130fb726d48Sopenharmony_ci "writeOutSec": 1, 131fb726d48Sopenharmony_ci "writeOutSecStr": "writeOutSecStr", 132fb726d48Sopenharmony_ci "writeOutStr": "writeOutStr", 133fb726d48Sopenharmony_ci} 134fb726d48Sopenharmony_ci`); 135fb726d48Sopenharmony_ci }); 136fb726d48Sopenharmony_ci 137fb726d48Sopenharmony_ci 138fb726d48Sopenharmony_ci it('ProcessHistoryTest', function () { 139fb726d48Sopenharmony_ci processHistory = { 140fb726d48Sopenharmony_ci processId: -1, 141fb726d48Sopenharmony_ci alive: '', 142fb726d48Sopenharmony_ci firstSeen: '', 143fb726d48Sopenharmony_ci lastSeen: '', 144fb726d48Sopenharmony_ci processName: '', 145fb726d48Sopenharmony_ci responsibleProcess: '', 146fb726d48Sopenharmony_ci userName: '', 147fb726d48Sopenharmony_ci cpuTime: '', 148fb726d48Sopenharmony_ci }; 149fb726d48Sopenharmony_ci expect(processHistory).not.toBeUndefined(); 150fb726d48Sopenharmony_ci expect(processHistory).toMatchInlineSnapshot( 151fb726d48Sopenharmony_ci{ 152fb726d48Sopenharmony_ci processId: expect.any(Number), 153fb726d48Sopenharmony_ci alive: expect.any(String), 154fb726d48Sopenharmony_ci firstSeen: expect.any(String), 155fb726d48Sopenharmony_ci lastSeen: expect.any(String), 156fb726d48Sopenharmony_ci processName: expect.any(String), 157fb726d48Sopenharmony_ci responsibleProcess: expect.any(String), 158fb726d48Sopenharmony_ci userName: expect.any(String), 159fb726d48Sopenharmony_ci cpuTime: expect.any(String) }, ` 160fb726d48Sopenharmony_ci{ 161fb726d48Sopenharmony_ci "alive": Any<String>, 162fb726d48Sopenharmony_ci "cpuTime": Any<String>, 163fb726d48Sopenharmony_ci "firstSeen": Any<String>, 164fb726d48Sopenharmony_ci "lastSeen": Any<String>, 165fb726d48Sopenharmony_ci "processId": Any<Number>, 166fb726d48Sopenharmony_ci "processName": Any<String>, 167fb726d48Sopenharmony_ci "responsibleProcess": Any<String>, 168fb726d48Sopenharmony_ci "userName": Any<String>, 169fb726d48Sopenharmony_ci} 170fb726d48Sopenharmony_ci`); 171fb726d48Sopenharmony_ci }); 172fb726d48Sopenharmony_ci 173fb726d48Sopenharmony_ci it('LiveProcessTest', function () { 174fb726d48Sopenharmony_ci liveProcess = { 175fb726d48Sopenharmony_ci processId: -1, 176fb726d48Sopenharmony_ci processName: '', 177fb726d48Sopenharmony_ci responsibleProcess: '', 178fb726d48Sopenharmony_ci userName: '', 179fb726d48Sopenharmony_ci cpu: '', 180fb726d48Sopenharmony_ci threads: -1, 181fb726d48Sopenharmony_ci }; 182fb726d48Sopenharmony_ci expect(liveProcess).not.toBeUndefined(); 183fb726d48Sopenharmony_ci expect(liveProcess).toMatchInlineSnapshot( 184fb726d48Sopenharmony_ci{ 185fb726d48Sopenharmony_ci processId: expect.any(Number), 186fb726d48Sopenharmony_ci processName: expect.any(String), 187fb726d48Sopenharmony_ci responsibleProcess: expect.any(String), 188fb726d48Sopenharmony_ci userName: expect.any(String), 189fb726d48Sopenharmony_ci cpu: expect.any(String), 190fb726d48Sopenharmony_ci threads: expect.any(Number) }, ` 191fb726d48Sopenharmony_ci{ 192fb726d48Sopenharmony_ci "cpu": Any<String>, 193fb726d48Sopenharmony_ci "processId": Any<Number>, 194fb726d48Sopenharmony_ci "processName": Any<String>, 195fb726d48Sopenharmony_ci "responsibleProcess": Any<String>, 196fb726d48Sopenharmony_ci "threads": Any<Number>, 197fb726d48Sopenharmony_ci "userName": Any<String>, 198fb726d48Sopenharmony_ci} 199fb726d48Sopenharmony_ci`); 200fb726d48Sopenharmony_ci }); 201fb726d48Sopenharmony_ci 202fb726d48Sopenharmony_ci it('SystemNetworkSummaryTest', function () { 203fb726d48Sopenharmony_ci systemNetworkSummary = { 204fb726d48Sopenharmony_ci startTime: -1, 205fb726d48Sopenharmony_ci startTimeStr: '', 206fb726d48Sopenharmony_ci duration: -1, 207fb726d48Sopenharmony_ci durationStr: '', 208fb726d48Sopenharmony_ci dataReceived: -1, 209fb726d48Sopenharmony_ci dataReceivedStr: '', 210fb726d48Sopenharmony_ci dataReceivedSec: -1, 211fb726d48Sopenharmony_ci dataReceivedSecStr: '', 212fb726d48Sopenharmony_ci dataSend: -1, 213fb726d48Sopenharmony_ci dataSendStr: '', 214fb726d48Sopenharmony_ci dataSendSec: -1, 215fb726d48Sopenharmony_ci dataSendSecStr: '', 216fb726d48Sopenharmony_ci packetsIn: -1, 217fb726d48Sopenharmony_ci packetsInSec: -1, 218fb726d48Sopenharmony_ci packetsOut: -1, 219fb726d48Sopenharmony_ci packetsOutSec: -1, 220fb726d48Sopenharmony_ci }; 221fb726d48Sopenharmony_ci expect(systemNetworkSummary).not.toBeUndefined(); 222fb726d48Sopenharmony_ci expect(systemNetworkSummary).toMatchInlineSnapshot( 223fb726d48Sopenharmony_ci{ 224fb726d48Sopenharmony_ci startTime: expect.any(Number), 225fb726d48Sopenharmony_ci startTimeStr: expect.any(String), 226fb726d48Sopenharmony_ci duration: expect.any(Number), 227fb726d48Sopenharmony_ci durationStr: expect.any(String), 228fb726d48Sopenharmony_ci dataReceived: expect.any(Number), 229fb726d48Sopenharmony_ci dataReceivedStr: expect.any(String), 230fb726d48Sopenharmony_ci dataReceivedSec: expect.any(Number), 231fb726d48Sopenharmony_ci dataReceivedSecStr: expect.any(String), 232fb726d48Sopenharmony_ci dataSend: expect.any(Number), 233fb726d48Sopenharmony_ci dataSendStr: expect.any(String), 234fb726d48Sopenharmony_ci dataSendSec: expect.any(Number), 235fb726d48Sopenharmony_ci dataSendSecStr: expect.any(String), 236fb726d48Sopenharmony_ci packetsIn: expect.any(Number), 237fb726d48Sopenharmony_ci packetsInSec: expect.any(Number), 238fb726d48Sopenharmony_ci packetsOut: expect.any(Number), 239fb726d48Sopenharmony_ci packetsOutSec: expect.any(Number) }, ` 240fb726d48Sopenharmony_ci{ 241fb726d48Sopenharmony_ci "dataReceived": Any<Number>, 242fb726d48Sopenharmony_ci "dataReceivedSec": Any<Number>, 243fb726d48Sopenharmony_ci "dataReceivedSecStr": Any<String>, 244fb726d48Sopenharmony_ci "dataReceivedStr": Any<String>, 245fb726d48Sopenharmony_ci "dataSend": Any<Number>, 246fb726d48Sopenharmony_ci "dataSendSec": Any<Number>, 247fb726d48Sopenharmony_ci "dataSendSecStr": Any<String>, 248fb726d48Sopenharmony_ci "dataSendStr": Any<String>, 249fb726d48Sopenharmony_ci "duration": Any<Number>, 250fb726d48Sopenharmony_ci "durationStr": Any<String>, 251fb726d48Sopenharmony_ci "packetsIn": Any<Number>, 252fb726d48Sopenharmony_ci "packetsInSec": Any<Number>, 253fb726d48Sopenharmony_ci "packetsOut": Any<Number>, 254fb726d48Sopenharmony_ci "packetsOutSec": Any<Number>, 255fb726d48Sopenharmony_ci "startTime": Any<Number>, 256fb726d48Sopenharmony_ci "startTimeStr": Any<String>, 257fb726d48Sopenharmony_ci} 258fb726d48Sopenharmony_ci`); 259fb726d48Sopenharmony_ci }); 260fb726d48Sopenharmony_ci 261fb726d48Sopenharmony_ci it('systemMemorySummaryTest', function () { 262fb726d48Sopenharmony_ci systemMemorySummary = { 263fb726d48Sopenharmony_ci startTime: -1, 264fb726d48Sopenharmony_ci startTimeStr: '', 265fb726d48Sopenharmony_ci duration: -1, 266fb726d48Sopenharmony_ci durationStr: '', 267fb726d48Sopenharmony_ci memoryTotal: -1, 268fb726d48Sopenharmony_ci memoryTotalStr: '', 269fb726d48Sopenharmony_ci cached: -1, 270fb726d48Sopenharmony_ci cachedStr: '', 271fb726d48Sopenharmony_ci swapTotal: -1, 272fb726d48Sopenharmony_ci swapTotalStr: '', 273fb726d48Sopenharmony_ci appMemory: -1, 274fb726d48Sopenharmony_ci cachedFiles: -1, 275fb726d48Sopenharmony_ci compressed: -1, 276fb726d48Sopenharmony_ci memoryUsed: -1, 277fb726d48Sopenharmony_ci wiredMemory: -1, 278fb726d48Sopenharmony_ci swapUsed: -1, 279fb726d48Sopenharmony_ci }; 280fb726d48Sopenharmony_ci expect(systemMemorySummary).not.toBeUndefined(); 281fb726d48Sopenharmony_ci expect(systemMemorySummary).toMatchInlineSnapshot( 282fb726d48Sopenharmony_ci{ 283fb726d48Sopenharmony_ci startTime: expect.any(Number), 284fb726d48Sopenharmony_ci startTimeStr: expect.any(String), 285fb726d48Sopenharmony_ci duration: expect.any(Number), 286fb726d48Sopenharmony_ci durationStr: expect.any(String), 287fb726d48Sopenharmony_ci memoryTotal: expect.any(Number), 288fb726d48Sopenharmony_ci memoryTotalStr: expect.any(String), 289fb726d48Sopenharmony_ci cached: expect.any(Number), 290fb726d48Sopenharmony_ci cachedStr: expect.any(String), 291fb726d48Sopenharmony_ci swapTotal: expect.any(Number), 292fb726d48Sopenharmony_ci swapTotalStr: expect.any(String), 293fb726d48Sopenharmony_ci appMemory: expect.any(Number), 294fb726d48Sopenharmony_ci cachedFiles: expect.any(Number), 295fb726d48Sopenharmony_ci compressed: expect.any(Number), 296fb726d48Sopenharmony_ci memoryUsed: expect.any(Number), 297fb726d48Sopenharmony_ci wiredMemory: expect.any(Number), 298fb726d48Sopenharmony_ci swapUsed: expect.any(Number) }, ` 299fb726d48Sopenharmony_ci{ 300fb726d48Sopenharmony_ci "appMemory": Any<Number>, 301fb726d48Sopenharmony_ci "cached": Any<Number>, 302fb726d48Sopenharmony_ci "cachedFiles": Any<Number>, 303fb726d48Sopenharmony_ci "cachedStr": Any<String>, 304fb726d48Sopenharmony_ci "compressed": Any<Number>, 305fb726d48Sopenharmony_ci "duration": Any<Number>, 306fb726d48Sopenharmony_ci "durationStr": Any<String>, 307fb726d48Sopenharmony_ci "memoryTotal": Any<Number>, 308fb726d48Sopenharmony_ci "memoryTotalStr": Any<String>, 309fb726d48Sopenharmony_ci "memoryUsed": Any<Number>, 310fb726d48Sopenharmony_ci "startTime": Any<Number>, 311fb726d48Sopenharmony_ci "startTimeStr": Any<String>, 312fb726d48Sopenharmony_ci "swapTotal": Any<Number>, 313fb726d48Sopenharmony_ci "swapTotalStr": Any<String>, 314fb726d48Sopenharmony_ci "swapUsed": Any<Number>, 315fb726d48Sopenharmony_ci "wiredMemory": Any<Number>, 316fb726d48Sopenharmony_ci} 317fb726d48Sopenharmony_ci`); 318fb726d48Sopenharmony_ci }); 319fb726d48Sopenharmony_ci it('DmaTest', function () { 320fb726d48Sopenharmony_ci dma = { 321fb726d48Sopenharmony_ci processId: -1, 322fb726d48Sopenharmony_ci timeStamp:'', 323fb726d48Sopenharmony_ci startNs:-1, 324fb726d48Sopenharmony_ci expTaskComm: '', 325fb726d48Sopenharmony_ci avgSize: -1, 326fb726d48Sopenharmony_ci minSize:-1, 327fb726d48Sopenharmony_ci maxSize: -1, 328fb726d48Sopenharmony_ci bufName:'', 329fb726d48Sopenharmony_ci expName: '', 330fb726d48Sopenharmony_ci size: -1, 331fb726d48Sopenharmony_ci processName: '', 332fb726d48Sopenharmony_ci process: '', 333fb726d48Sopenharmony_ci fd: -1, 334fb726d48Sopenharmony_ci ino: -1, 335fb726d48Sopenharmony_ci expPid: -1, 336fb726d48Sopenharmony_ci flag: -1, 337fb726d48Sopenharmony_ci avgSizes: '', 338fb726d48Sopenharmony_ci minSizes: '', 339fb726d48Sopenharmony_ci maxSizes: '', 340fb726d48Sopenharmony_ci sizes: '', 341fb726d48Sopenharmony_ci sumSize: -1, 342fb726d48Sopenharmony_ci sumSizes: '', 343fb726d48Sopenharmony_ci }; 344fb726d48Sopenharmony_ci expect(dma).not.toBeUndefined(); 345fb726d48Sopenharmony_ci expect(dma).toMatchInlineSnapshot(` 346fb726d48Sopenharmony_ci{ 347fb726d48Sopenharmony_ci "avgSize": -1, 348fb726d48Sopenharmony_ci "avgSizes": "", 349fb726d48Sopenharmony_ci "bufName": "", 350fb726d48Sopenharmony_ci "expName": "", 351fb726d48Sopenharmony_ci "expPid": -1, 352fb726d48Sopenharmony_ci "expTaskComm": "", 353fb726d48Sopenharmony_ci "fd": -1, 354fb726d48Sopenharmony_ci "flag": -1, 355fb726d48Sopenharmony_ci "ino": -1, 356fb726d48Sopenharmony_ci "maxSize": -1, 357fb726d48Sopenharmony_ci "maxSizes": "", 358fb726d48Sopenharmony_ci "minSize": -1, 359fb726d48Sopenharmony_ci "minSizes": "", 360fb726d48Sopenharmony_ci "process": "", 361fb726d48Sopenharmony_ci "processId": -1, 362fb726d48Sopenharmony_ci "processName": "", 363fb726d48Sopenharmony_ci "size": -1, 364fb726d48Sopenharmony_ci "sizes": "", 365fb726d48Sopenharmony_ci "startNs": -1, 366fb726d48Sopenharmony_ci "sumSize": -1, 367fb726d48Sopenharmony_ci "sumSizes": "", 368fb726d48Sopenharmony_ci "timeStamp": "", 369fb726d48Sopenharmony_ci} 370fb726d48Sopenharmony_ci`); 371fb726d48Sopenharmony_ci }); 372fb726d48Sopenharmony_ci}); 373