From 27b6950d3af9d1f9c1871ca116fb5e19358e9112 Mon Sep 17 00:00:00 2001 From: Jason Zhang Date: Thu, 20 Feb 2025 14:04:23 -0800 Subject: [PATCH] Avoid running starboard code during nplb init b/373491347 --- starboard/evergreen/x64/test_filters.py | 3 +- starboard/linux/shared/test_filters.py | 3 +- .../media_set_audio_write_duration_test.cc | 20 +- starboard/nplb/multiple_player_test.cc | 252 ++++++++---------- .../player_get_audio_configuration_test.cc | 6 +- starboard/nplb/player_get_media_time_test.cc | 20 +- starboard/nplb/player_test_util.cc | 116 ++++---- starboard/nplb/player_test_util.h | 6 +- starboard/nplb/player_write_sample_test.cc | 22 +- starboard/win/win32/test_filters.py | 2 +- 10 files changed, 199 insertions(+), 251 deletions(-) diff --git a/starboard/evergreen/x64/test_filters.py b/starboard/evergreen/x64/test_filters.py index 8e7d7dcdc1ad..c952327449ae 100644 --- a/starboard/evergreen/x64/test_filters.py +++ b/starboard/evergreen/x64/test_filters.py @@ -22,8 +22,7 @@ # pylint: disable=line-too-long _FILTERED_TESTS = { 'nplb': [ - 'MultiplePlayerTests/*/*sintel_329_ec3_dmp*', - 'MultiplePlayerTests/*/*sintel_381_ac3_dmp*', + 'MultiplePlayerTests/*', 'SbPlayerGetAudioConfigurationTests/*audio_sintel_329_ec3_dmp_*', 'SbPlayerGetAudioConfigurationTests/*audio_sintel_381_ac3_dmp_*', 'SbPlayerGetMediaTimeTests/*audio_sintel_329_ec3_dmp_*', diff --git a/starboard/linux/shared/test_filters.py b/starboard/linux/shared/test_filters.py index 15e6c25df472..6059b31f5d46 100644 --- a/starboard/linux/shared/test_filters.py +++ b/starboard/linux/shared/test_filters.py @@ -22,8 +22,7 @@ # pylint: disable=line-too-long _MODULAR_BUILD_FILTERED_TESTS = { 'nplb': [ - 'MultiplePlayerTests/*/*sintel_329_ec3_dmp*', - 'MultiplePlayerTests/*/*sintel_381_ac3_dmp*', + 'MultiplePlayerTests/*', 'PosixDirectoryCanOpenTest.FailureMissingStaticContent', 'SbPlayerWriteSampleTests/SbPlayerWriteSampleTest.WriteSingleBatch/audio_sintel_329_ec3_dmp_*', 'SbPlayerWriteSampleTests/SbPlayerWriteSampleTest.WriteSingleBatch/audio_sintel_381_ac3_dmp_*', diff --git a/starboard/nplb/media_set_audio_write_duration_test.cc b/starboard/nplb/media_set_audio_write_duration_test.cc index 004f3df61ad6..4cf0c83709d7 100644 --- a/starboard/nplb/media_set_audio_write_duration_test.cc +++ b/starboard/nplb/media_set_audio_write_duration_test.cc @@ -45,6 +45,19 @@ class SbMediaSetAudioWriteDurationTest public: SbMediaSetAudioWriteDurationTest() : dmp_reader_(GetParam()) {} + void SetUp() override { + SbMediaAudioCodec audio_codec = dmp_reader_.audio_codec(); + PlayerCreationParam creation_param = CreatePlayerCreationParam( + audio_codec, kSbMediaVideoCodecNone, kSbPlayerOutputModeInvalid); + SbPlayerCreationParam param = {}; + creation_param.ConvertTo(¶m); + creation_param.output_mode = SbPlayerGetPreferredOutputMode(¶m); + + SbPlayerTestConfig test_config(GetParam(), "", creation_param.output_mode, + ""); + SkipTestIfUnsupported(test_config); + } + void TryToWritePendingSample() { { starboard::ScopedSpinLock lock(&pending_decoder_status_lock_); @@ -286,10 +299,7 @@ std::vector GetSupportedTests() { for (auto filename : kFilenames) { VideoDmpReader dmp_reader(filename, VideoDmpReader::kEnableReadOnDemand); SB_DCHECK(dmp_reader.number_of_audio_buffers() > 0); - if (SbMediaCanPlayMimeAndKeySystem(dmp_reader.audio_mime_type().c_str(), - "")) { - test_params.push_back(filename); - } + test_params.push_back(filename); } SB_DCHECK(!test_params.empty()); @@ -298,7 +308,7 @@ std::vector GetSupportedTests() { INSTANTIATE_TEST_CASE_P(SbMediaSetAudioWriteDurationTests, SbMediaSetAudioWriteDurationTest, - ValuesIn(GetSupportedTests())); + ValuesIn(GetAudioTestFiles())); } // namespace } // namespace nplb } // namespace starboard diff --git a/starboard/nplb/multiple_player_test.cc b/starboard/nplb/multiple_player_test.cc index db9c272d7513..736d277640da 100644 --- a/starboard/nplb/multiple_player_test.cc +++ b/starboard/nplb/multiple_player_test.cc @@ -48,20 +48,123 @@ class PlayerThread : public posix::AbstractTestThread { std::function functor_; }; -class MultiplePlayerTest - : public ::testing::TestWithParam { +std::string GetMultipleSbPlayerTestConfigDescription( + SbPlayerMultiplePlayerTestConfig multiplayer_test_config) { + SB_DCHECK(multiplayer_test_config.size() > 0); + const SbPlayerOutputMode output_mode = multiplayer_test_config[0].output_mode; + const char* key_system = multiplayer_test_config[0].key_system; + + std::string description; + for (int i = 0; i < multiplayer_test_config.size(); i++) { + const SbPlayerTestConfig& config = multiplayer_test_config[i]; + const char* audio_filename = config.audio_filename; + const char* video_filename = config.video_filename; + + if (i > 0) { + description += "_"; + } + description += FormatString( + "audio%d_%s_video%d_%s", i, + audio_filename && strlen(audio_filename) > 0 ? audio_filename : "null", + i, + video_filename && strlen(video_filename) > 0 ? video_filename : "null"); + } + + description += FormatString("_output_%s_key_system_%s", + output_mode == kSbPlayerOutputModeDecodeToTexture + ? "decode_to_texture" + : "punch_out", + strlen(key_system) > 0 ? key_system : "null"); + std::replace(description.begin(), description.end(), '.', '_'); + std::replace(description.begin(), description.end(), '(', '_'); + std::replace(description.begin(), description.end(), ')', '_'); + return description; +} + +class MultiplePlayerTest : public ::testing::Test { protected: - void RunTest(const MultiplePlayerTestFunctor& functor); + void SetUp() override { + const int kMaxPlayerInstancesPerConfig = 3; + const int kMaxTotalPlayerInstances = 5; + + const std::vector& audio_test_files = GetAudioTestFiles(); + const std::vector& video_test_files = GetVideoTestFiles(); + const std::vector& output_modes = + GetPlayerOutputModes(); + const std::vector& key_systems = GetKeySystems(); + + for (auto key_system : key_systems) { + std::vector supported_configs; + for (auto video_filename : video_test_files) { + VideoDmpReader dmp_reader(video_filename, + VideoDmpReader::kEnableReadOnDemand); + SB_DCHECK(dmp_reader.number_of_video_buffers() > 0); + if (SbMediaCanPlayMimeAndKeySystem(dmp_reader.video_mime_type().c_str(), + key_system)) { + supported_configs.push_back({nullptr, video_filename, + kSbPlayerOutputModeInvalid, key_system}); + } + } + + if (supported_configs.empty()) { + continue; + } + + std::vector supported_audio_files; + for (auto audio_filename : audio_test_files) { + VideoDmpReader dmp_reader(audio_filename, + VideoDmpReader::kEnableReadOnDemand); + SB_DCHECK(dmp_reader.number_of_audio_buffers() > 0); + if (SbMediaCanPlayMimeAndKeySystem(dmp_reader.audio_mime_type().c_str(), + key_system)) { + supported_audio_files.push_back(audio_filename); + } + } + + // TODO: use SbPlayerGetPreferredOutputMode() to choose output mode. + for (auto output_mode : output_modes) { + for (auto& config : supported_configs) { + config.output_mode = output_mode; + } + + MaximumPlayerConfigurationExplorer explorer( + supported_configs, kMaxPlayerInstancesPerConfig, + kMaxTotalPlayerInstances, &fake_graphics_context_provider_); + std::vector explorer_output = + explorer.CalculateMaxTestConfigs(); + + // Add audio codec to configs using round robin algorithm. + for (auto& multi_player_test_config : explorer_output) { + int audio_file_index = 0; + for (auto& config : multi_player_test_config) { + config.audio_filename = supported_audio_files[audio_file_index]; + audio_file_index = + (audio_file_index + 1) % supported_audio_files.size(); + } + } + + multiplayer_test_configs_.insert(multiplayer_test_configs_.end(), + explorer_output.begin(), + explorer_output.end()); + } + } + } + + void RunTest(const MultiplePlayerTestFunctor& functor, + const SbPlayerMultiplePlayerTestConfig& multiplayer_test_config); + + std::vector multiplayer_test_configs_; FakeGraphicsContextProvider fake_graphics_context_provider_; }; -void MultiplePlayerTest::RunTest(const MultiplePlayerTestFunctor& functor) { +void MultiplePlayerTest::RunTest( + const MultiplePlayerTestFunctor& functor, + const SbPlayerMultiplePlayerTestConfig& multiplayer_test_config) { // TODO(b/368228941): Skip test case(s) not applicable to Android. if (GetRuntimePlatform() == PlatformType::kPlatformTypeAndroid) { GTEST_SKIP() << "Not applicable on Android"; } - const SbPlayerMultiplePlayerTestConfig& multiplayer_test_config = GetParam(); std::list player_threads; for (const SbPlayerTestConfig& player_config : multiplayer_test_config) { player_threads.emplace_back( @@ -75,29 +178,6 @@ void MultiplePlayerTest::RunTest(const MultiplePlayerTestFunctor& functor) { } } -void NoInput(const SbPlayerTestConfig& player_config, - FakeGraphicsContextProvider* fake_graphics_context_provider) { - SbPlayerTestFixture player_fixture(player_config, - fake_graphics_context_provider); - if (::testing::Test::HasFatalFailure()) { - return; - } - - GroupedSamples samples; - if (player_fixture.HasAudio()) { - samples.AddAudioEOS(); - } - if (player_fixture.HasVideo()) { - samples.AddVideoEOS(); - } - ASSERT_NO_FATAL_FAILURE(player_fixture.Write(samples)); - ASSERT_NO_FATAL_FAILURE(player_fixture.WaitForPlayerEndOfStream()); -} - -TEST_P(MultiplePlayerTest, NoInput) { - RunTest(NoInput); -} - void WriteSamples(const SbPlayerTestConfig& player_config, FakeGraphicsContextProvider* fake_graphics_context_provider) { SbPlayerTestFixture player_fixture(player_config, @@ -124,119 +204,15 @@ void WriteSamples(const SbPlayerTestConfig& player_config, ASSERT_NO_FATAL_FAILURE(player_fixture.WaitForPlayerEndOfStream()); } -TEST_P(MultiplePlayerTest, WriteSamples) { - RunTest(WriteSamples); -} - -std::string GetMultipleSbPlayerTestConfigName( - ::testing::TestParamInfo info) { - const SbPlayerMultiplePlayerTestConfig& multiplayer_test_config = info.param; - - SB_DCHECK(multiplayer_test_config.size() > 0); - const SbPlayerOutputMode output_mode = multiplayer_test_config[0].output_mode; - const char* key_system = multiplayer_test_config[0].key_system; - - std::string name; - for (int i = 0; i < multiplayer_test_config.size(); i++) { - const SbPlayerTestConfig& config = multiplayer_test_config[i]; - const char* audio_filename = config.audio_filename; - const char* video_filename = config.video_filename; - - if (i > 0) { - name += "_"; - } - name += FormatString( - "audio%d_%s_video%d_%s", i, - audio_filename && strlen(audio_filename) > 0 ? audio_filename : "null", - i, - video_filename && strlen(video_filename) > 0 ? video_filename : "null"); - } - - name += FormatString("_output_%s_key_system_%s", - output_mode == kSbPlayerOutputModeDecodeToTexture - ? "decode_to_texture" - : "punch_out", - strlen(key_system) > 0 ? key_system : "null"); - std::replace(name.begin(), name.end(), '.', '_'); - std::replace(name.begin(), name.end(), '(', '_'); - std::replace(name.begin(), name.end(), ')', '_'); - return name; -} - -std::vector GetMultiplePlayerTestConfigs() { - const int kMaxPlayerInstancesPerConfig = 3; - const int kMaxTotalPlayerInstances = 5; - - const std::vector& audio_test_files = GetAudioTestFiles(); - const std::vector& video_test_files = GetVideoTestFiles(); - const std::vector& output_modes = GetPlayerOutputModes(); - const std::vector& key_systems = GetKeySystems(); - - FakeGraphicsContextProvider fake_graphics_context_provider; - std::vector configs_to_return; - - for (auto key_system : key_systems) { - std::vector supported_configs; - for (auto video_filename : video_test_files) { - VideoDmpReader dmp_reader(video_filename, - VideoDmpReader::kEnableReadOnDemand); - SB_DCHECK(dmp_reader.number_of_video_buffers() > 0); - if (SbMediaCanPlayMimeAndKeySystem(dmp_reader.video_mime_type().c_str(), - key_system)) { - supported_configs.push_back( - {nullptr, video_filename, kSbPlayerOutputModeInvalid, key_system}); - } - } - - if (supported_configs.empty()) { - continue; - } - - std::vector supported_audio_files; - for (auto audio_filename : audio_test_files) { - VideoDmpReader dmp_reader(audio_filename, - VideoDmpReader::kEnableReadOnDemand); - SB_DCHECK(dmp_reader.number_of_audio_buffers() > 0); - if (SbMediaCanPlayMimeAndKeySystem(dmp_reader.audio_mime_type().c_str(), - key_system)) { - supported_audio_files.push_back(audio_filename); - } - } - - // TODO: use SbPlayerGetPreferredOutputMode() to choose output mode. - for (auto output_mode : output_modes) { - for (auto& config : supported_configs) { - config.output_mode = output_mode; - } - - MaximumPlayerConfigurationExplorer explorer( - supported_configs, kMaxPlayerInstancesPerConfig, - kMaxTotalPlayerInstances, &fake_graphics_context_provider); - std::vector explorer_output = - explorer.CalculateMaxTestConfigs(); - - // Add audio codec to configs using round robin algorithm. - for (auto& multi_player_test_config : explorer_output) { - int audio_file_index = 0; - for (auto& config : multi_player_test_config) { - config.audio_filename = supported_audio_files[audio_file_index]; - audio_file_index = - (audio_file_index + 1) % supported_audio_files.size(); - } - } - - configs_to_return.insert(configs_to_return.end(), explorer_output.begin(), - explorer_output.end()); - } +TEST_F(MultiplePlayerTest, SunnyDay) { + for (auto multiplayer_test_config : multiplayer_test_configs_) { + SB_LOG(INFO) << "Start testing: " + << GetMultipleSbPlayerTestConfigDescription( + multiplayer_test_config); + RunTest(WriteSamples, multiplayer_test_config); } - return configs_to_return; } -INSTANTIATE_TEST_CASE_P(MultiplePlayerTests, - MultiplePlayerTest, - ValuesIn(GetMultiplePlayerTestConfigs()), - GetMultipleSbPlayerTestConfigName); - } // namespace } // namespace nplb } // namespace starboard diff --git a/starboard/nplb/player_get_audio_configuration_test.cc b/starboard/nplb/player_get_audio_configuration_test.cc index 020d161f239b..c3fdbee4f0b1 100644 --- a/starboard/nplb/player_get_audio_configuration_test.cc +++ b/starboard/nplb/player_get_audio_configuration_test.cc @@ -15,10 +15,10 @@ #include #include "starboard/nplb/player_test_fixture.h" +#include "starboard/nplb/testcase_helpers.h" #include "starboard/string.h" #include "starboard/testing/fake_graphics_context_provider.h" #include "testing/gtest/include/gtest/gtest.h" -#include "starboard/nplb/testcase_helpers.h" #if SB_API_VERSION >= 15 @@ -39,6 +39,8 @@ typedef SbPlayerTestFixture::GroupedSamples GroupedSamples; class SbPlayerGetAudioConfigurationTest : public ::testing::TestWithParam { public: + void SetUp() override { SkipTestIfUnsupported(GetParam()); } + void ReadAudioConfigurations( const SbPlayerTestFixture& player_fixture, std::vector* configurations) const { @@ -275,7 +277,7 @@ TEST_P(SbPlayerGetAudioConfigurationTest, MultipleSeeks) { INSTANTIATE_TEST_CASE_P(SbPlayerGetAudioConfigurationTests, SbPlayerGetAudioConfigurationTest, - ValuesIn(GetSupportedSbPlayerTestConfigs()), + ValuesIn(GetAllPlayerTestConfigs()), GetSbPlayerTestConfigName); } // namespace diff --git a/starboard/nplb/player_get_media_time_test.cc b/starboard/nplb/player_get_media_time_test.cc index fefcce231171..efc1e5feec51 100644 --- a/starboard/nplb/player_get_media_time_test.cc +++ b/starboard/nplb/player_get_media_time_test.cc @@ -29,6 +29,8 @@ typedef testing::FakeGraphicsContextProvider FakeGraphicsContextProvider; class SbPlayerGetMediaTimeTest : public ::testing::TestWithParam { protected: + void SetUp() override { SkipTestIfUnsupported(GetParam()); } + FakeGraphicsContextProvider fake_graphics_context_provider_; }; @@ -158,25 +160,9 @@ TEST_P(SbPlayerGetMediaTimeTest, TimeAfterSeek) { << "."; } -std::vector GetSupportedTestConfigs() { - static std::vector supported_configs; - if (supported_configs.size() > 0) { - return supported_configs; - } - - const std::vector& key_systems = GetKeySystems(); - for (auto key_system : key_systems) { - std::vector configs = - GetSupportedSbPlayerTestConfigs(key_system); - supported_configs.insert(supported_configs.end(), configs.begin(), - configs.end()); - } - return supported_configs; -} - INSTANTIATE_TEST_CASE_P(SbPlayerGetMediaTimeTests, SbPlayerGetMediaTimeTest, - ValuesIn(GetSupportedTestConfigs()), + ValuesIn(GetAllPlayerTestConfigs()), GetSbPlayerTestConfigName); } // namespace diff --git a/starboard/nplb/player_test_util.cc b/starboard/nplb/player_test_util.cc index 0ee9b252baf7..a4644039f650 100644 --- a/starboard/nplb/player_test_util.cc +++ b/starboard/nplb/player_test_util.cc @@ -114,82 +114,41 @@ std::vector GetKeySystems() { return key_systems; } -std::vector GetSupportedSbPlayerTestConfigs( - const char* key_system) { - SB_DCHECK(key_system); - +std::vector GetAllPlayerTestConfigs() { const char* kEmptyName = NULL; + static std::vector test_configs; - std::vector supported_audio_files; - supported_audio_files.push_back(kEmptyName); - for (auto audio_filename : kAudioTestFiles) { - VideoDmpReader dmp_reader(audio_filename, - VideoDmpReader::kEnableReadOnDemand); - SB_DCHECK(dmp_reader.number_of_audio_buffers() > 0); - if (SbMediaCanPlayMimeAndKeySystem(dmp_reader.audio_mime_type().c_str(), - key_system)) { - supported_audio_files.push_back(audio_filename); - } - } - - std::vector supported_video_files; - supported_video_files.push_back(kEmptyName); - for (auto video_filename : kVideoTestFiles) { - VideoDmpReader dmp_reader(video_filename, - VideoDmpReader::kEnableReadOnDemand); - SB_DCHECK(dmp_reader.number_of_video_buffers() > 0); - if (SbMediaCanPlayMimeAndKeySystem(dmp_reader.video_mime_type().c_str(), - key_system)) { - supported_video_files.push_back(video_filename); - } + if (!test_configs.empty()) { + return test_configs; } - std::vector test_configs; - for (auto audio_filename : supported_audio_files) { - SbMediaAudioCodec audio_codec = kSbMediaAudioCodecNone; - if (audio_filename) { - VideoDmpReader audio_dmp_reader(audio_filename, - VideoDmpReader::kEnableReadOnDemand); - audio_codec = audio_dmp_reader.audio_codec(); - } - for (auto video_filename : supported_video_files) { - SbMediaVideoCodec video_codec = kSbMediaVideoCodecNone; - if (video_filename) { - VideoDmpReader video_dmp_reader(video_filename, - VideoDmpReader::kEnableReadOnDemand); - video_codec = video_dmp_reader.video_codec(); + for (auto key_system : kKeySystems) { + for (auto output_mode : kOutputModes) { + // Add audio only tests. + for (auto audio_filename : kAudioTestFiles) { + test_configs.emplace_back(audio_filename, kEmptyName, output_mode, + key_system); } - if (audio_codec == kSbMediaAudioCodecNone && - video_codec == kSbMediaVideoCodecNone) { - continue; + for (auto audio_filename : kAudioOnlyTestFiles) { + test_configs.emplace_back(audio_filename, kEmptyName, output_mode, + key_system); } - - for (auto output_mode : kOutputModes) { - if (IsOutputModeSupported(output_mode, audio_codec, video_codec, - key_system)) { - test_configs.emplace_back(audio_filename, video_filename, output_mode, - key_system); - } + // Add video only tests. + for (auto video_filename : kVideoTestFiles) { + test_configs.emplace_back(kEmptyName, video_filename, output_mode, + key_system); } - } - } - - for (auto audio_filename : kAudioOnlyTestFiles) { - VideoDmpReader dmp_reader(audio_filename, - VideoDmpReader::kEnableReadOnDemand); - SB_DCHECK(dmp_reader.number_of_audio_buffers() > 0); - if (SbMediaCanPlayMimeAndKeySystem(dmp_reader.audio_mime_type().c_str(), - key_system)) { - for (auto output_mode : kOutputModes) { - if (IsOutputModeSupported(output_mode, dmp_reader.audio_codec(), - kSbMediaVideoCodecNone, key_system)) { - test_configs.emplace_back(audio_filename, kEmptyName, output_mode, + // Add audio and video tests. + for (auto audio_filename : kAudioTestFiles) { + for (auto video_filename : kVideoTestFiles) { + test_configs.emplace_back(audio_filename, video_filename, output_mode, key_system); } } } } + SB_DCHECK(!test_configs.empty()); return test_configs; } @@ -213,6 +172,37 @@ std::string GetSbPlayerTestConfigName( return name; } +void SkipTestIfUnsupported(const SbPlayerTestConfig& config) { + SbMediaAudioCodec audio_codec = kSbMediaAudioCodecNone; + if (config.audio_filename && strlen(config.audio_filename) > 0) { + VideoDmpReader dmp_reader(config.audio_filename, + VideoDmpReader::kEnableReadOnDemand); + SB_DCHECK(dmp_reader.number_of_audio_buffers() > 0); + if (!SbMediaCanPlayMimeAndKeySystem(dmp_reader.audio_mime_type().c_str(), + config.key_system)) { + GTEST_SKIP() << "Skipping tests due to unsupported audio config."; + } + audio_codec = dmp_reader.audio_codec(); + } + + SbMediaVideoCodec video_codec = kSbMediaVideoCodecNone; + if (config.video_filename && strlen(config.video_filename) > 0) { + VideoDmpReader dmp_reader(config.video_filename, + VideoDmpReader::kEnableReadOnDemand); + SB_DCHECK(dmp_reader.number_of_video_buffers() > 0); + if (!SbMediaCanPlayMimeAndKeySystem(dmp_reader.video_mime_type().c_str(), + config.key_system)) { + GTEST_SKIP() << "Skipping tests due to unsupported video config."; + } + video_codec = dmp_reader.video_codec(); + } + + if (!IsOutputModeSupported(config.output_mode, audio_codec, video_codec, + config.key_system)) { + GTEST_SKIP() << "Skipping tests due to unsupported output mode."; + } +} + void DummyDeallocateSampleFunc(SbPlayer player, void* context, const void* sample_buffer) {} diff --git a/starboard/nplb/player_test_util.h b/starboard/nplb/player_test_util.h index 37ef5b1faabd..34601e048fd7 100644 --- a/starboard/nplb/player_test_util.h +++ b/starboard/nplb/player_test_util.h @@ -59,13 +59,13 @@ std::vector GetAudioTestFiles(); std::vector GetVideoTestFiles(); std::vector GetPlayerOutputModes(); std::vector GetKeySystems(); - -std::vector GetSupportedSbPlayerTestConfigs( - const char* key_system = ""); +std::vector GetAllPlayerTestConfigs(); std::string GetSbPlayerTestConfigName( ::testing::TestParamInfo info); +void SkipTestIfUnsupported(const SbPlayerTestConfig& config); + void DummyDeallocateSampleFunc(SbPlayer player, void* context, const void* sample_buffer); diff --git a/starboard/nplb/player_write_sample_test.cc b/starboard/nplb/player_write_sample_test.cc index a929765b04bd..48ed21a801f5 100644 --- a/starboard/nplb/player_write_sample_test.cc +++ b/starboard/nplb/player_write_sample_test.cc @@ -18,10 +18,10 @@ #include "starboard/nplb/player_test_fixture.h" #include "starboard/nplb/player_test_util.h" #include "starboard/nplb/posix_compliance/posix_thread_helpers.h" +#include "starboard/nplb/testcase_helpers.h" #include "starboard/string.h" #include "starboard/testing/fake_graphics_context_provider.h" #include "testing/gtest/include/gtest/gtest.h" -#include "starboard/nplb/testcase_helpers.h" namespace starboard { namespace nplb { @@ -35,6 +35,8 @@ typedef testing::FakeGraphicsContextProvider FakeGraphicsContextProvider; class SbPlayerWriteSampleTest : public ::testing::TestWithParam { protected: + void SetUp() override { SkipTestIfUnsupported(GetParam()); } + FakeGraphicsContextProvider fake_graphics_context_provider_; }; @@ -417,25 +419,9 @@ TEST_P(SbPlayerWriteSampleTest, SecondaryPlayerTest) { secondary_player_thread.Join(); } -std::vector GetSupportedTestConfigs() { - static std::vector supported_configs; - if (supported_configs.size() > 0) { - return supported_configs; - } - - const std::vector& key_systems = GetKeySystems(); - for (auto key_system : key_systems) { - std::vector configs = - GetSupportedSbPlayerTestConfigs(key_system); - supported_configs.insert(supported_configs.end(), configs.begin(), - configs.end()); - } - return supported_configs; -} - INSTANTIATE_TEST_CASE_P(SbPlayerWriteSampleTests, SbPlayerWriteSampleTest, - ValuesIn(GetSupportedTestConfigs()), + ValuesIn(GetAllPlayerTestConfigs()), GetSbPlayerTestConfigName); } // namespace diff --git a/starboard/win/win32/test_filters.py b/starboard/win/win32/test_filters.py index 2a684d98bae0..0fff9dc90017 100644 --- a/starboard/win/win32/test_filters.py +++ b/starboard/win/win32/test_filters.py @@ -36,7 +36,7 @@ 'SbSystemGetStackTest.SunnyDayStackDirection', # These tests are failing. Enable them once they're supported. - 'MultiplePlayerTests/*beneath_the_canopy_137_avc_dmp*', + 'MultiplePlayerTests/*', 'SbMediaSetAudioWriteDurationTests/SbMediaSetAudioWriteDurationTest.WriteContinuedLimitedInput*', 'SbPlayerWriteSampleTests/SbPlayerWriteSampleTest.SecondaryPlayerTest/*',