Pyats Ixia#
sample#
pyatsとIxNetwork APIを使用してIXIAの設定ファイルを読み込み、トラフィックを開始するサンプルコードを以下に示します。この例では、"test.ixncfg"という設定ファイルを読み込んでいます。
from pyats import aetest
from pyats import topology
from pyats.datastructures import AttrDict
class IxiaTestcase(aetest.Testcase):
@aetest.setup
def connect_to_ixia(self, testbed):
self.ixia = testbed.devices['ixia']
self.ixia.connect()
@aetest.test
def test_ixia_traffic(self):
# IxNetworkに接続する
ixnetwork = self.ixia.api.assistant.Session.get_session()
# 設定ファイルをアップロードする
ixnetwork.ResourceManager.ImportConfigFile(FilePath='test.ixncfg')
ixnetwork.WaitForComplete()
# ポートアサインを行う
port_map = ixnetwork.Topology.PortMap.find()[0]
port_map.EnabledPorts = ['192.168.1.1/1/1', '192.168.1.1/1/2']
ixnetwork.StartAllProtocols()
ixnetwork.WaitForComplete()
# トラフィックのスタートを行う
traffic_item = ixnetwork.Traffic.TrafficItem.find()[0]
ixnetwork.Traffic.StartStatelessTrafficBlocking()
# Flow statisticsの取得
flow_statistics = ixnetwork.Statistics.View.find(ViewName='Flow Statistics')[0]
stats = flow_statistics.Rows
for stat in stats:
print('Flow Statistics: {}'.format(stat.ColumnData))
# Traffic Itemの取得
traffic_item_statistics = ixnetwork.Statistics.View.find(ViewName='Traffic Item Statistics')[0]
stats = traffic_item_statistics.Rows
for stat in stats:
print('Traffic Item Statistics: {}'.format(stat.ColumnData))
@aetest.cleanup
def disconnect_from_ixia(self):
self.ixia.disconnect()
if __name__ == '__main__':
testbed = topology.loader.load('testbed.yaml')
aetest.main(testbed=testbed)
devices:
IxNetwork:
os: 'IxNetwork'
type: 'ixnetwork'
connections:
restpy:
class: 'ixnetwork_restpy.Connection'
ip: '192.168.1.1'
port: 443
secure: true
username: 'admin'
password: 'admin'
このコードは、pyATSを使用してIxNetworkを制御し、トラフィックを生成して、Flow StatisticsとTraffic Itemの統計情報を取得する例を示しています。
最初に、Ixiaのデバイスに接続するためのconnect_to_ixia()メソッドを定義します。このメソッドでは、testbed.yamlファイルで定義されたIxNetworkデバイスに接続しています。
次に、トラフィックを生成するためのtest_ixia_traffic()メソッドを定義します。このメソッドでは、IxNetworkに接続して、事前に定義された設定ファイル(test.ixncfg)をアップロードします。その後、ポートアサインを行い、すべてのプロトコルを開始します。トラフィック生成には、TrafficモジュールのStartStatelessTrafficBlocking()メソッドを使用しています。このメソッドは、トラフィックを開始して、ブロックするまで待機します。Flow StatisticsとTraffic Itemの統計情報は、StatisticsモジュールのViewオブジェクトを使用して取得します。Flow Statisticsは、トラフィックが生成されたフローの統計情報を提供します。Traffic Item Statisticsは、Traffic Itemの統計情報を提供します。統計情報は、リストとして取得できます。
最後に、disconnect_from_ixia()メソッドを定義して、IxNetworkデバイスからの接続を切断します。
このコードは、IxNetworkを制御して、トラフィックを生成して、統計情報を取得する基本的な例です。これをベースに、さまざまなテストケースを作成することができます。