スイッチ自動化テストプラットフォームの構築のいくつかの進展
2077 ワード
本は前文をつないでスイッチの自動化のテストプラットフォームの踏む穴を構築します
コマンドの入力とスナップバック
pexpectの後にparamikoに接触するのは,SSHに基づいてリモートサーバに接続して関連操作を実行するモジュールであり,得られたエコーも乱れないため,この問題は解決した.
PC NIC vlan tag問題
SOcketレベルから操作またはリカバリが必要で、確かに私の能力の範囲を超えている場合は、tcpdumpからvlan tagを含むメッセージが得られるため、残りの解決策はtcpdumpから着手します.面倒なことに、端末にtcpdumpを打ち込んだ後、戻ってこないので、ずっとそこに詰まっています.最後に思いついた解決策は簡単で乱暴です.実行時にsudo権限 が必要でCapture_on_portsの時にtcpdump-wを開始し、続いてSend_packet関数の最後に、本機の命令によって本機のすべてのtcpdumpを呼び出すプロセスを見つけ、強引にkillを落とすことができ、ついに得られた.Capファイルは、sniffによってloadに成功することができます. マルチポートパケットの実装方法は、各ポートが独立したthreadingを起動することであり、すべてのcapure threadingを起動してから発注する時間を残さなければならない.そうしないと、パケットを逃す可能性がある. メッセージフィルタ
tcpdumpスキームの使用が決定された後、受信されたrx_ports_infoはdictであり、keyはport名であり、valueはフィルタ条件である.このとき,tcpdumpでサポートされているfilterを大きく方角的に転送し,tcpdumpのoptionとして一緒にダウンロードすればよい.
サブディレクトリでスクリプトを実行する問題
テストスクリプトは結局、ディレクトリを分類する必要があります.大きなフォルダには入れません.サブファイルごとにtouch initが必要です.py、外にいるtest_suit.pyで呼び出されました.各サブファイルには、モジュールに必要な共通パラメータと共通関数を入れることができるモジュールと同じ名前のファイルがあります.他のスクリプトのclassを継承すればいいです.
一括実行
また「車輪を作る」という間違いを犯した.私の考えでは、スクリプトをインストールしたすべてのサブフォルダは「tf_」です.最初は、サブファイルの実際のスクリプトはすべて「tc_」最初にosを使用します.walkは遍歴とフィルタリングを行い,実行するcaseを得る.caseは正しく印刷できるがsuitできない.addTests.なぜなら、上記の手順で得られた文字列は、testに追加するにはunittestベースの派生クラスでなければならないからです.最後にネットで既製の方法でcaseを見つけることができることを探しました.dirパスの下のすべてのcaseとaddTestsすべてのサブファイルのスクリプトを実行する場合case_dir='./' サブファイルのスクリプトを実行するだけでcase_dir='./tf_xxx' は、分子ファイル内のスクリプトを実行する方法と、最初のfailのcaseを簡単に接続する方法を考えていません. 以前に得られた文字列の表示フォーマットはclassを直接表示するよりずっと友好的で、印刷はこれを使いました.
サブフォルダ呼び出し
私の考えではtestutils/topo/base_testはすべてスクリプトフォルダと平レベルの./platform/以下.しかし、いろいろな方法(sys.path.appendやpythonに書き込む環境変数)を試してみると、いくらスクリプトが呼び出されなくても、これは後で解決する時間があるでしょう.
小結
これで基本的なスイッチ自動化テストプラットフォームが構築され、基本的に当初設定した目標を実現することができ、使いやすさはさらに改善する必要があるが.
コマンドの入力とスナップバック
pexpectの後にparamikoに接触するのは,SSHに基づいてリモートサーバに接続して関連操作を実行するモジュールであり,得られたエコーも乱れないため,この問題は解決した.
PC NIC vlan tag問題
SOcketレベルから操作またはリカバリが必要で、確かに私の能力の範囲を超えている場合は、tcpdumpからvlan tagを含むメッセージが得られるため、残りの解決策はtcpdumpから着手します.面倒なことに、端末にtcpdumpを打ち込んだ後、戻ってこないので、ずっとそこに詰まっています.最後に思いついた解決策は簡単で乱暴です.
#ps -ex | grep tcpdump | grep -v grep | awk '{print $1}' | xargs kill
tcpdumpスキームの使用が決定された後、受信されたrx_ports_infoはdictであり、keyはport名であり、valueはフィルタ条件である.このとき,tcpdumpでサポートされているfilterを大きく方角的に転送し,tcpdumpのoptionとして一緒にダウンロードすればよい.
サブディレクトリでスクリプトを実行する問題
テストスクリプトは結局、ディレクトリを分類する必要があります.大きなフォルダには入れません.サブファイルごとにtouch initが必要です.py、外にいるtest_suit.pyで呼び出されました.各サブファイルには、モジュールに必要な共通パラメータと共通関数を入れることができるモジュールと同じ名前のファイルがあります.他のスクリプトのclassを継承すればいいです.
一括実行
また「車輪を作る」という間違いを犯した.私の考えでは、スクリプトをインストールしたすべてのサブフォルダは「tf_」です.最初は、サブファイルの実際のスクリプトはすべて「tc_」最初にosを使用します.walkは遍歴とフィルタリングを行い,実行するcaseを得る.caseは正しく印刷できるがsuitできない.addTests.なぜなら、上記の手順で得られた文字列は、testに追加するにはunittestベースの派生クラスでなければならないからです.最後にネットで既製の方法でcaseを見つけることができることを探しました.dirパスの下のすべてのcaseとaddTests
discover = unittest.defaultTestLoader.discover(case_dir,pattern='tc_*.py',top_level_dir=None)
suit.addTests(discover)
サブフォルダ呼び出し
私の考えではtestutils/topo/base_testはすべてスクリプトフォルダと平レベルの./platform/以下.しかし、いろいろな方法(sys.path.appendやpythonに書き込む環境変数)を試してみると、いくらスクリプトが呼び出されなくても、これは後で解決する時間があるでしょう.
小結
これで基本的なスイッチ自動化テストプラットフォームが構築され、基本的に当初設定した目標を実現することができ、使いやすさはさらに改善する必要があるが.