chromium/net/third_party/quiche/src/quiche/quic/core/http/quic_server_session_base_test.cc

// Copyright 2013 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.

#include "quiche/quic/core/http/quic_server_session_base.h"

#include <cstdint>
#include <memory>
#include <string>
#include <utility>
#include <vector>

#include "absl/memory/memory.h"
#include "quiche/quic/core/crypto/null_encrypter.h"
#include "quiche/quic/core/crypto/quic_crypto_server_config.h"
#include "quiche/quic/core/crypto/quic_random.h"
#include "quiche/quic/core/proto/cached_network_parameters_proto.h"
#include "quiche/quic/core/quic_connection.h"
#include "quiche/quic/core/quic_crypto_server_stream.h"
#include "quiche/quic/core/quic_crypto_server_stream_base.h"
#include "quiche/quic/core/quic_types.h"
#include "quiche/quic/core/quic_utils.h"
#include "quiche/quic/core/tls_server_handshaker.h"
#include "quiche/quic/platform/api/quic_expect_bug.h"
#include "quiche/quic/platform/api/quic_flags.h"
#include "quiche/quic/platform/api/quic_socket_address.h"
#include "quiche/quic/platform/api/quic_test.h"
#include "quiche/quic/test_tools/crypto_test_utils.h"
#include "quiche/quic/test_tools/fake_proof_source.h"
#include "quiche/quic/test_tools/mock_quic_session_visitor.h"
#include "quiche/quic/test_tools/quic_config_peer.h"
#include "quiche/quic/test_tools/quic_connection_peer.h"
#include "quiche/quic/test_tools/quic_crypto_server_config_peer.h"
#include "quiche/quic/test_tools/quic_sent_packet_manager_peer.h"
#include "quiche/quic/test_tools/quic_server_session_base_peer.h"
#include "quiche/quic/test_tools/quic_session_peer.h"
#include "quiche/quic/test_tools/quic_spdy_session_peer.h"
#include "quiche/quic/test_tools/quic_stream_id_manager_peer.h"
#include "quiche/quic/test_tools/quic_stream_peer.h"
#include "quiche/quic/test_tools/quic_sustained_bandwidth_recorder_peer.h"
#include "quiche/quic/test_tools/quic_test_utils.h"
#include "quiche/quic/tools/quic_memory_cache_backend.h"
#include "quiche/quic/tools/quic_simple_server_stream.h"

_;
StrictMock;

AtLeast;

namespace quic {
namespace test {
namespace {

// Data to be sent on a request stream.  In Google QUIC, this is interpreted as
// DATA payload (there is no framing on request streams).  In IETF QUIC, this is
// interpreted as HEADERS frame (type 0x1) with payload length 122 ('z').  Since
// no payload is included, QPACK decoder will not be invoked.
const char* const kStreamData =;

class TestServerSession : public QuicServerSessionBase {};

const size_t kMaxStreamsForTest =;

class QuicServerSessionBaseTest : public QuicTestWithParam<ParsedQuicVersion> {};

// Compares CachedNetworkParameters.
MATCHER_P(EqualsProto, network_params, "") {}

INSTANTIATE_TEST_SUITE_P();

TEST_P(QuicServerSessionBaseTest, GetSSLConfig) {}

TEST_P(QuicServerSessionBaseTest, CloseStreamDueToReset) {}

TEST_P(QuicServerSessionBaseTest, NeverOpenStreamDueToReset) {}

TEST_P(QuicServerSessionBaseTest, AcceptClosedStream) {}

TEST_P(QuicServerSessionBaseTest, MaxOpenStreams) {}

TEST_P(QuicServerSessionBaseTest, MaxAvailableBidirectionalStreams) {}

TEST_P(QuicServerSessionBaseTest, GetEvenIncomingError) {}

TEST_P(QuicServerSessionBaseTest, GetStreamDisconnected) {}

class MockQuicCryptoServerStream : public QuicCryptoServerStream {};

class MockTlsServerHandshaker : public TlsServerHandshaker {};

TEST_P(QuicServerSessionBaseTest, BandwidthEstimates) {}

TEST_P(QuicServerSessionBaseTest, BandwidthResumptionExperiment) {}

TEST_P(QuicServerSessionBaseTest, BandwidthMaxEnablesResumption) {}

TEST_P(QuicServerSessionBaseTest, NoBandwidthResumptionByDefault) {}

TEST_P(QuicServerSessionBaseTest, OpenStreamLimitPerEventLoop) {}

// Tests which check the lifetime management of data members of
// QuicCryptoServerStream objects when async GetProof is in use.
class StreamMemberLifetimeTest : public QuicServerSessionBaseTest {};

INSTANTIATE_TEST_SUITE_P();

// Trigger an operation which causes an async invocation of
// ProofSource::GetProof.  Delay the completion of the operation until after the
// stream has been destroyed, and verify that there are no memory bugs.
TEST_P(StreamMemberLifetimeTest, Basic) {}

}  // namespace
}  // namespace test
}  // namespace quic