測試是功能上線之前的重要環節。
測試過程中,要盡量覆蓋各種場景。故障情況或異常情況下的場景測試,也是必不可少的。
如何模擬故障呢?
在freebsd 中, failpoints經常用來模擬故障。
在golang,也有failpoint的實現,就是目前pingcap 公司的開源專案failpoint
.
下面介紹golang中的failpoint的實現。
failpoint-ctl build successfully :-) !注意:仔細確認這些步驟。如果搞錯,會出現無法轉換**的情況。
編譯後,生成可執行檔案failpoint-ctl:
ll bin
total 6840
-rwxr-xr-x 1 lanyang staff 3.3m 11 15 17:41 failpoint-ctl
**結構如下:
cd $gopath/src
mkdir fp_example
cd fp_example
# tree ./
./├── fruit
│ └── banana.go
├── main.go
└── util
└── orange.go
其中,main.go檔案內容:
}注入乙個panic。
}再次注入乙個panic。
}再次注入乙個panic。
$gopath/src/github.com/pingcap/failpoint/bin/failpoint-ctl enable
**轉換之後,看下**檔案結構:
tree ./
./├── fruit
│ ├── banana.go
│ ├── banana.go__failpoint_stash__
│ └── binding__failpoint_binding__.go
├── hot_fruit
│ ├── binding__failpoint_binding__.go
│ ├── orange.go
│ └── orange.go__failpoint_stash__
├── main.go
2 directories, 10 files
可以看到多了幾個檔案。
如果執行disable,這些檔案又會消失。
$gopath/src/github.com/pingcap/failpoint/bin/failpoint-ctl disable
使用裝換之後的**,進行編譯:
go build -o ****** main.go
生成可執行檔案******
.
正常執行:
./******
orange....
banana....
main end
觸發bananapanic故障執行:
go_failpoints="fp_example/fruit/bananapanic=return(true)" ./******
orange....
banana....
panic: banana failpoint triggerd
goroutine 1 [running]:
fp_example/fruit.banana()
/users/lanyang/workspace/go_projects/src/fp_example/fruit/banana.go:12 +0x10e
main.main()
/users/lanyang/workspace/go_projects/src/fp_example/main.go:13 +0x2c
其中,fp_example/fruit
是package名稱,bananapanic
是注入的故障名稱。
goroutine 1 [running]:
main.main()
/users/lanyang/workspace/go_projects/src/fp_example/main.go:11 +0x22
觸發orangepanic故障執行:
go_failpoints="fp_example/hot_fruit/orangepanic=return(true)" ./******
orange....
panic: orange failpoint triggerd
goroutine 1 [running]:
fp_example/hot_fruit.orange()
/users/lanyang/workspace/go_projects/src/fp_example/hot_fruit/orange.go:12 +0x10e
main.main()
/users/lanyang/workspace/go_projects/src/fp_example/main.go:12 +0x27
pingcap/failpoint
golang failpoint 的設計與實現
藍鯨故障模擬
登入平台頁面時,每次都需要重新登入。故障模擬 vim data bkce open paas login conf default.py 修改bk cookie age時間為 0 0 1 故障觸發 bk cookie name為cookie名稱,可理解為key。故障修復 這次造成無資料上報的原因為 ...
模擬MBR故障修復
1 準備乙個新硬碟,然後進行分割槽,分乙個1g大小的主分割槽,然後進行格式化 然後在掛載 1 分割槽 root localhost fdisk dev sdb 歡迎使用 fdisk util linux 2.23.2 更改將停留在記憶體中,直到您決定將更改寫入磁碟。使用寫入命令前請三思。device...
erlang 故障排查工具
系統級別perf top,dstat tam,vtune 都能很好分析beam 瓶頸,本文主要erlang 級別排查 1.反編譯 確認線上執行 是否正確,reltools沒掌握好,公升級偶爾出現問題 decompile mod beam lib chunks code which mod abstr...