blob: fac6a721337018d1c141bf2f71ace5ec65095575 [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
stefan@webrtc.org82462aa2014-10-23 11:57:05 +000033 for (int i = 0; i < 5; ++i) {
stefan@webrtc.orgd839e0a2014-11-04 19:33:55 +000034 EXPECT_EQ(8, prober.TimeUntilNextProbe(now_ms));
35 now_ms += 4;
36 EXPECT_EQ(4, prober.TimeUntilNextProbe(now_ms));
37 now_ms += 4;
stefan@webrtc.org82462aa2014-10-23 11:57:05 +000038 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(4, prober.TimeUntilNextProbe(now_ms));
43 now_ms += 4;
44 EXPECT_EQ(0, prober.TimeUntilNextProbe(now_ms));
45 prober.PacketSent(now_ms, 1000);
46 }
47
48 EXPECT_EQ(std::numeric_limits<int>::max(), prober.TimeUntilNextProbe(now_ms));
49 EXPECT_FALSE(prober.IsProbing());
50}
51} // namespace webrtc