---
# System prepended metadata

title: Hands-on Practice4

---

# Hands-on Practice4

{%hackmd 48QQ4miqSxmUyp2CZ-kBSw %}

## 測試步驟

:::info
:heart: 這裡只是測試步驟，真正的題目在下一段[**說明**](#說明)，看完測試步驟先往下看，就知道要做什麼了。
:::

- Requirement: 5G-TAU(機器的型號)具備firewall malformed packets log功能，可以根據severity紀錄將log記在flash, syslog或是snmp trap。

- 測項名稱: Firewall Malformed Packets Log Setting
    1. 出發事件:
        1. 設firewall malformed packets log規則為
             | item     | value   |
             | -------- | ------- |
             | severity | 1       |
             | flash    | disable |
             | syslog   | enable  |
             | trap     | enable  |
        3. 查看cellular資訊
    2. 預期結果: firewall資訊中應該包含下列內容
        ```bash=
        Malformed Packets
        Severity  :<1> Alert
        Flash     :Disable
        Syslog    :Enable
        Trap      :Enable
        ```

- 參考command
    ```bash=
    # 設定firewall malformed packets log規則
    configure terminal
    firewall malformed logging severity 1
    no firewall malformed logging flash
    firewall malformed logging syslog
    firewall malformed logging trap
    exit
    # 查看cellular資訊
    show firewall
    ```

## 說明
- 目的: 
    - 學習宣告table-like和string block資料，宣告table-like的變數寫法有很多種，選擇寫法時別忘了思考==目的（為了可讀性、維護性...等）==。
    - 與Practice3做比較。
    - 學習`git merge`、修改衝突和發送Merge Request。
- 根據[測試步驟](#測試步驟)完成Test Case。

:::info
:heart: 還是有點不清楚嗎？繼續照步驟做到，你就會更清楚了！
:::

## 更新Local Repo
:::info

:bulb: 之前提過的步驟之後就不再贅述，可以回去參考前面的Practice和相關的Q&A。

:::

1. 下載repo/commit
    - 若還未載過repo，須從remote（`http://mhqnetgitlab.moxa.com:10080/SimonWX_Zhao/auto-test-practice.git`）下載(clone)repo

    - 如果已經載過repo那麼只需從remote下載新的commits

2. 檢查tag，包含`practice4-r`和`practice4-ans-r`就對了。

## 練習Merge

1. checkout到帶有`practice4-r`tag的commit。
2. 確認現在位置在，`HEAD`和`tag: practice4-r`在同位置就對了。
3. 從這個commit新增一個名為`practice4-r-<你的名字>`的branch並移動到該branch上。
    ```bash=
    git checkout -b practice4-r-<你的名字>
    ```    
4. 確認現在位置在，`HEAD`指到`practice4-r-<你的名字>`就對了。
5. 此時打開`Router/firewall.robot`看一下提示，==記下那組神秘數字:exclamation:==
![](https://i.imgur.com/rhKWQPV.png)
6. 將神祕的branch merge到現在的branch（practice4-r-<你的名字>），你會收到衝突的提示。
    ```bash=
    git merge --no-ff origin/mock-branch-<神秘數字>
    ```
    衝突提醒
    ![](https://i.imgur.com/DRmasPE.png)
7. 參照practice3的方式先修正衝突的部分吧！
8. 如果都對了就把你的branch push到remote吧！
    ```bash=
    git push --set-upstream origin practice4-r-<你的名字>
    ```

## Practice4 Robot

1. 開始解題，並將你的更動[做commit](/H1voIxJwSA2f5gSs_xfDMQ#git-commit)

2. 執行結果
    ```bash=
    #用"-n"指定要執行的測項名稱
    behave -n "Firewall Malformed Packets Log Setting" -f html -o result/log.html -f pretty
    robot -d result -t "Firewall Malformed Packets Log Setting" Router/firewall.robot
    ```

3. 檢查執行結果

    - terminal
    
    - log.html
    
4. 與標有`practice4-r-ans`的[commit比較](/H1voIxJwSA2f5gSs_xfDMQ#git-diff)，主要測試步驟沒有多或少就對了！

5. 確定完成後記得做最後的commit且，==再將該branch所有commit推到remote，因為我們要練習做Code Review囉！==

## Merge-Request
1. 參照practice3送出merge request吧！這次的Target branch是`mock-branch-practice4-r-master`。
![](https://i.imgur.com/YExsFov.png)
2. 送出之後一樣==留意信箱==靜候佳音囉！

---

:::info
:heart_decoration: 感謝共同編輯
Chuck、Fan
:::