#!/usr/bin/env python3 import unittest from framework import VppTestCase, VppTestRunner, running_gcov_tests from vpp_ip_route import VppIpTable, VppIpRoute, VppRoutePath class TestOffload(VppTestCase): """ Offload Unit Test Cases """ @classmethod def setUpClass(cls): super(TestOffload, cls).setUpClass() @classmethod def tearDownClass(cls): super(TestOffload, cls).tearDownClass() def setUp(self): super(TestOffload, self).setUp() def tearDown(self): super(TestOffload, self).tearDown() def test_offload_unittest(self): """ Checksum Offload Test """ cmds = ["loop create", "set int ip address loop0 11.22.33.1/24", "set int state loop0 up", "loop create", "set int ip address loop1 11.22.34.1/24", "set int state loop1 up", "set ip neighbor loop1 11.22.34.44 03:00:11:22:34:44", "packet-generator new {\n" " name s0\n" " limit 100\n" " size 128-128\n" " interface loop0\n" " tx-interface loop1\n" " node loop1-output\n" " buffer-flags ip4 offload-ip-cksum offload-udp-cksum\n" " data {\n" " IP4: 1.2.3 -> dead.0000.0001\n" " UDP: 11.22.33.44 -> 11.22.34.44\n" " ttl 2 checksum 13\n" " UDP: 1234 -> 2345\n" " checksum 11\n" " incrementing 114\n" " }\n" "}", "trace add pg-input 1", "pa en", "show error"] for cmd in cmds: r = self.vapi.cli_return_response(cmd) if r.retval != 0: if hasattr(r, 'reply'): self.logger.info(cmd + " FAIL reply " + r.reply) else: self.logger.info(cmd + " FAIL retval " + str(r.retval)) r = self.vapi.cli_return_response("show trace") self.assertTrue(r.retval == 0) self.assertTrue(hasattr(r, 'reply')) rv = r.reply look_here = rv.find('ethernet-input') self.assertFalse(look_here == -1) bad_checksum_index = rv[look_here:].find('should be') self.assertTrue(bad_checksum_index == -1) if __name__ == '__main__': unittest.main(testRunner=VppTestRunner)