Skip to content

Commit 6793894

Browse files
authored
pcapplusplus: add run_tests.sh (#13621)
Adds `run_tests.sh` to the pcapplusplus project. `run_tests.sh` is used as part of Chronos with cached builds: https://github.com/google/oss-fuzz/tree/master/infra/experimental/chronos#check-tests Output of ./infra/experimental/chronos/check_tests.sh pcapplusplus c++: ``` === Packet++Test === PcapPlusPlus version: v25.05+ (non-official release) Built: Jul 17 2025 06:03:15 Built from: Git branch 'master', commit '824ea14' Disabling memory leak check in MSVC Release builds due to caching logic in stream objects that looks like a memory leak: cpputest/cpputest#786 (comment) Skipping memory leak check for all test cases Start running tests... OUILookup : PASSED EthPacketCreation : PASSED EthPacketPointerCreation : PASSED EthAndArpPacketParsing : PASSED ArpPacketCreation : PASSED EthDot3LayerParsingTest : PASSED EthDot3LayerCreateEditTest : PASSED VlanParseAndCreation : PASSED QinQ802_1adParse : PASSED MplsLayerTest : PASSED VxlanParsingAndCreationTest : PASSED IPv4PacketCreation : PASSED IPv4PacketParsing : PASSED IPv4FragmentationTest : PASSED IPv4OptionsParsingTest : PASSED IPv4OptionsEditTest : PASSED IPv4UdpChecksum : PASSED IPv6UdpPacketParseAndCreate : PASSED IPv6FragmentationTest : PASSED IPv6ExtensionsTest : PASSED TcpPacketNoOptionsParsing : PASSED TcpPacketWithOptionsParsing : PASSED TcpPacketWithOptionsParsing2 : PASSED TcpPacketCreation : PASSED TcpPacketCreation2 : PASSED TcpMalformedPacketParsing : PASSED TcpChecksumInvalidRead : PASSED TcpChecksumMultiBuffer : PASSED PacketUtilsHash5TupleUdp : PASSED PacketUtilsHash5TupleTcp : PASSED PacketUtilsHash5TupleIPv6 : PASSED InsertDataToPacket : PASSED CreatePacketFromBuffer : PASSED InsertVlanToPacket : PASSED RemoveLayerTest : PASSED CopyLayerAndPacketTest : PASSED PacketLayerLookupTest : PASSED RawPacketTimeStampSetterTest : PASSED ParsePartialPacketTest : PASSED PacketTrailerTest : PASSED ResizeLayerTest : PASSED PrintPacketAndLayersTest : PASSED ProtocolFamilyMembershipTest : PASSED PacketParseLayerLimitTest : PASSED HttpRequestParseMethodTest : PASSED HttpRequestLayerParsingTest : PASSED HttpRequestLayerCreationTest : PASSED HttpRequestLayerEditTest : PASSED HttpResponseParseStatusCodeTest : PASSED HttpResponseParseVersionTest : PASSED HttpResponseLayerParsingTest : PASSED HttpResponseLayerCreationTest : PASSED HttpResponseLayerEditTest : PASSED HttpMalformedResponseTest : PASSED PPPoESessionLayerParsingTest : PASSED PPPoESessionLayerCreationTest : PASSED PPPoEDiscoveryLayerParsingTest : PASSED PPPoEDiscoveryLayerCreateTest : PASSED DnsLayerParsingTest : PASSED DnsLayerQueryCreationTest : PASSED DnsLayerResourceCreationTest : PASSED DnsLayerEditTest : PASSED DnsLayerRemoveResourceTest : PASSED DnsOverTcpParsingTest : PASSED DnsOverTcpCreationTest : PASSED DnsLayerAddDnsKeyTest : PASSED IcmpParsingTest : PASSED IcmpCreationTest : PASSED IcmpEditTest : PASSED GreParsingTest : PASSED GreCreationTest : PASSED GreEditTest : PASSED SSLClientHelloParsingTest : PASSED SSLExtensionWithZeroSizeTest : PASSED SSLAppDataParsingTest : PASSED SSLAlertParsingTest : PASSED SSLMultipleRecordParsingTest : PASSED SSLMultipleRecordParsing2Test : PASSED SSLMultipleRecordParsing3Test : PASSED SSLMultipleRecordParsing4Test : PASSED SSLMultipleRecordParsing5Test : PASSED SSLPartialCertificateParseTest : PASSED SSLNewSessionTicketParseTest : PASSED SSLMalformedPacketParsing : PASSED TLS1_3ParsingTest : PASSED TLSCipherSuiteTest : PASSED ClientHelloTLSFingerprintTest : PASSED ServerHelloTLSFingerprintTest : PASSED SllPacketParsingTest : PASSED SllPacketCreationTest : PASSED NullLoopbackTest : PASSED Sll2PacketParsingTest : PASSED Sll2PacketCreationTest : PASSED NflogPacketParsingTest : PASSED DhcpParsingTest : PASSED DhcpCreationTest : PASSED DhcpEditTest : PASSED IgmpParsingTest : PASSED IgmpCreateAndEditTest : PASSED Igmpv3ParsingTest : PASSED Igmpv3QueryCreateAndEditTest : PASSED Igmpv3ReportCreateAndEditTest : PASSED SipRequestParseMethodTest : PASSED SipRequestLayerParsingTest : PASSED SipRequestLayerCreationTest : PASSED SipRequestLayerEditTest : PASSED SipResponseParseStatusCodeTest : PASSED SipResponseParseVersionCodeTest : PASSED SipResponseLayerParsingTest : PASSED SipResponseLayerCreationTest : PASSED SipResponseLayerEditTest : PASSED SipNotSdpLayerParsingTest : PASSED SdpLayerParsingTest : PASSED SdpLayerCreationTest : PASSED SdpLayerEditTest : PASSED RadiusLayerParsingTest : PASSED RadiusLayerCreationTest : PASSED RadiusLayerEditTest : PASSED GtpV1LayerParsingTest : PASSED GtpV1LayerCreationTest : PASSED GtpV1LayerEditTest : PASSED GtpV2LayerParsingTest : PASSED GtpV2LayerCreationTest : PASSED GtpV2LayerEditTest : PASSED BgpLayerParsingTest : PASSED BgpLayerCreationTest : PASSED BgpLayerEditTest : PASSED SSHParsingTest : PASSED SSHMalformedParsingTest : PASSED IPSecParsingTest : PASSED DhcpV6ParsingTest : PASSED DhcpV6CreationTest : PASSED DhcpV6EditTest : PASSED NtpMethodsTests : PASSED NtpParsingV3Tests : PASSED NtpParsingV4Tests : PASSED NtpCreationTests : PASSED TelnetCommandParsingTests : PASSED TelnetDataParsingTests : PASSED TpktLayerTest : PASSED IcmpV6ParsingTest : PASSED IcmpV6CreationTest : PASSED IcmpV6EditTest : PASSED FtpParsingTests : PASSED FtpCreationTests : PASSED FtpEditTests : PASSED LLCParsingTests : PASSED LLCCreationTests : PASSED StpConfigurationParsingTests : PASSED StpConfigurationCreationTests : PASSED StpConfigurationEditTests : PASSED StpTopologyChangeParsingTests : PASSED StpTopologyChangeCreationTests : PASSED StpTopologyChangeEditTests : PASSED RapidStpParsingTests : PASSED RapidStpCreationTests : PASSED RapidStpEditTests : PASSED MultipleStpParsingTests : PASSED MultipleStpCreationTests : PASSED MultipleStpEditTests : PASSED SomeIpPortTest : PASSED SomeIpParsingTest : PASSED SomeIpCreationTest : PASSED SomeIpTpParsingTest : PASSED SomeIpTpCreationTest : PASSED SomeIpTpEditTest : PASSED SomeIpSdParsingTest : PASSED SomeIpSdCreationTest : PASSED WakeOnLanParsingTests : PASSED WakeOnLanCreationTests : PASSED WakeOnLanEditTests : PASSED VrrpParsingTest : PASSED CotpLayerTest : PASSED S7CommLayerParsingTest : PASSED S7CommLayerCreationTest : PASSED SmtpParsingTests : PASSED SmtpCreationTests : PASSED SmtpEditTests : PASSED Asn1DecodingTest : PASSED Asn1EncodingTest : PASSED Asn1ObjectIdentifierTest : PASSED LdapParsingTest : PASSED LdapCreationTest : PASSED WireGuardHandshakeInitParsingTest : PASSED WireGuardHandshakeRespParsingTest : PASSED WireGuardCookieReplyParsingTest : PASSED WireGuardTransportDataParsingTest : PASSED WireGuardCreationTest : PASSED WireGuardEditTest : PASSED CiscoHdlcParsingTest : PASSED CiscoHdlcLayerCreationTest : PASSED CiscoHdlcLayerEditTest : PASSED ALL TESTS PASSED!! Test cases: 193, Passed: 192, Failed: 0, Skipped: 1 === Pcap++Test (no networking) === Running only tests that don't require network connection Disabling memory leak check in MSVC Release builds due to caching logic in stream objects that looks like a memory leak: cpputest/cpputest#786 (comment) Skipping memory leak check for all test cases PcapPlusPlus version: v25.05+ (non-official release) Built: Jul 17 2025 06:03:15 Git info: Git branch 'master', commit '824ea14' Using ip: Debug mode: off Start running tests... TestIPAddress : PASSED TestLRUList : PASSED TestGeneralUtils : PASSED TestIPv4Network : PASSED TestIPv6Network : PASSED TestIPNetwork : PASSED TestObjectPool : PASSED [DEBUG: LoggerTests.cpp: invokeDebugLog:16 ] debug log [ERROR: LoggerTests.cpp: invokeErrorLog:21 ] error log TestLogger : PASSED TestLoggerMultiThread : PASSED TestPcapFileReadWrite : PASSED TestPcapFilePrecision : PASSED TestPcapSllFileReadWrite : PASSED TestPcapSll2FileReadWrite : PASSED TestPcapRawIPFileReadWrite : PASSED TestPcapFileAppend : PASSED TestPcapNgFileReadWrite : PASSED TestPcapNgFileReadWriteAdv : PASSED TestPcapNgFileTooManyInterfaces : PASSED TestPcapNgFilePrecision : PASSED TestPcapFileReadLinkTypeIPv6 : PASSED TestPcapFileReadLinkTypeIPv4 : PASSED TestSolarisSnoopFileRead : PASSED TestPcapFileWriterDeviceDestructor : PASSED TestPcapFilters_MatchStatic : PASSED TestPcapFilters_General_BPFStr : PASSED TestPcapFiltersOffline : PASSED TestPcapFilters_LinkLayer : PASSED TestHttpRequestParsing : PASSED TestHttpResponseParsing : PASSED TestPrintPacketAndLayers : PASSED TestDnsParsing : PASSED TestTcpReassemblySanity : PASSED TestTcpReassemblyOutOfOrder : PASSED TestTcpReassemblyOOOWithManualClose: PASSED TestTcpReassemblyWithFIN_RST : PASSED TestTcpReassemblyMalformedPkts : PASSED TestTcpReassemblyMultipleConns : PASSED TestTcpReassemblyIPv6 : PASSED TestTcpReassemblyIPv6MultConns : PASSED TestTcpReassemblyIPv6_OOO : PASSED TestTcpReassemblyCleanup : PASSED TestTcpReassemblyMaxOOOFrags : PASSED TestTcpReassemblyMaxSeq : PASSED TestTcpReassemblyDisableOOOCleanup : PASSED TestTcpReassemblyTimeStamps : PASSED TestTcpReassemblyFinReset : PASSED TestTcpReassemblyHighPrecision : PASSED TestIPFragmentationSanity : PASSED TestIPFragOutOfOrder : PASSED TestIPFragPartialData : PASSED TestIPFragMultipleFrags : PASSED TestIPFragMapOverflow : PASSED TestIPFragRemove : PASSED TestIPFragWithPadding : PASSED TestIPv4MalformedFragment : PASSED TestSystemCoreUtils : PASSED ALL TESTS PASSED!! Test cases: 96, Passed: 56, Failed: 0, Skipped: 40 -------------------------------------------------------- Total time taken to replay tests: 157 ```
1 parent 76e1ee1 commit 6793894

File tree

4 files changed

+55
-1
lines changed

4 files changed

+55
-1
lines changed

projects/pcapplusplus/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@ RUN git clone --depth=1 https://github.com/the-tcpdump-group/libpcap.git libpcap
2525

2626
WORKDIR PcapPlusPlus
2727

28-
COPY build.sh $SRC
28+
COPY *.sh pcapplusplus_enable_tests.diff $SRC

projects/pcapplusplus/build.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,7 @@
1616
#
1717
################################################################################
1818

19+
# TODO: Right now, we apply patch only if sanitizer is not 'memory'.
20+
# TODO: Upstream the patch to PcapPlusPlus repo.
21+
git -C "$SRC/PcapPlusPlus" apply "$SRC/pcapplusplus_enable_tests.diff"
1922
$SRC/PcapPlusPlus/Tests/Fuzzers/ossfuzz.sh
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
index 6d461ff6..c984c978 100755
2+
--- a/Tests/Fuzzers/ossfuzz.sh
3+
+++ b/Tests/Fuzzers/ossfuzz.sh
4+
@@ -12,7 +12,13 @@ make -j$(nproc)
5+
# Build PcapPlusPlus linking statically against the built libpcap
6+
cd $SRC/PcapPlusPlus
7+
LIBPCAP_PATH=$SRC/libpcap/
8+
-cmake -DPCAPPP_BUILD_FUZZERS=ON -DPCAPPP_BUILD_TESTS=OFF -DPCAPPP_BUILD_EXAMPLES=OFF -DPCAP_INCLUDE_DIR="${LIBPCAP_PATH}/" -DPCAP_LIBRARY="${LIBPCAP_PATH}/libpcap.a" -S . -B $TARGETS_DIR
9+
+
10+
+PCAPPP_BUILD_TESTS_VALUE="ON"
11+
+if [ "${SANITIZER:-}" = "memory" ]; then
12+
+ PCAPPP_BUILD_TESTS_VALUE="OFF"
13+
+fi
14+
+
15+
+cmake -DPCAPPP_BUILD_FUZZERS=ON -DPCAPPP_BUILD_TESTS=$PCAPPP_BUILD_TESTS_VALUE -DPCAPPP_BUILD_EXAMPLES=OFF -DPCAP_INCLUDE_DIR="${LIBPCAP_PATH}/" -DPCAP_LIBRARY="${LIBPCAP_PATH}/libpcap.a" -S . -B $TARGETS_DIR
16+
cmake --build $TARGETS_DIR -j
17+
18+
# Copy target and options

projects/pcapplusplus/run_tests.sh

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/bin/bash -eu
2+
# Copyright 2025 Google LLC
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
#
16+
################################################################################
17+
18+
export ASAN_OPTIONS=detect_stack_use_after_return=0:detect_leaks=0:abort_on_error=0:halt_on_error=0:exitcode=0
19+
ROOT="$SRC/PcapPlusPlus"
20+
21+
echo "=== Packet++Test ==="
22+
cd "$ROOT/Tests/Packet++Test"
23+
# TODO: Skipping failing tests.
24+
./Bin/Packet++Test -x "VrrpCreateAndEditTest;TestMacAddress;TestTcpReassemblyRetran"
25+
26+
echo "=== Pcap++Test (no networking) ==="
27+
cd "$ROOT/Tests/Pcap++Test"
28+
# TODO: Skipping failing tests. TestPcapLiveDeviceList and
29+
# TestPcapLiveDeviceNoNetworking fail because of network so we should keep
30+
# them disabled.
31+
./Bin/Pcap++Test \
32+
-n -x \
33+
"TestMacAddress;TestTcpReassemblyRetran;TestTcpReassemblyMissingData;TestPcapLiveDeviceList;TestPcapLiveDeviceNoNetworking"

0 commit comments

Comments
 (0)