| Index: net/spdy/spdy_alt_svc_wire_format_test.cc
|
| diff --git a/net/spdy/spdy_alt_svc_wire_format_test.cc b/net/spdy/spdy_alt_svc_wire_format_test.cc
|
| index 6933e7c6aa7186d01c324e27c54c2ff95cb7b29a..b32f0de270a120e67b9d8a5a5531926f480af012 100644
|
| --- a/net/spdy/spdy_alt_svc_wire_format_test.cc
|
| +++ b/net/spdy/spdy_alt_svc_wire_format_test.cc
|
| @@ -53,6 +53,8 @@ class SpdyAltSvcWireFormatPeer {
|
|
|
| namespace {
|
|
|
| +// Generate header field values, possibly with multiply defined parameters and
|
| +// random case, and corresponding AlternativeService entries.
|
| void FuzzHeaderFieldValue(
|
| int i,
|
| std::string* header_field_value,
|
| @@ -117,6 +119,8 @@ void FuzzHeaderFieldValue(
|
| }
|
| }
|
|
|
| +// Generate AlternativeService entries and corresponding header field values in
|
| +// canonical form, that is, what SerializeHeaderFieldValue() should output.
|
| void FuzzAlternativeService(int i,
|
| SpdyAltSvcWireFormat::AlternativeService* altsvc,
|
| std::string* expected_header_field_value) {
|
| @@ -189,6 +193,22 @@ TEST(SpdyAltSvcWireFormatTest, ParseHeaderFieldValue) {
|
| EXPECT_EQ(expected_altsvc.version, altsvc_vector[0].version);
|
| EXPECT_EQ(expected_altsvc.max_age, altsvc_vector[0].max_age);
|
| EXPECT_DOUBLE_EQ(expected_altsvc.probability, altsvc_vector[0].probability);
|
| +
|
| + // Roundtrip test starting with |altsvc_vector|.
|
| + std::string reserialized_header_field_value =
|
| + SpdyAltSvcWireFormat::SerializeHeaderFieldValue(altsvc_vector);
|
| + SpdyAltSvcWireFormat::AlternativeServiceVector roundtrip_altsvc_vector;
|
| + ASSERT_TRUE(SpdyAltSvcWireFormat::ParseHeaderFieldValue(
|
| + reserialized_header_field_value, &roundtrip_altsvc_vector));
|
| + ASSERT_EQ(1u, roundtrip_altsvc_vector.size());
|
| + EXPECT_EQ(expected_altsvc.protocol_id,
|
| + roundtrip_altsvc_vector[0].protocol_id);
|
| + EXPECT_EQ(expected_altsvc.host, roundtrip_altsvc_vector[0].host);
|
| + EXPECT_EQ(expected_altsvc.port, roundtrip_altsvc_vector[0].port);
|
| + EXPECT_EQ(expected_altsvc.version, roundtrip_altsvc_vector[0].version);
|
| + EXPECT_EQ(expected_altsvc.max_age, roundtrip_altsvc_vector[0].max_age);
|
| + EXPECT_DOUBLE_EQ(expected_altsvc.probability,
|
| + roundtrip_altsvc_vector[0].probability);
|
| }
|
| }
|
|
|
| @@ -222,6 +242,28 @@ TEST(SpdyAltSvcWireFormatTest, ParseHeaderFieldValueMultiple) {
|
| EXPECT_DOUBLE_EQ(expected_altsvc_vector[j].probability,
|
| altsvc_vector[j].probability);
|
| }
|
| +
|
| + // Roundtrip test starting with |altsvc_vector|.
|
| + std::string reserialized_header_field_value =
|
| + SpdyAltSvcWireFormat::SerializeHeaderFieldValue(altsvc_vector);
|
| + SpdyAltSvcWireFormat::AlternativeServiceVector roundtrip_altsvc_vector;
|
| + ASSERT_TRUE(SpdyAltSvcWireFormat::ParseHeaderFieldValue(
|
| + reserialized_header_field_value, &roundtrip_altsvc_vector));
|
| + ASSERT_EQ(expected_altsvc_vector.size(), roundtrip_altsvc_vector.size());
|
| + for (unsigned int j = 0; j < roundtrip_altsvc_vector.size(); ++j) {
|
| + EXPECT_EQ(expected_altsvc_vector[j].protocol_id,
|
| + roundtrip_altsvc_vector[j].protocol_id);
|
| + EXPECT_EQ(expected_altsvc_vector[j].host,
|
| + roundtrip_altsvc_vector[j].host);
|
| + EXPECT_EQ(expected_altsvc_vector[j].port,
|
| + roundtrip_altsvc_vector[j].port);
|
| + EXPECT_EQ(expected_altsvc_vector[j].version,
|
| + roundtrip_altsvc_vector[j].version);
|
| + EXPECT_EQ(expected_altsvc_vector[j].max_age,
|
| + roundtrip_altsvc_vector[j].max_age);
|
| + EXPECT_DOUBLE_EQ(expected_altsvc_vector[j].probability,
|
| + roundtrip_altsvc_vector[j].probability);
|
| + }
|
| }
|
| }
|
|
|
| @@ -231,13 +273,29 @@ TEST(SpdyAltSvcWireFormatTest, SerializeEmptyHeaderFieldValue) {
|
| SpdyAltSvcWireFormat::SerializeHeaderFieldValue(altsvc_vector));
|
| }
|
|
|
| -// Test SerializeHeaderFieldValue() with and without hostname and each
|
| +// Test ParseHeaderFieldValue() and SerializeHeaderFieldValue() on the same pair
|
| +// of |expected_header_field_value| and |altsvc|, with and without hostname and
|
| +// each
|
| // parameter. Single alternative service at a time.
|
| -TEST(SpdyAltSvcWireFormatTest, SerializeHeaderFieldValue) {
|
| +TEST(SpdyAltSvcWireFormatTest, RoundTrip) {
|
| for (int i = 0; i < 1 << 4; ++i) {
|
| SpdyAltSvcWireFormat::AlternativeService altsvc;
|
| std::string expected_header_field_value;
|
| FuzzAlternativeService(i, &altsvc, &expected_header_field_value);
|
| +
|
| + // Test ParseHeaderFieldValue().
|
| + SpdyAltSvcWireFormat::AlternativeServiceVector parsed_altsvc_vector;
|
| + ASSERT_TRUE(SpdyAltSvcWireFormat::ParseHeaderFieldValue(
|
| + expected_header_field_value, &parsed_altsvc_vector));
|
| + ASSERT_EQ(1u, parsed_altsvc_vector.size());
|
| + EXPECT_EQ(altsvc.protocol_id, parsed_altsvc_vector[0].protocol_id);
|
| + EXPECT_EQ(altsvc.host, parsed_altsvc_vector[0].host);
|
| + EXPECT_EQ(altsvc.port, parsed_altsvc_vector[0].port);
|
| + EXPECT_EQ(altsvc.version, parsed_altsvc_vector[0].version);
|
| + EXPECT_EQ(altsvc.max_age, parsed_altsvc_vector[0].max_age);
|
| + EXPECT_DOUBLE_EQ(altsvc.probability, parsed_altsvc_vector[0].probability);
|
| +
|
| + // Test SerializeHeaderFieldValue().
|
| SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector;
|
| altsvc_vector.push_back(altsvc);
|
| EXPECT_EQ(expected_header_field_value,
|
| @@ -245,9 +303,11 @@ TEST(SpdyAltSvcWireFormatTest, SerializeHeaderFieldValue) {
|
| }
|
| }
|
|
|
| -// Test SerializeHeaderFieldValue() with and without hostname and each
|
| +// Test ParseHeaderFieldValue() and SerializeHeaderFieldValue() on the same pair
|
| +// of |expected_header_field_value| and |altsvc|, with and without hostname and
|
| +// each
|
| // parameter. Multiple alternative services at a time.
|
| -TEST(SpdyAltSvcWireFormatTest, SerializeHeaderFieldValueMultiple) {
|
| +TEST(SpdyAltSvcWireFormatTest, RoundTripMultiple) {
|
| SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector;
|
| std::string expected_header_field_value;
|
| for (int i = 0; i < 1 << 4; ++i) {
|
| @@ -255,6 +315,26 @@ TEST(SpdyAltSvcWireFormatTest, SerializeHeaderFieldValueMultiple) {
|
| FuzzAlternativeService(i, &altsvc, &expected_header_field_value);
|
| altsvc_vector.push_back(altsvc);
|
| }
|
| +
|
| + // Test ParseHeaderFieldValue().
|
| + SpdyAltSvcWireFormat::AlternativeServiceVector parsed_altsvc_vector;
|
| + ASSERT_TRUE(SpdyAltSvcWireFormat::ParseHeaderFieldValue(
|
| + expected_header_field_value, &parsed_altsvc_vector));
|
| + ASSERT_EQ(altsvc_vector.size(), parsed_altsvc_vector.size());
|
| + SpdyAltSvcWireFormat::AlternativeServiceVector::iterator expected_it =
|
| + altsvc_vector.begin();
|
| + SpdyAltSvcWireFormat::AlternativeServiceVector::iterator parsed_it =
|
| + parsed_altsvc_vector.begin();
|
| + for (; expected_it != altsvc_vector.end(); ++expected_it, ++parsed_it) {
|
| + EXPECT_EQ(expected_it->protocol_id, parsed_it->protocol_id);
|
| + EXPECT_EQ(expected_it->host, parsed_it->host);
|
| + EXPECT_EQ(expected_it->port, parsed_it->port);
|
| + EXPECT_EQ(expected_it->version, parsed_it->version);
|
| + EXPECT_EQ(expected_it->max_age, parsed_it->max_age);
|
| + EXPECT_DOUBLE_EQ(expected_it->probability, parsed_it->probability);
|
| + }
|
| +
|
| + // Test SerializeHeaderFieldValue().
|
| EXPECT_EQ(expected_header_field_value,
|
| SpdyAltSvcWireFormat::SerializeHeaderFieldValue(altsvc_vector));
|
| }
|
|
|