srs/trunk/src/utest/srs_utest_config.hpp
Winlin 04b88e889f AI: Improve coverage of app by utest (#4494)
Co-authored-by: OSSRS-AI <winlinam@gmail.com>
2025-09-17 21:51:07 -04:00

79 lines
1.7 KiB
C++

//
// Copyright (c) 2013-2025 The SRS Authors
//
// SPDX-License-Identifier: MIT
//
#ifndef SRS_UTEST_CONFIG_HPP
#define SRS_UTEST_CONFIG_HPP
/*
#include <srs_utest_config.hpp>
*/
#include <srs_utest.hpp>
#include <string>
#include <srs_app_config.hpp>
#define _MIN_OK_CONF "rtmp{listen 1935;} "
class MockSrsConfigBuffer : public srs_internal::SrsConfigBuffer
{
public:
MockSrsConfigBuffer(std::string buf);
virtual ~MockSrsConfigBuffer();
public:
virtual srs_error_t fullfill(const char *filename);
};
class MockSrsConfig : public SrsConfig
{
public:
MockSrsConfig();
virtual ~MockSrsConfig();
private:
std::map<std::string, std::string> included_files;
public:
virtual srs_error_t mock_parse(std::string buf);
virtual srs_error_t mock_include(const std::string file_name, const std::string content);
protected:
virtual srs_error_t build_buffer(std::string src, srs_internal::SrsConfigBuffer **pbuffer);
};
class ISrsSetEnvConfig
{
private:
std::string key;
SrsConfig *conf;
public:
ISrsSetEnvConfig(SrsConfig *c, const std::string &k, const std::string &v, bool overwrite)
{
conf = c;
key = k;
srs_setenv(k, v, overwrite);
}
virtual ~ISrsSetEnvConfig()
{
srs_unsetenv(key);
srs_freep(conf->env_cache_);
conf->env_cache_ = new SrsConfDirective();
}
private:
// Adds, changes environment variables, which may starts with $.
int srs_setenv(const std::string &key, const std::string &value, bool overwrite);
// Deletes environment variables, which may starts with $.
int srs_unsetenv(const std::string &key);
};
#define SrsSetEnvConfig(conf, instance, key, value) \
ISrsSetEnvConfig _SRS_free_##instance(&conf, key, value, true)
#endif