Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(717)

Unified Diff: talk/app/webrtc/datachannel_unittest.cc

Issue 1393563002: Moving MediaStreamSignaling logic into PeerConnection. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fixing copyright header Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « talk/app/webrtc/datachannel.cc ('k') | talk/app/webrtc/mediastreamsignaling.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: talk/app/webrtc/datachannel_unittest.cc
diff --git a/talk/app/webrtc/datachannel_unittest.cc b/talk/app/webrtc/datachannel_unittest.cc
index b4f611e215854273839ebe6334ef9664ddaf2819..ff79541478926e11b4daa2ed14804ee42795f242 100644
--- a/talk/app/webrtc/datachannel_unittest.cc
+++ b/talk/app/webrtc/datachannel_unittest.cc
@@ -31,6 +31,7 @@
#include "webrtc/base/gunit.h"
using webrtc::DataChannel;
+using webrtc::SctpSidAllocator;
class FakeDataChannelObserver : public webrtc::DataChannelObserver {
public:
@@ -506,3 +507,75 @@ TEST_F(SctpDataChannelTest, NeverOpened) {
webrtc_data_channel_->OnTransportChannelCreated();
webrtc_data_channel_->Close();
}
+
+class SctpSidAllocatorTest : public testing::Test {
+ protected:
+ SctpSidAllocator allocator_;
+};
+
+// Verifies that an even SCTP id is allocated for SSL_CLIENT and an odd id for
+// SSL_SERVER.
+TEST_F(SctpSidAllocatorTest, SctpIdAllocationBasedOnRole) {
+ int id;
+ EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_SERVER, &id));
+ EXPECT_EQ(1, id);
+ EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &id));
+ EXPECT_EQ(0, id);
+ EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_SERVER, &id));
+ EXPECT_EQ(3, id);
+ EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &id));
+ EXPECT_EQ(2, id);
+}
+
+// Verifies that SCTP ids of existing DataChannels are not reused.
+TEST_F(SctpSidAllocatorTest, SctpIdAllocationNoReuse) {
+ int old_id = 1;
+ EXPECT_TRUE(allocator_.ReserveSid(old_id));
+
+ int new_id;
+ EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_SERVER, &new_id));
+ EXPECT_NE(old_id, new_id);
+
+ old_id = 0;
+ EXPECT_TRUE(allocator_.ReserveSid(old_id));
+ EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &new_id));
+ EXPECT_NE(old_id, new_id);
+}
+
+// Verifies that SCTP ids of removed DataChannels can be reused.
+TEST_F(SctpSidAllocatorTest, SctpIdReusedForRemovedDataChannel) {
+ int odd_id = 1;
+ int even_id = 0;
+ EXPECT_TRUE(allocator_.ReserveSid(odd_id));
+ EXPECT_TRUE(allocator_.ReserveSid(even_id));
+
+ int allocated_id = -1;
+ EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_SERVER, &allocated_id));
+ EXPECT_EQ(odd_id + 2, allocated_id);
+
+ EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id));
+ EXPECT_EQ(even_id + 2, allocated_id);
+
+ EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_SERVER, &allocated_id));
+ EXPECT_EQ(odd_id + 4, allocated_id);
+
+ EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id));
+ EXPECT_EQ(even_id + 4, allocated_id);
+
+ allocator_.ReleaseSid(odd_id);
+ allocator_.ReleaseSid(even_id);
+
+ // Verifies that removed ids are reused.
+ EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_SERVER, &allocated_id));
+ EXPECT_EQ(odd_id, allocated_id);
+
+ EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id));
+ EXPECT_EQ(even_id, allocated_id);
+
+ // Verifies that used higher ids are not reused.
+ EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_SERVER, &allocated_id));
+ EXPECT_EQ(odd_id + 6, allocated_id);
+
+ EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id));
+ EXPECT_EQ(even_id + 6, allocated_id);
+}
« no previous file with comments | « talk/app/webrtc/datachannel.cc ('k') | talk/app/webrtc/mediastreamsignaling.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698