Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

快樂用法

-h標誌與任何happy-*命令一起使用可查看該命令的幫助和選項列表。

狀態文件

Happy用一條記錄在JSON文件中存儲並仔細維護其拓撲狀態。使用此狀態文件,Happy可以運行適當的命令來創建或刪除拓撲。

默認狀態文件位於~/.happy_state.json 。默認狀態名稱為happy ,如在happy-state輸出中所示:

happy-state

State Name:  happy

平行狀態

Happy支持多個並行存在的並行狀態。當前狀態由HAPPY_STATE_ID環境變量決定。如果HAPPY_STATE_ID中不存在HAPPY_STATE_ID ,則使用默認狀態值happy

在快樂安裝期間未創建HAPPY_STATE_ID 。用state以外的其他值創建一個,以立即切換到另一個Happy狀態。

export HAPPY_STATE_ID="sunny"

現在檢查happy-state得出不同的狀態:

happy-state

State Name:  sunny

每個狀態都保存在自己的~/.${HAPPY_STATE_ID}_state.json文件中。要在狀態之間切換,請再次運行export HAPPY_STATE_ID=" <state-name> "命令。

並行狀態下卸載

如果使用並行的快樂狀態,並且要卸載快樂,請確保在每個狀態都處於活動happy-state-delete運行happy-state-delete 。這樣可以確保在不影響Linux主機網絡配置的情況下,從系統中刪除由Happy創建的所有網絡名稱空間。

例如,處於happysunny兩種狀態:

export HAPPY_STATE_ID="sunny"
happy-state-delete
export HAPPY_STATE_ID="happy"
happy-state-delete

根據需要手動刪除每個並行狀態文件:

rm -f ~/.sunny_state.json
rm -f ~/.sunny_state.json.lock
rm -f ~/.happy_state.json
rm -f ~/.happy_state.json.lock

日誌

默認情況下,Happy將日誌發送到syslog 。第二個日誌備份將發送到/tmp/${HAPPY_STATE_ID}_debug_log.txt

要查看快樂日誌,請在單獨的終端窗口中運行happy-state -l 。當您輸入快樂命令時,日誌將在後台顯示外殼命令快樂問題。如果您對Linux網絡名稱空間感興趣,這是了解Happy如何工作的好方法。

例如, happy-node-add node00創建一個Happy節點。該命令的日誌輸出為:

DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 does not exist
DEBUG [Driver:writeState():365] Happy: writing Happy state to file
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns add happy000
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 exists
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns exec happy000 ifconfig lo up

所有Driver:CallCmd()行都是Happy調用的shell命令。考慮日誌中的每一行:

# Check to see if the target namespace (happy000) exists
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 does not exist

# Write the link between node00 and happy000 in ~/.happy_state.json
DEBUG [Driver:writeState():365] Happy: writing Happy state to file

# Create the network namespace for the node
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns add happy000

# Check to see if the target namespace (happy000) exists
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 exists

# Bring up the loopback interface within the happy000 namespace
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns exec happy000 ifconfig lo up

樣本拓撲

示例拓撲包含在Happy和OpenWeave存儲庫中以進行測試。還可以使用它們來學習構建複雜拓撲的命令。

拓撲採用JSON和Shell腳本格式。

JSON格式

JSON拓撲文件是使用happy-state-loadweave-state-load命令weave-state-load 。如果拓撲包括Weave,則必須使用weave-state-load加載拓撲,否則將跳過特定於Weave的命令。

例如,沒有Weave的拓撲:

happy-state-load thread_wifi_ap_internet.json

編織的拓撲:

weave-state-load three_nodes_on_thread_weave.json

要將當前拓撲保存為單獨的JSON文件以供以後使用(例如, 測試用例腳本 ),請使用happy-shell -s

happy-shell -s my_topology.json

這會將拓撲狀態文件保存在$HOME目錄中。

Shell腳本

Shell腳本拓撲文件包含用於在相應JSON文件中創建拓撲的Happy和Weave命令集。這些腳本默認情況下沒有可執行權限。它們可以通過兩種方式運行:

通過使用bash命令:

bash thread_wifi_ap_internet.sh

通過應用可執行權限:

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

組態

快樂有三個配置文件:

配置文件描述
~/.happy_conf.json 供個人或插件使用的配置變量。使用happy-configuration命令設置這些值。
<path-to-happy> /happy/conf/main_config.json 主Happy配置變量。
<path-to-happy> /happy/conf/log_config.json 日誌配置。

添加配置變量

我們建議您使用happy-configuration命令來設置除您的Happy特定部署所需的默認值以外的任何個人或插件變量。

例如,要讓Happy知道在哪裡可以找到測試腳本的Weave test-apps目錄,請設置weave_path變量:

happy-configuration weave_path <path-to-openweave-core>/build/x86_64-unknown-linux-gnu/src/test-apps

Happy將配置變量存儲在~/.happy_conf.json

節點中的進程

Happy提供了用於啟動和停止模擬節點中的進程的命令。

要開始一個過程:

happy-process-start <node-name> <custom-process-name> <command>

例如,要在名為ThreadNode的節點中連續運行ping:

happy-process-start ThreadNode ContinuousPing ping 8.8.8.8

在上面的示例中,ContinuousPing是Happy用於管理進程的用戶定義的名稱。使用happy-process-wait暫停進程執行,並使用happy-process-stop進程。

進程輸出在/tmp 。例如,在開始ContinuousPing過程之後,檢查/tmp目錄:

ls /tmp/happy*
/tmp/happy_018691_1524087014.192197_ContinuousPing.out

.out文件包含ContinuousPing進程的輸出。

sudo用法

Happy更改了Linux內核控制的網絡配置。由於只有root才能更改內核配置,因此Happy會提示您在操作過程中輸入sudo密碼。

Happy使用$SUDO系統環境變量來調用sudo 。如果未定義$SUDO ,則Happy會進行普通的sudo調用。

Python腳本

安裝後,可以使用以下import語句將Happy Python程序包導入到Python環境中:

import happy

/happy中找到的各個命令模塊按如下方式導入:

import happy.HappyNodeAdd

要檢索模塊選項,請調用option()函數。例如,要檢索HappyNodeAdd模塊選項:

module options
import happy.HappyNodeAdd
options = happy.HappyNodeAdd.option()