Skip to content

Commit

Permalink
print ixia stats (#417)
Browse files Browse the repository at this point in the history
* QUAGGA_CONFIG update

QUAGGA_CONFIG there is no policy (route-map) defined for peer-group IXIA. Due to that it is not able to receive routes In/Out. If we add “no bgp ebgp-requires-policy”, it advertises and receives the routes from other peers and traffic flows fine.

* print ixia app error log

added code to print ixia error log when
start_protocols
stop_protocols

---------

Co-authored-by: vkuma82 <kumarvinod82@yahoo.com>
  • Loading branch information
vikumarks and vkuma82 committed Jul 1, 2024
1 parent 20e6e61 commit 15dd490
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 5 deletions.
1 change: 1 addition & 0 deletions DentOS_Framework/DentOsTestbed/Requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ pytest-html
pytest-repeat
ixnetwork_restpy>=1.1.10
pyvis == 0.1.9
tabulate
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import os
import sys
import time
from tabulate import tabulate

from dent_os_testbed.lib.traffic.ixnetwork.ixnetwork_ixia_client import IxnetworkIxiaClient
from ixnetwork_restpy.assistants.statistics.statviewassistant import StatViewAssistant as SVA
Expand Down Expand Up @@ -48,6 +49,7 @@ def run_connect(self, device, command, *argv, **kwarg):
if command == 'disconnect':
if IxnetworkIxiaClientImpl.session is not None:
device.applog.info('Removing Session ID: %d' % IxnetworkIxiaClientImpl.session.Id)
self._CheckErrorsLog(device)
IxnetworkIxiaClientImpl.session.remove()
IxnetworkIxiaClientImpl.session = None
IxnetworkIxiaClientImpl.ixnet = None
Expand Down Expand Up @@ -279,6 +281,8 @@ def run_config(self, device, command, *argv, **kwarg):
if not found:
out = IxnetworkIxiaClientImpl.session.UploadFile(fname, name)
out = IxnetworkIxiaClientImpl.ixnet.LoadConfig(Files(name))
# get the traffic items back
IxnetworkIxiaClientImpl.tis = IxnetworkIxiaClientImpl.ixnet.Traffic.TrafficItem.find()
elif command == 'save_config':
out = IxnetworkIxiaClientImpl.ixnet.SaveConfig(Files(name))
out += IxnetworkIxiaClientImpl.session.DownloadFile(name, fname)
Expand Down Expand Up @@ -357,6 +361,19 @@ def __update_field(self, field, value):
field.Auto = False
field.update(**param)

def _CheckErrorsLog(self, device):
device.applog.info('CheckIxNetwork Errors Log')
ixnet = IxnetworkIxiaClientImpl.ixnet
try:
errors = ixnet.Globals.AppErrors.find().Error.find()
columns = ['LastModified', 'Type', 'Code', 'Count', 'Description']
rows = [[i.LastModified, i.ErrorLevel, i.ErrorCode, i.InstanceCount, i.Name + ':' + i.Description] for i in errors]
device.applog.info(os.linesep + tabulate(rows, headers=columns, tablefmt='grid'))
return 0
except Exception as ex:
device.applog.info('ERROR:'+str(ex))
return 1

def __update_frame_rate(self, config_element, pkt_data):
"""
Update frame rate type and frame rate from pkt_data
Expand Down Expand Up @@ -712,11 +729,11 @@ def run_traffic_item(self, device, command, *argv, **kwarg):
if attempts > 3:
device.applog.info(f'INFO: Traffic not stopped after {attempts * time_to_sleep} Seconds')
elif command == 'get_stats':
device.applog.info('Getting Stats')
stats_type = 'Port Statistics'
params = kwarg['params']
if params or params[0]:
stats_type = params[0].get('stats_type', stats_type)
device.applog.info('Getting Stats {}'.format(stats_type))
stats = SVA(IxnetworkIxiaClientImpl.ixnet, stats_type)
# device.applog.info(stats)
return 0, stats
Expand Down Expand Up @@ -781,13 +798,22 @@ def run_protocol(self, device, command, *argv, **kwarg):
else:
ep.SendNs() # ipv6
time.sleep(5)
device.applog.info('Generating Traffic')
IxnetworkIxiaClientImpl.ixnet.Traffic.TrafficItem.find().Generate()
device.applog.info('Applying Traffic')
IxnetworkIxiaClientImpl.ixnet.Traffic.Apply()
try:
device.applog.info('Generating Traffic')
IxnetworkIxiaClientImpl.ixnet.Traffic.TrafficItem.find().Generate()
device.applog.info('Applying Traffic')
IxnetworkIxiaClientImpl.ixnet.Traffic.Apply()
finally:
device.applog.info('Check Error if any while Applying Traffic')
self._CheckErrorsLog(device)

elif command == 'stop_protocols':
device.applog.info('Stopping All Protocols')
IxnetworkIxiaClientImpl.ixnet.StopAllProtocols(Arg1='sync')
protocolsSummary = SVA(IxnetworkIxiaClientImpl.ixnet, 'Protocols Summary')
device.applog.info('Protocols not stopped properly.')
self._CheckErrorsLog(device)

elif command == 'set_protocol':
params = kwarg['params']
param = params[0]
Expand Down

0 comments on commit 15dd490

Please sign in to comment.