はじめに
このドキュメントでは Lux による NSO のテストスクリプト例を紹介します。
NSO のテストスクリプト例
紹介するスクリプトの処理の流れは以下のとおりです。
1. シェル1 "system" を起動
1-1. cisco-ios NED のコンパイル
1-2. netsim デバイスを 2台作成して起動
1-3. NSO を起動
1-4. netsim デバイスへの接続情報を NSO へロード
2. シェル2 "NSO" を起動
2-1. NSO の CLIにログイン
2-2. sync-from を実行
3. cleanup (テストの後処理)
3-1. NSO の停止
3-2. netsim デバイスの停止
3-3. netsim ディレクトリの削除
NSO のテストスクリプト例
[doc bring up netsim devices and do sync-from]
[global fail_pattern=([Ee]rror|[Ff]ailed|[Aa]borted|[Ii]nvalid)]
[global NSO_PROMPT=admin@ncs#]
# 1. シェル1 "system" を起動
[shell Linux]
[timeout 60]
# 1-1. cisco-ios NED のコンパイル
!make clean -C packages/cisco-ios/src
?BUILD SUCCESSFUL
?SH-PROMPT
!make -C packages/cisco-ios/src
?BUILD SUCCESSFUL
?SH-PROMPT
# 1-2. netsim デバイスを 2台作成して起動
# $${NCS_DIR} は Luxスクリプト内で定義した変数ではなく、スクリプトが動作するシステムの環境変数の値を展開しています。
!$${NCS_DIR}/bin/ncs-netsim create-network packages/cisco-ios 2 ios
"""?
DEVICE ios0 CREATED
DEVICE ios1 CREATED
?SH-PROMPT
"""
!$${NCS_DIR}/bin/ncs-netsim start
?DEVICE ios0 OK STARTED
?DEVICE ios1 OK STARTED
?SH-PROMPT
# 1-3. NSO を起動
!$${NCS_DIR}/bin/ncs
?SH-PROMPT
!$${NCS_DIR}/bin/ncs --status
?status: started
?SH-PROMPT
# 1-4. netsim デバイスへの接続情報を NSO へロード
!$${NCS_DIR}/bin/ncs-netsim ncs-xml-init | ncs_load -l -m
?SH-PROMPT
# 2. シェル2 "NSO" を起動
[shell NSO]
-$fail_pattern
# 2-1. NSO の CLIにログイン
!ncs_cli -u admin -C
?$NSO_PROMPT
# 2-2. sync-from を実行
!devices sync-from
"""?
sync-result {
device ios0
result true
}
sync-result {
device ios1
result true
}
"""
# 3. cleanup (テストの後処理)
[cleanup]
# 3-1. NSO の停止
!$${NCS_DIR}/bin/ncs --stop
!echo ===$?===
?===0===
# 3-2. netsim デバイスの停止
!$${NCS_DIR}/bin/ncs-netsim stop
!echo ===$?===
?===0===
# 3-3. netsim ディレクトリの削除
!rm -r -f ./netsim
!echo ===$?===
?===0===