mirror of
https://github.com/ossrs/srs.git
synced 2025-02-15 04:42:04 +00:00
Let cluster config support overwritten by ENV
This commit is contained in:
parent
d220bf280e
commit
28074bd95a
5 changed files with 163 additions and 18 deletions
|
@ -999,6 +999,7 @@ vhost cluster.srs.com {
|
||||||
# The cluster mode, local or remote.
|
# The cluster mode, local or remote.
|
||||||
# local: It's an origin server, serve streams itself.
|
# local: It's an origin server, serve streams itself.
|
||||||
# remote: It's an edge server, fetch or push stream to origin server.
|
# remote: It's an edge server, fetch or push stream to origin server.
|
||||||
|
# Overwrite by env SRS_VHOST_CLUSTER_MODE for all vhosts.
|
||||||
# default: local
|
# default: local
|
||||||
mode remote;
|
mode remote;
|
||||||
|
|
||||||
|
@ -1006,6 +1007,8 @@ vhost cluster.srs.com {
|
||||||
# format as: <server_name|ip>[:port]
|
# format as: <server_name|ip>[:port]
|
||||||
# @remark user can specifies multiple origin for error backup, by space,
|
# @remark user can specifies multiple origin for error backup, by space,
|
||||||
# for example, 192.168.1.100:1935 192.168.1.101:1935 192.168.1.102:1935
|
# for example, 192.168.1.100:1935 192.168.1.101:1935 192.168.1.102:1935
|
||||||
|
# Overwrite by env SRS_VHOST_CLUSTER_ORIGIN for all vhosts.
|
||||||
|
# no default value
|
||||||
origin 127.0.0.1:1935 localhost:1935;
|
origin 127.0.0.1:1935 localhost:1935;
|
||||||
|
|
||||||
# For edge(mode remote), whether open the token traverse mode,
|
# For edge(mode remote), whether open the token traverse mode,
|
||||||
|
@ -1013,12 +1016,14 @@ vhost cluster.srs.com {
|
||||||
# it's very important for the edge to do the token auth.
|
# it's very important for the edge to do the token auth.
|
||||||
# the better way is use http callback to do the token auth by the edge,
|
# the better way is use http callback to do the token auth by the edge,
|
||||||
# but if user prefer origin check(auth), the token_traverse if better solution.
|
# but if user prefer origin check(auth), the token_traverse if better solution.
|
||||||
|
# Overwrite by env SRS_VHOST_CLUSTER_TOKEN_TRAVERSE for all vhosts.
|
||||||
# default: off
|
# default: off
|
||||||
token_traverse off;
|
token_traverse off;
|
||||||
|
|
||||||
# For edge(mode remote), the vhost to transform for edge,
|
# For edge(mode remote), the vhost to transform for edge,
|
||||||
# to fetch from the specified vhost at origin,
|
# to fetch from the specified vhost at origin,
|
||||||
# if not specified, use the current vhost of edge in origin, the variable [vhost].
|
# if not specified, use the current vhost of edge in origin, the variable [vhost].
|
||||||
|
# Overwrite by env SRS_VHOST_CLUSTER_EDGE_TRANSFORM_VHOST for all vhosts.
|
||||||
# default: [vhost]
|
# default: [vhost]
|
||||||
vhost same.edge.srs.com;
|
vhost same.edge.srs.com;
|
||||||
|
|
||||||
|
@ -1027,11 +1032,13 @@ vhost cluster.srs.com {
|
||||||
# when connect to upnode, it will take the debug info,
|
# when connect to upnode, it will take the debug info,
|
||||||
# for example, the id, source id, pid.
|
# for example, the id, source id, pid.
|
||||||
# please see https://ossrs.net/lts/zh-cn/docs/v4/doc/log
|
# please see https://ossrs.net/lts/zh-cn/docs/v4/doc/log
|
||||||
|
# Overwrite by env SRS_VHOST_CLUSTER_DEBUG_SRS_UPNODE for all vhosts.
|
||||||
# default: on
|
# default: on
|
||||||
debug_srs_upnode on;
|
debug_srs_upnode on;
|
||||||
|
|
||||||
# For origin(mode local) cluster, turn on the cluster.
|
# For origin(mode local) cluster, turn on the cluster.
|
||||||
# @remark Origin cluster only supports RTMP, use Edge to transmux RTMP to FLV.
|
# @remark Origin cluster only supports RTMP, use Edge to transmux RTMP to FLV.
|
||||||
|
# Overwrite by env SRS_VHOST_CLUSTER_ORIGIN_CLUSTER for all vhosts.
|
||||||
# default: off
|
# default: off
|
||||||
# TODO: FIXME: Support reload.
|
# TODO: FIXME: Support reload.
|
||||||
origin_cluster off;
|
origin_cluster off;
|
||||||
|
@ -1039,6 +1046,7 @@ vhost cluster.srs.com {
|
||||||
# For origin (mode local) cluster, the co-worker's HTTP APIs.
|
# For origin (mode local) cluster, the co-worker's HTTP APIs.
|
||||||
# This origin will connect to co-workers and communicate with them.
|
# This origin will connect to co-workers and communicate with them.
|
||||||
# please see https://ossrs.io/lts/en-us/docs/v4/doc/origin-cluster
|
# please see https://ossrs.io/lts/en-us/docs/v4/doc/origin-cluster
|
||||||
|
# Overwrite by env SRS_VHOST_CLUSTER_COWORKERS for all vhosts.
|
||||||
# TODO: FIXME: Support reload.
|
# TODO: FIXME: Support reload.
|
||||||
coworkers 127.0.0.1:9091 127.0.0.1:9092;
|
coworkers 127.0.0.1:9091 127.0.0.1:9092;
|
||||||
|
|
||||||
|
@ -1046,11 +1054,13 @@ vhost cluster.srs.com {
|
||||||
# rtmp, Connect origin by RTMP
|
# rtmp, Connect origin by RTMP
|
||||||
# flv, Connect origin by HTTP-FLV
|
# flv, Connect origin by HTTP-FLV
|
||||||
# flvs, Connect origin by HTTPS-FLV
|
# flvs, Connect origin by HTTPS-FLV
|
||||||
|
# Overwrite by env SRS_VHOST_CLUSTER_PROTOCOL for all vhosts.
|
||||||
# Default: rtmp
|
# Default: rtmp
|
||||||
protocol rtmp;
|
protocol rtmp;
|
||||||
|
|
||||||
# Whether follow client protocol to connect to origin.
|
# Whether follow client protocol to connect to origin.
|
||||||
# @remark The FLV might use different signature(in query string) to RTMP.
|
# @remark The FLV might use different signature(in query string) to RTMP.
|
||||||
|
# Overwrite by env SRS_VHOST_CLUSTER_FOLLOW_CLIENT for all vhosts.
|
||||||
# Default: off
|
# Default: off
|
||||||
follow_client off;
|
follow_client off;
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,6 +79,19 @@ const char* _srs_version = "XCORE-" RTMP_SIG_SRS_SERVER;
|
||||||
if (dir) return dir; \
|
if (dir) return dir; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define SRS_OVERWRITE_BY_ENV_DIRECTIVE_MULTI_VALUES(key) { \
|
||||||
|
static SrsConfDirective* dir = NULL; \
|
||||||
|
if (!dir && !srs_getenv(key).empty()) { \
|
||||||
|
std::vector<string> vec = srs_string_split(srs_getenv(key), " "); \
|
||||||
|
dir = new SrsConfDirective(); \
|
||||||
|
dir->name = key; \
|
||||||
|
for (size_t i = 0; i < vec.size(); ++i) { \
|
||||||
|
dir->args.push_back(vec[i]); \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
if (dir) return dir; \
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dumps the ingest/transcode-engine in @param dir to amf0 object @param engine.
|
* dumps the ingest/transcode-engine in @param dir to amf0 object @param engine.
|
||||||
* @param dir the transcode or ingest config directive.
|
* @param dir the transcode or ingest config directive.
|
||||||
|
@ -4907,6 +4920,8 @@ int SrsConfig::get_gop_cache_max_frames(string vhost)
|
||||||
|
|
||||||
bool SrsConfig::get_debug_srs_upnode(string vhost)
|
bool SrsConfig::get_debug_srs_upnode(string vhost)
|
||||||
{
|
{
|
||||||
|
SRS_OVERWRITE_BY_ENV_BOOL2("SRS_VHOST_CLUSTER_DEBUG_SRS_UPNODE"); // SRS_VHOST_CLUSTER_DEBUG_SRS_UPNODE
|
||||||
|
|
||||||
static bool DEFAULT = true;
|
static bool DEFAULT = true;
|
||||||
|
|
||||||
SrsConfDirective* conf = get_vhost(vhost);
|
SrsConfDirective* conf = get_vhost(vhost);
|
||||||
|
@ -5773,6 +5788,11 @@ bool SrsConfig::get_vhost_is_edge(string vhost)
|
||||||
|
|
||||||
bool SrsConfig::get_vhost_is_edge(SrsConfDirective* vhost)
|
bool SrsConfig::get_vhost_is_edge(SrsConfDirective* vhost)
|
||||||
{
|
{
|
||||||
|
// override cluster mode by env for all vhost.
|
||||||
|
if (!srs_getenv("SRS_VHOST_CLUSTER_MODE").empty()) { // SRS_VHOST_CLUSTER_MODE
|
||||||
|
return "remote" == srs_getenv("SRS_VHOST_CLUSTER_MODE");
|
||||||
|
}
|
||||||
|
|
||||||
static bool DEFAULT = false;
|
static bool DEFAULT = false;
|
||||||
|
|
||||||
SrsConfDirective* conf = vhost;
|
SrsConfDirective* conf = vhost;
|
||||||
|
@ -5795,6 +5815,8 @@ bool SrsConfig::get_vhost_is_edge(SrsConfDirective* vhost)
|
||||||
|
|
||||||
SrsConfDirective* SrsConfig::get_vhost_edge_origin(string vhost)
|
SrsConfDirective* SrsConfig::get_vhost_edge_origin(string vhost)
|
||||||
{
|
{
|
||||||
|
SRS_OVERWRITE_BY_ENV_DIRECTIVE_MULTI_VALUES("SRS_VHOST_CLUSTER_ORIGIN"); // SRS_VHOST_CLUSTER_ORIGIN
|
||||||
|
|
||||||
SrsConfDirective* conf = get_vhost(vhost);
|
SrsConfDirective* conf = get_vhost(vhost);
|
||||||
if (!conf) {
|
if (!conf) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -5810,6 +5832,8 @@ SrsConfDirective* SrsConfig::get_vhost_edge_origin(string vhost)
|
||||||
|
|
||||||
string SrsConfig::get_vhost_edge_protocol(string vhost)
|
string SrsConfig::get_vhost_edge_protocol(string vhost)
|
||||||
{
|
{
|
||||||
|
SRS_OVERWRITE_BY_ENV_STRING("SRS_VHOST_CLUSTER_PROTOCOL"); // SRS_VHOST_CLUSTER_PROTOCOL
|
||||||
|
|
||||||
static string DEFAULT = "rtmp";
|
static string DEFAULT = "rtmp";
|
||||||
|
|
||||||
SrsConfDirective* conf = get_vhost(vhost);
|
SrsConfDirective* conf = get_vhost(vhost);
|
||||||
|
@ -5832,6 +5856,8 @@ string SrsConfig::get_vhost_edge_protocol(string vhost)
|
||||||
|
|
||||||
bool SrsConfig::get_vhost_edge_follow_client(string vhost)
|
bool SrsConfig::get_vhost_edge_follow_client(string vhost)
|
||||||
{
|
{
|
||||||
|
SRS_OVERWRITE_BY_ENV_BOOL("SRS_VHOST_CLUSTER_FOLLOW_CLIENT"); // SRS_VHOST_CLUSTER_FOLLOW_CLIENT
|
||||||
|
|
||||||
static bool DEFAULT = false;
|
static bool DEFAULT = false;
|
||||||
|
|
||||||
SrsConfDirective* conf = get_vhost(vhost);
|
SrsConfDirective* conf = get_vhost(vhost);
|
||||||
|
@ -5854,6 +5880,8 @@ bool SrsConfig::get_vhost_edge_follow_client(string vhost)
|
||||||
|
|
||||||
bool SrsConfig::get_vhost_edge_token_traverse(string vhost)
|
bool SrsConfig::get_vhost_edge_token_traverse(string vhost)
|
||||||
{
|
{
|
||||||
|
SRS_OVERWRITE_BY_ENV_BOOL("SRS_VHOST_CLUSTER_TOKEN_TRAVERSE"); // SRS_VHOST_CLUSTER_TOKEN_TRAVERSE
|
||||||
|
|
||||||
static bool DEFAULT = false;
|
static bool DEFAULT = false;
|
||||||
|
|
||||||
SrsConfDirective* conf = get_vhost(vhost);
|
SrsConfDirective* conf = get_vhost(vhost);
|
||||||
|
@ -5876,6 +5904,8 @@ bool SrsConfig::get_vhost_edge_token_traverse(string vhost)
|
||||||
|
|
||||||
string SrsConfig::get_vhost_edge_transform_vhost(string vhost)
|
string SrsConfig::get_vhost_edge_transform_vhost(string vhost)
|
||||||
{
|
{
|
||||||
|
SRS_OVERWRITE_BY_ENV_STRING("SRS_VHOST_CLUSTER_EDGE_TRANSFORM_VHOST"); // SRS_VHOST_CLUSTER_EDGE_TRANSFORM_VHOST
|
||||||
|
|
||||||
static string DEFAULT = "[vhost]";
|
static string DEFAULT = "[vhost]";
|
||||||
|
|
||||||
SrsConfDirective* conf = get_vhost(vhost);
|
SrsConfDirective* conf = get_vhost(vhost);
|
||||||
|
@ -5904,6 +5934,8 @@ bool SrsConfig::get_vhost_origin_cluster(string vhost)
|
||||||
|
|
||||||
bool SrsConfig::get_vhost_origin_cluster(SrsConfDirective* vhost)
|
bool SrsConfig::get_vhost_origin_cluster(SrsConfDirective* vhost)
|
||||||
{
|
{
|
||||||
|
SRS_OVERWRITE_BY_ENV_BOOL("SRS_VHOST_CLUSTER_ORIGIN_CLUSTER"); // SRS_VHOST_CLUSTER_ORIGIN_CLUSTER
|
||||||
|
|
||||||
static bool DEFAULT = false;
|
static bool DEFAULT = false;
|
||||||
|
|
||||||
SrsConfDirective* conf = vhost;
|
SrsConfDirective* conf = vhost;
|
||||||
|
@ -5924,29 +5956,21 @@ bool SrsConfig::get_vhost_origin_cluster(SrsConfDirective* vhost)
|
||||||
return SRS_CONF_PREFER_FALSE(conf->arg0());
|
return SRS_CONF_PREFER_FALSE(conf->arg0());
|
||||||
}
|
}
|
||||||
|
|
||||||
vector<string> SrsConfig::get_vhost_coworkers(string vhost)
|
SrsConfDirective* SrsConfig::get_vhost_coworkers(string vhost)
|
||||||
{
|
{
|
||||||
vector<string> coworkers;
|
SRS_OVERWRITE_BY_ENV_DIRECTIVE_MULTI_VALUES("SRS_VHOST_CLUSTER_COWORKERS"); // SRS_VHOST_CLUSTER_COWORKERS
|
||||||
|
|
||||||
SrsConfDirective* conf = get_vhost(vhost);
|
SrsConfDirective* conf = get_vhost(vhost);
|
||||||
if (!conf) {
|
if (!conf) {
|
||||||
return coworkers;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
conf = conf->get("cluster");
|
conf = conf->get("cluster");
|
||||||
if (!conf) {
|
if (!conf) {
|
||||||
return coworkers;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
conf = conf->get("coworkers");
|
return conf->get("coworkers");
|
||||||
if (!conf) {
|
|
||||||
return coworkers;
|
|
||||||
}
|
|
||||||
for (int i = 0; i < (int)conf->args.size(); i++) {
|
|
||||||
coworkers.push_back(conf->args.at(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
return coworkers;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SrsConfig::get_security_enabled(string vhost)
|
bool SrsConfig::get_security_enabled(string vhost)
|
||||||
|
|
|
@ -778,7 +778,7 @@ public:
|
||||||
virtual bool get_vhost_origin_cluster(SrsConfDirective* conf);
|
virtual bool get_vhost_origin_cluster(SrsConfDirective* conf);
|
||||||
// Get the co-workers of origin cluster.
|
// Get the co-workers of origin cluster.
|
||||||
// @see https://ossrs.net/lts/zh-cn/docs/v4/doc/origin-cluster
|
// @see https://ossrs.net/lts/zh-cn/docs/v4/doc/origin-cluster
|
||||||
virtual std::vector<std::string> get_vhost_coworkers(std::string vhost);
|
virtual SrsConfDirective* get_vhost_coworkers(std::string vhost);
|
||||||
// vhost security section
|
// vhost security section
|
||||||
public:
|
public:
|
||||||
// Whether the secrity of vhost enabled.
|
// Whether the secrity of vhost enabled.
|
||||||
|
|
|
@ -714,7 +714,9 @@ srs_error_t SrsRtmpConn::playing(SrsSharedPtr<SrsLiveSource> source)
|
||||||
// When origin cluster enabled, try to redirect to the origin which is active.
|
// When origin cluster enabled, try to redirect to the origin which is active.
|
||||||
// A active origin is a server which is delivering stream.
|
// A active origin is a server which is delivering stream.
|
||||||
if (!info->edge && _srs_config->get_vhost_origin_cluster(req->vhost) && source->inactive()) {
|
if (!info->edge && _srs_config->get_vhost_origin_cluster(req->vhost) && source->inactive()) {
|
||||||
vector<string> coworkers = _srs_config->get_vhost_coworkers(req->vhost);
|
SrsConfDirective* conf = _srs_config->get_vhost_coworkers(req->vhost);
|
||||||
|
|
||||||
|
vector<string> coworkers = conf ? conf->args : vector<string>();
|
||||||
for (int i = 0; i < (int)coworkers.size(); i++) {
|
for (int i = 0; i < (int)coworkers.size(); i++) {
|
||||||
// TODO: FIXME: User may config the server itself as coworker, we must identify and ignore it.
|
// TODO: FIXME: User may config the server itself as coworker, we must identify and ignore it.
|
||||||
string host; int port = 0; string coworker = coworkers.at(i);
|
string host; int port = 0; string coworker = coworkers.at(i);
|
||||||
|
|
|
@ -3265,7 +3265,7 @@ VOID TEST(ConfigMainTest, CheckVhostConfig3)
|
||||||
EXPECT_FALSE(conf.get_vhost_edge_token_traverse("ossrs.net"));
|
EXPECT_FALSE(conf.get_vhost_edge_token_traverse("ossrs.net"));
|
||||||
EXPECT_STREQ("[vhost]", conf.get_vhost_edge_transform_vhost("ossrs.net").c_str());
|
EXPECT_STREQ("[vhost]", conf.get_vhost_edge_transform_vhost("ossrs.net").c_str());
|
||||||
EXPECT_FALSE(conf.get_vhost_origin_cluster("ossrs.net"));
|
EXPECT_FALSE(conf.get_vhost_origin_cluster("ossrs.net"));
|
||||||
EXPECT_EQ(0, (int)conf.get_vhost_coworkers("ossrs.net").size());
|
EXPECT_TRUE(conf.get_vhost_coworkers("ossrs.net") == NULL);
|
||||||
EXPECT_FALSE(conf.get_security_enabled("ossrs.net"));
|
EXPECT_FALSE(conf.get_security_enabled("ossrs.net"));
|
||||||
EXPECT_TRUE(conf.get_security_rules("ossrs.net") == NULL);
|
EXPECT_TRUE(conf.get_security_rules("ossrs.net") == NULL);
|
||||||
}
|
}
|
||||||
|
@ -3285,7 +3285,7 @@ VOID TEST(ConfigMainTest, CheckVhostConfig3)
|
||||||
if (true) {
|
if (true) {
|
||||||
MockSrsConfig conf;
|
MockSrsConfig conf;
|
||||||
HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{cluster{coworkers xxx;}}"));
|
HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{cluster{coworkers xxx;}}"));
|
||||||
EXPECT_EQ(1, (int)conf.get_vhost_coworkers("ossrs.net").size());
|
EXPECT_EQ(1, (int)conf.get_vhost_coworkers("ossrs.net")->args.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (true) {
|
if (true) {
|
||||||
|
@ -5102,3 +5102,112 @@ VOID TEST(ConfigEnvTest, CheckEnvValuesHooks)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VOID TEST(ConfigEnvTest, CheckEnvValuesCluster)
|
||||||
|
{
|
||||||
|
MockSrsConfig conf;
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_MODE", "remote");
|
||||||
|
EXPECT_TRUE(conf.get_vhost_is_edge("__defaultVhost__"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_MODE", "local");
|
||||||
|
EXPECT_FALSE(conf.get_vhost_is_edge("__defaultVhost__"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_MODE", "xxx");
|
||||||
|
EXPECT_FALSE(conf.get_vhost_is_edge("__defaultVhost__"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_ORIGIN", "127.0.0.1:1935 localhost:1935");
|
||||||
|
SrsConfDirective* origins = conf.get_vhost_edge_origin("__defaultVhost__");
|
||||||
|
EXPECT_TRUE(origins != NULL);
|
||||||
|
EXPECT_EQ(2, origins->args.size());
|
||||||
|
EXPECT_EQ("127.0.0.1:1935", origins->args[0]);
|
||||||
|
EXPECT_EQ("localhost:1935", origins->args[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_TOKEN_TRAVERSE", "on");
|
||||||
|
EXPECT_TRUE(conf.get_vhost_edge_token_traverse("__defaultVhost__"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_TOKEN_TRAVERSE", "off");
|
||||||
|
EXPECT_FALSE(conf.get_vhost_edge_token_traverse("__defaultVhost__"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_TOKEN_TRAVERSE", "xxx");
|
||||||
|
EXPECT_FALSE(conf.get_vhost_edge_token_traverse("__defaultVhost__"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_EDGE_TRANSFORM_VHOST", "xxx");
|
||||||
|
EXPECT_EQ("xxx", conf.get_vhost_edge_transform_vhost("__defaultVhost__"));
|
||||||
|
EXPECT_EQ("xxx", conf.get_vhost_edge_transform_vhost("anyHost"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_DEBUG_SRS_UPNODE", "off");
|
||||||
|
EXPECT_FALSE(conf.get_debug_srs_upnode("anyHost"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_DEBUG_SRS_UPNODE", "on");
|
||||||
|
EXPECT_TRUE(conf.get_debug_srs_upnode("anyHost"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_DEBUG_SRS_UPNODE", "xx");
|
||||||
|
EXPECT_TRUE(conf.get_debug_srs_upnode("anyHost"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_ORIGIN_CLUSTER", "on");
|
||||||
|
EXPECT_TRUE(conf.get_vhost_origin_cluster("anyHost"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_ORIGIN_CLUSTER", "off");
|
||||||
|
EXPECT_FALSE(conf.get_vhost_origin_cluster("anyHost"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_ORIGIN_CLUSTER", "xxx");
|
||||||
|
EXPECT_FALSE(conf.get_vhost_origin_cluster("anyHost"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_COWORKERS", "127.0.0.1:9091 127.0.0.1:9092");
|
||||||
|
SrsConfDirective* coworkers = conf.get_vhost_coworkers("anyHost");
|
||||||
|
EXPECT_TRUE(coworkers != NULL);
|
||||||
|
EXPECT_EQ(2, coworkers->args.size());
|
||||||
|
EXPECT_EQ("127.0.0.1:9091", coworkers->args[0]);
|
||||||
|
EXPECT_EQ("127.0.0.1:9092", coworkers->args[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_PROTOCOL", "srt");
|
||||||
|
EXPECT_EQ("srt", conf.get_vhost_edge_protocol("anyHost"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_FOLLOW_CLIENT", "on");
|
||||||
|
EXPECT_TRUE(conf.get_vhost_edge_follow_client("anyHost"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_FOLLOW_CLIENT", "off");
|
||||||
|
EXPECT_FALSE(conf.get_vhost_edge_follow_client("anyHost"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsSetEnvConfig(hooks, "SRS_VHOST_CLUSTER_FOLLOW_CLIENT", "xxx");
|
||||||
|
EXPECT_FALSE(conf.get_vhost_edge_follow_client("anyHost"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue