1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "net/quic/quic_server_id.h" 6 7 #include "testing/gtest/include/gtest/gtest.h" 8 9 using std::string; 10 11 namespace net { 12 13 namespace { 14 15 TEST(QuicServerIdTest, ToString) { 16 HostPortPair google_host_port_pair("google.com", 10); 17 18 QuicServerId google_http_server_id(google_host_port_pair, false, 19 PRIVACY_MODE_DISABLED); 20 string google_http_server_id_str = google_http_server_id.ToString(); 21 EXPECT_EQ("http://google.com:10", google_http_server_id_str); 22 23 QuicServerId google_https_server_id(google_host_port_pair, true, 24 PRIVACY_MODE_DISABLED); 25 string google_https_server_id_str = google_https_server_id.ToString(); 26 EXPECT_EQ("https://google.com:10", google_https_server_id_str); 27 28 QuicServerId private_http_server_id(google_host_port_pair, false, 29 PRIVACY_MODE_ENABLED); 30 string private_http_server_id_str = private_http_server_id.ToString(); 31 EXPECT_EQ("http://google.com:10/private", private_http_server_id_str); 32 33 QuicServerId private_https_server_id(google_host_port_pair, true, 34 PRIVACY_MODE_ENABLED); 35 string private_https_server_id_str = private_https_server_id.ToString(); 36 EXPECT_EQ("https://google.com:10/private", private_https_server_id_str); 37 } 38 39 TEST(QuicServerIdTest, LessThan) { 40 QuicServerId a_10_http(HostPortPair("a.com", 10), false, 41 PRIVACY_MODE_DISABLED); 42 QuicServerId a_10_https(HostPortPair("a.com", 10), true, 43 PRIVACY_MODE_DISABLED); 44 QuicServerId a_11_http(HostPortPair("a.com", 11), false, 45 PRIVACY_MODE_DISABLED); 46 QuicServerId a_11_https(HostPortPair("a.com", 11), true, 47 PRIVACY_MODE_DISABLED); 48 QuicServerId b_10_http(HostPortPair("b.com", 10), false, 49 PRIVACY_MODE_DISABLED); 50 QuicServerId b_10_https(HostPortPair("b.com", 10), true, 51 PRIVACY_MODE_DISABLED); 52 QuicServerId b_11_http(HostPortPair("b.com", 11), false, 53 PRIVACY_MODE_DISABLED); 54 QuicServerId b_11_https(HostPortPair("b.com", 11), true, 55 PRIVACY_MODE_DISABLED); 56 57 QuicServerId a_10_http_private(HostPortPair("a.com", 10), false, 58 PRIVACY_MODE_ENABLED); 59 QuicServerId a_10_https_private(HostPortPair("a.com", 10), true, 60 PRIVACY_MODE_ENABLED); 61 QuicServerId a_11_http_private(HostPortPair("a.com", 11), false, 62 PRIVACY_MODE_ENABLED); 63 QuicServerId a_11_https_private(HostPortPair("a.com", 11), true, 64 PRIVACY_MODE_ENABLED); 65 QuicServerId b_10_http_private(HostPortPair("b.com", 10), false, 66 PRIVACY_MODE_ENABLED); 67 QuicServerId b_10_https_private(HostPortPair("b.com", 10), true, 68 PRIVACY_MODE_ENABLED); 69 QuicServerId b_11_http_private(HostPortPair("b.com", 11), false, 70 PRIVACY_MODE_ENABLED); 71 QuicServerId b_11_https_private(HostPortPair("b.com", 11), true, 72 PRIVACY_MODE_ENABLED); 73 74 // Test combinations of host, port, https and privacy being same on left and 75 // right side of less than. 76 EXPECT_FALSE(a_10_http < a_10_http); 77 EXPECT_TRUE(a_10_http < a_10_https); 78 EXPECT_FALSE(a_10_https < a_10_http); 79 EXPECT_FALSE(a_10_https < a_10_https); 80 81 EXPECT_TRUE(a_10_http < a_10_http_private); 82 EXPECT_TRUE(a_10_http < a_10_https_private); 83 EXPECT_FALSE(a_10_https < a_10_http_private); 84 EXPECT_TRUE(a_10_https < a_10_https_private); 85 86 EXPECT_FALSE(a_10_http_private < a_10_http); 87 EXPECT_TRUE(a_10_http_private < a_10_https); 88 EXPECT_FALSE(a_10_https_private < a_10_http); 89 EXPECT_FALSE(a_10_https_private < a_10_https); 90 91 EXPECT_FALSE(a_10_http_private < a_10_http_private); 92 EXPECT_TRUE(a_10_http_private < a_10_https_private); 93 EXPECT_FALSE(a_10_https_private < a_10_http_private); 94 EXPECT_FALSE(a_10_https_private < a_10_https_private); 95 96 // Test with either host, port or https being different on left and right side 97 // of less than. 98 PrivacyMode left_privacy; 99 PrivacyMode right_privacy; 100 for (int i = 0; i < 4; i++) { 101 left_privacy = static_cast<PrivacyMode>(i / 2); 102 right_privacy = static_cast<PrivacyMode>(i % 2); 103 QuicServerId a_10_http_left_private(HostPortPair("a.com", 10), false, 104 left_privacy); 105 QuicServerId a_10_http_right_private(HostPortPair("a.com", 10), false, 106 right_privacy); 107 QuicServerId a_10_https_left_private(HostPortPair("a.com", 10), true, 108 left_privacy); 109 QuicServerId a_10_https_right_private(HostPortPair("a.com", 10), true, 110 right_privacy); 111 QuicServerId a_11_http_left_private(HostPortPair("a.com", 11), false, 112 left_privacy); 113 QuicServerId a_11_http_right_private(HostPortPair("a.com", 11), false, 114 right_privacy); 115 QuicServerId a_11_https_left_private(HostPortPair("a.com", 11), true, 116 left_privacy); 117 QuicServerId a_11_https_right_private(HostPortPair("a.com", 11), true, 118 right_privacy); 119 120 QuicServerId b_10_http_left_private(HostPortPair("b.com", 10), false, 121 left_privacy); 122 QuicServerId b_10_http_right_private(HostPortPair("b.com", 10), false, 123 right_privacy); 124 QuicServerId b_10_https_left_private(HostPortPair("b.com", 10), true, 125 left_privacy); 126 QuicServerId b_10_https_right_private(HostPortPair("b.com", 10), true, 127 right_privacy); 128 QuicServerId b_11_http_left_private(HostPortPair("b.com", 11), false, 129 left_privacy); 130 QuicServerId b_11_http_right_private(HostPortPair("b.com", 11), false, 131 right_privacy); 132 QuicServerId b_11_https_left_private(HostPortPair("b.com", 11), true, 133 left_privacy); 134 QuicServerId b_11_https_right_private(HostPortPair("b.com", 11), true, 135 right_privacy); 136 137 EXPECT_TRUE(a_10_http_left_private < a_11_http_right_private); 138 EXPECT_TRUE(a_10_http_left_private < a_11_https_right_private); 139 EXPECT_TRUE(a_10_https_left_private < a_11_http_right_private); 140 EXPECT_TRUE(a_10_https_left_private < a_11_https_right_private); 141 142 EXPECT_TRUE(a_10_http_left_private < b_10_http_right_private); 143 EXPECT_TRUE(a_10_http_left_private < b_10_https_right_private); 144 EXPECT_TRUE(a_10_https_left_private < b_10_http_right_private); 145 EXPECT_TRUE(a_10_https_left_private < b_10_https_right_private); 146 147 EXPECT_TRUE(a_10_http_left_private < b_11_http_right_private); 148 EXPECT_TRUE(a_10_http_left_private < b_11_https_right_private); 149 EXPECT_TRUE(a_10_https_left_private < b_11_http_right_private); 150 EXPECT_TRUE(a_10_https_left_private < b_11_https_right_private); 151 152 EXPECT_FALSE(a_11_http_left_private < a_10_http_right_private); 153 EXPECT_FALSE(a_11_http_left_private < a_10_https_right_private); 154 EXPECT_FALSE(a_11_https_left_private < a_10_http_right_private); 155 EXPECT_FALSE(a_11_https_left_private < a_10_https_right_private); 156 157 EXPECT_FALSE(a_11_http_left_private < b_10_http_right_private); 158 EXPECT_FALSE(a_11_http_left_private < b_10_https_right_private); 159 EXPECT_FALSE(a_11_https_left_private < b_10_http_right_private); 160 EXPECT_FALSE(a_11_https_left_private < b_10_https_right_private); 161 162 EXPECT_TRUE(a_11_http_left_private < b_11_http_right_private); 163 EXPECT_TRUE(a_11_http_left_private < b_11_https_right_private); 164 EXPECT_TRUE(a_11_https_left_private < b_11_http_right_private); 165 EXPECT_TRUE(a_11_https_left_private < b_11_https_right_private); 166 167 EXPECT_FALSE(b_10_http_left_private < a_10_http_right_private); 168 EXPECT_FALSE(b_10_http_left_private < a_10_https_right_private); 169 EXPECT_FALSE(b_10_https_left_private < a_10_http_right_private); 170 EXPECT_FALSE(b_10_https_left_private < a_10_https_right_private); 171 172 EXPECT_TRUE(b_10_http_left_private < a_11_http_right_private); 173 EXPECT_TRUE(b_10_http_left_private < a_11_https_right_private); 174 EXPECT_TRUE(b_10_https_left_private < a_11_http_right_private); 175 EXPECT_TRUE(b_10_https_left_private < a_11_https_right_private); 176 177 EXPECT_TRUE(b_10_http_left_private < b_11_http_right_private); 178 EXPECT_TRUE(b_10_http_left_private < b_11_https_right_private); 179 EXPECT_TRUE(b_10_https_left_private < b_11_http_right_private); 180 EXPECT_TRUE(b_10_https_left_private < b_11_https_right_private); 181 182 EXPECT_FALSE(b_11_http_left_private < a_10_http_right_private); 183 EXPECT_FALSE(b_11_http_left_private < a_10_https_right_private); 184 EXPECT_FALSE(b_11_https_left_private < a_10_http_right_private); 185 EXPECT_FALSE(b_11_https_left_private < a_10_https_right_private); 186 187 EXPECT_FALSE(b_11_http_left_private < a_11_http_right_private); 188 EXPECT_FALSE(b_11_http_left_private < a_11_https_right_private); 189 EXPECT_FALSE(b_11_https_left_private < a_11_http_right_private); 190 EXPECT_FALSE(b_11_https_left_private < a_11_https_right_private); 191 192 EXPECT_FALSE(b_11_http_left_private < b_10_http_right_private); 193 EXPECT_FALSE(b_11_http_left_private < b_10_https_right_private); 194 EXPECT_FALSE(b_11_https_left_private < b_10_http_right_private); 195 EXPECT_FALSE(b_11_https_left_private < b_10_https_right_private); 196 } 197 } 198 199 TEST(QuicServerIdTest, Equals) { 200 PrivacyMode left_privacy; 201 PrivacyMode right_privacy; 202 for (int i = 0; i < 2; i++) { 203 left_privacy = right_privacy = static_cast<PrivacyMode>(i); 204 QuicServerId a_10_http_right_private(HostPortPair("a.com", 10), false, 205 right_privacy); 206 QuicServerId a_10_https_right_private(HostPortPair("a.com", 10), true, 207 right_privacy); 208 QuicServerId a_11_http_right_private(HostPortPair("a.com", 11), false, 209 right_privacy); 210 QuicServerId a_11_https_right_private(HostPortPair("a.com", 11), true, 211 right_privacy); 212 QuicServerId b_10_http_right_private(HostPortPair("b.com", 10), false, 213 right_privacy); 214 QuicServerId b_10_https_right_private(HostPortPair("b.com", 10), true, 215 right_privacy); 216 QuicServerId b_11_http_right_private(HostPortPair("b.com", 11), false, 217 right_privacy); 218 QuicServerId b_11_https_right_private(HostPortPair("b.com", 11), true, 219 right_privacy); 220 221 QuicServerId new_a_10_http_left_private(HostPortPair("a.com", 10), false, 222 left_privacy); 223 QuicServerId new_a_10_https_left_private(HostPortPair("a.com", 10), true, 224 left_privacy); 225 QuicServerId new_a_11_http_left_private(HostPortPair("a.com", 11), false, 226 left_privacy); 227 QuicServerId new_a_11_https_left_private(HostPortPair("a.com", 11), true, 228 left_privacy); 229 QuicServerId new_b_10_http_left_private(HostPortPair("b.com", 10), false, 230 left_privacy); 231 QuicServerId new_b_10_https_left_private(HostPortPair("b.com", 10), true, 232 left_privacy); 233 QuicServerId new_b_11_http_left_private(HostPortPair("b.com", 11), false, 234 left_privacy); 235 QuicServerId new_b_11_https_left_private(HostPortPair("b.com", 11), true, 236 left_privacy); 237 238 EXPECT_EQ(new_a_10_http_left_private, a_10_http_right_private); 239 EXPECT_EQ(new_a_10_https_left_private, a_10_https_right_private); 240 EXPECT_EQ(new_a_11_http_left_private, a_11_http_right_private); 241 EXPECT_EQ(new_a_11_https_left_private, a_11_https_right_private); 242 EXPECT_EQ(new_b_10_http_left_private, b_10_http_right_private); 243 EXPECT_EQ(new_b_10_https_left_private, b_10_https_right_private); 244 EXPECT_EQ(new_b_11_http_left_private, b_11_http_right_private); 245 EXPECT_EQ(new_b_11_https_left_private, b_11_https_right_private); 246 } 247 248 for (int i = 0; i < 2; i++) { 249 right_privacy = static_cast<PrivacyMode>(i); 250 QuicServerId a_10_http_right_private(HostPortPair("a.com", 10), false, 251 right_privacy); 252 QuicServerId a_10_https_right_private(HostPortPair("a.com", 10), true, 253 right_privacy); 254 QuicServerId a_11_http_right_private(HostPortPair("a.com", 11), false, 255 right_privacy); 256 QuicServerId a_11_https_right_private(HostPortPair("a.com", 11), true, 257 right_privacy); 258 QuicServerId b_10_http_right_private(HostPortPair("b.com", 10), false, 259 right_privacy); 260 QuicServerId b_10_https_right_private(HostPortPair("b.com", 10), true, 261 right_privacy); 262 QuicServerId b_11_http_right_private(HostPortPair("b.com", 11), false, 263 right_privacy); 264 QuicServerId b_11_https_right_private(HostPortPair("b.com", 11), true, 265 right_privacy); 266 267 QuicServerId new_a_10_http_left_private(HostPortPair("a.com", 10), false, 268 PRIVACY_MODE_DISABLED); 269 270 EXPECT_FALSE(new_a_10_http_left_private == a_10_https_right_private); 271 EXPECT_FALSE(new_a_10_http_left_private == a_11_http_right_private); 272 EXPECT_FALSE(new_a_10_http_left_private == b_10_http_right_private); 273 EXPECT_FALSE(new_a_10_http_left_private == a_11_https_right_private); 274 EXPECT_FALSE(new_a_10_http_left_private == b_10_https_right_private); 275 EXPECT_FALSE(new_a_10_http_left_private == b_11_http_right_private); 276 EXPECT_FALSE(new_a_10_http_left_private == b_11_https_right_private); 277 } 278 QuicServerId a_10_http_private(HostPortPair("a.com", 10), false, 279 PRIVACY_MODE_ENABLED); 280 QuicServerId new_a_10_http_no_private(HostPortPair("a.com", 10), false, 281 PRIVACY_MODE_DISABLED); 282 EXPECT_FALSE(new_a_10_http_no_private == a_10_http_private); 283 } 284 285 } // namespace 286 287 } // namespace net 288