1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-08-09 20:42:44 +03:00
Files
mvfst/quic/congestion_control/test/CongestionControlFunctionsTest.cpp
Udip Pant 4a9537798e Add correct license headers on some missing files
Summary: ^

Reviewed By: sharma95

Differential Revision: D15172546

fbshipit-source-id: bacc832752a433b86962e77bb19aff4504640e60
2019-05-01 22:42:04 -07:00

75 lines
2.3 KiB
C++

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
#include <quic/congestion_control/CongestionControlFunctions.h>
#include <folly/portability/GTest.h>
#include <quic/QuicConstants.h>
#include <quic/state/StateData.h>
using namespace quic;
using namespace testing;
namespace quic {
namespace test {
class CongestionControlFunctionsTest : public Test {};
TEST_F(CongestionControlFunctionsTest, CalculatePacingRate) {
QuicConnectionStateBase conn(QuicNodeType::Client);
conn.udpSendPacketLen = 1;
std::chrono::microseconds rtt(1000 * 100);
auto result =
calculatePacingRate(conn, 50, std::chrono::milliseconds(10), rtt);
EXPECT_EQ(std::chrono::milliseconds(10), result.first);
EXPECT_EQ(5, result.second);
auto result2 =
calculatePacingRate(conn, 300, std::chrono::milliseconds(1), rtt);
EXPECT_EQ(std::chrono::milliseconds(1), result2.first);
EXPECT_EQ(3, result2.second);
}
TEST_F(CongestionControlFunctionsTest, MinPacingRate) {
QuicConnectionStateBase conn(QuicNodeType::Client);
conn.udpSendPacketLen = 1;
auto result = calculatePacingRate(
conn,
100,
std::chrono::milliseconds(1),
std::chrono::microseconds(1000 * 100));
EXPECT_EQ(std::chrono::milliseconds(2), result.first);
EXPECT_EQ(conn.transportSettings.minCwndInMss, result.second);
}
TEST_F(CongestionControlFunctionsTest, SmallCwnd) {
QuicConnectionStateBase conn(QuicNodeType::Client);
conn.udpSendPacketLen = 1;
auto result = calculatePacingRate(
conn,
10,
std::chrono::milliseconds(1),
std::chrono::microseconds(1000 * 100));
EXPECT_EQ(std::chrono::milliseconds(20), result.first);
EXPECT_EQ(conn.transportSettings.minCwndInMss, result.second);
}
TEST_F(CongestionControlFunctionsTest, RttSmallerThanInterval) {
QuicConnectionStateBase conn(QuicNodeType::Client);
conn.udpSendPacketLen = 1;
auto result = calculatePacingRate(
conn, 10, std::chrono::milliseconds(10), std::chrono::milliseconds(1));
EXPECT_EQ(std::chrono::milliseconds::zero(), result.first);
EXPECT_EQ(
conn.transportSettings.writeConnectionDataPacketsLimit, result.second);
}
} // namespace test
} // namespace quic