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