Home | History | Annotate | Download | only in quic
      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