blob: d84f8ba63c0106af8f87225dac3181af60c840ae [file] [log] [blame]
Dave Barach82192ca2020-04-24 09:43:14 -04001#!/usr/bin/env python3
2
3import unittest
4
Klement Sekerab23ffd72021-05-31 16:08:53 +02005from framework import VppTestCase, VppTestRunner
Dave Barach82192ca2020-04-24 09:43:14 -04006from vpp_ip_route import VppIpTable, VppIpRoute, VppRoutePath
7
8
9class TestOffload(VppTestCase):
Klement Sekerad9b0c6f2022-04-26 19:02:15 +020010 """Offload Unit Test Cases"""
Dave Barach82192ca2020-04-24 09:43:14 -040011
12 @classmethod
13 def setUpClass(cls):
14 super(TestOffload, cls).setUpClass()
15
16 @classmethod
17 def tearDownClass(cls):
18 super(TestOffload, cls).tearDownClass()
19
20 def setUp(self):
21 super(TestOffload, self).setUp()
22
23 def tearDown(self):
24 super(TestOffload, self).tearDown()
25
26 def test_offload_unittest(self):
Klement Sekerad9b0c6f2022-04-26 19:02:15 +020027 """Checksum Offload Test"""
28 cmds = [
29 "loop create",
30 "set int ip address loop0 11.22.33.1/24",
31 "set int state loop0 up",
32 "loop create",
33 "set int ip address loop1 11.22.34.1/24",
34 "set int state loop1 up",
35 "set ip neighbor loop1 11.22.34.44 03:00:11:22:34:44",
36 "packet-generator new {\n"
37 " name s0\n"
38 " limit 100\n"
39 " size 128-128\n"
40 " interface loop0\n"
41 " tx-interface loop1\n"
42 " node loop1-output\n"
43 " buffer-flags ip4 offload\n"
44 " buffer-offload-flags offload-ip-cksum offload-udp-cksum\n"
45 " data {\n"
46 " IP4: 1.2.3 -> dead.0000.0001\n"
47 " UDP: 11.22.33.44 -> 11.22.34.44\n"
48 " ttl 2 checksum 13\n"
49 " UDP: 1234 -> 2345\n"
50 " checksum 11\n"
51 " incrementing 114\n"
52 " }\n"
53 "}",
54 "trace add pg-input 1",
55 "pa en",
56 "show error",
57 ]
Dave Barach82192ca2020-04-24 09:43:14 -040058
59 for cmd in cmds:
60 r = self.vapi.cli_return_response(cmd)
61 if r.retval != 0:
Klement Sekerad9b0c6f2022-04-26 19:02:15 +020062 if hasattr(r, "reply"):
Dave Barach82192ca2020-04-24 09:43:14 -040063 self.logger.info(cmd + " FAIL reply " + r.reply)
64 else:
65 self.logger.info(cmd + " FAIL retval " + str(r.retval))
66
67 r = self.vapi.cli_return_response("show trace")
68 self.assertTrue(r.retval == 0)
Klement Sekerad9b0c6f2022-04-26 19:02:15 +020069 self.assertTrue(hasattr(r, "reply"))
Dave Barach82192ca2020-04-24 09:43:14 -040070 rv = r.reply
Klement Sekerad9b0c6f2022-04-26 19:02:15 +020071 look_here = rv.find("ethernet-input")
Dave Barach82192ca2020-04-24 09:43:14 -040072 self.assertFalse(look_here == -1)
Klement Sekerad9b0c6f2022-04-26 19:02:15 +020073 bad_checksum_index = rv[look_here:].find("should be")
Dave Barach82192ca2020-04-24 09:43:14 -040074 self.assertTrue(bad_checksum_index == -1)
75
Klement Sekerad9b0c6f2022-04-26 19:02:15 +020076
77if __name__ == "__main__":
Dave Barach82192ca2020-04-24 09:43:14 -040078 unittest.main(testRunner=VppTestRunner)