Skip to content

Commit

Permalink
version 0.3.22
Browse files Browse the repository at this point in the history
  • Loading branch information
ashutshkumr committed May 21, 2021
1 parent a72f713 commit bc3b468
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 46 deletions.
68 changes: 24 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,70 +8,50 @@
[![pypi](https://img.shields.io/pypi/v/snappi.svg)](https://pypi.org/project/snappi)
[![python](https://img.shields.io/pypi/pyversions/snappi.svg)](https://pypi.python.org/pypi/snappi)

Test scripts written using `snappi` (a python library) can be executed against
any traffic generator conforming to [Open Traffic Generator API](https://github.com/open-traffic-generator/models/releases).
Test scripts written in `snappi`, an auto-generated python SDK, can be executed against any traffic generator conforming to [Open Traffic Generator API](https://github.com/open-traffic-generator/models).

[Ixia-c](https://github.com/open-traffic-generator/ixia-c) is one such reference implementation of Open Traffic Generator API.

> The repository is under active development and is subject to updates. All efforts will be made to keep the updates backwards compatible.
## Install on a client

```sh
python -m pip install --upgrade snappi
# or install along with ixnetwork extension
python -m pip install --upgrade "snappi[ixnetwork]"
```

## Start scripting

```python
"""
Configure a raw TCP flow with,
- tx port as source to rx port as destination
- frame count 10000, each of size 128 bytes
- transmit rate of 1000 packets per second
Validate,
- frames transmitted and received for configured flow is as expected
"""

import snappi
# when using ixnetwork extension, host is IxNetwork API Server
api = snappi.api(host='https://localhost:443', ext='ixnetwork')
# new config
# create a new API instance where host points to controller
api = snappi.api(host='https://localhost')

# create a config object to be pushed to controller
config = api.config()
# when using ixnetwork extension, port location is chassis-ip;card-id;port-id
tx, rx = (
config.ports
.port(name='tx', location='192.168.0.1;2;1')
.port(name='rx', location='192.168.0.1;2;2')
)
# configure layer 1 properties
ly, = config.layer1.layer1(name='ly')
ly.port_names = [tx.name, rx.name]
ly.speed = ly.SPEED_10_GBPS
ly.media = ly.FIBER
# configure flow properties
flw, = config.flows.flow(name='flw')
# flow endpoints
flw.tx_rx.port.tx_name = tx.name
flw.tx_rx.port.rx_name = rx.name
# configure rate, size, frame count
# add a port with location pointing to traffic engine
prt = config.ports.port(name='prt', location='localhost:5555')[-1]
# add a flow and assign endpoints
flw = config.flows.flow(name='flw')[-1]
flw.tx_rx.port.tx_name = prt.name

# configure 100 packets to be sent, each having a size of 128 bytes
flw.size.fixed = 128
flw.rate.pps = 1000
flw.duration.fixed_packets.packets = 10000
# configure protocol headers with defaults fields
flw.packet.ethernet().vlan().ipv4().tcp()
flw.duration.fixed_packets.packets = 100

# add Ethernet, IP and TCP protocol headers with defaults
flw.packet.ethernet().ipv4().tcp()

# push configuration
api.set_config(config)

# start transmitting configured flows
ts = api.transmit_state()
ts.state = ts.START
api.set_transmit_state(ts)
# create a query for flow metrics

# fetch & print port metrics
req = api.metrics_request()
req.flow.flow_names = [flw.name]
# wait for flow metrics to be as expected
while True:
res = api.get_metrics(req)
if all([m.frames_tx == 10000 == m.frames_rx for m in res.flow_metrics]):
break
req.port.port_names = [prt.name]
print(api.get_metrics(req))
```
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.3.21
0.3.22
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
'typing'
],
extras_require={
'ixnetwork': ['snappi_ixnetwork==0.3.11']
'ixnetwork': ['snappi_ixnetwork==0.3.12']
},
tests_require=['pytest']
)

0 comments on commit bc3b468

Please sign in to comment.