diff --git a/README_zh.md b/README_zh.md index b01b7e41e86b4a9ea9947ab326dc222150c9e824..8e4603ba5e93624ba06351809e648d00b0d4cce0 100644 --- a/README_zh.md +++ b/README_zh.md @@ -6,7 +6,7 @@ Smartperf_Host是一款深入挖掘数据、细粒度地展示数据的性能功 该组件整体分为设备端和PC端两部分,设备端和PC端基于gRPC(Remote Procedure Call)通信框架进行数据交互。 -设备端内部分为应用程序内嵌组件、命令行工具、性能调优服务、性能调优插件集合、部分系统工具及部分系统内核等模块。设备端提供了插件扩展能力,对外提供了插件接口,基于该扩展能力可以按需定义自己的能力,并集成到框架中来,目前基于插件能力已经完成了native内存插件、trace插件等,详细介绍见[性能调优组件](https://gitee.com/openharmony/developtools_profiler)。 +设备端的内部分为应用程序内嵌组件、命令行工具、性能调优服务、性能调优插件集合、部分系统工具及部分系统内核等模块。设备端提供了插件扩展能力,对外提供了插件接口,基于该扩展能力可以按需定义自己的能力,并集成到框架中来,目前基于插件能力已经完成了native内存插件、trace插件等,详细介绍见[性能调优组件](https://gitee.com/openharmony/developtools_profiler)。 PC端以Smartperf_Host网站的形式进行发布,内部分为Trace Streamer数据解析、SQLite数据存储、hdc设备管理、数据导入、UI绘制、数据分析等模块。下文会重点对Smartperf_Host提供的各项能力进行介绍。 ## 项目目录 @@ -43,7 +43,7 @@ PC端以Smartperf_Host网站的形式进行发布,内部分为Trace Streamer ### Native Memory抓取 使用Smartperf_Host抓取应用的Native Memory(C和C++部分)的分配和释放情况,详见《[Native Memory抓取和展示说明](./ide/src/doc/md/quickstart_native_memory.md)》。 ### Hiperf抓取 -使用Smartperf_Host抓取应用的cpu使用量、方法的调用栈等,详见《[HiPerf的抓取和展示说明](./ide/src/doc/md/quickstart_hiperf.md)》。 +使用Smartperf_Host抓取应用的cpu使用量、方法的调用栈等,详见《[Hiperf的抓取和展示说明](./ide/src/doc/md/quickstart_hiperf.md)》。 ### HiSystemEvent抓取 使用Smartperf_Host抓取应用的各个子类别功耗占比(CPU、网络、定位等)、应用的资源申请使用记录(WorkScheduler、Runninglock、Alarm、Location Request)、应用功耗异常事件显示、功耗关联系统状态显示(电池电量、屏幕状态),详见《[HiSystemEvent的抓取和展示说明](./ide/src/doc/md/quickstart_hisystemevent.md)》。 ### FileSystem抓取 @@ -53,7 +53,7 @@ PC端以Smartperf_Host网站的形式进行发布,内部分为Trace Streamer ### Bio抓取 使用Smartperf_Host抓取每次IO访问的起始时间、总延迟、进程、每4k数据的平均延迟、线程、操作(写数据、页面换入、Metadata)、访问量、路径等、Block number、优先级、Backtrace调用栈,详见《[Bio的抓取和展示说明](./ide/src/doc/md/quickstart_bio.md)》。 ### 进程Smaps抓取 -使用Smartperf_Host抓取单个进程的smaps数据(类别、Pss、Rss、Vss等),数据源为/proc/$pid/smaps,详见《[进程smaps的抓取和展示说明](./ide/src/doc/md/quickstart_smaps.md)》。 +使用Smartperf_Host抓取单个进程的smaps数据(类别、Pss、Rss、Vss等),数据源为/proc/$pid/smaps,详见《[进程smaps的抓取和展示说明](https://gitee.com/openharmony/developtools_smartperf_host/blob/master/ide/src/doc/md/quickstart_memory_template.md)》。 ### Sql分析和Metrics说明 Smartperf_Host网站trace解析完成后在线数据库使用说明,详见《[Sql分析和Metrics说明](./ide/src/doc/md/quickstart_sql_metrics.md)》。 ## 发行版指南 diff --git a/ide/README_zh.md b/ide/README_zh.md index 73bb46757b4df10b7140eceb9a44911f114f62dc..5570eddd2c23b95be7be321797b1104de8abb064 100644 --- a/ide/README_zh.md +++ b/ide/README_zh.md @@ -5,7 +5,7 @@ 注意:在linux编译环境安装时以root或者其他 sudo 用户身份运行下面的命令。 ### node 环境安装 ##### 下载Node js安装包(windows推荐, linux跳过此步骤) -从网站下载node js安装包 https://nodejs.org/en/download/current/。 +从网站下载node js安装包 https://nodejs.org/en/download/current/ 。 ##### 安装nodejs - ubuntu 20.04 与Debian 11系统中,直接用apt-get安装,先切换到 root用户下,命令如下(node 版本 >= 16.15.1 npm 版本 >= 8.13.2) ``` @@ -65,7 +65,7 @@ ``` ![](./src/figures/deploy/yum_install_go.png) -- windows 系统下 从 https://golang.google.cn/dl/ 下载安装包, 一路next 完成 安装即可 +- windows 系统下 从官网下载安装包, 一路next 完成 安装即可 - 安装完成后 命令行运行验证是否安装成功 @@ -109,6 +109,6 @@ ![](./src/figures/deploy/visit_website.png) - 备注:如果未出现如图所示网页.而是显示 无法访问此网站。 + 备注:如果未出现如图所示网页,而是显示无法访问此网站。 可以在window cmd 里执行telnet [部署机器ip地址] 9000。 -如果显示端口连接失败 可能是防火墙未对9000 端口放开即可。 \ No newline at end of file +如果显示端口连接失败,可能是防火墙未对9000 端口放开。 \ No newline at end of file diff --git a/ide/server/main.go b/ide/server/main.go index a8c8af502028336cbb57c40c521222e6cb850932..dfd1fbdf67eb42f14e8097afca0c7745979e7a65 100644 --- a/ide/server/main.go +++ b/ide/server/main.go @@ -17,13 +17,16 @@ package main import ( "bufio" "bytes" + "crypto" "crypto/rand" "crypto/rsa" "crypto/tls" "crypto/x509" "crypto/x509/pkix" + "encoding/base64" "encoding/json" "encoding/pem" + "flag" "fmt" "io" "io/fs" @@ -42,13 +45,14 @@ import ( "strconv" "strings" "time" - "flag" ) const HttpPort = 9000 var exPath string var serveInfo string +var hdcPublicKey string +var hdcPrivateKey *rsa.PrivateKey // CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go // CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go @@ -81,6 +85,7 @@ func exist(path string) bool { } return true } + func genSSL() { if exist("cert/keyFile.key") || exist("cert/certFile.pem") { fmt.Println("keyFile.key exists") @@ -112,18 +117,44 @@ func genSSL() { pem.Encode(keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(pk)}) keyOut.Close() } + +func genRsa() { + // generate hdc private key + privateKey, err := rsa.GenerateKey(rand.Reader, 3072) + if err != nil { + fmt.Println("Generate hdc rsa private key failed") + return + } + hdcPrivateKey = privateKey + + // generate hdc public key + publicKey := &privateKey.PublicKey + pkixPublicKey, err := x509.MarshalPKIXPublicKey(publicKey) + if err != nil { + fmt.Println(err) + return + } + publicKeyBlock := &pem.Block{ + Type: "PUBLIC KEY", + + Bytes: pkixPublicKey, + } + hdcPublicKey = string(pem.EncodeToMemory(publicKeyBlock)) +} + func main() { - port := HttpPort - isOpen := 1 - flag.IntVar(&port, "p", HttpPort, "The port number used") - flag.IntVar(&isOpen, "o", 1 , "Whether to immediately open the website in your browser; 1 is true; 0 is false") - flag.Parse() - if isOpen < 0 || isOpen > 1 { - fmt.Println("Error: -o must be 0 or 1") - return - } + port := HttpPort + isOpen := 1 + flag.IntVar(&port, "p", HttpPort, "The port number used") + flag.IntVar(&isOpen, "o", 1, "Whether to immediately open the website in your browser; 1 is true; 0 is false") + flag.Parse() + if isOpen < 0 || isOpen > 1 { + fmt.Println("Error: -o must be 0 or 1") + return + } checkPort(port) genSSL() + genRsa() exPath = getCurrentAbPath() fmt.Println(exPath) go func() { @@ -143,6 +174,8 @@ func main() { mux.Handle("/application/upload/", http.StripPrefix("/application/upload/", http.FileServer(http.Dir(filepath.FromSlash(exPath+"/upload"))))) mux.HandleFunc("/application/download-file", downloadHandler) mux.HandleFunc("/application/serverInfo", serverInfo) + mux.HandleFunc("/application/hdcPublicKey", getHdcPublicKey) + mux.HandleFunc("/application/encryptHdcMsg", encryptHdcMsg) fs := http.FileServer(http.Dir(exPath + "/")) mux.Handle("/application/", http.StripPrefix("/application/", cors(fs, version))) go func() { @@ -163,9 +196,9 @@ func main() { err := ser.ListenAndServe() CheckErr(err) }() - if (isOpen == 1){ - open(fmt.Sprintf("https://localhost:%d/application", port)) - } + if isOpen == 1 { + open(fmt.Sprintf("https://localhost:%d/application", port)) + } }() select {} } @@ -219,6 +252,32 @@ func serverInfo(w http.ResponseWriter, r *http.Request) { w.WriteHeader(200) } +func getHdcPublicKey(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Access-Control-Allow-Origin", "*") + w.Header().Set("Content-Type", "text/json") + resp(&w)(true, 0, "success", map[string]interface{}{ + "publicKey": hdcPublicKey, + }) +} + +func encryptHdcMsg(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Access-Control-Allow-Origin", "*") + w.Header().Set("Content-Type", "text/json") + hdcMsg := r.URL.Query().Get("message") + if len(hdcMsg) == 0 { + resp(&w)(false, -1, "Invalid message", nil) + return + } + signatures, err := rsa.SignPKCS1v15(nil, hdcPrivateKey, crypto.Hash(0), []byte(hdcMsg)) + if err != nil { + resp(&w)(false, -1, "sign failed", nil) + } else { + resp(&w)(true, 0, "success", map[string]interface{}{ + "signatures": base64.StdEncoding.EncodeToString(signatures), + }) + } +} + func readReqServerConfig() string { readServerConfig, serverConfigErr := os.ReadFile(exPath + "/server-config.txt") if serverConfigErr != nil { diff --git a/ide/src/trace/SpApplication.ts b/ide/src/trace/SpApplication.ts index 301f0b17a336e80a5b587fb54ce84ea21c905c94..bd7bdc72283b57aec6a9035998da8123e2e823f8 100644 --- a/ide/src/trace/SpApplication.ts +++ b/ide/src/trace/SpApplication.ts @@ -1975,18 +1975,6 @@ export class SpApplication extends BaseElement { }; } private initSearchEvents(): void { - this.litSearch!.addEventListener('focus', (e): void => { - Utils.currentSelectTrace = this.litSearch!.getSearchTraceId(); - this.spSystemTrace!.searchTargetTraceHandler(); - window.publish(window.SmartEvent.UI.KeyboardEnable, { - enable: false, - }); - }); - this.litSearch!.addEventListener('blur', () => { - window.publish(window.SmartEvent.UI.KeyboardEnable, { - enable: true, - }); - }); this.litSearch!.addEventListener('previous-data', (ev) => { if(this.progressEL!.loading) { return; @@ -2007,7 +1995,7 @@ export class SpApplication extends BaseElement { return; } this.litSearch!.index = this.spSystemTrace!.showStruct( - true, + false, //@ts-ignore ev.detail.value, this.litSearch!.list, @@ -2027,21 +2015,13 @@ export class SpApplication extends BaseElement { this.spSystemTrace?.addEventListener('trace-previous-data', (ev) => { if(this.progressEL!.loading) { return; - } - if(this.litSearch!.isSearchInputFocus) { - this.litSearch!.isSearchInputFocus = !this.litSearch!.isSearchInputFocus; - return; - } + } this.litSearch!.index = this.spSystemTrace!.showStruct(true, this.litSearch!.index, this.litSearch!.list); }); this.spSystemTrace?.addEventListener('trace-next-data', (ev) => { if(this.progressEL!.loading) { return; } - if(this.litSearch!.isSearchInputFocus) { - this.litSearch!.isSearchInputFocus = !this.litSearch!.isSearchInputFocus; - return; - } this.litSearch!.index = this.spSystemTrace!.showStruct(false, this.litSearch!.index, this.litSearch!.list); }); } diff --git a/ide/src/trace/component/SpSystemTrace.init.ts b/ide/src/trace/component/SpSystemTrace.init.ts index 405dd85fdcddc56217ead81276cb5b771d32ff8e..68f09de108ed277fb7b12f809022f3e321e97a3e 100644 --- a/ide/src/trace/component/SpSystemTrace.init.ts +++ b/ide/src/trace/component/SpSystemTrace.init.ts @@ -698,12 +698,13 @@ export function spSystemTraceInitElement(sp: SpSystemTrace): void { smartEventSubscribe(sp); } -function moveRangeToCenterAndHighlight(sp: SpSystemTrace, findEntry: any): void { +function moveRangeToCenterAndHighlight(sp: SpSystemTrace, findEntry: any, currentEntry: any): void { if (findEntry) { - sp.moveRangeToCenter(findEntry.startTime!, findEntry.dur!); - sp.queryAllTraceRow().forEach((item) => { - item.highlight = false; - }); + //findEntry不在range范围内,会把它移动到泳道最左侧 + if (findEntry.startTime > TraceRow.range!.endNS || findEntry.startTime + findEntry.dur < TraceRow.range!.startNS) { + sp.moveRangeToLeft(findEntry.startTime!, findEntry.dur!); + } + cancelCurrentTraceRowHighlight(sp, currentEntry); if (findEntry.type === 'cpu') { findEntryTypeCpu(sp, findEntry); } else if (findEntry.type === 'func') { @@ -713,34 +714,25 @@ function moveRangeToCenterAndHighlight(sp: SpSystemTrace, findEntry: any): void } else if (findEntry.type === 'sdk') { findEntryTypeSdk(sp, findEntry); } - sp.timerShaftEL?.drawTriangle(findEntry.startTime || 0, 'inverted'); - } -} - -function setToNext(current: number, totalResults: number): number { - const index = (current + 1) % totalResults; - return index; -} - -function setToPrevious(current: number, totalResults: number): number { - let index = current - 1; - if (index < 0) { - index = totalResults - 1; } - return index; } -function searchImp(structs: Array, needle: number, i: number, j:number): number { - if (i === j) return -1; - if (i + 1 === j) { - return needle >= structs[i].startTime ? i : -1; - } - const mid = Math.floor((j - i) / 2) + i; - const midValue = structs[mid].startTime; - if (needle < midValue) { - return searchImp(structs, needle, i, mid); - } else { - return searchImp(structs, needle, mid, j); +function cancelCurrentTraceRowHighlight(sp: SpSystemTrace, currentEntry: any) { + if (currentEntry?.type === 'cpu') { + sp.queryAllTraceRow(`trace-row[row-type='cpu-data'][row-id='${currentEntry.cpu}']`, + (row) => row.rowType === 'cpu-data' && row.rowId === `${currentEntry.cpu}`)[0].highlight = false; + } else if (currentEntry?.type === 'func') { + let funcRowID = !currentEntry.cookie ? `${currentEntry.tid}` : currentEntry.row_id; + sp.queryAllTraceRow(`trace-row[row-type='func'][row-id='${funcRowID}'][row-parent-id='${currentEntry.pid}']`, + (row) => row.rowType === 'func' && row.rowId === `${funcRowID}` && row.rowParentId === `${currentEntry.pid}`)[0].highlight = false; + } else if (currentEntry?.type === 'sdk') { + let parentRow = sp.shadowRoot!.querySelector>("trace-row[row-type='sdk'][folder]"); + if (parentRow) { + let sdkRow = parentRow.childrenList.filter( + (child) => child.rowId === currentEntry.rowId && child.rowType === currentEntry.rowType + )[0]; + sdkRow!.highlight = false; + } } } @@ -757,48 +749,65 @@ export function spSystemTraceShowStruct( let findIndex = spSystemTraceShowStructFindIndex(previous, currentIndex, structs, retargetIndex); let findEntry: any; findEntry = structs[findIndex]; - moveRangeToCenterAndHighlight(sp, findEntry); + let currentEntry: any = undefined; + if (currentIndex >= 0) { + currentEntry = structs[currentIndex]; + } + moveRangeToCenterAndHighlight(sp, findEntry, currentEntry); return findIndex; } + function spSystemTraceShowStructFindIndex( previous: boolean, currentIndex: number, structs: Array, retargetIndex: number | undefined ): number { - let findIndex = -1; - const totalResults = structs.length; const rangeStart = TraceRow.range!.startNS; const rangeEnd = TraceRow.range!.endNS; - const currentStart = structs[currentIndex]?.startTime; - if (retargetIndex && retargetIndex > 0) { - currentIndex = retargetIndex; - } - //不在时间区域内 - if (!retargetIndex && (currentIndex === -1 || currentStart < rangeStart || currentStart > rangeEnd)) { - const searchIndex = searchImp(structs, rangeStart, 0, totalResults); - if (previous) { - if (searchIndex === -1) { - findIndex = setToPrevious(currentIndex, totalResults); - } else { - findIndex = searchIndex; - } - } else { - if (searchIndex === -1) { - findIndex = setToNext(currentIndex, totalResults); - } else { - findIndex = searchIndex; + let findIndex = -1; + if (retargetIndex) { + findIndex = retargetIndex - 1; + } else if (previous) { + for (let i = structs.length - 1; i >= 0; i--) { + let it = structs[i]; + if ((i < currentIndex && it.startTime! >= rangeStart && it.startTime! + it.dur! <= rangeEnd) + || (it.startTime! + it.dur! < rangeStart)) { + findIndex = i; + break; } } + if (findIndex === -1) { + findIndex = structs.length - 1; + } } else { - if (previous) { - findIndex = setToPrevious(currentIndex, totalResults); - } else { - findIndex = setToNext(currentIndex, totalResults); + if (currentIndex > 0) { + if (rangeStart > SpSystemTrace.currentStartTime) { + SpSystemTrace.currentStartTime = rangeStart; + } + //右移rangeStart变小重新赋值 + if (SpSystemTrace.currentStartTime > rangeStart) { + SpSystemTrace.currentStartTime = rangeStart;//currentIndex不在可视区时,currentIndex = -1 + if ( + structs[currentIndex].startTime < rangeStart || + structs[currentIndex].startTime! + structs[currentIndex].dur! > rangeEnd + ) { + currentIndex = -1; + } + } + } + //在数组中查找比currentIndex大且在range范围内的第一个下标,如果range范围内没有返回-1 + findIndex = structs.findIndex((it, idx) => { + return ((idx > currentIndex && it.startTime! >= rangeStart && it.startTime! + it.dur! <= rangeEnd) + || (it.startTime! > rangeEnd)); + }); + if (findIndex === -1) { + findIndex = 0; } } return findIndex; } + function findEntryTypeCpu(sp: SpSystemTrace, findEntry: any): void { CpuStruct.selectCpuStruct = findEntry; CpuStruct.hoverCpuStruct = CpuStruct.selectCpuStruct; @@ -809,7 +818,9 @@ function findEntryTypeCpu(sp: SpSystemTrace, findEntry: any): void { findEntry, // @ts-ignore item.dataListCache.find((it) => it.startTime > findEntry.startTime) ); - item.fixedList = [findEntry]; + let _findEntry = JSON.parse(JSON.stringify(findEntry)); + _findEntry.type = 'thread'; + item.fixedList = [_findEntry]; } item.highlight = item.rowId === `${Utils.getDistributedRowId(findEntry.cpu)}`; item.draw(true); diff --git a/ide/src/trace/component/SpSystemTrace.ts b/ide/src/trace/component/SpSystemTrace.ts index 1dd3d91228b0ef6568bb7c1bd089a1d8682c4c10..5c916e9d19f03ff54346d480a9a2b41c3f33e074 100644 --- a/ide/src/trace/component/SpSystemTrace.ts +++ b/ide/src/trace/component/SpSystemTrace.ts @@ -1856,7 +1856,7 @@ export class SpSystemTrace extends BaseElement { if (!this.isInViewport(rootRow)) { setTimeout(() => { rootRow!.scrollIntoView({ behavior: 'smooth' }); - }, 500); + }, 50); } } else { // @ts-ignore @@ -1869,7 +1869,7 @@ export class SpSystemTrace extends BaseElement { } setTimeout(() => { rootRow!.scrollIntoView({ behavior: 'smooth', block: 'center' }); - }, 500); + }, 50); } } @@ -2236,10 +2236,6 @@ export class SpSystemTrace extends BaseElement { // @ts-ignore FuncStruct.hoverFuncStruct = entry; // @ts-ignore FuncStruct.selectFuncStruct = entry; - // 鼠标左键点击不需要触发点击事件 - if (FuncStruct.funcSelect) { - this.onClickHandler(TraceRow.ROW_TYPE_FUNC, undefined, entry); - } // @ts-ignore this.scrollToDepth( `${funcRowID}`, // @ts-ignore `${Utils.getDistributedRowId(funcStract.pid)}`, @@ -2247,6 +2243,10 @@ export class SpSystemTrace extends BaseElement { true, // @ts-ignore entry.depth || 0 ); + // 鼠标左键点击不需要触发点击事件 + if (FuncStruct.funcSelect) { + this.onClickHandler(TraceRow.ROW_TYPE_FUNC, undefined, entry); + } // @ts-ignore FuncStruct.funcSelect = true; } }; @@ -2364,7 +2364,6 @@ export class SpSystemTrace extends BaseElement { it.processName = p; it.processCmdLine = p; it.name = t; - it.type = 'cpu'; if (next) { if (it.startTime! + it.dur! > next!.startTime! || it.dur === -1 || it.dur === null || it.dur === undefined) { it.dur = next!.startTime! - it.startTime!; diff --git a/ide/src/trace/component/trace/search/Search.ts b/ide/src/trace/component/trace/search/Search.ts index ca62f58cd67a65e674078bbfaa506007df7fe2c9..b5d7721fbce189f03a345d8ed082e0f701d2bba1 100644 --- a/ide/src/trace/component/trace/search/Search.ts +++ b/ide/src/trace/component/trace/search/Search.ts @@ -44,7 +44,6 @@ export class LitSearch extends BaseElement { private _retarge_index: HTMLInputElement | null | undefined; private traceSelector: LitSelect | null | undefined; public currenSearchValue: string | undefined | null; - private _isSearchInputFocus: boolean = false; get list(): Array { return this._list; @@ -103,14 +102,6 @@ export class LitSearch extends BaseElement { return this._value; } - set isSearchInputFocus(value: boolean) { - this._isSearchInputFocus = value; - } - - get isSearchInputFocus(): boolean { - return this._isSearchInputFocus; - } - setPercent(name: string = '', value: number): void { let searchHide = this.shadowRoot!.querySelector('.root'); let searchIcon = this.shadowRoot!.querySelector('#search-icon'); @@ -201,13 +192,6 @@ export class LitSearch extends BaseElement { } private searchBlurListener(): void { - this.dispatchEvent( - new CustomEvent('blur', { - detail: { - value: this.search!.value, - }, - }) - ); setTimeout((): void => { this.hideSearchHistoryList(); }, 200); @@ -216,7 +200,6 @@ export class LitSearch extends BaseElement { private searchKeyupListener(e: KeyboardEvent): void { timerId = null; if (e.code === 'Enter' || e.code === 'NumpadEnter') { - this.isSearchInputFocus = true; this.updateSearchList(this.search!.value); if (e.shiftKey) { this.dispatchEvent( @@ -264,11 +247,18 @@ export class LitSearch extends BaseElement { this.search!.addEventListener('keyup', (e: KeyboardEvent) => { SpSystemTrace.isKeyUp = true; this._retarge_index!.value = ''; - if(this.search?.value !== this.currenSearchValue) { - this.index = 0; - } this.searchKeyupListener(e); }); + //阻止事件冒泡 + this.search!.addEventListener('keydown', (e: KeyboardEvent) => { + SpSystemTrace.isKeyUp = false; + e.stopPropagation(); + }); + + this.search!.addEventListener('keypress', (e: KeyboardEvent) => { + SpSystemTrace.isKeyUp = false; + e.stopPropagation(); + }); this.shadowRoot?.querySelector('#arrow-left')?.addEventListener('click', (): void => { this.dispatchEvent( new CustomEvent('previous-data', { @@ -288,17 +278,14 @@ export class LitSearch extends BaseElement { ); }); this.keyUpListener(); - this._retarge_index!.addEventListener('focus', () => { - this.dispatchEvent( - new CustomEvent('focus', {}) - ); + //阻止事件冒泡 + this.shadowRoot?.querySelector("input[name='retarge_index']")?.addEventListener('keydown', (e: any) => { + SpSystemTrace.isKeyUp = false; + e.stopPropagation(); }); - this.shadowRoot?.querySelector("input[name='retarge_index']")?.addEventListener('keydown', (e: unknown): void => { - // @ts-ignore - if (e.keyCode === 13) { - // @ts-ignore - e.stopPropagation(); - } + this.shadowRoot?.querySelector("input[name='retarge_index']")?.addEventListener('keypress', (e: any) => { + SpSystemTrace.isKeyUp = false; + e.stopPropagation(); }); } @@ -400,7 +387,7 @@ export class LitSearch extends BaseElement { this.valueChangeHandler?.(this.search!.value); if (flag !== searchInfoOption.textContent) { this._retarge_index!.value = ''; - this.index = 0; + this.index = -1; } } }); diff --git a/ide/src/trace/component/trace/sheet/TabPaneCurrentSelection.ts b/ide/src/trace/component/trace/sheet/TabPaneCurrentSelection.ts index a3cce1799c909057d1ab75b564103c94b576d04d..b3b3ed5f58d336949ade6b6b61434c6e231f51b5 100644 --- a/ide/src/trace/component/trace/sheet/TabPaneCurrentSelection.ts +++ b/ide/src/trace/component/trace/sheet/TabPaneCurrentSelection.ts @@ -387,6 +387,7 @@ export class TabPaneCurrentSelection extends BaseElement { information = informationList && informationList.length > 0 ? informationList[0].CN : `
无相关描述,如您知道具体含义可点击反馈
+ diff --git a/ide/src/trace/component/trace/sheet/process/TabPaneSlices.ts b/ide/src/trace/component/trace/sheet/process/TabPaneSlices.ts index 4cbca41cfc03a83f7185ccf64e2eae1539ab5284..e1f6fee1e2adc55d98b1561211c509a36f873047 100644 --- a/ide/src/trace/component/trace/sheet/process/TabPaneSlices.ts +++ b/ide/src/trace/component/trace/sheet/process/TabPaneSlices.ts @@ -190,7 +190,6 @@ export class TabPaneSlices extends BaseElement { spSystemTrace: SpSystemTrace ): void { let input = search.shadowRoot?.querySelector('input') as HTMLInputElement; - let indexEL = search.shadowRoot!.querySelector('#index'); let rangeSelectList: Array = []; // 框选范围的数据 // search 到的内容与框选泳道的内容取并集 for (const searchItem of search.list) { @@ -230,9 +229,8 @@ export class TabPaneSlices extends BaseElement { search.currenSearchValue = data.name; search.list = rangeSelectList; search.total = search.list.length; - search.index = spSystemTrace!.showStruct(true, 1, search.list); + search.index = spSystemTrace!.showStruct(false, -1, search.list); search.isClearValue = true; - indexEL!.textContent = '1'; } connectedCallback(): void { diff --git a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts index 1ace828d26ae44053837069d9ec77f6cedcb8662..e996f2ba21db8bd4e45b16d82c5ff2ed0912afe4 100644 --- a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts +++ b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts @@ -231,6 +231,7 @@ export class ProcedureLogicWorkerPerf extends LogicHandler { private perfReset(): void { this.isHideThread = false; this.isHideThreadState = false; + this.isTopDown = true; this.isOnlyKernel = false; } @@ -849,6 +850,34 @@ export class ProcedureLogicWorkerPerf extends LogicHandler { }); } + kernelCombination(): void { + function mergeChildren(item: PerfCallChainMerageData) { + if (item.children.length <= 0) { + return + } + item.children = item.children.reduce((total: PerfCallChainMerageData[], pfcall: PerfCallChainMerageData): PerfCallChainMerageData[] => { + for (const prev of total) { + if (pfcall.symbol == prev.symbol) { + prev.children.push(...pfcall.children) + prev.total += pfcall.total + prev.count += pfcall.count + prev.totalEvent += pfcall.totalEvent + prev.eventCount += pfcall.eventCount + return total + } + } + total.push(pfcall) + return total + }, [] as PerfCallChainMerageData[]) + for (const child of item.children) { + mergeChildren(child) + } + } + this.allProcess.forEach((item: PerfCallChainMerageData): void => { + mergeChildren(item) + }) + } + findSearchNode(sampleArray: PerfCallChainMerageData[], search: string, parentSearch: boolean): void { search = search.toLocaleLowerCase(); sampleArray.forEach((sample: PerfCallChainMerageData): void => { @@ -982,6 +1011,9 @@ export class ProcedureLogicWorkerPerf extends LogicHandler { return this.combineCallChainForAnalysis(); case 'getBottomUp': return this.getBottomUp(); + case 'kernelCombination': + this.kernelCombination(); + break; } } diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerFunc.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerFunc.ts index 35b449bbccd4f9982ecb5d89412d9b1aa9be04d6..c2e28b4d9692061c8f86a8fdb61eef7de59b9719 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerFunc.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerFunc.ts @@ -154,7 +154,6 @@ export function funcStructOnClick( } } } - sp.timerShaftEL?.drawTriangle(hoverFuncStruct!.ts || 0, 'inverted'); sp.traceSheetEL?.displayFuncData( showTabArray, // @ts-ignore diff --git a/ide/test/base-ui/untils/CSVFormater.test.ts b/ide/test/base-ui/untils/CSVFormater.test.ts index 24436cf6d9aea4aa0192ec30103413ff91e7765f..b424c86ff7fa17ddd1f5b15e362b11f51cc112c4 100644 --- a/ide/test/base-ui/untils/CSVFormater.test.ts +++ b/ide/test/base-ui/untils/CSVFormater.test.ts @@ -34,7 +34,6 @@ describe('JSONToCSV Test', () => { const mockSaveCsvFile = jest.fn(); JSONToCSV.saveCsvFile = mockSaveCsvFile; JSONToCSV.setCsvData(Obj); - expect(mockSaveCsvFile).toHaveBeenCalled(); - expect(mockSaveCsvFile).toHaveBeenCalledWith('TestExport.csv', expect.any(String)); + expect(mockSaveCsvFile).toHaveBeenCalledTimes(0); }); -}); \ No newline at end of file +}); diff --git a/ide/test/hdc/common/ObjectToMemory.test.ts b/ide/test/hdc/common/ObjectToMemory.test.ts deleted file mode 100644 index 3e8ccf4ad780cc9175ec10867346c5015df86461..0000000000000000000000000000000000000000 --- a/ide/test/hdc/common/ObjectToMemory.test.ts +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { objectToMemorySize } from '../../../src/hdc/common/ObjectToMemorySize'; -describe('ObjectToMemoryTest', () => { - let obj = new objectToMemorySize(); - it('ObjectToMemoryTest_objectToSize_01', () => { - expect(obj.objectToSize(12)).toEqual(8); - }); - - it('ObjectToMemoryTest_objectToSize_02', () => { - expect(obj.objectToSize(true)).toEqual(4); - }); - - it('ObjectToMemoryTest_objectToSize_03', () => { - expect(obj.objectToSize('abc')).toEqual(6); - }); - - it('ObjectToMemoryTest_objectToSize_04', () => { - expect(obj.objectToSize([1, 2])).toEqual(16); - }); - - it('ObjectToMemoryTest_objectToSize_05', () => { - expect(obj.objectToSize({ name: 'demo', age: 12 })).toEqual(30); - }); - - it('ObjectToMemoryTest_sizeOfObj_01', () => { - expect(obj.sizeOfObj(null)).toEqual(0); - }); - - it('ObjectToMemoryTest_sizeOfObj_02', () => { - expect(obj.sizeOfObj(12)).toEqual(0); - }); - - it('ObjectToMemoryTest_sizeOfObj_03', () => { - expect(obj.sizeOfObj(false)).toEqual(0); - }); - - it('ObjectToMemoryTest_sizeOfObj_04', () => { - expect(obj.sizeOfObj(false)).toEqual(0); - }); - - it('ObjectToMemoryTest_sizeOfObj_05', () => { - expect(obj.sizeOfObj([1, 2])).toEqual(20); - }); - - it('ObjectToMemoryTest_sizeOfObj_06', () => { - expect(obj.sizeOfObj({ name: 'demo', age: 12 })).toEqual(30); - }); - - it('ObjectToMemoryTest_objectToSize_07', () => { - expect(obj.objectToSize(undefined)).toEqual(0); - }); - - it('ObjectToMemoryTest_sizeOfObj_08', () => { - let object = { - [1]: 2, - [3]: 4, - [5]: 6, - [7]: 8, - }; - expect(obj.sizeOfObj(object)).toEqual(40); - }); -}); diff --git a/ide/test/js-heap/logic/Allocation.test.ts b/ide/test/js-heap/logic/Allocation.test.ts index 48df10b5883b402597c5bd9f97eb15ff74eea475..35ca44ae511913741109134d4e169f96c35bd625 100644 --- a/ide/test/js-heap/logic/Allocation.test.ts +++ b/ide/test/js-heap/logic/Allocation.test.ts @@ -305,7 +305,7 @@ describe('Allocation Test', () => { it('AllocationTest03', () => { let allocationLogic = new AllocationLogic(data); let nodeStack = allocationLogic.getNodeStack(12); - expect(nodeStack.length).toBe(1); + expect(nodeStack.length).toBe(0); }); it('AllocationTest04', () => { let allocationLogic = new AllocationLogic(data); diff --git a/ide/test/trace/component/SpSystemTrace.test.ts b/ide/test/trace/component/SpSystemTrace.test.ts index 28616fa188c28ccc809563bc51f2426e760af735..221c3edd08e10e9a3ecc8606f85b056dc4cdf6f6 100644 --- a/ide/test/trace/component/SpSystemTrace.test.ts +++ b/ide/test/trace/component/SpSystemTrace.test.ts @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + jest.mock('../../../src/trace/component/trace/TimerShaftElement', () => { return { sportRuler: { @@ -52,6 +53,7 @@ jest.mock('../../../src/js-heap/model/DatabaseStruct', () => { return {}; }); jest.mock('../../../src/trace/database/SqlLite'); + const intersectionObserverMock = () => ({ observe: () => null, }); @@ -79,6 +81,7 @@ describe('SpSystemTrace Test', () => { const rowParentId = ''; const rowType = ''; let smooth = true; + spSystemTrace.searchCPU = jest.fn(); spSystemTrace.initElements = jest.fn(() => true); it('SpSystemTraceTest01', function () { @@ -95,7 +98,11 @@ describe('SpSystemTrace Test', () => { }); it('SpSystemTraceTest04', function () { - expect(spSystemTrace.rowsElOnScroll('Scroll')).toBeUndefined(); + expect(spSystemTrace.rowsElOnScroll({ + target: { + scrollTop: {} + } + })).toBeUndefined(); }); it('SpSystemTraceTest05', function () { @@ -140,7 +147,8 @@ describe('SpSystemTrace Test', () => { dur: 152, totalNS: 4252, startTs: 522, - flag: '' + flag: '', + funName: 'binder async' } expect(spSystemTrace.scrollToActFunc(funcStract, true)).toBeUndefined(); }); @@ -153,15 +161,8 @@ describe('SpSystemTrace Test', () => { expect(spSystemTrace.search()).toBeUndefined(); }); - it('SpSystemTraceTest18', function () { - expect(spSystemTrace.searchCPU()).not.toBeUndefined(); - }); - it('SpSystemTraceTest22', function () { - // procedurePool.clearCache = jest.fn(() => true); - // spSystemTrace.traceSheetEL = jest.fn(() => true); spSystemTrace.traceSheetEL!.clearMemory = jest.fn(() => true); - // spSystemTrace.traceSheetEL.setAttribute = jest.fn(() => true); spSystemTrace.traceSheetEL.setMode = jest.fn(() => true); spSystemTrace.rangeSelect = new RangeSelect(spSystemTrace); spSystemTrace.timerShaftEL!.displayCollect = jest.fn(() => true); @@ -242,7 +243,6 @@ describe('SpSystemTrace Test', () => { }); it('SpSystemTraceTest33', function () { spSystemTrace.rangeSelect = new RangeSelect(spSystemTrace); - // spSystemTrace.traceSheetEL.setMode = jest.fn(() => true); spSystemTrace.timerShaftEL.removeTriangle = jest.fn(()=>{}) expect(spSystemTrace.clickEmptyArea()).toBeUndefined(); }); diff --git a/ide/test/trace/component/chart/SpProcessChart.test.ts b/ide/test/trace/component/chart/SpProcessChart.test.ts index 36a8f0820b9bbd276267680a960f417b8bf42f57..5e9c2e004d0d98692ed2d792678724e7c91d81f4 100644 --- a/ide/test/trace/component/chart/SpProcessChart.test.ts +++ b/ide/test/trace/component/chart/SpProcessChart.test.ts @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + jest.mock('../../../../src/trace/component/SpSystemTrace', () => { return {}; }); @@ -49,6 +50,8 @@ describe('SpProcessChart Test', () => { let htmlElement: any = document.createElement('sp-system-trace'); let spProcessChart = new SpProcessChart(htmlElement); let MockqueryProcessAsyncFunc = sqlit.queryProcessAsyncFunc; + let MockqueryDistributedRelationData = processSqlite.queryDistributedRelationData; + MockqueryDistributedRelationData.mockResolvedValue([]); MockqueryProcessAsyncFunc.mockResolvedValue([ { diff --git a/ide/test/trace/component/chart/SpSegmentationChart.test.ts b/ide/test/trace/component/chart/SpSegmentationChart.test.ts index 302fb589f818975139bd5945198be99dadc4715b..23606f7c15f7ed1c4b7dc2ac6b979797c7cad38a 100644 --- a/ide/test/trace/component/chart/SpSegmentationChart.test.ts +++ b/ide/test/trace/component/chart/SpSegmentationChart.test.ts @@ -24,6 +24,10 @@ jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => { return {}; }); jest.mock('../../../../src/js-heap/model/DatabaseStruct', () => {}); + +const funcSqlit = require('../../../../src/trace/database/sql/Func.sql'); +jest.mock('../../../../src/trace/database/sql/Func.sql'); + const intersectionObserverMock = () => ({ observe: () => null, }); @@ -36,6 +40,8 @@ window.ResizeObserver = window.ResizeObserver || unobserve: jest.fn(), })); describe('SpSegmentationChart Test', () => { + let mockqueryAllFuncNames = funcSqlit.queryAllFuncNames; + mockqueryAllFuncNames.mockResolvedValue([]); let spSystemTrace = new SpSystemTrace(); let segmentationChart = new SpSegmentationChart(spSystemTrace); it('SpSegmentationChartTest01 ', function () { diff --git a/ide/test/trace/component/setting/SpSdkConfig.test.ts b/ide/test/trace/component/setting/SpSdkConfig.test.ts index 703c093a4159ce4e73b0beac8593e4a69cf9167d..7102ce1407c99a2aaf4abc08a29db90cb535a628 100644 --- a/ide/test/trace/component/setting/SpSdkConfig.test.ts +++ b/ide/test/trace/component/setting/SpSdkConfig.test.ts @@ -100,11 +100,11 @@ describe('spSdkConfig Test', () => { aa: { type: 'string', default: '11', - enum: ['consistent', '11', 'delegated'], }, cc: { type: 'number', description: 'number1111', + default: '11', }, ee: { type: 'integer', @@ -114,6 +114,7 @@ describe('spSdkConfig Test', () => { ff: { type: 'boolean', description: 'switchhh', + default: '11', }, }, }; @@ -122,7 +123,7 @@ describe('spSdkConfig Test', () => { it('spSdkConfigTest18', function () { expect(spSdkConfig.getGpuConfig()).toStrictEqual({ aa: '11', - cc: 0, + cc: 11, ee: 12, ff: false, ss: 'strsadsa', diff --git a/ide/test/trace/component/trace/TimerShaftElement.test.ts b/ide/test/trace/component/trace/TimerShaftElement.test.ts index 04084db3990f07e75cc96427d6d4c0465f1e5328..713e954c17b08049cc00a901b83ed281025d67e6 100644 --- a/ide/test/trace/component/trace/TimerShaftElement.test.ts +++ b/ide/test/trace/component/trace/TimerShaftElement.test.ts @@ -126,11 +126,6 @@ describe('TimerShaftElement Test', () => { it('TimerShaftElementTest19', function () { expect(timerShaftElement.sportRuler).not.toBeUndefined(); }); - - it('TimerShaftElementTest20', function () { - expect(timerShaftElement.isScaling()).toBeFalsy(); - }); - it('TimerShaftElementTest21', function () { timerShaftElement.rangeRuler.setRangeNS = jest.fn(() => true); expect(timerShaftElement.setRangeNS()).toBeFalsy(); diff --git a/ide/test/trace/component/trace/base/TraceRow.test.ts b/ide/test/trace/component/trace/base/TraceRow.test.ts index 72e6dddbd8ed1e7ffdbf3448e2e8a5a5f1c60e7b..e2f38828c3e42512b51818cf27c14b4d13fd4f28 100644 --- a/ide/test/trace/component/trace/base/TraceRow.test.ts +++ b/ide/test/trace/component/trace/base/TraceRow.test.ts @@ -57,7 +57,7 @@ describe('TraceRow Test', () => { it('TraceRow Test06', () => { traceRow.rangeSelect = true; - expect(traceRow.rangeSelect).toBeTruthy(); + expect(traceRow.rangeSelect).toBeFalsy(); }); it('TraceRow Test10', () => { @@ -187,7 +187,7 @@ describe('TraceRow Test', () => { it('TraceRow Test31', () => { traceRow.checkType = '-1'; - expect(traceRow.checkType).toBeTruthy(); + expect(traceRow.checkType).toBe(''); }); it('TraceRow Test32', () => { @@ -229,17 +229,17 @@ describe('TraceRow Test', () => { it('TraceRow Test42', () => { traceRow.checkType = '0'; - expect(traceRow.checkType).toBe('0'); + expect(traceRow.checkType).toBe(''); }); it('TraceRow Test43', () => { traceRow.checkType = '1'; - expect(traceRow.checkType).toBe('1'); + expect(traceRow.checkType).toBe(''); }); it('TraceRow Test44', () => { traceRow.checkType = '2'; - expect(traceRow.checkType).toBe('2'); + expect(traceRow.checkType).toBe(''); }); it('TraceRow Test45', () => { diff --git a/ide/test/trace/component/trace/sheet/TabPaneCurrentSelection.test.ts b/ide/test/trace/component/trace/sheet/TabPaneCurrentSelection.test.ts index 524734e8636775b8213795a4c953b3f6169af4e2..64794b5516528fd1b1d76bdc59216457b41548c0 100644 --- a/ide/test/trace/component/trace/sheet/TabPaneCurrentSelection.test.ts +++ b/ide/test/trace/component/trace/sheet/TabPaneCurrentSelection.test.ts @@ -26,7 +26,7 @@ jest.mock('../../../../../src/trace/database/sql/Gpu.sql'); describe('TabPaneCurrentSelection Test', () => { let tabPaneCurrentSelection = new TabPaneCurrentSelection(); - + tabPaneCurrentSelection.setRealTime = jest.fn(); const canvas = document.createElement('canvas'); canvas.width = 1; canvas.height = 1; @@ -290,21 +290,11 @@ describe('TabPaneCurrentSelection Test', () => { }, ]; queryPreceding.mockResolvedValue(queryPrecedingData); - - tabPaneCurrentSelection.queryWakeUpData = jest.fn(() => 'WakeUpData'); - tabPaneCurrentSelection.queryWakeUpData.wb = jest.fn(() => null); + tabPaneCurrentSelection.setMemData(memData) tabPaneCurrentSelection.setCpuData(cpuData, undefined, 1); - - it('TabPaneCurrentSelectionTest01', function () { - let result = tabPaneCurrentSelection.setFunctionData(functionData); - expect(result).toBeUndefined(); - }); - - it('TabPaneCurrentSelectionTest02', function () { - let result = tabPaneCurrentSelection.setMemData(memData); - expect(result).toBeUndefined(); - }); - + tabPaneCurrentSelection.setFunctionData(functionData); + tabPaneCurrentSelection.setClockData(clockData); + tabPaneCurrentSelection.setFunctionData(functionDataTest); it('TabPaneCurrentSelectionTest03', function () { let result = getTimeString(3600_000_000_002); expect(result).toBe('1h 2ns '); @@ -360,42 +350,23 @@ describe('TabPaneCurrentSelection Test', () => { expect(tabPaneCurrentSelection.drawRight(null)).toBeUndefined(); }); - it('TabPaneCurrentSelectionTest01', function () { - let result = tabPaneCurrentSelection.setFunctionData(functionData); - expect(result).toBeUndefined(); - }); - - it('TabPaneCurrentSelectionTest02', function () { - let result = tabPaneCurrentSelection.setMemData(memData); - expect(result).toBeUndefined(); - }); - - it('TabPaneCurrentSelectionTest12', function () { + it('TabPaneCurrentSelectionTest23', function () { let result = tabPaneCurrentSelection.setJankData(jankData, undefined, 1); expect(result).toBeUndefined(); }); - it('TabPaneCurrentSelectionTest13', function () { + it('TabPaneCurrentSelectionTest25', function () { let result = tabPaneCurrentSelection.setJankData(jankDataRender, undefined, 1); expect(result).toBeUndefined(); }); - it('TabPaneCurrentSelectionTest14', function () { + it('TabPaneCurrentSelectionTest24', function () { let result = tabPaneCurrentSelection.setIrqData(irqData); expect(result).toBeUndefined(); }); - it('TabPaneCurrentSelectionTest16', function () { - let result = tabPaneCurrentSelection.setClockData(clockData); - expect(result).toBeUndefined(); - }); - - it('TabPaneCurrentSelectionTest17', function () { - let result = tabPaneCurrentSelection.setFunctionData(functionDataTest); - expect(result).toBeUndefined(); - }); it('TabPaneCurrentSelectionTest18', function () { - let result = tabPaneCurrentSelection.setStartupData(irqData, 1); + let result = tabPaneCurrentSelection.setStartupData(irqData, 1, []); expect(result).toBeUndefined(); }); it('TabPaneCurrentSelectionTest19', function () { diff --git a/ide/test/trace/component/trace/sheet/cpu/TabPaneSPT.test.ts b/ide/test/trace/component/trace/sheet/cpu/TabPaneSPT.test.ts index 786b15b4200475f3cd2485d97974f09565e71f62..fd05dc83fd91ebc6710547a909c81ccc2944bf69 100644 --- a/ide/test/trace/component/trace/sheet/cpu/TabPaneSPT.test.ts +++ b/ide/test/trace/component/trace/sheet/cpu/TabPaneSPT.test.ts @@ -13,8 +13,10 @@ * limitations under the License. */ +jest.mock('../../../../../../src/trace/component/trace/base/TraceRow', () => { + return {}; +}); import { TabPaneSPT } from '../../../../../../src/trace/component/trace/sheet/cpu/TabPaneSPT'; -import { SpSystemTrace } from '../../../../../../src/trace/component/SpSystemTrace'; import { LitTable } from '../../../../../../src/base-ui/table/lit-table'; jest.mock('../../../../../../src/js-heap/model/DatabaseStruct', () => {}); @@ -37,49 +39,7 @@ describe('TabPaneSPT Test', () => { document.body.innerHTML = `
`; let tabPane = document.querySelector('.SPT') as TabPaneSPT; let tabPaneSPT = new TabPaneSPT(); - tabPaneSPT.tbl = jest.fn(() => tab); - SpSystemTrace.SPT_DATA = [ - { - process: '', - processId: 602, - thread: 'hdcd', - threadId: 739, - state: '', - dur: 233, - start_ts: 3, - end_ts: 236, - cpu: 0, - priority: '10', - note: '85', - }, - { - process: '', - processId: 516, - thread: 'foundation', - threadId: 516, - state: '', - dur: 122, - start_ts: 22, - end_ts: 100, - cpu: 1, - priority: '114', - note: '66', - }, - { - process: '', - processId: 2, - thread: '', - threadId: 2, - state: '', - dur: 0, - start_ts: 0, - end_ts: 0, - cpu: 0, - priority: '-', - note: '-', - }, - ]; - + tabPaneSPT.sptTbl = jest.fn(() => tab); let dataList = [ { id: 78, diff --git a/ide/test/trace/component/trace/sheet/schedswitch/TabPaneSchedSwitch.test.ts b/ide/test/trace/component/trace/sheet/schedswitch/TabPaneSchedSwitch.test.ts index 60ab7cedb5f3cc0f48970c229671dad3285aca60..c7b4915aae0c39102b0c90c1c168c56e077c1bcc 100644 --- a/ide/test/trace/component/trace/sheet/schedswitch/TabPaneSchedSwitch.test.ts +++ b/ide/test/trace/component/trace/sheet/schedswitch/TabPaneSchedSwitch.test.ts @@ -56,7 +56,7 @@ describe('TabPaneSchedSwitch Test', () => { rightNs: 654233, hasFps: false, statisticsSelectData: undefined, - } + }; let single = sqlite.querySingleCutData; let singleCutData = [ { @@ -78,8 +78,8 @@ describe('TabPaneSchedSwitch Test', () => { id: 12, pid: 15, tid: 589, - state: "test", - type: "test", + state: 'test', + type: 'test', dur: 15552, ts: 526, endTs: 63965 @@ -93,18 +93,18 @@ describe('TabPaneSchedSwitch Test', () => { id: 12, pid: 15, tid: 589, - name: "name", + name: 'name', cycleStartTime: 526, depth: 1 } ]; loopCut.mockResolvedValue(loopCutData); - Utils.PROCESS_MAP.set(15, ''); - Utils.THREAD_MAP.set(589, ''); + Utils.getInstance().getProcessMap().set(15, ''); + Utils.getInstance().getThreadMap().set(589, ''); let tabPaneSchedSwitch = new TabPaneSchedSwitch(); tabPaneSchedSwitch.schedSwitchTbl.exportProgress = { loading: '' - } + }; tabPaneSchedSwitch.chartTotal.offset = jest.fn(() => ({ x: 60, y: 20 })); tabPaneSchedSwitch.selectionParam = { rightNs: 1000, @@ -124,7 +124,7 @@ describe('TabPaneSchedSwitch Test', () => { }); it('TabPaneSchedSwitchTest02', function () { - tabPaneSchedSwitch.queryCycleRangeData() + tabPaneSchedSwitch.queryCycleRangeData(); expect(tabPaneSchedSwitch.histogramSource.length).toBe(1); }); diff --git a/ide/test/trace/database/data-trafic/utils/DataFilter.test.ts b/ide/test/trace/database/data-trafic/utils/DataFilter.test.ts index 432b2fe0e1cc10585fe5a515dc347f210f00820b..e0cf5927eea921c28132a81b5c5978f2f920f0f6 100644 --- a/ide/test/trace/database/data-trafic/utils/DataFilter.test.ts +++ b/ide/test/trace/database/data-trafic/utils/DataFilter.test.ts @@ -14,7 +14,6 @@ */ import { - filterData, filterDataByGroup, filterDataByGroupLayer, filterDataByLayer @@ -22,22 +21,6 @@ import { describe('DataFilter Test', () => { it('DataFilterTest01', () => { - let list = [ - {startKey: 0, durKey: 100, startNS: 0, endNS: 1000}, - {startKey: 100, durKey: 200, startNS: 1001, endNS: 2000}, - ]; - let startKey = 'startKey'; - let durKey = 'durKey'; - let startNS = 0; - let endNS = 2000; - let width = 100; - let result = filterData(list, startKey, durKey, startNS, endNS, width); - expect(result).toEqual([ - {startKey: 0, durKey: 100, startNS: 0, endNS: 1000, v: true}, - {startKey: 100, durKey: 200, startNS: 1001, endNS: 2000, v: true}, - ]); - }); - it('DataFilterTest02', () => { let list = [ {startKey: 0, durKey: 100, startNS: 0, endNS: 1000}, {startKey: 100, durKey: 200, startNS: 1001, endNS: 2000}, @@ -54,7 +37,7 @@ describe('DataFilter Test', () => { {startKey: 100, durKey: 200, startNS: 1001, endNS: 2000, v: true}, ]); }); - it('DataFilterTest03', () => { + it('DataFilterTest02', () => { let list = [ {startKey: 0, durKey: 100, startNS: 0, endNS: 1000}, {startKey: 100, durKey: 200, startNS: 1001, endNS: 2000}, @@ -70,7 +53,7 @@ describe('DataFilter Test', () => { {startKey: 100, durKey: 200, startNS: 1001, endNS: 2000, px: 5,}, ]); }); - it('DataFilterTest0304', () => { + it('DataFilterTest03', () => { let list = [ {layerKey: 1, startKey: 0, durKey: 100, startNS: 0, endNS: 1000}, {layerKey: 2, startKey: 100, durKey: 200, startNS: 1001, endNS: 2000}, @@ -87,4 +70,4 @@ describe('DataFilter Test', () => { {startKey: 100, durKey: 200, startNS: 1001, endNS: 2000, px: 205, durTmp: 200, layerKey: 2,}, ]); }); -}); \ No newline at end of file +}); diff --git a/ide/test/trace/database/ui-worker/ProcedureWorkerBinder.test.ts b/ide/test/trace/database/ui-worker/ProcedureWorkerBinder.test.ts index 5663c53d9cbd8c6cf8b3586c93aef1afbbe74d7c..9f0f82e9ccd19cde9b8dffac8bed777cc5adb0ac 100644 --- a/ide/test/trace/database/ui-worker/ProcedureWorkerBinder.test.ts +++ b/ide/test/trace/database/ui-worker/ProcedureWorkerBinder.test.ts @@ -16,7 +16,17 @@ import { TraceRow } from '../../../../src/trace/component/trace/base/TraceRow'; import { BinderRender, BinderStruct } from '../../../../src/trace/database/ui-worker/procedureWorkerBinder'; +import { SpSegmentationChart } from '../../../../src/trace/component/chart/SpSegmentationChart'; +jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => { + return {}; +}); +jest.mock('../../../../src/js-heap/model/DatabaseStruct', () => { + return {}; +}); +jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => { + return {}; +}); jest.mock('../../../../src/trace/database/ui-worker/cpu/ProcedureWorkerCPU', () => { return {}; }); @@ -27,6 +37,13 @@ describe('Binder Test', () => { const canvas = document.createElement('canvas'); canvas.width = 10; canvas.height = 10; + TraceRow.range = jest.fn(() => { + return { + startNS: 0 + } + }); + SpSegmentationChart.trace = jest.fn(); + SpSegmentationChart.trace.traceSheetEL = jest.fn(); const ctx = canvas.getContext('2d'); it('BinderTest01 ', function () { const data = { @@ -39,7 +56,8 @@ describe('Binder Test', () => { name: 'binder transaction', cycle: -1, value: 0, - depth: 0 + depth: 0, + startNS: 0 }; expect(BinderStruct.draw(ctx, data)).toBeUndefined(); }); @@ -53,4 +71,4 @@ describe('Binder Test', () => { let binderRender = new BinderRender(); expect(binderRender.renderMainThread(data, new TraceRow())).toBeUndefined(); }); -}); \ No newline at end of file +}); diff --git a/ide/test/trace/database/ui-worker/ProcedureWorkerCommon.test.ts b/ide/test/trace/database/ui-worker/ProcedureWorkerCommon.test.ts index 594a27708b9dae84fc1c601377d213fa1b5e6c2e..32770d62b7c3fe4d82f4b102402d7a3f9ca3c62d 100644 --- a/ide/test/trace/database/ui-worker/ProcedureWorkerCommon.test.ts +++ b/ide/test/trace/database/ui-worker/ProcedureWorkerCommon.test.ts @@ -25,17 +25,13 @@ import { fillCacheData, findRange, dataFilterHandler, - drawFlagLineSegment, - drawSelectionRange, drawLinkLines, - drawString2Line, drawWakeUpList, // @ts-ignore } from '../../../../src/trace/database/ui-worker/ProcedureWorkerCommon'; -import { Flag } from '../../../../src/trace/database/ui-worker/ProcedureWorkerTimeline'; import { ColorUtils } from '../../../../src/trace/component/trace/base/ColorUtils'; -import { TraceRow } from '../../../../src/trace/component/trace/base/TraceRow'; import { EventCenter } from '../../../../src/trace/component/trace/base/EventCenter'; +import { Flag } from '../../../../src/trace/component/trace/timer-shaft/Flag'; declare global { interface Window { @@ -370,13 +366,6 @@ describe('ProcedureWorkerCommon Test', () => { }; expect(drawLinkLines(context, [], tm, true)).toBeUndefined(); }); - it('ProcedureWorkerCommon38', function () { - const canvas = document.createElement('canvas'); - canvas.width = 1; - canvas.height = 1; - const context = canvas.getContext('2d'); - expect(drawString2Line(context, [], [], 2, [], [])).toBeUndefined(); - }); it('ProcedureWorkerCommon39', function () { const canvas = document.createElement('canvas'); canvas.width = 1; diff --git a/ide/test/trace/database/ui-worker/ProcedureWorkerFreqExtend.test.ts b/ide/test/trace/database/ui-worker/ProcedureWorkerFreqExtend.test.ts index db724599d15e5f95a6bf502b9eda6c4bb04cec4b..96cec9f7e4e328174952d0cf5dda2ebf1755b12e 100644 --- a/ide/test/trace/database/ui-worker/ProcedureWorkerFreqExtend.test.ts +++ b/ide/test/trace/database/ui-worker/ProcedureWorkerFreqExtend.test.ts @@ -13,10 +13,14 @@ * limitations under the License. */ import { TraceRow } from '../../../../src/trace/component/trace/base/TraceRow'; +jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => { + return {}; +}); import { CpuFreqExtendStruct, FreqExtendRender } from '../../../../src/trace/database/ui-worker/ProcedureWorkerFreqExtend'; +import { SpSegmentationChart } from '../../../../src/trace/component/chart/SpSegmentationChart'; jest.mock('../../../../src/trace/database/ui-worker/cpu/ProcedureWorkerCPU', () => { return {}; }); @@ -24,6 +28,10 @@ jest.mock('../../../../src/trace/component/SpSystemTrace', () => { return {}; }); describe('ProcedureWorkerFreqExtend Test',()=>{ + SpSegmentationChart.trace = jest.fn(); + SpSegmentationChart.trace.traceSheetEL = jest.fn(); + SpSegmentationChart.trace.traceSheetEL.systemLogFlag = jest.fn(); + it('ProcedureWorkerFreqExtendTest01 ', function () { const data = { frame: { @@ -95,6 +103,6 @@ describe('ProcedureWorkerFreqExtend Test',()=>{ height: 100, }; window.postMessage = jest.fn(() => true); - expect(freqExtendRender.renderMainThread(freqReq,new TraceRow())) + expect(freqExtendRender.renderMainThread(freqReq, new TraceRow())) }); -}) \ No newline at end of file +}) diff --git a/ide/test/trace/database/ui-worker/ProcedureWorkerHiPerfCPU.test.ts b/ide/test/trace/database/ui-worker/ProcedureWorkerHiPerfCPU.test.ts index 9ff03d2fa028fbefe23c5d6a96172edd640c77cb..76fad8e6a992003d99229131f1347b5bf3467430 100644 --- a/ide/test/trace/database/ui-worker/ProcedureWorkerHiPerfCPU.test.ts +++ b/ide/test/trace/database/ui-worker/ProcedureWorkerHiPerfCPU.test.ts @@ -56,7 +56,8 @@ describe('ProcedureWorkerHiPerfCPU Test', () => { it('ProcedureWorkerHiPerfCPUTest05', function () { expect(HiPerfCpuStruct.groupBy10MS([{ id: 1, NS: 3 }, { copy: '1' }], 10, '')).toEqual([ - { dur: 10000000, height: NaN, eventCount: NaN ,startNS: NaN ,sampleCount: 2}, + { dur: 10000000, height: NaN, eventCount: undefined ,startNS: NaN ,sampleCount: undefined }, + { dur: 10000000, height: NaN, eventCount: NaN ,startNS: NaN ,sampleCount: 2 } ]); }); it('ProcedureWorkerHiPerfCPUTest06', function () { diff --git a/ide/test/trace/database/ui-worker/ProcedureWorkerHiPerfProcess.test.ts b/ide/test/trace/database/ui-worker/ProcedureWorkerHiPerfProcess.test.ts index 0ad78aab2402cb666b50ba3511807d42e1c6a2fd..84c082a1f880dff0bbf0ab283f4d49e2667b8588 100644 --- a/ide/test/trace/database/ui-worker/ProcedureWorkerHiPerfProcess.test.ts +++ b/ide/test/trace/database/ui-worker/ProcedureWorkerHiPerfProcess.test.ts @@ -66,6 +66,7 @@ describe('ProcedureWorkerHiPerfProcess Test', () => { it('ProcedureWorkerHiPerfProcessTest04', function () { expect(HiPerfProcessStruct.groupBy10MS([{ a: '1', b: 2, c: 3 }], 10)).toEqual([ + { dur: 10000000, height: NaN, eventCount: undefined, startNS: NaN, sampleCount : undefined}, { dur: 10000000, height: NaN, eventCount: undefined, startNS: NaN, sampleCount : 1}, ]); }); diff --git a/ide/test/trace/database/ui-worker/ProcedureWorkerHiPerfThread.test.ts b/ide/test/trace/database/ui-worker/ProcedureWorkerHiPerfThread.test.ts index ccb85beaeb7c72bfc85301e24df8743c884bd51e..0cfce3d1e99b0b3bb13d8cc72ca82f3e4f5dccc4 100644 --- a/ide/test/trace/database/ui-worker/ProcedureWorkerHiPerfThread.test.ts +++ b/ide/test/trace/database/ui-worker/ProcedureWorkerHiPerfThread.test.ts @@ -91,6 +91,7 @@ describe('ProcedureWorkerHiPerfThread Test', () => { it('ProcedureWorkerHiPerfThreadTest04', function () { expect(HiPerfThreadStruct.groupBy10MS([{ ps: 1 }, { coX: '1' }], 10, '')).toEqual([ + { dur: 10000000, eventCount: undefined, height: NaN, startNS: NaN, sampleCount: undefined}, { dur: 10000000, eventCount: NaN, height: NaN, startNS: NaN, sampleCount: 2}, ]); }); diff --git a/ide/test/trace/database/ui-worker/ProcedureWorkerTimeline.test.ts b/ide/test/trace/database/ui-worker/ProcedureWorkerTimeline.test.ts deleted file mode 100644 index 5c3ba5f42ef01f6bc993b84fa223d7b72efceb93..0000000000000000000000000000000000000000 --- a/ide/test/trace/database/ui-worker/ProcedureWorkerTimeline.test.ts +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -jest.mock('../../../../src/trace/component/trace/base/TraceRow', () => { - return {}; -}); -jest.mock('../../../../src/js-heap/model/DatabaseStruct', () => { - return {}; -}); -import { - RangeRuler, - SportRuler, - timeline, - TimelineRender, -} from '../../../../src/trace/database/ui-worker/ProcedureWorkerTimeline'; -import { Rect } from '../../../../src/trace/component/trace/timer-shaft/Rect'; -jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => { - return {}; -}); -jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => { - return {}; }); - -describe(' ProcedureWorkerTimelineTest', () => { - it('timelineTest', () => { - const timelineCanvas = document.createElement('canvas'); - timelineCanvas.width = 12; - timelineCanvas.height = 12; - const ctx = timelineCanvas.getContext('2d'); - let dataList = new Array(); - dataList.push({ - startTime: 0, - dur: 120, - frame: { x: 0, y: 9, width: 120, height: 10 }, - }); - dataList.push({ startTime: 1, dur: 111 }); - let rect = new Rect(0, 10, 10, 10); - let keyboardEvent: KeyboardEvent = new KeyboardEvent('w', { ctrlKey: true, keyCode: 13 }); - timeline(timelineCanvas, ctx, 1, 100254, keyboardEvent, rect, null, null, null, null, null, null, 0, 0, (e: any) => {}); - }); - - it('SportRulerTest01', () => { - const canvas = document.createElement('canvas'); - canvas.width = 1; - canvas.height = 1; - const ctx = canvas.getContext('2d'); - let rect = new Rect(0, 10, 10, 10); - let sportRuler = new SportRuler(canvas, ctx, rect); - sportRuler.modifyFlagList('amend'); - sportRuler.modifyFlagList('remove'); - sportRuler.drawTheFlag(0, '#999999', false, ''); - sportRuler.randomRgbColor(); - sportRuler.mouseMove(new MouseEvent('')); - sportRuler.mouseUp(new MouseEvent('')); - sportRuler.onFlagRangeEvent('1', 2); - }); - - it('SportRulerTest02', () => { - const canvas = document.createElement('canvas'); - canvas.width = 2; - canvas.height = 1; - const ctx = canvas.getContext('2d'); - let rect = new Rect(0, 20, 10, 20); - let rangeRuler = new RangeRuler( - canvas, - ctx, - rect, - { - startX: 10, - endX: rect.width, - startNS: 40, - endNS: 14, - totalNS: 155, - xs: [], - xsTxt: [], - }, - (a: any) => {} - ); - rangeRuler.draw(); - rangeRuler.drawCpuUsage(); - rangeRuler.mouseDown({ offsetX: 1, offsetY: 1 }); - rangeRuler.mouseUp(new MouseEvent('')); - rangeRuler.mouseMove(new MouseEvent('')); - rangeRuler.mouseOut(new MouseEvent('')); - rangeRuler.range.startNS = -2; - rangeRuler.range.endNS = -2; - rangeRuler.range.totalNS = -7; - rangeRuler.fillX(); - rangeRuler.keyPress(new KeyboardEvent('')); - rangeRuler.pressFrameId != -1; - rangeRuler.keyUp(new KeyboardEvent('')); - rangeRuler.keyUp({ key: 'w' }); - rangeRuler.keyUp({ key: 's' }); - rangeRuler.keyUp({ key: 'a' }); - rangeRuler.keyUp({ key: 'd' }); - }); - - it('SportRulerTest03', () => { - const canvas = document.createElement('canvas'); - canvas.width = 1; - canvas.height = 4; - const ctx = canvas.getContext('2d'); - let rect = new Rect(0, 50, 10, 50); - let rangeRuler = new RangeRuler( - canvas, - ctx, - rect, - { - startX: 60, - endX: rect.width, - startNS: 660, - endNS: 116, - totalNS: 661, - xs: [], - xsTxt: [], - }, - (a: any) => {} - ); - rangeRuler.cpuUsage = true; - expect(rangeRuler.cpuUsage).toBeUndefined(); - }); -}); diff --git a/ide/test/trace/grpc/HiProfilerClient.test.ts b/ide/test/trace/grpc/HiProfilerClient.test.ts deleted file mode 100644 index ec69e8a30ed594976c24ffcbb2c73c86924137a0..0000000000000000000000000000000000000000 --- a/ide/test/trace/grpc/HiProfilerClient.test.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { HiProfilerClient } from '../../../src/trace/grpc/HiProfilerClient'; - -describe('HiProfilerClient Test', () => { - let hiProfilerClient = new HiProfilerClient(); - it('HiProfilerClientTest01', function () { - expect(hiProfilerClient.address).toBeUndefined(); - }); - - it('HiProfilerClientTest02', function () { - hiProfilerClient.address = true; - expect(hiProfilerClient.address).toBeTruthy(); - }); - - it('HiProfilerClientTest03', function () { - expect(hiProfilerClient.client).toBeUndefined(); - }); - - it('HiProfilerClientTest04', function () { - hiProfilerClient.client = true; - expect(hiProfilerClient.client).toBeTruthy(); - }); - - it('HiProfilerClientTest05', function () { - expect(hiProfilerClient.getProfilerClient()).toBeTruthy(); - }); -}); diff --git a/ide/test/trace/grpc/ProfilerClient.test.ts b/ide/test/trace/grpc/ProfilerClient.test.ts deleted file mode 100644 index 3ca23469725373ecbcbddacf727332afb64bd752..0000000000000000000000000000000000000000 --- a/ide/test/trace/grpc/ProfilerClient.test.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { ProfilerClient } from '../../../src/trace/grpc/ProfilerClient'; - -describe('HiProfilerClient Test', () => { - it('HiProfilerClientTest01 ', function () { - expect(ProfilerClient.client).toBeUndefined(); - }); - it('HiProfilerClientTest02', function () { - ProfilerClient.client = true; - expect(ProfilerClient.client).toBeTruthy(); - }); - it('HiProfilerClientTest03 ', function () { - expect(ProfilerClient.filePaths).toBeUndefined(); - }); - it('HiProfilerClientTest04', function () { - ProfilerClient.filePaths = true; - expect(ProfilerClient.filePaths).toBeTruthy(); - }); - it('HiProfilerClientTest05', function () { - expect(ProfilerClient.profiler_proto).toBeUndefined(); - }); - it('HiProfilerClientTest06', function () { - ProfilerClient.profiler_proto = true; - expect(ProfilerClient.profiler_proto).toBeTruthy(); - }); - - it('HiProfilerClientTest07 ', function () { - expect(ProfilerClient.shutdown).toBeUndefined(); - }); - it('HiProfilerClientTest08', function () { - ProfilerClient.getChannel = jest.fn(() => true); - expect(ProfilerClient.getChannel()).toBeTruthy(); - }); -}); diff --git a/ide/test/trace/grpc/ProfilerController.test.ts b/ide/test/trace/grpc/ProfilerController.test.ts deleted file mode 100644 index f85bd103bbd5420c1063dceb05fce2d55656195a..0000000000000000000000000000000000000000 --- a/ide/test/trace/grpc/ProfilerController.test.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { ClientVessel, SettingRegistry } from '../../../src/trace/grpc/ProfilerController'; - -describe('HiProfilerClient Test', () => { - let profilerController = new ClientVessel(); - - it('ProfilerClientTest01', function () { - expect(profilerController.port).toBeUndefined(); - }); - - it('ProfilerClientTest02', function () { - profilerController.port = true; - expect(profilerController.port).toBeTruthy(); - }); - - it('ProfilerClientTest03', function () { - expect(profilerController.host).toBeUndefined(); - }); - - it('ProfilerClientTest04', function () { - profilerController.host = true; - expect(profilerController.host).toBeTruthy(); - }); - - it('ProfilerClientTest06', function () { - profilerController.loadSettings = jest.fn(() => true); - expect(profilerController.start()).toBeUndefined(); - }); - - it('ProfilerClientTest07', function () { - profilerController.loadSettings = jest.fn(() => true); - expect(profilerController.loadSettings()).toBeTruthy(); - }); - it('ProfilerClientTest08', function () { - expect(profilerController.registryClient()).toBeUndefined(); - }); - it('ProfilerClientTest09', function () { - expect(SettingRegistry.registry()).toBeUndefined(); - }); -});