testIcmp.cc
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2017 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 #define SQUID_HELPER 1
10 
11 #include "squid.h"
12 #include "tests/testIcmp.h"
13 #include "unitTestMain.h"
14 
15 #include <cppunit/TestAssert.h>
16 
18 
19 void
21 {
22 #if USE_ICMP
23  stubIcmp icmp;
24  uint16_t buf[10], tmpval;
25  for (tmpval=0; tmpval < 10; ++tmpval)
26  buf[tmpval]=htons(1+tmpval);
27 
28  // NULL data
29  CPPUNIT_ASSERT_EQUAL((int)htons(0xffff), icmp.testChecksum(NULL,0));
30 
31  // NULL data with length!!
32  CPPUNIT_ASSERT_EQUAL((int)htons(0xffff), icmp.testChecksum(NULL,1));
33 
34  // data with 0 length
35  CPPUNIT_ASSERT_EQUAL((int)htons(0xffff), icmp.testChecksum(buf,0));
36 
37  // data with invalid length (low)
38  CPPUNIT_ASSERT_EQUAL((int)htons(0xffff), icmp.testChecksum(buf,1));
39 
40  CPPUNIT_ASSERT_EQUAL((int)htons(0xfffe), icmp.testChecksum(buf,2)); // 1
41  CPPUNIT_ASSERT_EQUAL((int)htons(0xfffe), icmp.testChecksum(buf,3));
42 
43  CPPUNIT_ASSERT_EQUAL((int)htons(0xfffc), icmp.testChecksum(buf,4)); // 1+2
44  CPPUNIT_ASSERT_EQUAL((int)htons(0xfffc), icmp.testChecksum(buf,5));
45 
46  CPPUNIT_ASSERT_EQUAL((int)htons(0xfff9), icmp.testChecksum(buf,6)); // 1+2+3
47  CPPUNIT_ASSERT_EQUAL((int)htons(0xfff9), icmp.testChecksum(buf,7));
48 
49  CPPUNIT_ASSERT_EQUAL((int)htons(0xfff5), icmp.testChecksum(buf,8)); // 1+2+3+4
50  CPPUNIT_ASSERT_EQUAL((int)htons(0xfff5), icmp.testChecksum(buf,9));
51 
52  CPPUNIT_ASSERT_EQUAL((int)htons(0xfff0), icmp.testChecksum(buf,10)); // 1+2...+5
53  CPPUNIT_ASSERT_EQUAL((int)htons(0xfff0), icmp.testChecksum(buf,11));
54 
55  CPPUNIT_ASSERT_EQUAL((int)htons(0xffea), icmp.testChecksum(buf,12)); // 1+2...+6
56  CPPUNIT_ASSERT_EQUAL((int)htons(0xffea), icmp.testChecksum(buf,13));
57 
58  CPPUNIT_ASSERT_EQUAL((int)htons(0xffe3), icmp.testChecksum(buf,14)); // 1+2...+7
59  CPPUNIT_ASSERT_EQUAL((int)htons(0xffe3), icmp.testChecksum(buf,15));
60 
61  CPPUNIT_ASSERT_EQUAL((int)htons(0xffdb), icmp.testChecksum(buf,16)); // 1+2...+8
62  CPPUNIT_ASSERT_EQUAL((int)htons(0xffdb), icmp.testChecksum(buf,17));
63 
64  CPPUNIT_ASSERT_EQUAL((int)htons(0xffd2), icmp.testChecksum(buf,18)); // 1+2...+9
65  CPPUNIT_ASSERT_EQUAL((int)htons(0xffd2), icmp.testChecksum(buf,19));
66 
67  // data with accurate length
68  CPPUNIT_ASSERT_EQUAL((int)htons(0xffc8), icmp.testChecksum(buf,20)); // 1+2...+10
69 
70  // data with invalid length (overrun) ==> Garbage checksum...
71 #endif
72 }
73 
74 void
76 {
77 #if USE_ICMP
78  stubIcmp icmp;
79 
80  /* test invalid -(under values) */
81  // negative : n > 33
82  CPPUNIT_ASSERT_EQUAL(34, icmp.testHops(-1));
83  // zero
84  CPPUNIT_ASSERT_EQUAL(33, icmp.testHops(0));
85 
86  /* test each valid case boundary */
87  // n(1...32) : 32 >= n >= 1
88  CPPUNIT_ASSERT_EQUAL(32, icmp.testHops(1));
89  CPPUNIT_ASSERT_EQUAL(1, icmp.testHops(32));
90 
91  // n(33...62) : 30 >= n >= 1
92  CPPUNIT_ASSERT_EQUAL(30, icmp.testHops(33));
93  CPPUNIT_ASSERT_EQUAL(1, icmp.testHops(62));
94 
95  // n(63...64) : 2 >= n >= 1
96  CPPUNIT_ASSERT_EQUAL(2, icmp.testHops(63));
97  CPPUNIT_ASSERT_EQUAL(1, icmp.testHops(64));
98 
99  // n(65...128) : 64 >= n >= 1
100  CPPUNIT_ASSERT_EQUAL(64, icmp.testHops(65));
101  CPPUNIT_ASSERT_EQUAL(1, icmp.testHops(128));
102 
103  // n(129...192) : 64 >= n >= 1
104  CPPUNIT_ASSERT_EQUAL(64, icmp.testHops(129));
105  CPPUNIT_ASSERT_EQUAL(1, icmp.testHops(192));
106 
107  // n(193...) : n < 63
108  CPPUNIT_ASSERT_EQUAL(63, icmp.testHops(193));
109  CPPUNIT_ASSERT_EQUAL(1, icmp.testHops(255));
110 
111  /* test invalid (over values) */
112  // 256 - produces zero
113  CPPUNIT_ASSERT_EQUAL(0, icmp.testHops(256));
114  // 257 - produces negative hops
115  CPPUNIT_ASSERT_EQUAL(-1, icmp.testHops(257));
116 #endif
117 }
118 
int testChecksum(unsigned short *ptr, int size)
Definition: testIcmp.h:33
int testHops(int ttl)
Definition: testIcmp.h:34
void testHops()
Definition: testIcmp.cc:75
void const char * buf
Definition: stub_helper.cc:16
void testChecksum()
Definition: testIcmp.cc:20
#define NULL
Definition: types.h:166
CPPUNIT_TEST_SUITE_REGISTRATION(testIcmp)

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors