Week 11 (2020/5/14)
測試, CI/CD 後半
自動化測試
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
- 越上層涵蓋越多,成本越高
- 要注意金字塔比例 (金字塔是自然產生的)
- 變成沙漏型,代表基礎測試不夠
- 如果上面的測試有 fail 可能抓不到是哪個 module 錯誤等等
- 單元測試 (Unit Test)
- independent: 相依性太高 就會不知道出錯的部份
- 整合測試 (Intergration Test)
- 通過了單元測試,代表每個元件都是正常的,但可能相互運作是不合理的
- 端對端測試 (End to End, E2E)
- 其他測試:
- 用戶接受度測試 UAT:是測試的一個階段, UAT 測試之前僅確認有沒有依照規格開發,使用 UAT 是確認規格是否適用執行
- 回歸測試:要確定舊版本正常運行才可以加上新版本(新版本不能影響舊版本)
Git
- 安裝 Git
- 建立專案資料夾
- 把專案資料夾建立成 git 的 repo
- 切進專案資料夾
git init
- 會產生一個 .git 的目錄
- 檢查本機端的 repo 狀態和遠端的狀態差別
- 更新遠端的變動(讓本機能看到)
- 將專案中做過的更改準備 commit
git add <檔案名>
git add .
(把所有更改都加進去)
- add 前應先用
git status
看哪些被更改後,再 add 特定檔案
- 將已經加入的更改 commit 到 repo 中
git commit -m "<留言 你做了什麼更改之類>"
- 盡量不要使用
commit -a
- 將 commit 推送到 repo 中
- 更新本機端的狀態(from master branch)
- git 會把 reference 存在 refs 裡
網路安全規劃 - 效能
- 追查網路封包到很細的時候,是追出 one way,而不是 Round-Trip Time
學長分享 - docker
環境要求
- curl with docker daemon
- 開啟 cgroup 和 swaps
- cgroup 預設不會開啟
指令查看相關資訊
-
sudo lsb_release -a
看 ubuntu 版本
-
network plungin
-
sudo systemctl status docker
看 docker 運行的狀況
-
| jq .
輸出 command line 較好看
-
ps auxf
可看到 process 的 parent/child 關係
-
/proc
所有 PID 掛載的位置
-
sudo docker run <image>
--rm
exit 或 stop 就不會在 docker ps -a
中看到
-m <memory_set>
限制 memory(hard limit)
limit (memory)
可用 stress-ng
強迫壓測
再去 /var/log/syslog
去查看事件
docker inspect <container_name>
偵查 Container 的細部資訊
docker
- cgroup
- logPath (
docker inspect <Container_name>
查看)
- STDOUT ( CMD 根據 command ouput 出的內容) 跟 STDIN ( CMD 下的指令 )
- log driver
- type : j-son file
- Container 可能有不同的 plugin 用不同 type 的 type
- storage
- 支援不同的 protocol -> 不同 storage 的 driver
- pull 時跑很 layer 是什麼意思
- 可從
/var/lib/docker/overlay2
下指定的 Container ID 看到 (未必是 overlay2)
docker history <docker_name>
安裝的歷史訊息,可以看到 image 有哪幾層
- 將不同的 layer 疊加起來 會用 soft link 的方式存放在一個目錄底下
- namspace
- 縮寫
netns
ip netns list
是看不到任何訊息的
問題
- docker stop 為什麼可以停止一個 Container?
- 送個 SIGTERM 告訴 container 你該關掉囉 大概 10 秒(grace time)後 parent process 就會再送 SIGKILL 強制關閉
- exit code
- docker 上的 PID 怎跟 host 上的 PID mapping 的
/proc
(?
- 會有個目錄結構 裡面有 PID 相關內容