1 /*
2 * Copyright (c) 2019 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include "test/gtest.h"
12 #include "test/peer_scenario/peer_scenario.h"
13 #include "test/peer_scenario/peer_scenario_client.h"
14
15 namespace webrtc {
16 namespace test {
17 #if defined(WEBRTC_WIN)
18 #define MAYBE_PsnrIsCollected DISABLED_PsnrIsCollected
19 #else
20 #define MAYBE_PsnrIsCollected PsnrIsCollected
21 #endif
TEST(PeerScenarioQualityTest,MAYBE_PsnrIsCollected)22 TEST(PeerScenarioQualityTest, MAYBE_PsnrIsCollected) {
23 VideoQualityAnalyzer analyzer;
24 {
25 PeerScenario s(*test_info_);
26 auto caller = s.CreateClient(PeerScenarioClient::Config());
27 auto callee = s.CreateClient(PeerScenarioClient::Config());
28 PeerScenarioClient::VideoSendTrackConfig video_conf;
29 video_conf.generator.squares_video->framerate = 20;
30 auto video = caller->CreateVideo("VIDEO", video_conf);
31 auto link_builder = s.net()->NodeBuilder().delay_ms(100).capacity_kbps(600);
32 s.AttachVideoQualityAnalyzer(&analyzer, video.track, callee);
33 s.SimpleConnection(caller, callee, {link_builder.Build().node},
34 {link_builder.Build().node});
35 s.ProcessMessages(TimeDelta::Seconds(2));
36 // Exit scope to ensure that there's no pending tasks reporting to analyzer.
37 }
38
39 // We expect ca 40 frames to be produced, but to avoid flakiness on slow
40 // machines we only test for 10.
41 EXPECT_GT(analyzer.stats().render.count, 10);
42 EXPECT_GT(analyzer.stats().psnr_with_freeze.Mean(), 20);
43 }
44
45 } // namespace test
46 } // namespace webrtc
47