普通文本  |  320行  |  15.43 KB

// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "net/quic/quic_server_id.h"

#include "testing/gtest/include/gtest/gtest.h"

using std::string;

namespace net {

namespace {

TEST(QuicServerIdTest, ToString) {
  HostPortPair google_host_port_pair("google.com", 10);

  QuicServerId google_http_server_id(google_host_port_pair, false,
                                     PRIVACY_MODE_DISABLED);
  string google_http_server_id_str = google_http_server_id.ToString();
  EXPECT_EQ("http://google.com:10", google_http_server_id_str);

  QuicServerId google_https_server_id(google_host_port_pair, true,
                                      PRIVACY_MODE_DISABLED);
  string google_https_server_id_str = google_https_server_id.ToString();
  EXPECT_EQ("https://google.com:10", google_https_server_id_str);

  QuicServerId private_http_server_id(google_host_port_pair, false,
                                      PRIVACY_MODE_ENABLED);
  string private_http_server_id_str = private_http_server_id.ToString();
  EXPECT_EQ("http://google.com:10/private", private_http_server_id_str);

  QuicServerId private_https_server_id(google_host_port_pair, true,
                                       PRIVACY_MODE_ENABLED);
  string private_https_server_id_str = private_https_server_id.ToString();
  EXPECT_EQ("https://google.com:10/private", private_https_server_id_str);
}

TEST(QuicServerIdTest, LessThan) {
  QuicServerId a_10_http(HostPortPair("a.com", 10), false,
                         PRIVACY_MODE_DISABLED);
  QuicServerId a_10_https(HostPortPair("a.com", 10), true,
                          PRIVACY_MODE_DISABLED);
  QuicServerId a_11_http(HostPortPair("a.com", 11), false,
                         PRIVACY_MODE_DISABLED);
  QuicServerId a_11_https(HostPortPair("a.com", 11), true,
                          PRIVACY_MODE_DISABLED);
  QuicServerId b_10_http(HostPortPair("b.com", 10), false,
                         PRIVACY_MODE_DISABLED);
  QuicServerId b_10_https(HostPortPair("b.com", 10), true,
                          PRIVACY_MODE_DISABLED);
  QuicServerId b_11_http(HostPortPair("b.com", 11), false,
                         PRIVACY_MODE_DISABLED);
  QuicServerId b_11_https(HostPortPair("b.com", 11), true,
                          PRIVACY_MODE_DISABLED);

  QuicServerId a_10_http_private(HostPortPair("a.com", 10), false,
                                 PRIVACY_MODE_ENABLED);
  QuicServerId a_10_https_private(HostPortPair("a.com", 10), true,
                                  PRIVACY_MODE_ENABLED);
  QuicServerId a_11_http_private(HostPortPair("a.com", 11), false,
                                 PRIVACY_MODE_ENABLED);
  QuicServerId a_11_https_private(HostPortPair("a.com", 11), true,
                                  PRIVACY_MODE_ENABLED);
  QuicServerId b_10_http_private(HostPortPair("b.com", 10), false,
                                 PRIVACY_MODE_ENABLED);
  QuicServerId b_10_https_private(HostPortPair("b.com", 10), true,
                                  PRIVACY_MODE_ENABLED);
  QuicServerId b_11_http_private(HostPortPair("b.com", 11), false,
                                 PRIVACY_MODE_ENABLED);
  QuicServerId b_11_https_private(HostPortPair("b.com", 11), true,
                                  PRIVACY_MODE_ENABLED);

  // Test combinations of host, port, https and privacy being same on left and
  // right side of less than.
  EXPECT_FALSE(a_10_http  < a_10_http);
  EXPECT_TRUE(a_10_http   < a_10_https);
  EXPECT_FALSE(a_10_https < a_10_http);
  EXPECT_FALSE(a_10_https < a_10_https);

  EXPECT_TRUE(a_10_http   < a_10_http_private);
  EXPECT_TRUE(a_10_http   < a_10_https_private);
  EXPECT_FALSE(a_10_https < a_10_http_private);
  EXPECT_TRUE(a_10_https  < a_10_https_private);

  EXPECT_FALSE(a_10_http_private  < a_10_http);
  EXPECT_TRUE(a_10_http_private   < a_10_https);
  EXPECT_FALSE(a_10_https_private < a_10_http);
  EXPECT_FALSE(a_10_https_private < a_10_https);

  EXPECT_FALSE(a_10_http_private  < a_10_http_private);
  EXPECT_TRUE(a_10_http_private   < a_10_https_private);
  EXPECT_FALSE(a_10_https_private < a_10_http_private);
  EXPECT_FALSE(a_10_https_private < a_10_https_private);

  // Test with either host, port or https being different on left and right side
  // of less than.
  PrivacyMode left_privacy;
  PrivacyMode right_privacy;
  for (int i = 0; i < 4; i++) {
    switch (i) {
      case 0:
        left_privacy = PRIVACY_MODE_DISABLED;
        right_privacy = PRIVACY_MODE_DISABLED;
        break;
      case 1:
        left_privacy = PRIVACY_MODE_DISABLED;
        right_privacy = PRIVACY_MODE_ENABLED;
        break;
      case 2:
        left_privacy = PRIVACY_MODE_ENABLED;
        right_privacy = PRIVACY_MODE_DISABLED;
        break;
      case 3:
        left_privacy = PRIVACY_MODE_ENABLED;
        right_privacy = PRIVACY_MODE_ENABLED;
        break;
    }
    QuicServerId a_10_http_left_private(HostPortPair("a.com", 10), false,
                                        left_privacy);
    QuicServerId a_10_http_right_private(HostPortPair("a.com", 10), false,
                                         right_privacy);
    QuicServerId a_10_https_left_private(HostPortPair("a.com", 10), true,
                                         left_privacy);
    QuicServerId a_10_https_right_private(HostPortPair("a.com", 10), true,
                                          right_privacy);
    QuicServerId a_11_http_left_private(HostPortPair("a.com", 11), false,
                                        left_privacy);
    QuicServerId a_11_http_right_private(HostPortPair("a.com", 11), false,
                                         right_privacy);
    QuicServerId a_11_https_left_private(HostPortPair("a.com", 11), true,
                                         left_privacy);
    QuicServerId a_11_https_right_private(HostPortPair("a.com", 11), true,
                                          right_privacy);

    QuicServerId b_10_http_left_private(HostPortPair("b.com", 10), false,
                                        left_privacy);
    QuicServerId b_10_http_right_private(HostPortPair("b.com", 10), false,
                                         right_privacy);
    QuicServerId b_10_https_left_private(HostPortPair("b.com", 10), true,
                                         left_privacy);
    QuicServerId b_10_https_right_private(HostPortPair("b.com", 10), true,
                                          right_privacy);
    QuicServerId b_11_http_left_private(HostPortPair("b.com", 11), false,
                                        left_privacy);
    QuicServerId b_11_http_right_private(HostPortPair("b.com", 11), false,
                                         right_privacy);
    QuicServerId b_11_https_left_private(HostPortPair("b.com", 11), true,
                                         left_privacy);
    QuicServerId b_11_https_right_private(HostPortPair("b.com", 11), true,
                                          right_privacy);

    EXPECT_TRUE(a_10_http_left_private  < a_11_http_right_private);
    EXPECT_TRUE(a_10_http_left_private  < a_11_https_right_private);
    EXPECT_TRUE(a_10_https_left_private < a_11_http_right_private);
    EXPECT_TRUE(a_10_https_left_private < a_11_https_right_private);

    EXPECT_TRUE(a_10_http_left_private  < b_10_http_right_private);
    EXPECT_TRUE(a_10_http_left_private  < b_10_https_right_private);
    EXPECT_TRUE(a_10_https_left_private < b_10_http_right_private);
    EXPECT_TRUE(a_10_https_left_private < b_10_https_right_private);

    EXPECT_TRUE(a_10_http_left_private  < b_11_http_right_private);
    EXPECT_TRUE(a_10_http_left_private  < b_11_https_right_private);
    EXPECT_TRUE(a_10_https_left_private < b_11_http_right_private);
    EXPECT_TRUE(a_10_https_left_private < b_11_https_right_private);

    EXPECT_FALSE(a_11_http_left_private  < a_10_http_right_private);
    EXPECT_FALSE(a_11_http_left_private  < a_10_https_right_private);
    EXPECT_FALSE(a_11_https_left_private < a_10_http_right_private);
    EXPECT_FALSE(a_11_https_left_private < a_10_https_right_private);

    EXPECT_FALSE(a_11_http_left_private  < b_10_http_right_private);
    EXPECT_FALSE(a_11_http_left_private  < b_10_https_right_private);
    EXPECT_FALSE(a_11_https_left_private < b_10_http_right_private);
    EXPECT_FALSE(a_11_https_left_private < b_10_https_right_private);

    EXPECT_TRUE(a_11_http_left_private  < b_11_http_right_private);
    EXPECT_TRUE(a_11_http_left_private  < b_11_https_right_private);
    EXPECT_TRUE(a_11_https_left_private < b_11_http_right_private);
    EXPECT_TRUE(a_11_https_left_private < b_11_https_right_private);

    EXPECT_FALSE(b_10_http_left_private  < a_10_http_right_private);
    EXPECT_FALSE(b_10_http_left_private  < a_10_https_right_private);
    EXPECT_FALSE(b_10_https_left_private < a_10_http_right_private);
    EXPECT_FALSE(b_10_https_left_private < a_10_https_right_private);

    EXPECT_TRUE(b_10_http_left_private  < a_11_http_right_private);
    EXPECT_TRUE(b_10_http_left_private  < a_11_https_right_private);
    EXPECT_TRUE(b_10_https_left_private < a_11_http_right_private);
    EXPECT_TRUE(b_10_https_left_private < a_11_https_right_private);

    EXPECT_TRUE(b_10_http_left_private  < b_11_http_right_private);
    EXPECT_TRUE(b_10_http_left_private  < b_11_https_right_private);
    EXPECT_TRUE(b_10_https_left_private < b_11_http_right_private);
    EXPECT_TRUE(b_10_https_left_private < b_11_https_right_private);

    EXPECT_FALSE(b_11_http_left_private  < a_10_http_right_private);
    EXPECT_FALSE(b_11_http_left_private  < a_10_https_right_private);
    EXPECT_FALSE(b_11_https_left_private < a_10_http_right_private);
    EXPECT_FALSE(b_11_https_left_private < a_10_https_right_private);

    EXPECT_FALSE(b_11_http_left_private  < a_11_http_right_private);
    EXPECT_FALSE(b_11_http_left_private  < a_11_https_right_private);
    EXPECT_FALSE(b_11_https_left_private < a_11_http_right_private);
    EXPECT_FALSE(b_11_https_left_private < a_11_https_right_private);

    EXPECT_FALSE(b_11_http_left_private  < b_10_http_right_private);
    EXPECT_FALSE(b_11_http_left_private  < b_10_https_right_private);
    EXPECT_FALSE(b_11_https_left_private < b_10_http_right_private);
    EXPECT_FALSE(b_11_https_left_private < b_10_https_right_private);
  }
}

TEST(QuicServerIdTest, Equals) {
  PrivacyMode left_privacy;
  PrivacyMode right_privacy;
  for (int i = 0; i < 2; i++) {
    switch (i) {
      case 0:
        left_privacy = PRIVACY_MODE_DISABLED;
        right_privacy = PRIVACY_MODE_DISABLED;
        break;
      case 1:
        left_privacy = PRIVACY_MODE_ENABLED;
        right_privacy = PRIVACY_MODE_ENABLED;
        break;
    }
    QuicServerId a_10_http_right_private(HostPortPair("a.com", 10), false,
                                         right_privacy);
    QuicServerId a_10_https_right_private(HostPortPair("a.com", 10), true,
                                          right_privacy);
    QuicServerId a_11_http_right_private(HostPortPair("a.com", 11), false,
                                         right_privacy);
    QuicServerId a_11_https_right_private(HostPortPair("a.com", 11), true,
                                          right_privacy);
    QuicServerId b_10_http_right_private(HostPortPair("b.com", 10), false,
                                         right_privacy);
    QuicServerId b_10_https_right_private(HostPortPair("b.com", 10), true,
                                          right_privacy);
    QuicServerId b_11_http_right_private(HostPortPair("b.com", 11), false,
                                         right_privacy);
    QuicServerId b_11_https_right_private(HostPortPair("b.com", 11), true,
                                          right_privacy);

    QuicServerId new_a_10_http_left_private(HostPortPair("a.com", 10), false,
                                            left_privacy);
    QuicServerId new_a_10_https_left_private(HostPortPair("a.com", 10), true,
                                             left_privacy);
    QuicServerId new_a_11_http_left_private(HostPortPair("a.com", 11), false,
                                            left_privacy);
    QuicServerId new_a_11_https_left_private(HostPortPair("a.com", 11), true,
                                             left_privacy);
    QuicServerId new_b_10_http_left_private(HostPortPair("b.com", 10), false,
                                            left_privacy);
    QuicServerId new_b_10_https_left_private(HostPortPair("b.com", 10), true,
                                             left_privacy);
    QuicServerId new_b_11_http_left_private(HostPortPair("b.com", 11), false,
                                            left_privacy);
    QuicServerId new_b_11_https_left_private(HostPortPair("b.com", 11), true,
                                             left_privacy);

    EXPECT_EQ(new_a_10_http_left_private,  a_10_http_right_private);
    EXPECT_EQ(new_a_10_https_left_private, a_10_https_right_private);
    EXPECT_EQ(new_a_11_http_left_private,  a_11_http_right_private);
    EXPECT_EQ(new_a_11_https_left_private, a_11_https_right_private);
    EXPECT_EQ(new_b_10_http_left_private,  b_10_http_right_private);
    EXPECT_EQ(new_b_10_https_left_private, b_10_https_right_private);
    EXPECT_EQ(new_b_11_http_left_private,  b_11_http_right_private);
    EXPECT_EQ(new_b_11_https_left_private, b_11_https_right_private);
  }

  for (int i = 0; i < 2; i++) {
    switch (i) {
      case 0:
        right_privacy = PRIVACY_MODE_DISABLED;
        break;
      case 1:
        right_privacy = PRIVACY_MODE_ENABLED;
        break;
    }
    QuicServerId a_10_http_right_private(HostPortPair("a.com", 10), false,
                                         right_privacy);
    QuicServerId a_10_https_right_private(HostPortPair("a.com", 10), true,
                                          right_privacy);
    QuicServerId a_11_http_right_private(HostPortPair("a.com", 11), false,
                                         right_privacy);
    QuicServerId a_11_https_right_private(HostPortPair("a.com", 11), true,
                                          right_privacy);
    QuicServerId b_10_http_right_private(HostPortPair("b.com", 10), false,
                                         right_privacy);
    QuicServerId b_10_https_right_private(HostPortPair("b.com", 10), true,
                                          right_privacy);
    QuicServerId b_11_http_right_private(HostPortPair("b.com", 11), false,
                                         right_privacy);
    QuicServerId b_11_https_right_private(HostPortPair("b.com", 11), true,
                                          right_privacy);

    QuicServerId new_a_10_http_left_private(HostPortPair("a.com", 10), false,
                                            PRIVACY_MODE_DISABLED);

    EXPECT_FALSE(new_a_10_http_left_private == a_10_https_right_private);
    EXPECT_FALSE(new_a_10_http_left_private == a_11_http_right_private);
    EXPECT_FALSE(new_a_10_http_left_private == b_10_http_right_private);
    EXPECT_FALSE(new_a_10_http_left_private == a_11_https_right_private);
    EXPECT_FALSE(new_a_10_http_left_private == b_10_https_right_private);
    EXPECT_FALSE(new_a_10_http_left_private == b_11_http_right_private);
    EXPECT_FALSE(new_a_10_http_left_private == b_11_https_right_private);
  }
  QuicServerId a_10_http_private(HostPortPair("a.com", 10), false,
                                 PRIVACY_MODE_ENABLED);
  QuicServerId new_a_10_http_no_private(HostPortPair("a.com", 10), false,
                                        PRIVACY_MODE_DISABLED);
  EXPECT_FALSE(new_a_10_http_no_private == a_10_http_private);
}

}  // namespace

}  // namespace net