mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-14 14:20:45 +01:00

IceConfig contains a set of parameters that affect the behavior of ICE. Inconsistent or conflicting parameters lead to erroneous or unpredicatble behavior in the network stack. Sanity checks are now added to validate IceConfig. TBR=magjed@webrtc.org Bug: webrtc:8993 Change-Id: I708bc3f1ef970872754a82a47a509bda15061ca6 Reviewed-on: https://webrtc-review.googlesource.com/60847 Commit-Queue: Qingsi Wang <qingsi@google.com> Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org> Reviewed-by: Peter Thatcher <pthatcher@webrtc.org> Cr-Commit-Position: refs/heads/master@{#22664}
101 lines
4.1 KiB
Text
101 lines
4.1 KiB
Text
/*
|
|
* Copyright 2015 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
#include <vector>
|
|
|
|
#include "rtc_base/gunit.h"
|
|
|
|
#import "NSString+StdString.h"
|
|
#import "RTCConfiguration+Private.h"
|
|
#import "WebRTC/RTCConfiguration.h"
|
|
#import "WebRTC/RTCPeerConnection.h"
|
|
#import "WebRTC/RTCPeerConnectionFactory.h"
|
|
#import "WebRTC/RTCIceServer.h"
|
|
#import "WebRTC/RTCMediaConstraints.h"
|
|
|
|
@interface RTCPeerConnectionTest : NSObject
|
|
- (void)testConfigurationGetter;
|
|
@end
|
|
|
|
@implementation RTCPeerConnectionTest
|
|
|
|
- (void)testConfigurationGetter {
|
|
NSArray *urlStrings = @[ @"stun:stun1.example.net" ];
|
|
RTCIceServer *server = [[RTCIceServer alloc] initWithURLStrings:urlStrings];
|
|
|
|
RTCConfiguration *config = [[RTCConfiguration alloc] init];
|
|
config.iceServers = @[ server ];
|
|
config.iceTransportPolicy = RTCIceTransportPolicyRelay;
|
|
config.bundlePolicy = RTCBundlePolicyMaxBundle;
|
|
config.rtcpMuxPolicy = RTCRtcpMuxPolicyNegotiate;
|
|
config.tcpCandidatePolicy = RTCTcpCandidatePolicyDisabled;
|
|
config.candidateNetworkPolicy = RTCCandidateNetworkPolicyLowCost;
|
|
const int maxPackets = 60;
|
|
const int timeout = 1500;
|
|
const int interval = 2000;
|
|
config.audioJitterBufferMaxPackets = maxPackets;
|
|
config.audioJitterBufferFastAccelerate = YES;
|
|
config.iceConnectionReceivingTimeout = timeout;
|
|
config.iceBackupCandidatePairPingInterval = interval;
|
|
config.continualGatheringPolicy =
|
|
RTCContinualGatheringPolicyGatherContinually;
|
|
config.shouldPruneTurnPorts = YES;
|
|
|
|
RTCMediaConstraints *contraints = [[RTCMediaConstraints alloc] initWithMandatoryConstraints:@{}
|
|
optionalConstraints:nil];
|
|
RTCPeerConnectionFactory *factory = [[RTCPeerConnectionFactory alloc] init];
|
|
|
|
RTCConfiguration *newConfig;
|
|
@autoreleasepool {
|
|
RTCPeerConnection *peerConnection =
|
|
[factory peerConnectionWithConfiguration:config constraints:contraints delegate:nil];
|
|
newConfig = peerConnection.configuration;
|
|
|
|
EXPECT_TRUE([peerConnection setBweMinBitrateBps:[NSNumber numberWithInt:100000]
|
|
currentBitrateBps:[NSNumber numberWithInt:5000000]
|
|
maxBitrateBps:[NSNumber numberWithInt:500000000]]);
|
|
EXPECT_FALSE([peerConnection setBweMinBitrateBps:[NSNumber numberWithInt:2]
|
|
currentBitrateBps:[NSNumber numberWithInt:1]
|
|
maxBitrateBps:nil]);
|
|
}
|
|
|
|
EXPECT_EQ([config.iceServers count], [newConfig.iceServers count]);
|
|
RTCIceServer *newServer = newConfig.iceServers[0];
|
|
RTCIceServer *origServer = config.iceServers[0];
|
|
std::string origUrl = origServer.urlStrings.firstObject.UTF8String;
|
|
std::string url = newServer.urlStrings.firstObject.UTF8String;
|
|
EXPECT_EQ(origUrl, url);
|
|
|
|
EXPECT_EQ(config.iceTransportPolicy, newConfig.iceTransportPolicy);
|
|
EXPECT_EQ(config.bundlePolicy, newConfig.bundlePolicy);
|
|
EXPECT_EQ(config.rtcpMuxPolicy, newConfig.rtcpMuxPolicy);
|
|
EXPECT_EQ(config.tcpCandidatePolicy, newConfig.tcpCandidatePolicy);
|
|
EXPECT_EQ(config.candidateNetworkPolicy, newConfig.candidateNetworkPolicy);
|
|
EXPECT_EQ(config.audioJitterBufferMaxPackets, newConfig.audioJitterBufferMaxPackets);
|
|
EXPECT_EQ(config.audioJitterBufferFastAccelerate, newConfig.audioJitterBufferFastAccelerate);
|
|
EXPECT_EQ(config.iceConnectionReceivingTimeout, newConfig.iceConnectionReceivingTimeout);
|
|
EXPECT_EQ(config.iceBackupCandidatePairPingInterval,
|
|
newConfig.iceBackupCandidatePairPingInterval);
|
|
EXPECT_EQ(config.continualGatheringPolicy, newConfig.continualGatheringPolicy);
|
|
EXPECT_EQ(config.shouldPruneTurnPorts, newConfig.shouldPruneTurnPorts);
|
|
}
|
|
|
|
@end
|
|
|
|
TEST(RTCPeerConnectionTest, ConfigurationGetterTest) {
|
|
@autoreleasepool {
|
|
RTCPeerConnectionTest *test = [[RTCPeerConnectionTest alloc] init];
|
|
[test testConfigurationGetter];
|
|
}
|
|
}
|
|
|
|
|