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

Side by Side Diff: webrtc/p2p/base/stun_unittest.cc

Issue 2665343002: Change StunMessage::AddAttribute return type from bool to void. (Closed)
Patch Set: Created 3 years, 10 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 867 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 msg.SetType(STUN_BINDING_REQUEST); 878 msg.SetType(STUN_BINDING_REQUEST);
879 msg.SetTransactionID( 879 msg.SetTransactionID(
880 std::string(reinterpret_cast<const char*>(kTestTransactionId1), 880 std::string(reinterpret_cast<const char*>(kTestTransactionId1),
881 kStunTransactionIdLength)); 881 kStunTransactionIdLength));
882 CheckStunTransactionID(msg, kTestTransactionId1, kStunTransactionIdLength); 882 CheckStunTransactionID(msg, kTestTransactionId1, kStunTransactionIdLength);
883 883
884 StunAddressAttribute* addr = 884 StunAddressAttribute* addr =
885 StunAttribute::CreateAddress(STUN_ATTR_MAPPED_ADDRESS); 885 StunAttribute::CreateAddress(STUN_ATTR_MAPPED_ADDRESS);
886 rtc::SocketAddress test_addr(test_ip, kTestMessagePort2); 886 rtc::SocketAddress test_addr(test_ip, kTestMessagePort2);
887 addr->SetAddress(test_addr); 887 addr->SetAddress(test_addr);
888 EXPECT_TRUE(msg.AddAttribute(addr)); 888 msg.AddAttribute(addr);
889 889
890 CheckStunHeader(msg, STUN_BINDING_REQUEST, (size - 20)); 890 CheckStunHeader(msg, STUN_BINDING_REQUEST, (size - 20));
891 891
892 rtc::ByteBufferWriter out; 892 rtc::ByteBufferWriter out;
893 EXPECT_TRUE(msg.Write(&out)); 893 EXPECT_TRUE(msg.Write(&out));
894 ASSERT_EQ(out.Length(), sizeof(kStunMessageWithIPv6MappedAddress)); 894 ASSERT_EQ(out.Length(), sizeof(kStunMessageWithIPv6MappedAddress));
895 int len1 = static_cast<int>(out.Length()); 895 int len1 = static_cast<int>(out.Length());
896 rtc::ByteBufferReader read_buf(out); 896 rtc::ByteBufferReader read_buf(out);
897 std::string bytes; 897 std::string bytes;
898 read_buf.ReadString(&bytes, len1); 898 read_buf.ReadString(&bytes, len1);
899 ASSERT_EQ(0, memcmp(bytes.c_str(), kStunMessageWithIPv6MappedAddress, len1)); 899 ASSERT_EQ(0, memcmp(bytes.c_str(), kStunMessageWithIPv6MappedAddress, len1));
900 } 900 }
901 901
902 TEST_F(StunTest, WriteMessageWithIPv4AddressAttribute) { 902 TEST_F(StunTest, WriteMessageWithIPv4AddressAttribute) {
903 StunMessage msg; 903 StunMessage msg;
904 size_t size = sizeof(kStunMessageWithIPv4MappedAddress); 904 size_t size = sizeof(kStunMessageWithIPv4MappedAddress);
905 905
906 rtc::IPAddress test_ip(kIPv4TestAddress1); 906 rtc::IPAddress test_ip(kIPv4TestAddress1);
907 907
908 msg.SetType(STUN_BINDING_RESPONSE); 908 msg.SetType(STUN_BINDING_RESPONSE);
909 msg.SetTransactionID( 909 msg.SetTransactionID(
910 std::string(reinterpret_cast<const char*>(kTestTransactionId1), 910 std::string(reinterpret_cast<const char*>(kTestTransactionId1),
911 kStunTransactionIdLength)); 911 kStunTransactionIdLength));
912 CheckStunTransactionID(msg, kTestTransactionId1, kStunTransactionIdLength); 912 CheckStunTransactionID(msg, kTestTransactionId1, kStunTransactionIdLength);
913 913
914 StunAddressAttribute* addr = 914 StunAddressAttribute* addr =
915 StunAttribute::CreateAddress(STUN_ATTR_MAPPED_ADDRESS); 915 StunAttribute::CreateAddress(STUN_ATTR_MAPPED_ADDRESS);
916 rtc::SocketAddress test_addr(test_ip, kTestMessagePort4); 916 rtc::SocketAddress test_addr(test_ip, kTestMessagePort4);
917 addr->SetAddress(test_addr); 917 addr->SetAddress(test_addr);
918 EXPECT_TRUE(msg.AddAttribute(addr)); 918 msg.AddAttribute(addr);
919 919
920 CheckStunHeader(msg, STUN_BINDING_RESPONSE, (size - 20)); 920 CheckStunHeader(msg, STUN_BINDING_RESPONSE, (size - 20));
921 921
922 rtc::ByteBufferWriter out; 922 rtc::ByteBufferWriter out;
923 EXPECT_TRUE(msg.Write(&out)); 923 EXPECT_TRUE(msg.Write(&out));
924 ASSERT_EQ(out.Length(), sizeof(kStunMessageWithIPv4MappedAddress)); 924 ASSERT_EQ(out.Length(), sizeof(kStunMessageWithIPv4MappedAddress));
925 int len1 = static_cast<int>(out.Length()); 925 int len1 = static_cast<int>(out.Length());
926 rtc::ByteBufferReader read_buf(out); 926 rtc::ByteBufferReader read_buf(out);
927 std::string bytes; 927 std::string bytes;
928 read_buf.ReadString(&bytes, len1); 928 read_buf.ReadString(&bytes, len1);
929 ASSERT_EQ(0, memcmp(bytes.c_str(), kStunMessageWithIPv4MappedAddress, len1)); 929 ASSERT_EQ(0, memcmp(bytes.c_str(), kStunMessageWithIPv4MappedAddress, len1));
930 } 930 }
931 931
932 TEST_F(StunTest, WriteMessageWithIPv6XorAddressAttribute) { 932 TEST_F(StunTest, WriteMessageWithIPv6XorAddressAttribute) {
933 StunMessage msg; 933 StunMessage msg;
934 size_t size = sizeof(kStunMessageWithIPv6XorMappedAddress); 934 size_t size = sizeof(kStunMessageWithIPv6XorMappedAddress);
935 935
936 rtc::IPAddress test_ip(kIPv6TestAddress1); 936 rtc::IPAddress test_ip(kIPv6TestAddress1);
937 937
938 msg.SetType(STUN_BINDING_RESPONSE); 938 msg.SetType(STUN_BINDING_RESPONSE);
939 msg.SetTransactionID( 939 msg.SetTransactionID(
940 std::string(reinterpret_cast<const char*>(kTestTransactionId2), 940 std::string(reinterpret_cast<const char*>(kTestTransactionId2),
941 kStunTransactionIdLength)); 941 kStunTransactionIdLength));
942 CheckStunTransactionID(msg, kTestTransactionId2, kStunTransactionIdLength); 942 CheckStunTransactionID(msg, kTestTransactionId2, kStunTransactionIdLength);
943 943
944 StunAddressAttribute* addr = 944 StunAddressAttribute* addr =
945 StunAttribute::CreateXorAddress(STUN_ATTR_XOR_MAPPED_ADDRESS); 945 StunAttribute::CreateXorAddress(STUN_ATTR_XOR_MAPPED_ADDRESS);
946 rtc::SocketAddress test_addr(test_ip, kTestMessagePort1); 946 rtc::SocketAddress test_addr(test_ip, kTestMessagePort1);
947 addr->SetAddress(test_addr); 947 addr->SetAddress(test_addr);
948 EXPECT_TRUE(msg.AddAttribute(addr)); 948 msg.AddAttribute(addr);
949 949
950 CheckStunHeader(msg, STUN_BINDING_RESPONSE, (size - 20)); 950 CheckStunHeader(msg, STUN_BINDING_RESPONSE, (size - 20));
951 951
952 rtc::ByteBufferWriter out; 952 rtc::ByteBufferWriter out;
953 EXPECT_TRUE(msg.Write(&out)); 953 EXPECT_TRUE(msg.Write(&out));
954 ASSERT_EQ(out.Length(), sizeof(kStunMessageWithIPv6XorMappedAddress)); 954 ASSERT_EQ(out.Length(), sizeof(kStunMessageWithIPv6XorMappedAddress));
955 int len1 = static_cast<int>(out.Length()); 955 int len1 = static_cast<int>(out.Length());
956 rtc::ByteBufferReader read_buf(out); 956 rtc::ByteBufferReader read_buf(out);
957 std::string bytes; 957 std::string bytes;
958 read_buf.ReadString(&bytes, len1); 958 read_buf.ReadString(&bytes, len1);
(...skipping 10 matching lines...) Expand all
969 msg.SetType(STUN_BINDING_RESPONSE); 969 msg.SetType(STUN_BINDING_RESPONSE);
970 msg.SetTransactionID( 970 msg.SetTransactionID(
971 std::string(reinterpret_cast<const char*>(kTestTransactionId1), 971 std::string(reinterpret_cast<const char*>(kTestTransactionId1),
972 kStunTransactionIdLength)); 972 kStunTransactionIdLength));
973 CheckStunTransactionID(msg, kTestTransactionId1, kStunTransactionIdLength); 973 CheckStunTransactionID(msg, kTestTransactionId1, kStunTransactionIdLength);
974 974
975 StunAddressAttribute* addr = 975 StunAddressAttribute* addr =
976 StunAttribute::CreateXorAddress(STUN_ATTR_XOR_MAPPED_ADDRESS); 976 StunAttribute::CreateXorAddress(STUN_ATTR_XOR_MAPPED_ADDRESS);
977 rtc::SocketAddress test_addr(test_ip, kTestMessagePort3); 977 rtc::SocketAddress test_addr(test_ip, kTestMessagePort3);
978 addr->SetAddress(test_addr); 978 addr->SetAddress(test_addr);
979 EXPECT_TRUE(msg.AddAttribute(addr)); 979 msg.AddAttribute(addr);
980 980
981 CheckStunHeader(msg, STUN_BINDING_RESPONSE, (size - 20)); 981 CheckStunHeader(msg, STUN_BINDING_RESPONSE, (size - 20));
982 982
983 rtc::ByteBufferWriter out; 983 rtc::ByteBufferWriter out;
984 EXPECT_TRUE(msg.Write(&out)); 984 EXPECT_TRUE(msg.Write(&out));
985 ASSERT_EQ(out.Length(), sizeof(kStunMessageWithIPv4XorMappedAddress)); 985 ASSERT_EQ(out.Length(), sizeof(kStunMessageWithIPv4XorMappedAddress));
986 int len1 = static_cast<int>(out.Length()); 986 int len1 = static_cast<int>(out.Length());
987 rtc::ByteBufferReader read_buf(out); 987 rtc::ByteBufferReader read_buf(out);
988 std::string bytes; 988 std::string bytes;
989 read_buf.ReadString(&bytes, len1); 989 read_buf.ReadString(&bytes, len1);
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1069 size_t size = sizeof(kStunMessageWithErrorAttribute); 1069 size_t size = sizeof(kStunMessageWithErrorAttribute);
1070 1070
1071 msg.SetType(STUN_BINDING_ERROR_RESPONSE); 1071 msg.SetType(STUN_BINDING_ERROR_RESPONSE);
1072 msg.SetTransactionID( 1072 msg.SetTransactionID(
1073 std::string(reinterpret_cast<const char*>(kTestTransactionId1), 1073 std::string(reinterpret_cast<const char*>(kTestTransactionId1),
1074 kStunTransactionIdLength)); 1074 kStunTransactionIdLength));
1075 CheckStunTransactionID(msg, kTestTransactionId1, kStunTransactionIdLength); 1075 CheckStunTransactionID(msg, kTestTransactionId1, kStunTransactionIdLength);
1076 StunErrorCodeAttribute* errorcode = StunAttribute::CreateErrorCode(); 1076 StunErrorCodeAttribute* errorcode = StunAttribute::CreateErrorCode();
1077 errorcode->SetCode(kTestErrorCode); 1077 errorcode->SetCode(kTestErrorCode);
1078 errorcode->SetReason(kTestErrorReason); 1078 errorcode->SetReason(kTestErrorReason);
1079 EXPECT_TRUE(msg.AddAttribute(errorcode)); 1079 msg.AddAttribute(errorcode);
1080 CheckStunHeader(msg, STUN_BINDING_ERROR_RESPONSE, (size - 20)); 1080 CheckStunHeader(msg, STUN_BINDING_ERROR_RESPONSE, (size - 20));
1081 1081
1082 rtc::ByteBufferWriter out; 1082 rtc::ByteBufferWriter out;
1083 EXPECT_TRUE(msg.Write(&out)); 1083 EXPECT_TRUE(msg.Write(&out));
1084 ASSERT_EQ(size, out.Length()); 1084 ASSERT_EQ(size, out.Length());
1085 // No padding. 1085 // No padding.
1086 ASSERT_EQ(0, memcmp(out.Data(), kStunMessageWithErrorAttribute, size)); 1086 ASSERT_EQ(0, memcmp(out.Data(), kStunMessageWithErrorAttribute, size));
1087 } 1087 }
1088 1088
1089 TEST_F(StunTest, WriteMessageWithAUInt16ListAttribute) { 1089 TEST_F(StunTest, WriteMessageWithAUInt16ListAttribute) {
1090 StunMessage msg; 1090 StunMessage msg;
1091 size_t size = sizeof(kStunMessageWithUInt16ListAttribute); 1091 size_t size = sizeof(kStunMessageWithUInt16ListAttribute);
1092 1092
1093 msg.SetType(STUN_BINDING_REQUEST); 1093 msg.SetType(STUN_BINDING_REQUEST);
1094 msg.SetTransactionID( 1094 msg.SetTransactionID(
1095 std::string(reinterpret_cast<const char*>(kTestTransactionId2), 1095 std::string(reinterpret_cast<const char*>(kTestTransactionId2),
1096 kStunTransactionIdLength)); 1096 kStunTransactionIdLength));
1097 CheckStunTransactionID(msg, kTestTransactionId2, kStunTransactionIdLength); 1097 CheckStunTransactionID(msg, kTestTransactionId2, kStunTransactionIdLength);
1098 StunUInt16ListAttribute* list = StunAttribute::CreateUnknownAttributes(); 1098 StunUInt16ListAttribute* list = StunAttribute::CreateUnknownAttributes();
1099 list->AddType(0x1U); 1099 list->AddType(0x1U);
1100 list->AddType(0x1000U); 1100 list->AddType(0x1000U);
1101 list->AddType(0xAB0CU); 1101 list->AddType(0xAB0CU);
1102 EXPECT_TRUE(msg.AddAttribute(list)); 1102 msg.AddAttribute(list);
1103 CheckStunHeader(msg, STUN_BINDING_REQUEST, (size - 20)); 1103 CheckStunHeader(msg, STUN_BINDING_REQUEST, (size - 20));
1104 1104
1105 rtc::ByteBufferWriter out; 1105 rtc::ByteBufferWriter out;
1106 EXPECT_TRUE(msg.Write(&out)); 1106 EXPECT_TRUE(msg.Write(&out));
1107 ASSERT_EQ(size, out.Length()); 1107 ASSERT_EQ(size, out.Length());
1108 // Check everything up to the padding. 1108 // Check everything up to the padding.
1109 ASSERT_EQ(0, 1109 ASSERT_EQ(0,
1110 memcmp(out.Data(), kStunMessageWithUInt16ListAttribute, size - 2)); 1110 memcmp(out.Data(), kStunMessageWithUInt16ListAttribute, size - 2));
1111 } 1111 }
1112 1112
1113 TEST_F(StunTest, WriteMessageWithOriginAttribute) { 1113 TEST_F(StunTest, WriteMessageWithOriginAttribute) {
1114 StunMessage msg; 1114 StunMessage msg;
1115 size_t size = sizeof(kStunMessageWithOriginAttribute); 1115 size_t size = sizeof(kStunMessageWithOriginAttribute);
1116 1116
1117 msg.SetType(STUN_BINDING_REQUEST); 1117 msg.SetType(STUN_BINDING_REQUEST);
1118 msg.SetTransactionID( 1118 msg.SetTransactionID(
1119 std::string(reinterpret_cast<const char*>(kTestTransactionId1), 1119 std::string(reinterpret_cast<const char*>(kTestTransactionId1),
1120 kStunTransactionIdLength)); 1120 kStunTransactionIdLength));
1121 StunByteStringAttribute* origin = 1121 StunByteStringAttribute* origin =
1122 new StunByteStringAttribute(STUN_ATTR_ORIGIN, kTestOrigin); 1122 new StunByteStringAttribute(STUN_ATTR_ORIGIN, kTestOrigin);
1123 EXPECT_TRUE(msg.AddAttribute(origin)); 1123 msg.AddAttribute(origin);
1124 1124
1125 rtc::ByteBufferWriter out; 1125 rtc::ByteBufferWriter out;
1126 EXPECT_TRUE(msg.Write(&out)); 1126 EXPECT_TRUE(msg.Write(&out));
1127 ASSERT_EQ(size, out.Length()); 1127 ASSERT_EQ(size, out.Length());
1128 // Check everything up to the padding 1128 // Check everything up to the padding
1129 ASSERT_EQ(0, memcmp(out.Data(), kStunMessageWithOriginAttribute, size - 2)); 1129 ASSERT_EQ(0, memcmp(out.Data(), kStunMessageWithOriginAttribute, size - 2));
1130 } 1130 }
1131 1131
1132 // Test that we fail to read messages with invalid lengths. 1132 // Test that we fail to read messages with invalid lengths.
1133 void CheckFailureToRead(const unsigned char* testcase, size_t length) { 1133 void CheckFailureToRead(const unsigned char* testcase, size_t length) {
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
1386 const StunAddressAttribute* addr = msg.GetAddress(STUN_ATTR_MAPPED_ADDRESS); 1386 const StunAddressAttribute* addr = msg.GetAddress(STUN_ATTR_MAPPED_ADDRESS);
1387 ASSERT_TRUE(addr != NULL); 1387 ASSERT_TRUE(addr != NULL);
1388 EXPECT_EQ(1, addr->family()); 1388 EXPECT_EQ(1, addr->family());
1389 EXPECT_EQ(13, addr->port()); 1389 EXPECT_EQ(13, addr->port());
1390 EXPECT_EQ(legacy_ip, addr->ipaddr()); 1390 EXPECT_EQ(legacy_ip, addr->ipaddr());
1391 1391
1392 StunAddressAttribute* addr2 = 1392 StunAddressAttribute* addr2 =
1393 StunAttribute::CreateAddress(STUN_ATTR_MAPPED_ADDRESS); 1393 StunAttribute::CreateAddress(STUN_ATTR_MAPPED_ADDRESS);
1394 addr2->SetPort(13); 1394 addr2->SetPort(13);
1395 addr2->SetIP(legacy_ip); 1395 addr2->SetIP(legacy_ip);
1396 EXPECT_TRUE(msg2.AddAttribute(addr2)); 1396 msg2.AddAttribute(addr2);
1397 1397
1398 const StunByteStringAttribute* bytes = msg.GetByteString(STUN_ATTR_USERNAME); 1398 const StunByteStringAttribute* bytes = msg.GetByteString(STUN_ATTR_USERNAME);
1399 ASSERT_TRUE(bytes != NULL); 1399 ASSERT_TRUE(bytes != NULL);
1400 EXPECT_EQ(12U, bytes->length()); 1400 EXPECT_EQ(12U, bytes->length());
1401 EXPECT_EQ("abcdefghijkl", bytes->GetString()); 1401 EXPECT_EQ("abcdefghijkl", bytes->GetString());
1402 1402
1403 StunByteStringAttribute* bytes2 = 1403 StunByteStringAttribute* bytes2 =
1404 StunAttribute::CreateByteString(STUN_ATTR_USERNAME); 1404 StunAttribute::CreateByteString(STUN_ATTR_USERNAME);
1405 bytes2->CopyBytes("abcdefghijkl"); 1405 bytes2->CopyBytes("abcdefghijkl");
1406 EXPECT_TRUE(msg2.AddAttribute(bytes2)); 1406 msg2.AddAttribute(bytes2);
1407 1407
1408 const StunUInt32Attribute* uval = msg.GetUInt32(STUN_ATTR_LIFETIME); 1408 const StunUInt32Attribute* uval = msg.GetUInt32(STUN_ATTR_LIFETIME);
1409 ASSERT_TRUE(uval != NULL); 1409 ASSERT_TRUE(uval != NULL);
1410 EXPECT_EQ(11U, uval->value()); 1410 EXPECT_EQ(11U, uval->value());
1411 1411
1412 StunUInt32Attribute* uval2 = StunAttribute::CreateUInt32(STUN_ATTR_LIFETIME); 1412 StunUInt32Attribute* uval2 = StunAttribute::CreateUInt32(STUN_ATTR_LIFETIME);
1413 uval2->SetValue(11); 1413 uval2->SetValue(11);
1414 EXPECT_TRUE(msg2.AddAttribute(uval2)); 1414 msg2.AddAttribute(uval2);
1415 1415
1416 bytes = msg.GetByteString(STUN_ATTR_MAGIC_COOKIE); 1416 bytes = msg.GetByteString(STUN_ATTR_MAGIC_COOKIE);
1417 ASSERT_TRUE(bytes != NULL); 1417 ASSERT_TRUE(bytes != NULL);
1418 EXPECT_EQ(4U, bytes->length()); 1418 EXPECT_EQ(4U, bytes->length());
1419 EXPECT_EQ(0, 1419 EXPECT_EQ(0,
1420 memcmp(bytes->bytes(), 1420 memcmp(bytes->bytes(),
1421 TURN_MAGIC_COOKIE_VALUE, 1421 TURN_MAGIC_COOKIE_VALUE,
1422 sizeof(TURN_MAGIC_COOKIE_VALUE))); 1422 sizeof(TURN_MAGIC_COOKIE_VALUE)));
1423 1423
1424 bytes2 = StunAttribute::CreateByteString(STUN_ATTR_MAGIC_COOKIE); 1424 bytes2 = StunAttribute::CreateByteString(STUN_ATTR_MAGIC_COOKIE);
1425 bytes2->CopyBytes(reinterpret_cast<const char*>(TURN_MAGIC_COOKIE_VALUE), 1425 bytes2->CopyBytes(reinterpret_cast<const char*>(TURN_MAGIC_COOKIE_VALUE),
1426 sizeof(TURN_MAGIC_COOKIE_VALUE)); 1426 sizeof(TURN_MAGIC_COOKIE_VALUE));
1427 EXPECT_TRUE(msg2.AddAttribute(bytes2)); 1427 msg2.AddAttribute(bytes2);
1428 1428
1429 uval = msg.GetUInt32(STUN_ATTR_BANDWIDTH); 1429 uval = msg.GetUInt32(STUN_ATTR_BANDWIDTH);
1430 ASSERT_TRUE(uval != NULL); 1430 ASSERT_TRUE(uval != NULL);
1431 EXPECT_EQ(6U, uval->value()); 1431 EXPECT_EQ(6U, uval->value());
1432 1432
1433 uval2 = StunAttribute::CreateUInt32(STUN_ATTR_BANDWIDTH); 1433 uval2 = StunAttribute::CreateUInt32(STUN_ATTR_BANDWIDTH);
1434 uval2->SetValue(6); 1434 uval2->SetValue(6);
1435 EXPECT_TRUE(msg2.AddAttribute(uval2)); 1435 msg2.AddAttribute(uval2);
1436 1436
1437 addr = msg.GetAddress(STUN_ATTR_DESTINATION_ADDRESS); 1437 addr = msg.GetAddress(STUN_ATTR_DESTINATION_ADDRESS);
1438 ASSERT_TRUE(addr != NULL); 1438 ASSERT_TRUE(addr != NULL);
1439 EXPECT_EQ(1, addr->family()); 1439 EXPECT_EQ(1, addr->family());
1440 EXPECT_EQ(13, addr->port()); 1440 EXPECT_EQ(13, addr->port());
1441 EXPECT_EQ(legacy_ip, addr->ipaddr()); 1441 EXPECT_EQ(legacy_ip, addr->ipaddr());
1442 1442
1443 addr2 = StunAttribute::CreateAddress(STUN_ATTR_DESTINATION_ADDRESS); 1443 addr2 = StunAttribute::CreateAddress(STUN_ATTR_DESTINATION_ADDRESS);
1444 addr2->SetPort(13); 1444 addr2->SetPort(13);
1445 addr2->SetIP(legacy_ip); 1445 addr2->SetIP(legacy_ip);
1446 EXPECT_TRUE(msg2.AddAttribute(addr2)); 1446 msg2.AddAttribute(addr2);
1447 1447
1448 addr = msg.GetAddress(STUN_ATTR_SOURCE_ADDRESS2); 1448 addr = msg.GetAddress(STUN_ATTR_SOURCE_ADDRESS2);
1449 ASSERT_TRUE(addr != NULL); 1449 ASSERT_TRUE(addr != NULL);
1450 EXPECT_EQ(1, addr->family()); 1450 EXPECT_EQ(1, addr->family());
1451 EXPECT_EQ(13, addr->port()); 1451 EXPECT_EQ(13, addr->port());
1452 EXPECT_EQ(legacy_ip, addr->ipaddr()); 1452 EXPECT_EQ(legacy_ip, addr->ipaddr());
1453 1453
1454 addr2 = StunAttribute::CreateAddress(STUN_ATTR_SOURCE_ADDRESS2); 1454 addr2 = StunAttribute::CreateAddress(STUN_ATTR_SOURCE_ADDRESS2);
1455 addr2->SetPort(13); 1455 addr2->SetPort(13);
1456 addr2->SetIP(legacy_ip); 1456 addr2->SetIP(legacy_ip);
1457 EXPECT_TRUE(msg2.AddAttribute(addr2)); 1457 msg2.AddAttribute(addr2);
1458 1458
1459 bytes = msg.GetByteString(STUN_ATTR_DATA); 1459 bytes = msg.GetByteString(STUN_ATTR_DATA);
1460 ASSERT_TRUE(bytes != NULL); 1460 ASSERT_TRUE(bytes != NULL);
1461 EXPECT_EQ(7U, bytes->length()); 1461 EXPECT_EQ(7U, bytes->length());
1462 EXPECT_EQ("abcdefg", bytes->GetString()); 1462 EXPECT_EQ("abcdefg", bytes->GetString());
1463 1463
1464 bytes2 = StunAttribute::CreateByteString(STUN_ATTR_DATA); 1464 bytes2 = StunAttribute::CreateByteString(STUN_ATTR_DATA);
1465 bytes2->CopyBytes("abcdefg"); 1465 bytes2->CopyBytes("abcdefg");
1466 EXPECT_TRUE(msg2.AddAttribute(bytes2)); 1466 msg2.AddAttribute(bytes2);
1467 1467
1468 rtc::ByteBufferWriter out; 1468 rtc::ByteBufferWriter out;
1469 EXPECT_TRUE(msg.Write(&out)); 1469 EXPECT_TRUE(msg.Write(&out));
1470 EXPECT_EQ(size, out.Length()); 1470 EXPECT_EQ(size, out.Length());
1471 size_t len1 = out.Length(); 1471 size_t len1 = out.Length();
1472 rtc::ByteBufferReader read_buf(out); 1472 rtc::ByteBufferReader read_buf(out);
1473 std::string outstring; 1473 std::string outstring;
1474 read_buf.ReadString(&outstring, len1); 1474 read_buf.ReadString(&outstring, len1);
1475 EXPECT_EQ(0, memcmp(outstring.c_str(), input, len1)); 1475 EXPECT_EQ(0, memcmp(outstring.c_str(), input, len1));
1476 1476
1477 rtc::ByteBufferWriter out2; 1477 rtc::ByteBufferWriter out2;
1478 EXPECT_TRUE(msg2.Write(&out2)); 1478 EXPECT_TRUE(msg2.Write(&out2));
1479 EXPECT_EQ(size, out2.Length()); 1479 EXPECT_EQ(size, out2.Length());
1480 size_t len2 = out2.Length(); 1480 size_t len2 = out2.Length();
1481 rtc::ByteBufferReader read_buf2(out2); 1481 rtc::ByteBufferReader read_buf2(out2);
1482 std::string outstring2; 1482 std::string outstring2;
1483 read_buf2.ReadString(&outstring2, len2); 1483 read_buf2.ReadString(&outstring2, len2);
1484 EXPECT_EQ(0, memcmp(outstring2.c_str(), input, len2)); 1484 EXPECT_EQ(0, memcmp(outstring2.c_str(), input, len2));
1485 } 1485 }
1486 1486
1487 } // namespace cricket 1487 } // namespace cricket
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698