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

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

Issue 552123005: Integrate SIMD optimisations for zlib (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix crc_fold_copy to work with inputs where len % 16 > 0 Created 6 years, 1 month 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
« no previous file with comments | « no previous file | third_party/zlib/BUILD.gn » ('j') | third_party/zlib/fill_window_sse.c » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <algorithm> 5 #include <algorithm>
6 #include <iostream> 6 #include <iostream>
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 2021 matching lines...) Expand 10 before | Expand all | Expand 10 after
2032 if (!IsSpdy2() && !IsSpdy3()) { 2032 if (!IsSpdy2() && !IsSpdy3()) {
2033 // SYN_STREAM not supported for SPDY>3 2033 // SYN_STREAM not supported for SPDY>3
2034 return; 2034 return;
2035 } 2035 }
2036 SpdyFramer framer(spdy_version_); 2036 SpdyFramer framer(spdy_version_);
2037 framer.set_enable_compression(true); 2037 framer.set_enable_compression(true);
2038 2038
2039 { 2039 {
2040 const char kDescription[] = 2040 const char kDescription[] =
2041 "SYN_STREAM frame, low pri, no FIN"; 2041 "SYN_STREAM frame, low pri, no FIN";
2042 const SpdyPriority priority = IsSpdy2() ? 2 : 4;
2042 2043
2043 const SpdyPriority priority = IsSpdy2() ? 2 : 4;
2044 const unsigned char kV2FrameData[] = { 2044 const unsigned char kV2FrameData[] = {
2045 0x80, spdy_version_ch_, 0x00, 0x01, 2045 0x80, spdy_version_ch_, 0x00, 0x01,
2046 0x00, 0x00, 0x00, 0x36, 2046 0x00, 0x00, 0x00, 0x36,
2047 0x00, 0x00, 0x00, 0x01, 2047 0x00, 0x00, 0x00, 0x01,
2048 0x00, 0x00, 0x00, 0x00, 2048 0x00, 0x00, 0x00, 0x00,
2049 0x80, 0x00, 0x38, 0xea, 2049 0x80, 0x00, 0x38, 0xea,
2050 0xdf, 0xa2, 0x51, 0xb2, 2050 0xdf, 0xa2, 0x51, 0xb2,
2051 0x62, 0x60, 0x62, 0x60, 2051 0x62, 0x60, 0x62, 0x60,
2052 0x4e, 0x4a, 0x2c, 0x62, 2052 0x4e, 0x4a, 0x2c, 0x62,
2053 0x60, 0x06, 0x08, 0xa0, 2053 0x60, 0x06, 0x08, 0xa0,
(...skipping 16 matching lines...) Expand all
2070 0xC2, 0x4B, 0x4A, 0x04, 2070 0xC2, 0x4B, 0x4A, 0x04,
2071 0xE5, 0x0B, 0x66, 0x80, 2071 0xE5, 0x0B, 0x66, 0x80,
2072 0x00, 0x4A, 0xCB, 0xCF, 2072 0x00, 0x4A, 0xCB, 0xCF,
2073 0x07, 0x08, 0x20, 0x10, 2073 0x07, 0x08, 0x20, 0x10,
2074 0x95, 0x96, 0x9F, 0x0F, 2074 0x95, 0x96, 0x9F, 0x0F,
2075 0xA2, 0x00, 0x02, 0x28, 2075 0xA2, 0x00, 0x02, 0x28,
2076 0x29, 0xB1, 0x08, 0x20, 2076 0x29, 0xB1, 0x08, 0x20,
2077 0x80, 0x00, 0x00, 0x00, 2077 0x80, 0x00, 0x00, 0x00,
2078 0x00, 0xFF, 0xFF, 2078 0x00, 0xFF, 0xFF,
2079 }; 2079 };
2080 const unsigned char kV2SIMDFrameData[] = {
2081 0x80, spdy_version_ch_, 0x00, 0x01,
2082 0x00, 0x00, 0x00, 0x33,
2083 0x00, 0x00, 0x00, 0x01,
2084 0x00, 0x00, 0x00, 0x00,
2085 0x80, 0x00, 0x38, 0xea,
2086 0xdf, 0xa2, 0x51, 0xb2,
2087 0x62, 0x60, 0x62, 0x60,
2088 0x4e, 0x4a, 0x2c, 0x62,
2089 0x60, 0x06, 0x08, 0xa0,
2090 0xb4, 0xfc, 0x7c, 0x80,
2091 0x00, 0x62, 0x60, 0x06,
2092 0x13, 0x00, 0x01, 0x94,
2093 0x94, 0x58, 0x04, 0x10,
2094 0x40, 0x00, 0x00, 0x00,
2095 0x00, 0xff, 0xff,
2096 };
2097 const unsigned char kV3SIMDFrameData[] = {
2098 0x80, spdy_version_ch_, 0x00, 0x01,
2099 0x00, 0x00, 0x00, 0x32,
2100 0x00, 0x00, 0x00, 0x01,
2101 0x00, 0x00, 0x00, 0x00,
2102 0x80, 0x00, 0x38, 0xea,
2103 0xe3, 0xc6, 0xa7, 0xc2,
2104 0x02, 0xe5, 0x0e, 0x50,
2105 0xc2, 0x4b, 0x4a, 0x04,
2106 0xe5, 0x0b, 0x66, 0x80,
2107 0x00, 0x4a, 0xcb, 0xcf,
2108 0x07, 0x08, 0x20, 0x24,
2109 0x0a, 0x20, 0x80, 0x92,
2110 0x12, 0x8b, 0x00, 0x02,
2111 0x08, 0x00, 0x00, 0x00,
2112 0xff, 0xff,
2113 };
2114
2080 SpdySynStreamIR syn_stream(1); 2115 SpdySynStreamIR syn_stream(1);
2081 syn_stream.set_priority(priority); 2116 syn_stream.set_priority(priority);
2082 syn_stream.SetHeader("bar", "foo"); 2117 syn_stream.SetHeader("bar", "foo");
2083 syn_stream.SetHeader("foo", "bar"); 2118 syn_stream.SetHeader("foo", "bar");
2084 scoped_ptr<SpdyFrame> frame(framer.SerializeSynStream(syn_stream)); 2119 scoped_ptr<SpdyFrame> frame(framer.SerializeSynStream(syn_stream));
2120 const unsigned char* frame_data =
2121 reinterpret_cast<const unsigned char*>(frame->data());
2085 if (IsSpdy2()) { 2122 if (IsSpdy2()) {
2086 CompareFrame(kDescription, *frame, kV2FrameData, arraysize(kV2FrameData)); 2123 // Try comparing with SIMD version, if that fails, do a failing check
2124 // with pretty printing against non-SIMD version
2125 if (memcmp(frame_data,
2126 kV2SIMDFrameData,
2127 std::min(arraysize(kV2SIMDFrameData), frame->size())) != 0) {
2128 CompareCharArraysWithHexError(kDescription,
2129 frame_data,
2130 frame->size(),
2131 kV2FrameData,
2132 arraysize(kV2FrameData));
2133 }
2087 } else if (IsSpdy3()) { 2134 } else if (IsSpdy3()) {
2088 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); 2135 if (memcmp(frame_data,
2136 kV3SIMDFrameData,
2137 std::min(arraysize(kV3SIMDFrameData), frame->size())) != 0) {
2138 CompareCharArraysWithHexError(kDescription,
2139 frame_data,
2140 frame->size(),
2141 kV3FrameData,
2142 arraysize(kV3FrameData));
2143 }
2089 } else { 2144 } else {
2090 LOG(FATAL) << "Unsupported version in test."; 2145 LOG(FATAL) << "Unsupported version in test.";
2091 } 2146 }
2092 } 2147 }
2093 } 2148 }
2094 #endif // !defined(USE_SYSTEM_ZLIB) 2149 #endif // !defined(USE_SYSTEM_ZLIB)
2095 2150
2096 TEST_P(SpdyFramerTest, CreateSynReplyUncompressed) { 2151 TEST_P(SpdyFramerTest, CreateSynReplyUncompressed) {
2097 if (spdy_version_ > SPDY3) { 2152 if (spdy_version_ > SPDY3) {
2098 // SYN_REPLY unsupported in SPDY>3 2153 // SYN_REPLY unsupported in SPDY>3
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
2267 0x4a, 0x04, 0xe5, 0x0b, 2322 0x4a, 0x04, 0xe5, 0x0b,
2268 0x66, 0x80, 0x00, 0x4a, 2323 0x66, 0x80, 0x00, 0x4a,
2269 0xcb, 0xcf, 0x07, 0x08, 2324 0xcb, 0xcf, 0x07, 0x08,
2270 0x20, 0x10, 0x95, 0x96, 2325 0x20, 0x10, 0x95, 0x96,
2271 0x9f, 0x0f, 0xa2, 0x00, 2326 0x9f, 0x0f, 0xa2, 0x00,
2272 0x02, 0x28, 0x29, 0xb1, 2327 0x02, 0x28, 0x29, 0xb1,
2273 0x08, 0x20, 0x80, 0x00, 2328 0x08, 0x20, 0x80, 0x00,
2274 0x00, 0x00, 0x00, 0xff, 2329 0x00, 0x00, 0x00, 0xff,
2275 0xff, 2330 0xff,
2276 }; 2331 };
2332 const unsigned char kV2SIMDFrameData[] = {
2333 0x80, spdy_version_ch_, 0x00, 0x02,
2334 0x00, 0x00, 0x00, 0x2f,
2335 0x00, 0x00, 0x00, 0x01,
2336 0x00, 0x00, 0x38, 0xea,
2337 0xdf, 0xa2, 0x51, 0xb2,
2338 0x62, 0x60, 0x62, 0x60,
2339 0x4e, 0x4a, 0x2c, 0x62,
2340 0x60, 0x06, 0x08, 0xa0,
2341 0xb4, 0xfc, 0x7c, 0x80,
2342 0x00, 0x62, 0x60, 0x06,
2343 0x13, 0x00, 0x01, 0x94,
2344 0x94, 0x58, 0x04, 0x10,
2345 0x40, 0x00, 0x00, 0x00,
2346 0x00, 0xff, 0xff,
2347 };
2348 const unsigned char kV3SIMDFrameData[] = {
2349 0x80, spdy_version_ch_, 0x00, 0x02,
2350 0x00, 0x00, 0x00, 0x2c,
2351 0x00, 0x00, 0x00, 0x01,
2352 0x38, 0xea, 0xe3, 0xc6,
2353 0xa7, 0xc2, 0x02, 0xe5,
2354 0x0e, 0x50, 0xc2, 0x4b,
2355 0x4a, 0x04, 0xe5, 0x0b,
2356 0x66, 0x80, 0x00, 0x4a,
2357 0xcb, 0xcf, 0x07, 0x08,
2358 0x20, 0x24, 0x0a, 0x20,
2359 0x80, 0x92, 0x12, 0x8b,
2360 0x00, 0x02, 0x08, 0x00,
2361 0x00, 0x00, 0xff, 0xff,
2362 };
2363
2277 SpdySynReplyIR syn_reply(1); 2364 SpdySynReplyIR syn_reply(1);
2278 syn_reply.SetHeader("bar", "foo"); 2365 syn_reply.SetHeader("bar", "foo");
2279 syn_reply.SetHeader("foo", "bar"); 2366 syn_reply.SetHeader("foo", "bar");
2280 scoped_ptr<SpdyFrame> frame(framer.SerializeSynReply(syn_reply)); 2367 scoped_ptr<SpdyFrame> frame(framer.SerializeSynReply(syn_reply));
2368 const unsigned char* frame_data =
2369 reinterpret_cast<const unsigned char*>(frame->data());
2281 if (IsSpdy2()) { 2370 if (IsSpdy2()) {
2282 CompareFrame(kDescription, *frame, kV2FrameData, arraysize(kV2FrameData)); 2371 // Try comparing with SIMD version, if that fails, do a failing check
2372 // with pretty printing against non-SIMD version
2373 if (memcmp(frame_data,
2374 kV2SIMDFrameData,
2375 std::min(arraysize(kV2SIMDFrameData), frame->size())) != 0) {
2376 CompareCharArraysWithHexError(kDescription,
2377 frame_data,
2378 frame->size(),
2379 kV2FrameData,
2380 arraysize(kV2FrameData));
2381 }
2283 } else if (IsSpdy3()) { 2382 } else if (IsSpdy3()) {
2284 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); 2383 if (memcmp(frame_data,
2384 kV3SIMDFrameData,
2385 std::min(arraysize(kV3SIMDFrameData), frame->size())) != 0) {
2386 CompareCharArraysWithHexError(kDescription,
2387 frame_data,
2388 frame->size(),
2389 kV3FrameData,
2390 arraysize(kV3FrameData));
2391 }
2285 } else { 2392 } else {
2286 LOG(FATAL) << "Unsupported version in test."; 2393 LOG(FATAL) << "Unsupported version in test.";
2287 } 2394 }
2288 } 2395 }
2289 } 2396 }
2290 #endif // !defined(USE_SYSTEM_ZLIB) 2397 #endif // !defined(USE_SYSTEM_ZLIB)
2291 2398
2292 TEST_P(SpdyFramerTest, CreateRstStream) { 2399 TEST_P(SpdyFramerTest, CreateRstStream) {
2293 SpdyFramer framer(spdy_version_); 2400 SpdyFramer framer(spdy_version_);
2294 2401
(...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after
2844 0x4a, 0x04, 0xe5, 0x0b, 2951 0x4a, 0x04, 0xe5, 0x0b,
2845 0x66, 0x80, 0x00, 0x4a, 2952 0x66, 0x80, 0x00, 0x4a,
2846 0xcb, 0xcf, 0x07, 0x08, 2953 0xcb, 0xcf, 0x07, 0x08,
2847 0x20, 0x10, 0x95, 0x96, 2954 0x20, 0x10, 0x95, 0x96,
2848 0x9f, 0x0f, 0xa2, 0x00, 2955 0x9f, 0x0f, 0xa2, 0x00,
2849 0x02, 0x28, 0x29, 0xb1, 2956 0x02, 0x28, 0x29, 0xb1,
2850 0x08, 0x20, 0x80, 0x00, 2957 0x08, 0x20, 0x80, 0x00,
2851 0x00, 0x00, 0x00, 0xff, 2958 0x00, 0x00, 0x00, 0xff,
2852 0xff, 2959 0xff,
2853 }; 2960 };
2961 const unsigned char kV2SIMDFrameData[] = {
2962 0x80, spdy_version_ch_, 0x00, 0x08,
2963 0x00, 0x00, 0x00, 0x2f,
2964 0x00, 0x00, 0x00, 0x01,
2965 0x00, 0x00, 0x38, 0xea,
2966 0xdf, 0xa2, 0x51, 0xb2,
2967 0x62, 0x60, 0x62, 0x60,
2968 0x4e, 0x4a, 0x2c, 0x62,
2969 0x60, 0x06, 0x08, 0xa0,
2970 0xb4, 0xfc, 0x7c, 0x80,
2971 0x00, 0x62, 0x60, 0x06,
2972 0x13, 0x00, 0x01, 0x94,
2973 0x94, 0x58, 0x04, 0x10,
2974 0x40, 0x00, 0x00, 0x00,
2975 0x00, 0xff, 0xff,
2976 };
2977 const unsigned char kV3SIMDFrameData[] = {
2978 0x80, spdy_version_ch_, 0x00, 0x08,
2979 0x00, 0x00, 0x00, 0x2c,
2980 0x00, 0x00, 0x00, 0x01,
2981 0x38, 0xea, 0xe3, 0xc6,
2982 0xa7, 0xc2, 0x02, 0xe5,
2983 0x0e, 0x50, 0xc2, 0x4b,
2984 0x4a, 0x04, 0xe5, 0x0b,
2985 0x66, 0x80, 0x00, 0x4a,
2986 0xcb, 0xcf, 0x07, 0x08,
2987 0x20, 0x24, 0x0a, 0x20,
2988 0x80, 0x92, 0x12, 0x8b,
2989 0x00, 0x02, 0x08, 0x00,
2990 0x00, 0x00, 0xff, 0xff,
2991 };
2992
2854 SpdyHeadersIR headers_ir(1); 2993 SpdyHeadersIR headers_ir(1);
2855 headers_ir.SetHeader("bar", "foo"); 2994 headers_ir.SetHeader("bar", "foo");
2856 headers_ir.SetHeader("foo", "bar"); 2995 headers_ir.SetHeader("foo", "bar");
2857 scoped_ptr<SpdyFrame> frame(framer.SerializeHeaders(headers_ir)); 2996 scoped_ptr<SpdyFrame> frame(framer.SerializeHeaders(headers_ir));
2997 const unsigned char* frame_data =
2998 reinterpret_cast<const unsigned char*>(frame->data());
2858 if (IsSpdy2()) { 2999 if (IsSpdy2()) {
2859 CompareFrame(kDescription, *frame, kV2FrameData, arraysize(kV2FrameData)); 3000 // Try comparing with SIMD version, if that fails, do a failing check
3001 // with pretty printing against non-SIMD version
3002 if (memcmp(frame_data,
3003 kV2SIMDFrameData,
3004 std::min(arraysize(kV2SIMDFrameData), frame->size())) != 0) {
3005 CompareCharArraysWithHexError(kDescription,
3006 frame_data,
3007 frame->size(),
3008 kV2FrameData,
3009 arraysize(kV2FrameData));
3010 }
2860 } else if (IsSpdy3()) { 3011 } else if (IsSpdy3()) {
2861 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); 3012 if (memcmp(frame_data,
3013 kV3SIMDFrameData,
3014 std::min(arraysize(kV3SIMDFrameData), frame->size())) != 0) {
3015 CompareCharArraysWithHexError(kDescription,
3016 frame_data,
3017 frame->size(),
3018 kV3FrameData,
3019 arraysize(kV3FrameData));
3020 }
2862 } else { 3021 } else {
2863 // Deflate compression doesn't apply to HPACK. 3022 // Deflate compression doesn't apply to HPACK.
2864 } 3023 }
2865 } 3024 }
2866 } 3025 }
2867 #endif // !defined(USE_SYSTEM_ZLIB) 3026 #endif // !defined(USE_SYSTEM_ZLIB)
2868 3027
2869 TEST_P(SpdyFramerTest, CreateWindowUpdate) { 3028 TEST_P(SpdyFramerTest, CreateWindowUpdate) {
2870 SpdyFramer framer(spdy_version_); 3029 SpdyFramer framer(spdy_version_);
2871 3030
(...skipping 2667 matching lines...) Expand 10 before | Expand all | Expand 10 after
5539 TestSpdyVisitor visitor(spdy_version_); 5698 TestSpdyVisitor visitor(spdy_version_);
5540 visitor.SimulateInFramer(kFrameData, sizeof(kFrameData)); 5699 visitor.SimulateInFramer(kFrameData, sizeof(kFrameData));
5541 5700
5542 EXPECT_EQ(SpdyFramer::SPDY_ERROR, visitor.framer_.state()); 5701 EXPECT_EQ(SpdyFramer::SPDY_ERROR, visitor.framer_.state());
5543 EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME, 5702 EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME,
5544 visitor.framer_.error_code()) 5703 visitor.framer_.error_code())
5545 << SpdyFramer::ErrorCodeToString(visitor.framer_.error_code()); 5704 << SpdyFramer::ErrorCodeToString(visitor.framer_.error_code());
5546 } 5705 }
5547 5706
5548 } // namespace net 5707 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | third_party/zlib/BUILD.gn » ('j') | third_party/zlib/fill_window_sse.c » ('J')

Powered by Google App Engine
This is Rietveld 408576698