Chromium Code Reviews| Index: net/spdy/spdy_framer_test.cc |
| =================================================================== |
| --- net/spdy/spdy_framer_test.cc (revision 131881) |
| +++ net/spdy/spdy_framer_test.cc (working copy) |
| @@ -505,10 +505,15 @@ |
| return true; |
| } |
| - SpdySetting SpdySettingFromWireFormat(uint32 key, uint32 value) { |
| - return SpdySetting( |
| - SettingsFlagsAndId::FromWireFormat(spdy_version_, key), |
| - value); |
| + void AddSpdySettingFromWireFormat(SettingsMap* settings, |
| + uint32 key, |
| + uint32 value) { |
| + SettingsFlagsAndId flags_and_id = |
| + SettingsFlagsAndId::FromWireFormat(spdy_version_, key); |
| + SpdySettingsIds id = static_cast<SpdySettingsIds>(flags_and_id.id()); |
| + SpdySettingsFlags flags = |
| + static_cast<SpdySettingsFlags>(flags_and_id.flags()); |
| + settings->insert(std::make_pair(id, SettingsFlagsAndValue(flags, value))); |
| } |
| bool IsSpdy2() { return spdy_version_ < 3; } |
| @@ -1849,16 +1854,14 @@ |
| const char kDescription[] = "Network byte order SETTINGS frame"; |
| uint32 kValue = 0x0a0b0c0d; |
| - uint8 kFlags = 0x04; |
| - uint32 kId = 0x030201; |
| - SettingsFlagsAndId idAndFlags(kFlags, kId); |
| + SpdySettingsFlags kFlags = static_cast<SpdySettingsFlags>(0x04); |
| + SpdySettingsIds kId = static_cast<SpdySettingsIds>(0x030201); |
| - SpdySettings settings; |
| - settings.push_back(SpdySetting(idAndFlags, kValue)); |
| + SettingsMap settings; |
| + settings[kId] = SettingsFlagsAndValue(kFlags, kValue); |
| - EXPECT_EQ(kValue, settings.back().second); |
| - EXPECT_EQ(kFlags, settings.back().first.flags()); |
| - EXPECT_EQ(kId, settings.back().first.id()); |
| + EXPECT_EQ(kFlags, settings[kId].first); |
| + EXPECT_EQ(kValue, settings[kId].second); |
| const unsigned char kFrameDatav2[] = { |
| 0x80, spdy_version_, 0x00, 0x04, |
| @@ -1885,57 +1888,46 @@ |
| SpdyFramer::GetControlFrameStreamId(frame.get())); |
| // Make sure that ParseSettings also works as advertised. |
| - SpdySettings parsed_settings; |
| + SettingsMap parsed_settings; |
| EXPECT_TRUE(framer.ParseSettings(frame.get(), &parsed_settings)); |
| EXPECT_EQ(settings.size(), parsed_settings.size()); |
| - EXPECT_EQ(kFlags, parsed_settings.back().first.flags()); |
| - EXPECT_EQ(kId, parsed_settings.back().first.id()); |
| + EXPECT_EQ(kFlags, parsed_settings[kId].first); |
| + EXPECT_EQ(kValue, parsed_settings[kId].second); |
| } |
| { |
| const char kDescription[] = "Basic SETTINGS frame"; |
| - SpdySettings settings; |
| - settings.push_back( |
| - SpdySettingFromWireFormat(0x00000000, 0x00000000)); // 1st Setting |
| - settings.push_back( |
| - SpdySettingFromWireFormat(0xffffffff, 0x00000001)); // 2nd Setting |
| - settings.push_back( |
| - SpdySettingFromWireFormat(0xff000001, 0x00000002)); // 3rd Setting |
| + SettingsMap settings; |
| + AddSpdySettingFromWireFormat( |
| + &settings, 0x00000000, 0x00000001); // 1st Setting |
| + AddSpdySettingFromWireFormat( |
| + &settings, 0x01000002, 0x00000002); // 2nd Setting |
| + AddSpdySettingFromWireFormat( |
| + &settings, 0x02000003, 0x00000003); // 3rd Setting |
| + AddSpdySettingFromWireFormat( |
| + &settings, 0x03000004, 0xff000004); // 4th Setting |
| + AddSpdySettingFromWireFormat( |
| + &settings, 0xff000005, 0x00000005); // 5th Setting |
| + AddSpdySettingFromWireFormat( |
| + &settings, 0xffffffff, 0x00000006); // 6th Setting |
| - // Duplicates allowed |
| - settings.push_back( |
| - SpdySettingFromWireFormat(0x01000002, 0x00000003)); // 4th Setting |
| - settings.push_back( |
| - SpdySettingFromWireFormat(0x01000002, 0x00000003)); // 5th Setting |
| - |
| - settings.push_back( |
| - SpdySettingFromWireFormat(0x01000003, 0x000000ff)); // 6th Setting |
| - settings.push_back( |
| - SpdySettingFromWireFormat(0x01000004, 0xff000001)); // 7th Setting |
| - settings.push_back( |
| - SpdySettingFromWireFormat(0x01000004, 0xffffffff)); // 8th Setting |
| - |
| const unsigned char kFrameData[] = { |
| 0x80, spdy_version_, 0x00, 0x04, |
| - 0x00, 0x00, 0x00, 0x44, |
| - 0x00, 0x00, 0x00, 0x08, |
| + 0x00, 0x00, 0x00, 0x34, |
| + 0x00, 0x00, 0x00, 0x06, |
| 0x00, 0x00, 0x00, 0x00, // 1st Setting |
| - 0x00, 0x00, 0x00, 0x00, |
| - 0xff, 0xff, 0xff, 0xff, // 2nd Setting |
| 0x00, 0x00, 0x00, 0x01, |
| - 0x01, 0x00, 0x00, 0xff, // 3rd Setting |
| + 0x02, 0x00, 0x00, 0x01, // 2nd Setting |
| 0x00, 0x00, 0x00, 0x02, |
| - 0x02, 0x00, 0x00, 0x01, // 4th Setting |
| + 0x03, 0x00, 0x00, 0x02, // 3rd Setting |
| 0x00, 0x00, 0x00, 0x03, |
| - 0x02, 0x00, 0x00, 0x01, // 5th Setting |
| - 0x00, 0x00, 0x00, 0x03, |
| - 0x03, 0x00, 0x00, 0x01, // 6th Setting |
| - 0x00, 0x00, 0x00, 0xff, |
| - 0x04, 0x00, 0x00, 0x01, // 7th Setting |
| - 0xff, 0x00, 0x00, 0x01, |
| - 0x04, 0x00, 0x00, 0x01, // 8th Setting |
| - 0xff, 0xff, 0xff, 0xff, |
| + 0x04, 0x00, 0x00, 0x03, // 4th Setting |
| + 0xff, 0x00, 0x00, 0x04, |
| + 0x05, 0x00, 0x00, 0xff, // 5th Setting |
| + 0x00, 0x00, 0x00, 0x05, |
| + 0xff, 0xff, 0xff, 0xff, // 6th Setting |
| + 0x00, 0x00, 0x00, 0x06, |
| }; |
| scoped_ptr<SpdySettingsControlFrame> frame(framer.CreateSettings(settings)); |
| CompareFrame(kDescription, |
| @@ -1949,7 +1941,7 @@ |
| { |
| const char kDescription[] = "Empty SETTINGS frame"; |
| - SpdySettings settings; |
| + SettingsMap settings; |
| const unsigned char kFrameData[] = { |
| 0x80, spdy_version_, 0x00, 0x04, |
| @@ -2319,7 +2311,7 @@ |
| TEST_P(SpdyFramerTest, ReadZeroLenSettingsFrame) { |
| SpdyFramer framer(spdy_version_); |
| - SpdySettings settings; |
| + SettingsMap settings; |
| scoped_ptr<SpdyFrame> control_frame(framer.CreateSettings(settings)); |
| control_frame->set_length(0); |
| TestSpdyVisitor visitor(spdy_version_); |
| @@ -2334,10 +2326,11 @@ |
| // Tests handling of SETTINGS frames with invalid length. |
| TEST_P(SpdyFramerTest, ReadBogusLenSettingsFrame) { |
| SpdyFramer framer(spdy_version_); |
| - SpdySettings settings; |
| + SettingsMap settings; |
| // Add a setting to pad the frame so that we don't get a buffer overflow when |
| // calling SimulateInFramer() below. |
| - settings.push_back(SpdySetting(SettingsFlagsAndId(0, 1), 0x00000002)); |
| + settings[SETTINGS_UPLOAD_BANDWIDTH] = |
| + SettingsFlagsAndValue(SETTINGS_FLAG_NONE, 0x00000002); |
| scoped_ptr<SpdyFrame> control_frame(framer.CreateSettings(settings)); |
| control_frame->set_length(5); |
| TestSpdyVisitor visitor(spdy_version_); |
| @@ -2352,10 +2345,13 @@ |
| // Tests handling of SETTINGS frames larger than the frame buffer size. |
| TEST_P(SpdyFramerTest, ReadLargeSettingsFrame) { |
| SpdyFramer framer(spdy_version_); |
| - SpdySettings settings; |
| - settings.push_back(SpdySetting(SettingsFlagsAndId(0, 1), 0x00000002)); |
| - settings.push_back(SpdySetting(SettingsFlagsAndId(0, 2), 0x00000003)); |
| - settings.push_back(SpdySetting(SettingsFlagsAndId(0, 3), 0x00000004)); |
| + SettingsMap settings; |
| + SpdySettingsFlags flags = SETTINGS_FLAG_NONE; |
| + settings[SETTINGS_UPLOAD_BANDWIDTH] = |
| + SettingsFlagsAndValue(flags, 0x00000002); |
| + settings[SETTINGS_DOWNLOAD_BANDWIDTH] = |
| + SettingsFlagsAndValue(flags, 0x00000003); |
| + settings[SETTINGS_ROUND_TRIP_TIME] = SettingsFlagsAndValue(flags, 0x00000004); |
| scoped_ptr<SpdyFrame> control_frame(framer.CreateSettings(settings)); |
| EXPECT_LT(SpdyFramer::kUncompressedControlFrameBufferInitialSize, |
| control_frame->length() + SpdyControlFrame::kHeaderSize); |
| @@ -2388,34 +2384,16 @@ |
| EXPECT_EQ(2, visitor.settings_frame_count_); |
| } |
| -// Tests handling of SETTINGS frame with duplicate entries. |
| -TEST_P(SpdyFramerTest, ReadDuplicateSettings) { |
| - SpdyFramer framer(spdy_version_); |
| - SpdySettings settings; |
| - settings.push_back(SpdySetting(SettingsFlagsAndId(0, 1), 0x00000002)); |
| - settings.push_back(SpdySetting(SettingsFlagsAndId(0, 1), 0x00000003)); |
| - // This last setting should not be processed due to error above. |
| - settings.push_back(SpdySetting(SettingsFlagsAndId(0, 3), 0x00000003)); |
| - scoped_ptr<SpdyFrame> control_frame(framer.CreateSettings(settings)); |
| - TestSpdyVisitor visitor(spdy_version_); |
| - visitor.use_compression_ = false; |
| - |
| - visitor.SimulateInFramer( |
| - reinterpret_cast<unsigned char*>(control_frame->data()), |
| - control_frame->length() + SpdyControlFrame::kHeaderSize); |
| - EXPECT_EQ(1, visitor.error_count_); |
| - EXPECT_EQ(1, visitor.setting_count_); |
| - EXPECT_EQ(1, visitor.settings_frame_count_); |
| -} |
| - |
| // Tests handling of SETTINGS frame with entries out of order. |
| TEST_P(SpdyFramerTest, ReadOutOfOrderSettings) { |
| SpdyFramer framer(spdy_version_); |
| - SpdySettings settings; |
| - settings.push_back(SpdySetting(SettingsFlagsAndId(0, 2), 0x00000002)); |
| - settings.push_back(SpdySetting(SettingsFlagsAndId(0, 1), 0x00000003)); |
| - // This last setting should not be processed due to error above. |
| - settings.push_back(SpdySetting(SettingsFlagsAndId(0, 3), 0x00000003)); |
| + SettingsMap settings; |
| + SpdySettingsFlags flags = SETTINGS_FLAG_NONE; |
| + settings[SETTINGS_DOWNLOAD_BANDWIDTH] = |
| + SettingsFlagsAndValue(flags, 0x00000002); |
| + settings[SETTINGS_UPLOAD_BANDWIDTH] = |
| + SettingsFlagsAndValue(flags, 0x00000003); |
| + settings[SETTINGS_ROUND_TRIP_TIME] = SettingsFlagsAndValue(flags, 0x00000003); |
| scoped_ptr<SpdyFrame> control_frame(framer.CreateSettings(settings)); |
| TestSpdyVisitor visitor(spdy_version_); |
| visitor.use_compression_ = false; |
| @@ -2423,8 +2401,8 @@ |
| visitor.SimulateInFramer( |
| reinterpret_cast<unsigned char*>(control_frame->data()), |
| control_frame->length() + SpdyControlFrame::kHeaderSize); |
| - EXPECT_EQ(1, visitor.error_count_); |
| - EXPECT_EQ(1, visitor.setting_count_); |
| + EXPECT_EQ(0, visitor.error_count_); |
|
Ryan Hamilton
2012/04/12 17:11:21
Why did the error_count change here?
ramant (doing other things)
2012/04/12 18:35:59
In the older version (in the list), if we had supp
Ryan Hamilton
2012/04/17 02:32:49
Sounds like it's invalid now. Nuke it?
ramant (doing other things)
2012/04/17 18:48:19
Done.
|
| + EXPECT_EQ(settings.size(), static_cast<unsigned>(visitor.setting_count_)); |
| EXPECT_EQ(1, visitor.settings_frame_count_); |
| } |