Skip to content

Commit

Permalink
fix list serialization
Browse files Browse the repository at this point in the history
  • Loading branch information
ajbalogh committed Jan 7, 2021
1 parent 757fa15 commit f543583
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 8 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.1.3
0.1.4
1 change: 1 addition & 0 deletions snappi/snappicommon.py
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,7 @@ def _decode(self, encoded_snappi_list):
item_class_name = self.__class__.__name__.replace('List', '')
module = importlib.import_module(item_class_path)
object_class = getattr(module, item_class_name)
self._items.clear()
for item in encoded_snappi_list:
self._add(object_class()._decode(item))

Expand Down
2 changes: 1 addition & 1 deletion snappi/snappigenerator.py
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ def _write_snappi_list(self, ref, property_name):
self._write(2, 'super(%sList, self).__init__()' % class_name)
self._write()
# write factory method for the schema object in the list
self._write_factory_method(None, class_name.lower(), ref, True)
self._write_factory_method(None, ref_name.lower().split('.')[-1], ref, True)
# write choice factory methods if any
if 'properties' in yobject and 'choice' in yobject['properties']:
for property in yobject['properties']:
Expand Down
16 changes: 15 additions & 1 deletion snappi/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ def b2b_config(api):
tx_device.ipv4.address.value = '1.1.1.1'
tx_device.ipv4.gateway.value = '1.1.2.1'
tx_device.ipv4.prefix.value = 16
vlan1, vlan2 = tx_device.ipv4.ethernet.vlans.vlan().vlan()
vlan1.id.value = 1
vlan2.id.value = 2
tx_device.ipv4.ethernet.mac.value = '00:00:01:00:00:01'

flow = config.flows.flow(name='Tx -> Rx Flow')
Expand Down Expand Up @@ -101,11 +104,22 @@ def get_port_metrics():
port_metrics_request = api.port_metrics_request()
port_metrics_request.deserialize(request.data.decode('utf-8'))
port_metrics = api.port_metrics()
port_metrics.portmetric().portmetric()
port_metrics.metric().metric()
return Response(port_metrics.serialize(),
mimetype='application/json',
status=200)

@app.route('/results/flow', methods=['POST'])
def get_flow_metrics():
import snappi
api = snappi.api.Api()
flow_metrics_request = api.flow_metrics_request()
flow_metrics_request.deserialize(request.data.decode('utf-8'))
flow_metrics = api.flow_metrics()
flow_metrics.metric().metric()
return Response(flow_metrics.serialize(),
mimetype='application/json',
status=200)

@app.after_request
def after_request(resp):
Expand Down
11 changes: 6 additions & 5 deletions snappi/tests/test_snappi_list_serialization.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@
def test_snappi_list_serialization(api):
"""Test serialization and deserialization of Snappi list objects
"""
port_metrics1 = api.port_metrics().portmetric().portmetric()
serialization = port_metrics1.serialize()
port_metrics2 = api.port_metrics()
port_metrics2.deserialize(serialization)
print(port_metrics2)
config = api.config()
config.ports.port(name='A').port(name='B').port(name='C')
serialization1 = config.ports.serialize()
config.ports.deserialize(serialization1)
serialization2 = config.ports.serialize()
assert(serialization1 == serialization2)


if __name__ == '__main__':
Expand Down

0 comments on commit f543583

Please sign in to comment.