blob: 15b1cc5830fed2a827ae499bc33d5d9a6efffb24 [file] [log] [blame]
stefan@webrtc.org82462aa2014-10-23 11:57:05 +00001/*
2 * Copyright (c) 2014 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 <limits>
12
13#include "testing/gtest/include/gtest/gtest.h"
14#include "webrtc/modules/pacing/bitrate_prober.h"
15
16namespace webrtc {
17
18TEST(BitrateProberTest, VerifyStatesAndTimeBetweenProbes) {
19 BitrateProber prober;
20 EXPECT_FALSE(prober.IsProbing());
21 int64_t now_ms = 0;
22 EXPECT_EQ(std::numeric_limits<int>::max(), prober.TimeUntilNextProbe(now_ms));
23
24 prober.SetEnabled(true);
25 EXPECT_FALSE(prober.IsProbing());
26
27 prober.MaybeInitializeProbe(300000);
28 EXPECT_TRUE(prober.IsProbing());
29
30 EXPECT_EQ(0, prober.TimeUntilNextProbe(now_ms));
31 prober.PacketSent(now_ms, 1000);
32
33 for (int i = 0; i < 4; ++i) {
34 EXPECT_EQ(10, prober.TimeUntilNextProbe(now_ms));
35 now_ms += 5;
36 EXPECT_EQ(5, prober.TimeUntilNextProbe(now_ms));
37 now_ms += 5;
38 EXPECT_EQ(0, prober.TimeUntilNextProbe(now_ms));
39 prober.PacketSent(now_ms, 1000);
40 }
41 for (int i = 0; i < 5; ++i) {
42 EXPECT_EQ(6, prober.TimeUntilNextProbe(now_ms));
43 now_ms += 6;
44 EXPECT_EQ(0, prober.TimeUntilNextProbe(now_ms));
45 prober.PacketSent(now_ms, 1000);
46 }
47 for (int i = 0; i < 5; ++i) {
48 EXPECT_EQ(4, prober.TimeUntilNextProbe(now_ms));
49 now_ms += 4;
50 EXPECT_EQ(0, prober.TimeUntilNextProbe(now_ms));
51 prober.PacketSent(now_ms, 1000);
52 }
53
54 EXPECT_EQ(std::numeric_limits<int>::max(), prober.TimeUntilNextProbe(now_ms));
55 EXPECT_FALSE(prober.IsProbing());
56}
57} // namespace webrtc