blob: 9b84bb85ee3cd4bf36bf1b67c38e1556a8de80f6 [file] [log] [blame]
// Copyright 2024 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef QUICHE_QUIC_MOQT_TEST_TOOLS_MOQT_SIMULATOR_HARNESS_H_
#define QUICHE_QUIC_MOQT_TEST_TOOLS_MOQT_SIMULATOR_HARNESS_H_
#include <string>
#include "quiche/quic/core/crypto/quic_compressed_certs_cache.h"
#include "quiche/quic/core/crypto/quic_crypto_client_config.h"
#include "quiche/quic/core/crypto/quic_crypto_server_config.h"
#include "quiche/quic/core/quic_generic_session.h"
#include "quiche/quic/moqt/moqt_messages.h"
#include "quiche/quic/moqt/moqt_session.h"
#include "quiche/quic/test_tools/simulator/simulator.h"
#include "quiche/quic/test_tools/simulator/test_harness.h"
namespace moqt::test {
// Places a MoQT-over-raw-QUIC client within a network simulation.
class MoqtClientEndpoint : public quic::simulator::QuicEndpointWithConnection {
public:
MoqtClientEndpoint(quic::simulator::Simulator* simulator,
const std::string& name, const std::string& peer_name,
MoqtVersion version);
MoqtSession* session() { return &session_; }
quic::QuicGenericClientSession* quic_session() { return &quic_session_; }
private:
quic::QuicCryptoClientConfig crypto_config_;
quic::QuicGenericClientSession quic_session_;
MoqtSession session_;
};
// Places a MoQT-over-raw-QUIC server within a network simulation.
class MoqtServerEndpoint : public quic::simulator::QuicEndpointWithConnection {
public:
MoqtServerEndpoint(quic::simulator::Simulator* simulator,
const std::string& name, const std::string& peer_name,
MoqtVersion version);
MoqtSession* session() { return &session_; }
quic::QuicGenericServerSession* quic_session() { return &quic_session_; }
private:
quic::QuicCompressedCertsCache compressed_certs_cache_;
quic::QuicCryptoServerConfig crypto_config_;
quic::QuicGenericServerSession quic_session_;
MoqtSession session_;
};
} // namespace moqt::test
#endif // QUICHE_QUIC_MOQT_TEST_TOOLS_MOQT_SIMULATOR_HARNESS_H_