Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Side by Side Diff: net/spdy/buffered_spdy_framer_spdy2_unittest.cc

Issue 9817014: Created a new class SpdyTestStateHelper to serve as a helper to manage the state of a number of SPD… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add TODO Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/spdy/buffered_spdy_framer.h" 5 #include "net/spdy/buffered_spdy_framer.h"
6 6
7 #include "net/spdy/spdy_test_util_spdy2.h" 7 #include "net/spdy/spdy_test_util_spdy2.h"
8 #include "testing/platform_test.h" 8 #include "testing/platform_test.h"
9 9
10 using namespace net::test_spdy2; 10 using namespace net::test_spdy2;
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 SpdyStreamId header_stream_id_; 136 SpdyStreamId header_stream_id_;
137 137
138 // Headers from OnSyn, OnSynReply and OnHeaders for verification. 138 // Headers from OnSyn, OnSynReply and OnHeaders for verification.
139 SpdyHeaderBlock headers_; 139 SpdyHeaderBlock headers_;
140 }; 140 };
141 141
142 } // namespace 142 } // namespace
143 143
144 class BufferedSpdyFramerSpdy2Test : public PlatformTest { 144 class BufferedSpdyFramerSpdy2Test : public PlatformTest {
145 protected: 145 protected:
146 void EnableCompression(bool enabled) {
147 SpdyFramer::set_enable_compression_default(enabled);
148 }
149
150 // Returns true if the two header blocks have equivalent content. 146 // Returns true if the two header blocks have equivalent content.
151 bool CompareHeaderBlocks(const SpdyHeaderBlock* expected, 147 bool CompareHeaderBlocks(const SpdyHeaderBlock* expected,
152 const SpdyHeaderBlock* actual) { 148 const SpdyHeaderBlock* actual) {
153 if (expected->size() != actual->size()) { 149 if (expected->size() != actual->size()) {
154 LOG(ERROR) << "Expected " << expected->size() << " headers; actually got " 150 LOG(ERROR) << "Expected " << expected->size() << " headers; actually got "
155 << actual->size() << "."; 151 << actual->size() << ".";
156 return false; 152 return false;
157 } 153 }
158 for (SpdyHeaderBlock::const_iterator it = expected->begin(); 154 for (SpdyHeaderBlock::const_iterator it = expected->begin();
159 it != expected->end(); 155 it != expected->end();
160 ++it) { 156 ++it) {
161 SpdyHeaderBlock::const_iterator it2 = actual->find(it->first); 157 SpdyHeaderBlock::const_iterator it2 = actual->find(it->first);
162 if (it2 == actual->end()) { 158 if (it2 == actual->end()) {
163 LOG(ERROR) << "Expected header name '" << it->first << "'."; 159 LOG(ERROR) << "Expected header name '" << it->first << "'.";
164 return false; 160 return false;
165 } 161 }
166 if (it->second.compare(it2->second) != 0) { 162 if (it->second.compare(it2->second) != 0) {
167 LOG(ERROR) << "Expected header named '" << it->first 163 LOG(ERROR) << "Expected header named '" << it->first
168 << "' to have a value of '" << it->second 164 << "' to have a value of '" << it->second
169 << "'. The actual value received was '" << it2->second 165 << "'. The actual value received was '" << it2->second
170 << "'."; 166 << "'.";
171 return false; 167 return false;
172 } 168 }
173 } 169 }
174 return true; 170 return true;
175 } 171 }
172
173 private:
174 SpdyTestStateHelper spdy_state_;
176 }; 175 };
177 176
178 TEST_F(BufferedSpdyFramerSpdy2Test, OnSetting) { 177 TEST_F(BufferedSpdyFramerSpdy2Test, OnSetting) {
179 EnableCompression(false);
180
181 SpdyFramer framer(2); 178 SpdyFramer framer(2);
182 SpdySettings settings; 179 SpdySettings settings;
183 settings.push_back(SpdySetting(SettingsFlagsAndId(0, 1), 0x00000002)); 180 settings.push_back(SpdySetting(SettingsFlagsAndId(0, 1), 0x00000002));
184 settings.push_back(SpdySetting(SettingsFlagsAndId(0, 1), 0x00000003)); 181 settings.push_back(SpdySetting(SettingsFlagsAndId(0, 1), 0x00000003));
185 182
186 scoped_ptr<SpdyFrame> control_frame(framer.CreateSettings(settings)); 183 scoped_ptr<SpdyFrame> control_frame(framer.CreateSettings(settings));
187 TestBufferedSpdyVisitor visitor; 184 TestBufferedSpdyVisitor visitor;
188 185
189 visitor.SimulateInFramer( 186 visitor.SimulateInFramer(
190 reinterpret_cast<unsigned char*>(control_frame->data()), 187 reinterpret_cast<unsigned char*>(control_frame->data()),
191 control_frame->length() + SpdyControlFrame::kHeaderSize); 188 control_frame->length() + SpdyControlFrame::kHeaderSize);
192 EXPECT_EQ(1, visitor.error_count_); 189 EXPECT_EQ(1, visitor.error_count_);
193 EXPECT_EQ(1, visitor.setting_count_); 190 EXPECT_EQ(1, visitor.setting_count_);
194 } 191 }
195 192
196 TEST_F(BufferedSpdyFramerSpdy2Test, ReadSynStreamHeaderBlock) { 193 TEST_F(BufferedSpdyFramerSpdy2Test, ReadSynStreamHeaderBlock) {
197 EnableCompression(false);
198
199 SpdyHeaderBlock headers; 194 SpdyHeaderBlock headers;
200 headers["aa"] = "vv"; 195 headers["aa"] = "vv";
201 headers["bb"] = "ww"; 196 headers["bb"] = "ww";
202 BufferedSpdyFramer framer(2); 197 BufferedSpdyFramer framer(2);
203 scoped_ptr<SpdySynStreamControlFrame> control_frame( 198 scoped_ptr<SpdySynStreamControlFrame> control_frame(
204 framer.CreateSynStream(1, // stream_id 199 framer.CreateSynStream(1, // stream_id
205 0, // associated_stream_id 200 0, // associated_stream_id
206 1, // priority 201 1, // priority
207 CONTROL_FLAG_NONE, 202 CONTROL_FLAG_NONE,
208 true, // compress 203 true, // compress
209 &headers)); 204 &headers));
210 EXPECT_TRUE(control_frame.get() != NULL); 205 EXPECT_TRUE(control_frame.get() != NULL);
211 206
212 TestBufferedSpdyVisitor visitor; 207 TestBufferedSpdyVisitor visitor;
213 visitor.SimulateInFramer( 208 visitor.SimulateInFramer(
214 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 209 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
215 control_frame.get()->length() + SpdyControlFrame::kHeaderSize); 210 control_frame.get()->length() + SpdyControlFrame::kHeaderSize);
216 EXPECT_EQ(0, visitor.error_count_); 211 EXPECT_EQ(0, visitor.error_count_);
217 EXPECT_EQ(1, visitor.syn_frame_count_); 212 EXPECT_EQ(1, visitor.syn_frame_count_);
218 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 213 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
219 EXPECT_EQ(0, visitor.headers_frame_count_); 214 EXPECT_EQ(0, visitor.headers_frame_count_);
220 EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_)); 215 EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_));
221 } 216 }
222 217
223 TEST_F(BufferedSpdyFramerSpdy2Test, ReadSynReplyHeaderBlock) { 218 TEST_F(BufferedSpdyFramerSpdy2Test, ReadSynReplyHeaderBlock) {
224 EnableCompression(false);
225
226 SpdyHeaderBlock headers; 219 SpdyHeaderBlock headers;
227 headers["alpha"] = "beta"; 220 headers["alpha"] = "beta";
228 headers["gamma"] = "delta"; 221 headers["gamma"] = "delta";
229 BufferedSpdyFramer framer(2); 222 BufferedSpdyFramer framer(2);
230 scoped_ptr<SpdySynReplyControlFrame> control_frame( 223 scoped_ptr<SpdySynReplyControlFrame> control_frame(
231 framer.CreateSynReply(1, // stream_id 224 framer.CreateSynReply(1, // stream_id
232 CONTROL_FLAG_NONE, 225 CONTROL_FLAG_NONE,
233 true, // compress 226 true, // compress
234 &headers)); 227 &headers));
235 EXPECT_TRUE(control_frame.get() != NULL); 228 EXPECT_TRUE(control_frame.get() != NULL);
236 229
237 TestBufferedSpdyVisitor visitor; 230 TestBufferedSpdyVisitor visitor;
238 visitor.SimulateInFramer( 231 visitor.SimulateInFramer(
239 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 232 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
240 control_frame.get()->length() + SpdyControlFrame::kHeaderSize); 233 control_frame.get()->length() + SpdyControlFrame::kHeaderSize);
241 EXPECT_EQ(0, visitor.error_count_); 234 EXPECT_EQ(0, visitor.error_count_);
242 EXPECT_EQ(0, visitor.syn_frame_count_); 235 EXPECT_EQ(0, visitor.syn_frame_count_);
243 EXPECT_EQ(1, visitor.syn_reply_frame_count_); 236 EXPECT_EQ(1, visitor.syn_reply_frame_count_);
244 EXPECT_EQ(0, visitor.headers_frame_count_); 237 EXPECT_EQ(0, visitor.headers_frame_count_);
245 EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_)); 238 EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_));
246 } 239 }
247 240
248 TEST_F(BufferedSpdyFramerSpdy2Test, ReadHeadersHeaderBlock) { 241 TEST_F(BufferedSpdyFramerSpdy2Test, ReadHeadersHeaderBlock) {
249 EnableCompression(false);
250
251 SpdyHeaderBlock headers; 242 SpdyHeaderBlock headers;
252 headers["alpha"] = "beta"; 243 headers["alpha"] = "beta";
253 headers["gamma"] = "delta"; 244 headers["gamma"] = "delta";
254 BufferedSpdyFramer framer(2); 245 BufferedSpdyFramer framer(2);
255 scoped_ptr<SpdyHeadersControlFrame> control_frame( 246 scoped_ptr<SpdyHeadersControlFrame> control_frame(
256 framer.CreateHeaders(1, // stream_id 247 framer.CreateHeaders(1, // stream_id
257 CONTROL_FLAG_NONE, 248 CONTROL_FLAG_NONE,
258 true, // compress 249 true, // compress
259 &headers)); 250 &headers));
260 EXPECT_TRUE(control_frame.get() != NULL); 251 EXPECT_TRUE(control_frame.get() != NULL);
261 252
262 TestBufferedSpdyVisitor visitor; 253 TestBufferedSpdyVisitor visitor;
263 visitor.SimulateInFramer( 254 visitor.SimulateInFramer(
264 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 255 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
265 control_frame.get()->length() + SpdyControlFrame::kHeaderSize); 256 control_frame.get()->length() + SpdyControlFrame::kHeaderSize);
266 EXPECT_EQ(0, visitor.error_count_); 257 EXPECT_EQ(0, visitor.error_count_);
267 EXPECT_EQ(0, visitor.syn_frame_count_); 258 EXPECT_EQ(0, visitor.syn_frame_count_);
268 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 259 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
269 EXPECT_EQ(1, visitor.headers_frame_count_); 260 EXPECT_EQ(1, visitor.headers_frame_count_);
270 EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_)); 261 EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_));
271 } 262 }
272 } // namespace spdy 263 } // namespace spdy
OLDNEW
« no previous file with comments | « net/http/http_proxy_client_socket_pool_spdy3_unittest.cc ('k') | net/spdy/buffered_spdy_framer_spdy3_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698