Package: xoa-driver
Xena OpenAutomation Python APIXena OpenAutomation Python API is a standalone Python library that provides a user-friendly and powerful interface for automating network testing tasks using Xena Networks test equipment. Xena test equipment is a high-performance network test device designed for testing and measuring the performance of network equipment and applications.IntroductionThe XOA Python API is designed to be easy to use and integrate with other automation tools and frameworks. It provides a comprehensive set of methods and classes for interacting with Xena test equipment, including the ability to create and run complex test scenarios, generate and analyze traffic at line rate, and perform detailed analysis of network performance and behavior.The XOA Python API simplifies the process of automating network testing tasks using Xena test equipment. It provides a simple, yet powerful, interface for interacting with Xena test equipment using the Python programming language. With the XOA Python API, network engineers and testing professionals can easily create and execute test scenarios, generate and analyze traffic, and perform detailed analysis of network performance and behavior, all while leveraging the power and flexibility of the Python programming language.Overall, the XOA Python API is a valuable tool for anyone looking to automate their network testing tasks using Xena test equipment. With its simple, yet powerful, interface and support for the Python programming language, the XOA Python API provides a flexible and extensible framework for automating network testing tasks and improving the quality of network infrastructure.DocumentationThe user documentation is hosted:Xena OpenAutomation Python API DocumentationKey FeaturesObjected-oriented, high-level abstraction, to help users save time on parsing command responses.Supporting sending commands in batches to increase code execution efficiency.Automatically matching command requests and server response, providing clear information in case a command gets an error response.Supporting server-to-client push notification, and event subscription, to reduce user code complexity.Covering commands of Xena testers, including Xena Valkyrie, Vulcan, and Chimera.Supporting IDE auto-complete with built-in class/function/API use manual, to increase development efficiency.InstallationInstall UsingpipMake sure Pythonpipis installed on you system. If you are using virtualenv, then pip is already installed into environments created by virtualenv, and using sudo is not needed. If you do not have pip installed, download this file:https://bootstrap.pypa.io/get-pip.pyand runpython get-pip.py.To install the latest, use pip to install from pypi:~/>pipinstallxoa-driverTo upgrade to the latest, use pip to upgrade from pypi:~/>pipinstallxoa-driver--upgradeInstall From Source CodeMake sure these packages are installedwheel,setuptoolson your system.Installsetuptoolsusing pip:~/>pipinstallwheelsetuptoolsTo install source of python packages:/xoa_driver>pythonsetup.pyinstallTo build.whlfile for distribution:/xoa_driver>pythonsetup.pybdist_wheelQuick StartGet Python pip if not already installed (Downloadhttps://bootstrap.pypa.io/get-pip.py):python get-pip.pyInstall the latest xoa-driver:pip install xoa-driver -UWrite Python code to manage with Xena testers:importasynciofromxoa_driverimporttestersfromxoa_driverimportmodulesfromxoa_driverimportportsfromxoa_driverimportenumsfromxoa_driverimportutilsasyncdefmy_awesome_func():# Establish connection with a Valkyrie testerasyncwithtesters.L23Tester("10.10.10.10","JonDoe")astester:# Get the port 0/0 (module 0)port=awaittester.modules.obtain(0).ports.obtain(0)# Reserve the portawaitport.reservation.set_reserve()# Reset the portawaitport.reset.set()# Create a stream on the portstream=awaitport.streams.create()# Prepare stream header protocolheader_protocol=[enums.ProtocolOption.ETHERNET,enums.ProtocolOption.IP]# Batch configure the streamawaitutils.apply(stream.tpld_id.set(0),# Create the TPLD index of streamstream.packet.length.set(*size),# Configure the packet sizestream.packet.header.protocol.set(header_protocol),# Configure the packet typestream.packet.header.data.set(header),# Configure the packet headerstream.enable.set_on(),# Enable streamsstream.rate.fraction.set(1000000)# Configure the stream rate 100%)# Clear statisticsawaitutils.apply(port.statistics.tx.clear.set(),port.statistics.rx.clear.set())# Start traffic on the portawaitport.traffic.state.set_start()# Test duration 10 secondsawaitasyncio.sleep(10)# Query TX statisticstx_result=awaitport.statistics.tx.total.get()print(f"bit count last second:{tx_result.bit_count_last_sec}")print(f"packet count last second:{tx_result.packet_count_last_sec}")print(f"byte count since cleared:{tx_result.byte_count_since_cleared}")print(f"packet count since cleared:{tx_result.packet_count_since_cleared}")# Stop traffic on the portawaitport.traffic.state.set_stop()# Release the portawaitport.reservation.set_release()defmain():try:loop=asyncio.get_event_loop()loop.create_task(my_awesome_func())loop.run_forever()exceptKeyboardInterrupt:passif__name__=="__main__":main()FOR TESTING BEYOND THE STANDARD.