From 45aa3257227afffe9ed9cd7148ed13fb03899602 Mon Sep 17 00:00:00 2001 From: winlin Date: Wed, 1 Jan 2020 21:01:14 +0800 Subject: [PATCH] Improve test coverage for config. --- trunk/src/app/srs_app_config.cpp | 16 +- trunk/src/kernel/srs_kernel_codec.cpp | 10 +- trunk/src/utest/srs_utest_config.cpp | 249 ++++++++++++++++++++++++++ 3 files changed, 266 insertions(+), 9 deletions(-) diff --git a/trunk/src/app/srs_app_config.cpp b/trunk/src/app/srs_app_config.cpp index 08f64fdbe..026ac8801 100644 --- a/trunk/src/app/srs_app_config.cpp +++ b/trunk/src/app/srs_app_config.cpp @@ -5231,7 +5231,9 @@ vector SrsConfig::get_engine_perfile(SrsConfDirective* conf) } perfile.push_back(srs_prefix_underscores_ifno(option->name)); - perfile.push_back(option->arg0()); + if (!option->arg0().empty()) { + perfile.push_back(option->arg0()); + } } return perfile; @@ -5273,7 +5275,9 @@ vector SrsConfig::get_engine_vfilter(SrsConfDirective* conf) } vfilter.push_back(srs_prefix_underscores_ifno(filter->name)); - vfilter.push_back(filter->arg0()); + if (!filter->arg0().empty()) { + vfilter.push_back(filter->arg0()); + } } return vfilter; @@ -5427,7 +5431,9 @@ vector SrsConfig::get_engine_vparams(SrsConfDirective* conf) } vparams.push_back(srs_prefix_underscores_ifno(filter->name)); - vparams.push_back(filter->arg0()); + if (!filter->arg0().empty()) { + vparams.push_back(filter->arg0()); + } } return vparams; @@ -5517,7 +5523,9 @@ vector SrsConfig::get_engine_aparams(SrsConfDirective* conf) } aparams.push_back(srs_prefix_underscores_ifno(filter->name)); - aparams.push_back(filter->arg0()); + if (!filter->arg0().empty()) { + aparams.push_back(filter->arg0()); + } } return aparams; diff --git a/trunk/src/kernel/srs_kernel_codec.cpp b/trunk/src/kernel/srs_kernel_codec.cpp index 6d0cb0dcd..a0b11f424 100644 --- a/trunk/src/kernel/srs_kernel_codec.cpp +++ b/trunk/src/kernel/srs_kernel_codec.cpp @@ -1195,24 +1195,24 @@ srs_error_t SrsFormat::audio_aac_demux(SrsBuffer* stream, int64_t timestamp) int8_t sound_size = (sound_format >> 1) & 0x01; int8_t sound_rate = (sound_format >> 2) & 0x03; sound_format = (sound_format >> 4) & 0x0f; - + SrsAudioCodecId codec_id = (SrsAudioCodecId)sound_format; acodec->id = codec_id; - + acodec->sound_type = (SrsAudioChannels)sound_type; acodec->sound_rate = (SrsAudioSampleRate)sound_rate; acodec->sound_size = (SrsAudioSampleBits)sound_size; - + // we support h.264+mp3 for hls. if (codec_id == SrsAudioCodecIdMP3) { return srs_error_new(ERROR_HLS_TRY_MP3, "try mp3"); } - + // only support aac if (codec_id != SrsAudioCodecIdAAC) { return srs_error_new(ERROR_HLS_DECODE_ERROR, "not supported codec %d", codec_id); } - + if (!stream->require(1)) { return srs_error_new(ERROR_HLS_DECODE_ERROR, "aac decode aac_packet_type"); } diff --git a/trunk/src/utest/srs_utest_config.cpp b/trunk/src/utest/srs_utest_config.cpp index 2a2231ecd..0466c1538 100644 --- a/trunk/src/utest/srs_utest_config.cpp +++ b/trunk/src/utest/srs_utest_config.cpp @@ -3124,6 +3124,48 @@ VOID TEST(ConfigMainTest, CheckVhostConfig3) EXPECT_EQ(1000, conf.get_bw_check_limit_kbps("ossrs.net")); EXPECT_FALSE(conf.get_vhost_is_edge("ossrs.net")); EXPECT_TRUE(conf.get_vhost_edge_origin("ossrs.net") == NULL); + EXPECT_FALSE(conf.get_vhost_edge_token_traverse("ossrs.net")); + EXPECT_STREQ("[vhost]", conf.get_vhost_edge_transform_vhost("ossrs.net").c_str()); + EXPECT_FALSE(conf.get_vhost_origin_cluster("ossrs.net")); + EXPECT_EQ(0, conf.get_vhost_coworkers("ossrs.net").size()); + EXPECT_FALSE(conf.get_security_enabled("ossrs.net")); + EXPECT_TRUE(conf.get_security_rules("ossrs.net") == NULL); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{security{enabled on;}}")); + EXPECT_TRUE(conf.get_security_rules("ossrs.net") != NULL); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{security{enabled on;}}")); + EXPECT_TRUE(conf.get_security_enabled("ossrs.net")); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{cluster{coworkers xxx;}}")); + EXPECT_EQ(1, conf.get_vhost_coworkers("ossrs.net").size()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{cluster{origin_cluster on;}}")); + EXPECT_TRUE(conf.get_vhost_origin_cluster("ossrs.net")); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{cluster{vhost xxx;}}")); + EXPECT_FALSE(conf.get_vhost_edge_transform_vhost("ossrs.net").empty()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{cluster{token_traverse on;}}")); + EXPECT_TRUE(conf.get_vhost_edge_token_traverse("ossrs.net")); } if (true) { @@ -3229,3 +3271,210 @@ VOID TEST(ConfigMainTest, CheckVhostConfig3) } } +VOID TEST(ConfigMainTest, CheckVhostConfig4) +{ + srs_error_t err; + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net;")); + EXPECT_TRUE(conf.get_transcode("ossrs.net", "") == NULL); + EXPECT_FALSE(conf.get_transcode_enabled(conf.get_transcode("ossrs.net", ""))); + EXPECT_TRUE(conf.get_transcode_ffmpeg(conf.get_transcode("ossrs.net", "")).empty()); + EXPECT_EQ(0, conf.get_transcode_engines(conf.get_transcode("ossrs.net", "")).size()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{output xxx;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_STREQ("xxx", conf.get_engine_output(arr.at(0)).c_str()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{oformat flv;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_STREQ("flv", conf.get_engine_oformat(arr.at(0)).c_str()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{aparams {i;}}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_EQ(1, conf.get_engine_aparams(arr.at(0)).size()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{achannels 1000;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_EQ(1000, conf.get_engine_achannels(arr.at(0))); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{asample_rate 1000;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_EQ(1000, conf.get_engine_asample_rate(arr.at(0))); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{abitrate 1000;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_EQ(1000, conf.get_engine_abitrate(arr.at(0))); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{acodec aac;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_STREQ("aac", conf.get_engine_acodec(arr.at(0)).c_str()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{vparams {t;}}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_EQ(1, conf.get_engine_vparams(arr.at(0)).size()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{vpreset main;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_STREQ("main", conf.get_engine_vpreset(arr.at(0)).c_str()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{vprofile main;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_STREQ("main", conf.get_engine_vprofile(arr.at(0)).c_str()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{vthreads 1000;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_EQ(1000, conf.get_engine_vthreads(arr.at(0))); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{vheight 1000;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_EQ(1000, conf.get_engine_vheight(arr.at(0))); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{vwidth 1000;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_EQ(1000, conf.get_engine_vwidth(arr.at(0))); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{vfps 1000;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_EQ(1000, conf.get_engine_vfps(arr.at(0))); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{vbitrate 1000;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_EQ(1000, conf.get_engine_vbitrate(arr.at(0))); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{vcodec x264;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_STREQ("x264", conf.get_engine_vcodec(arr.at(0)).c_str()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{vfilter {i;}}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_EQ(1, conf.get_engine_vfilter(arr.at(0)).size()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{vfilter {i logo.png;}}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_EQ(2, conf.get_engine_vfilter(arr.at(0)).size()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{iformat mp4;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_STREQ("mp4", conf.get_engine_iformat(arr.at(0)).c_str()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{perfile {re;}}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_EQ(1, conf.get_engine_perfile(arr.at(0)).size()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine{enabled on;}}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + EXPECT_TRUE(conf.get_engine_enabled(arr.at(0))); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{engine;}}")); + vector arr = conf.get_transcode_engines(conf.get_transcode("ossrs.net", "xxx")); + ASSERT_EQ(1, arr.size()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{ffmpeg xxx;}}")); + EXPECT_STREQ("xxx", conf.get_transcode_ffmpeg(conf.get_transcode("ossrs.net", "xxx")).c_str()); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx{enabled on;}}")); + EXPECT_TRUE(conf.get_transcode_enabled(conf.get_transcode("ossrs.net", "xxx"))); + } + + if (true) { + MockSrsConfig conf; + HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{transcode xxx;}")); + EXPECT_TRUE(conf.get_transcode("ossrs.net", "xxx") != NULL); + } +} +