srs/trunk/src/utest/srs_utest_ai12.hpp
2025-10-23 09:44:28 -04:00

172 lines
4.8 KiB
C++

//
// Copyright (c) 2013-2025 The SRS Authors
//
// SPDX-License-Identifier: MIT
//
#ifndef SRS_UTEST_AI12_HPP
#define SRS_UTEST_AI12_HPP
/*
#include <srs_utest_ai12.hpp>
*/
#include <srs_utest.hpp>
#include <srs_app_rtc_conn.hpp>
#include <srs_app_rtc_source.hpp>
#include <srs_kernel_rtc_queue.hpp>
#include <srs_utest_ai05.hpp>
#include <srs_utest_ai07.hpp>
#include <srs_utest_ai11.hpp>
#include <srs_utest_manual_service.hpp>
// Mock video recv track for testing check_send_nacks
class MockRtcVideoRecvTrackForNack : public SrsRtcVideoRecvTrack
{
public:
srs_error_t check_send_nacks_error_;
int check_send_nacks_count_;
public:
MockRtcVideoRecvTrackForNack(ISrsRtcPacketReceiver *receiver, SrsRtcTrackDescription *track_desc);
virtual ~MockRtcVideoRecvTrackForNack();
public:
virtual srs_error_t check_send_nacks();
void set_check_send_nacks_error(srs_error_t err);
void reset();
};
// Mock audio recv track for testing check_send_nacks
class MockRtcAudioRecvTrackForNack : public SrsRtcAudioRecvTrack
{
public:
srs_error_t check_send_nacks_error_;
int check_send_nacks_count_;
public:
MockRtcAudioRecvTrackForNack(ISrsRtcPacketReceiver *receiver, SrsRtcTrackDescription *track_desc);
virtual ~MockRtcAudioRecvTrackForNack();
public:
virtual srs_error_t check_send_nacks();
void set_check_send_nacks_error(srs_error_t err);
void reset();
};
// Mock NACK timer handler for testing SrsRtcConnectionNackTimer
class MockRtcConnectionNackTimerHandler : public ISrsRtcConnectionNackTimerHandler
{
public:
srs_error_t do_check_send_nacks_error_;
int do_check_send_nacks_count_;
public:
MockRtcConnectionNackTimerHandler();
virtual ~MockRtcConnectionNackTimerHandler();
public:
virtual srs_error_t do_check_send_nacks();
void set_do_check_send_nacks_error(srs_error_t err);
void reset();
};
// Mock RTC connection for testing on_before_dispose
class MockRtcConnectionForDispose : public ISrsResource
{
public:
SrsContextId cid_;
std::string desc_;
bool disposing_;
public:
MockRtcConnectionForDispose();
virtual ~MockRtcConnectionForDispose();
public:
virtual const SrsContextId &get_id();
virtual std::string desc();
void set_disposing(bool disposing);
};
// Mock connection manager for testing expire functionality
class MockConnectionManagerForExpire : public ISrsResourceManager
{
public:
ISrsResource *removed_resource_;
int remove_count_;
public:
MockConnectionManagerForExpire();
virtual ~MockConnectionManagerForExpire();
public:
virtual srs_error_t start();
virtual bool empty();
virtual size_t size();
virtual void add(ISrsResource *conn, bool *exists = NULL);
virtual void add_with_id(const std::string &id, ISrsResource *conn);
virtual void add_with_fast_id(uint64_t id, ISrsResource *conn);
virtual void add_with_name(const std::string &name, ISrsResource *conn);
virtual ISrsResource *at(int index);
virtual ISrsResource *find_by_id(std::string id);
virtual ISrsResource *find_by_fast_id(uint64_t id);
virtual ISrsResource *find_by_name(std::string name);
virtual void remove(ISrsResource *c);
virtual void subscribe(ISrsDisposingHandler *h);
virtual void unsubscribe(ISrsDisposingHandler *h);
void reset();
};
// Mock NACK receiver for testing check_send_nacks
class MockRtpNackForReceiver : public SrsRtpNackForReceiver
{
public:
uint32_t timeout_nacks_to_return_;
std::vector<uint16_t> nack_seqs_to_add_;
int get_nack_seqs_count_;
public:
MockRtpNackForReceiver(SrsRtpRingBuffer *rtp, size_t queue_size);
virtual ~MockRtpNackForReceiver();
public:
virtual void get_nack_seqs(SrsRtcpNack &seqs, uint32_t &timeout_nacks);
void set_timeout_nacks(uint32_t timeout_nacks);
void add_nack_seq(uint16_t seq);
void reset();
};
// Mock RTC connection for testing check_send_nacks
class MockRtcConnectionForNack : public SrsRtcConnection
{
public:
srs_error_t send_rtcp_error_;
int send_rtcp_count_;
std::vector<std::string> sent_rtcp_data_;
public:
MockRtcConnectionForNack(ISrsExecRtcAsyncTask *async, const SrsContextId &cid);
virtual ~MockRtcConnectionForNack();
public:
virtual srs_error_t send_rtcp(char *data, int nb_data);
void set_send_rtcp_error(srs_error_t err);
void reset();
};
// Mock request class for testing SrsRtcConnection::create_publisher
class MockRtcConnectionRequest : public ISrsRequest
{
public:
MockRtcConnectionRequest(std::string vhost = "__defaultVhost__", std::string app = "live", std::string stream = "test");
virtual ~MockRtcConnectionRequest();
virtual ISrsRequest *copy();
virtual std::string get_stream_url();
virtual void update_auth(ISrsRequest *req);
virtual void strip();
virtual ISrsRequest *as_http();
};
#endif