| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | 2  *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | 
| 3  * | 3  * | 
| 4  *  Use of this source code is governed by a BSD-style license | 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 | 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 | 6  *  tree. An additional intellectual property rights grant can be found | 
| 7  *  in the file PATENTS.  All contributing project authors may | 7  *  in the file PATENTS.  All contributing project authors may | 
| 8  *  be found in the AUTHORS file in the root of the source tree. | 8  *  be found in the AUTHORS file in the root of the source tree. | 
| 9  */ | 9  */ | 
| 10 | 10 | 
| 11 #include <limits> | 11 #include <limits> | 
| 12 | 12 | 
| 13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" | 
| 14 #include "webrtc/modules/pacing/bitrate_prober.h" | 14 #include "webrtc/modules/pacing/bitrate_prober.h" | 
| 15 | 15 | 
| 16 namespace webrtc { | 16 namespace webrtc { | 
| 17 | 17 | 
| 18 TEST(BitrateProberTest, VerifyStatesAndTimeBetweenProbes) { | 18 TEST(BitrateProberTest, VerifyStatesAndTimeBetweenProbes) { | 
| 19   BitrateProber prober; | 19   BitrateProber prober; | 
| 20   EXPECT_FALSE(prober.IsProbing()); | 20   EXPECT_FALSE(prober.IsProbing()); | 
| 21   int64_t now_ms = 0; | 21   int64_t now_ms = 0; | 
| 22   EXPECT_EQ(-1, prober.TimeUntilNextProbe(now_ms)); | 22   EXPECT_EQ(-1, prober.TimeUntilNextProbe(now_ms)); | 
| 23 | 23 | 
| 24   prober.SetEnabled(true); | 24   prober.ProbeAtBitrate(900000, 6); | 
|  | 25   prober.ProbeAtBitrate(1800000, 5); | 
| 25   EXPECT_FALSE(prober.IsProbing()); | 26   EXPECT_FALSE(prober.IsProbing()); | 
| 26 | 27 | 
| 27   prober.OnIncomingPacket(300000, 1000, now_ms); | 28   prober.OnIncomingPacket(1000); | 
| 28   EXPECT_TRUE(prober.IsProbing()); | 29   EXPECT_TRUE(prober.IsProbing()); | 
| 29   EXPECT_EQ(0, prober.CurrentClusterId()); | 30   EXPECT_EQ(0, prober.CurrentClusterId()); | 
| 30 | 31 | 
| 31   // First packet should probe as soon as possible. | 32   // First packet should probe as soon as possible. | 
| 32   EXPECT_EQ(0, prober.TimeUntilNextProbe(now_ms)); | 33   EXPECT_EQ(0, prober.TimeUntilNextProbe(now_ms)); | 
| 33   prober.PacketSent(now_ms, 1000); | 34   prober.PacketSent(now_ms, 1000); | 
| 34 | 35 | 
| 35   for (int i = 0; i < 5; ++i) { | 36   for (int i = 0; i < 5; ++i) { | 
| 36     EXPECT_EQ(8, prober.TimeUntilNextProbe(now_ms)); | 37     EXPECT_EQ(8, prober.TimeUntilNextProbe(now_ms)); | 
| 37     now_ms += 4; | 38     now_ms += 4; | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 52   EXPECT_EQ(-1, prober.TimeUntilNextProbe(now_ms)); | 53   EXPECT_EQ(-1, prober.TimeUntilNextProbe(now_ms)); | 
| 53   EXPECT_FALSE(prober.IsProbing()); | 54   EXPECT_FALSE(prober.IsProbing()); | 
| 54 } | 55 } | 
| 55 | 56 | 
| 56 TEST(BitrateProberTest, DoesntProbeWithoutRecentPackets) { | 57 TEST(BitrateProberTest, DoesntProbeWithoutRecentPackets) { | 
| 57   BitrateProber prober; | 58   BitrateProber prober; | 
| 58   EXPECT_FALSE(prober.IsProbing()); | 59   EXPECT_FALSE(prober.IsProbing()); | 
| 59   int64_t now_ms = 0; | 60   int64_t now_ms = 0; | 
| 60   EXPECT_EQ(-1, prober.TimeUntilNextProbe(now_ms)); | 61   EXPECT_EQ(-1, prober.TimeUntilNextProbe(now_ms)); | 
| 61 | 62 | 
| 62   prober.SetEnabled(true); | 63   prober.ProbeAtBitrate(900000, 6); | 
| 63   EXPECT_FALSE(prober.IsProbing()); | 64   EXPECT_FALSE(prober.IsProbing()); | 
| 64 | 65 | 
| 65   prober.OnIncomingPacket(300000, 1000, now_ms); | 66   prober.OnIncomingPacket(1000); | 
| 66   EXPECT_TRUE(prober.IsProbing()); | 67   EXPECT_TRUE(prober.IsProbing()); | 
| 67   EXPECT_EQ(0, prober.TimeUntilNextProbe(now_ms)); | 68   EXPECT_EQ(0, prober.TimeUntilNextProbe(now_ms)); | 
| 68   prober.PacketSent(now_ms, 1000); | 69   prober.PacketSent(now_ms, 1000); | 
| 69   // Let time pass, no large enough packets put into prober. | 70   // Let time pass, no large enough packets put into prober. | 
| 70   now_ms += 6000; | 71   now_ms += 6000; | 
| 71   EXPECT_EQ(-1, prober.TimeUntilNextProbe(now_ms)); | 72   EXPECT_EQ(-1, prober.TimeUntilNextProbe(now_ms)); | 
| 72   // Insert a small packet, not a candidate for probing. | 73   // Insert a small packet, not a candidate for probing. | 
| 73   prober.OnIncomingPacket(300000, 100, now_ms); | 74   prober.OnIncomingPacket(100); | 
| 74   prober.PacketSent(now_ms, 100); | 75   prober.PacketSent(now_ms, 100); | 
| 75   EXPECT_EQ(-1, prober.TimeUntilNextProbe(now_ms)); | 76   EXPECT_EQ(-1, prober.TimeUntilNextProbe(now_ms)); | 
| 76   // Insert a large-enough packet after downtime while probing should reset to | 77   // Insert a large-enough packet after downtime while probing should reset to | 
| 77   // perform a new probe since the requested one didn't finish. | 78   // perform a new probe since the requested one didn't finish. | 
| 78   prober.OnIncomingPacket(300000, 1000, now_ms); | 79   prober.OnIncomingPacket(1000); | 
| 79   EXPECT_EQ(0, prober.TimeUntilNextProbe(now_ms)); | 80   EXPECT_EQ(0, prober.TimeUntilNextProbe(now_ms)); | 
| 80   prober.PacketSent(now_ms, 1000); | 81   prober.PacketSent(now_ms, 1000); | 
| 81   // Next packet should be part of new probe and be sent with non-zero delay. | 82   // Next packet should be part of new probe and be sent with non-zero delay. | 
| 82   prober.OnIncomingPacket(300000, 1000, now_ms); | 83   prober.OnIncomingPacket(1000); | 
| 83   EXPECT_GT(prober.TimeUntilNextProbe(now_ms), 0); | 84   EXPECT_GT(prober.TimeUntilNextProbe(now_ms), 0); | 
| 84 } | 85 } | 
| 85 | 86 | 
| 86 TEST(BitrateProberTest, DoesntInitializeProbingForSmallPackets) { | 87 TEST(BitrateProberTest, DoesntInitializeProbingForSmallPackets) { | 
| 87   BitrateProber prober; | 88   BitrateProber prober; | 
| 88   prober.SetEnabled(true); | 89   prober.SetEnabled(true); | 
| 89   EXPECT_FALSE(prober.IsProbing()); | 90   EXPECT_FALSE(prober.IsProbing()); | 
| 90 | 91 | 
| 91   prober.OnIncomingPacket(300000, 100, 0); | 92   prober.OnIncomingPacket(100); | 
| 92   EXPECT_FALSE(prober.IsProbing()); | 93   EXPECT_FALSE(prober.IsProbing()); | 
| 93 } | 94 } | 
| 94 | 95 | 
| 95 }  // namespace webrtc | 96 }  // namespace webrtc | 
| OLD | NEW | 
|---|