1 // Copyright (c) 2019 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef QUICHE_QUIC_QBONE_QBONE_PACKET_PROCESSOR_TEST_TOOLS_H_
6 #define QUICHE_QUIC_QBONE_QBONE_PACKET_PROCESSOR_TEST_TOOLS_H_
7 
8 #include <cstdint>
9 
10 #include "absl/strings/string_view.h"
11 #include "quiche/quic/platform/api/quic_test.h"
12 #include "quiche/quic/qbone/qbone_packet_processor.h"
13 
14 namespace quic {
15 
16 class MockPacketProcessorOutput : public QbonePacketProcessor::OutputInterface {
17  public:
MockPacketProcessorOutput()18   MockPacketProcessorOutput() {}
19 
20   MOCK_METHOD(void, SendPacketToClient, (absl::string_view), (override));
21   MOCK_METHOD(void, SendPacketToNetwork, (absl::string_view), (override));
22 };
23 
24 class MockPacketProcessorStats : public QbonePacketProcessor::StatsInterface {
25  public:
MockPacketProcessorStats()26   MockPacketProcessorStats() {}
27 
28   MOCK_METHOD(void, OnPacketForwarded,
29               (QbonePacketProcessor::Direction, uint8_t), (override));
30   MOCK_METHOD(void, OnPacketDroppedSilently,
31               (QbonePacketProcessor::Direction, uint8_t), (override));
32   MOCK_METHOD(void, OnPacketDroppedWithIcmp,
33               (QbonePacketProcessor::Direction, uint8_t), (override));
34   MOCK_METHOD(void, OnPacketDroppedWithTcpReset,
35               (QbonePacketProcessor::Direction, uint8_t), (override));
36   MOCK_METHOD(void, OnPacketDeferred,
37               (QbonePacketProcessor::Direction, uint8_t), (override));
38   MOCK_METHOD(void, RecordThroughput,
39               (size_t, QbonePacketProcessor::Direction, uint8_t), (override));
40 };
41 
42 std::string PrependIPv6HeaderForTest(const std::string& body, int hops);
43 
44 // Returns true if the hop limit was decremented. Returns false if the packet is
45 // too short, not IPv6, or already has a hop limit of zero.
46 bool DecrementIPv6HopLimit(std::string& packet);
47 
48 }  // namespace quic
49 
50 #endif  // QUICHE_QUIC_QBONE_QBONE_PACKET_PROCESSOR_TEST_TOOLS_H_
51