comparison UnitTestsSources/StreamTests.cpp @ 1526:096a8af528c9

fix streams, initialization/finalization of libcurl and openssl
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 12 Aug 2015 10:43:10 +0200
parents f9b0169eb6bb
children 33d34bc4ac15
comparison
equal deleted inserted replaced
1525:f9b0169eb6bb 1526:096a8af528c9
179 static bool ReadAllStream(std::string& result, 179 static bool ReadAllStream(std::string& result,
180 IHttpStreamAnswer& stream, 180 IHttpStreamAnswer& stream,
181 bool allowGzip = false, 181 bool allowGzip = false,
182 bool allowDeflate = false) 182 bool allowDeflate = false)
183 { 183 {
184 stream.SetupHttpCompression(allowGzip, allowDeflate);
185
184 result.resize(stream.GetContentLength()); 186 result.resize(stream.GetContentLength());
185
186 stream.SetupHttpCompression(allowGzip, allowDeflate);
187 187
188 size_t pos = 0; 188 size_t pos = 0;
189 while (stream.ReadNextChunk()) 189 while (stream.ReadNextChunk())
190 { 190 {
191 size_t s = stream.GetChunkSize(); 191 size_t s = stream.GetChunkSize();
207 const std::string s = "Hello world"; 207 const std::string s = "Hello world";
208 std::string t; 208 std::string t;
209 209
210 { 210 {
211 BufferHttpSender sender; 211 BufferHttpSender sender;
212 sender.SetChunkSize(0);
213 sender.GetBuffer() = s;
214 ASSERT_TRUE(ReadAllStream(t, sender));
215 ASSERT_EQ(s, t);
216 }
217
218 {
219 BufferHttpSender sender;
220 sender.SetChunkSize(1);
221 sender.GetBuffer() = s;
222 ASSERT_TRUE(ReadAllStream(t, sender));
223 ASSERT_EQ(s, t);
224 }
225
226 {
227 BufferHttpSender sender;
228 sender.SetChunkSize(1); 212 sender.SetChunkSize(1);
229 ASSERT_TRUE(ReadAllStream(t, sender)); 213 ASSERT_TRUE(ReadAllStream(t, sender));
230 ASSERT_EQ(0u, t.size()); 214 ASSERT_EQ(0u, t.size());
231 } 215 }
232 216
233 { 217 for (int cs = 0; cs < 5; cs++)
234 BufferHttpSender sender; 218 {
235 sender.SetChunkSize(3); 219 BufferHttpSender sender;
236 sender.GetBuffer() = s; 220 sender.SetChunkSize(cs);
237 ASSERT_TRUE(ReadAllStream(t, sender));
238 ASSERT_EQ(s, t);
239 }
240
241 {
242 BufferHttpSender sender;
243 sender.SetChunkSize(300);
244 sender.GetBuffer() = s; 221 sender.GetBuffer() = s;
245 ASSERT_TRUE(ReadAllStream(t, sender)); 222 ASSERT_TRUE(ReadAllStream(t, sender));
246 ASSERT_EQ(s, t); 223 ASSERT_EQ(s, t);
247 } 224 }
248 } 225 }
277 const std::string s = "Hello world " + Toolbox::GenerateUuid(); 254 const std::string s = "Hello world " + Toolbox::GenerateUuid();
278 255
279 std::string t; 256 std::string t;
280 IBufferCompressor::Compress(t, compressor, s); 257 IBufferCompressor::Compress(t, compressor, s);
281 258
282 for (int cs = 0; cs < 3; cs++) 259 for (int cs = 0; cs < 5; cs++)
283 { 260 {
284 BufferHttpSender sender; 261 BufferHttpSender sender;
285 sender.SetChunkSize(cs); 262 sender.SetChunkSize(cs);
286 sender.GetBuffer() = t; 263 sender.GetBuffer() = t;
287 std::string u; 264 std::string u;
291 IBufferCompressor::Uncompress(v, compressor, u); 268 IBufferCompressor::Uncompress(v, compressor, u);
292 ASSERT_EQ(s, v); 269 ASSERT_EQ(s, v);
293 } 270 }
294 271
295 // Pass-through test, no decompression occurs 272 // Pass-through test, no decompression occurs
296 for (int cs = 0; cs < 3; cs++) 273 for (int cs = 0; cs < 5; cs++)
297 { 274 {
298 BufferHttpSender sender; 275 BufferHttpSender sender;
299 sender.SetChunkSize(cs); 276 sender.SetChunkSize(cs);
300 sender.GetBuffer() = t; 277 sender.GetBuffer() = t;
301 278
306 283
307 ASSERT_EQ(t, u); 284 ASSERT_EQ(t, u);
308 } 285 }
309 286
310 // Pass-through test, decompression occurs 287 // Pass-through test, decompression occurs
311 for (int cs = 0; cs < 3; cs++) 288 for (int cs = 0; cs < 5; cs++)
312 { 289 {
313 BufferHttpSender sender; 290 BufferHttpSender sender;
314 sender.SetChunkSize(cs); 291 sender.SetChunkSize(cs);
315 sender.GetBuffer() = t; 292 sender.GetBuffer() = t;
316 293
321 298
322 ASSERT_EQ(s, u); 299 ASSERT_EQ(s, u);
323 } 300 }
324 301
325 // Pass-through test with zlib, no decompression occurs but deflate is sent 302 // Pass-through test with zlib, no decompression occurs but deflate is sent
326 for (int cs = 0; cs < 3; cs++) 303 for (int cs = 0; cs < 16; cs++)
327 { 304 {
328 BufferHttpSender sender; 305 BufferHttpSender sender;
329 sender.SetChunkSize(cs); 306 sender.SetChunkSize(cs);
330 sender.GetBuffer() = t; 307 sender.GetBuffer() = t;
331 308
335 ASSERT_TRUE(ReadAllStream(u, transcode, false, true)); 312 ASSERT_TRUE(ReadAllStream(u, transcode, false, true));
336 313
337 ASSERT_EQ(t.size() - sizeof(uint64_t), u.size()); 314 ASSERT_EQ(t.size() - sizeof(uint64_t), u.size());
338 ASSERT_EQ(t.substr(sizeof(uint64_t)), u); 315 ASSERT_EQ(t.substr(sizeof(uint64_t)), u);
339 } 316 }
340 } 317
318 for (int cs = 0; cs < 3; cs++)
319 {
320 BufferHttpSender sender;
321 sender.SetChunkSize(cs);
322
323 HttpStreamTranscoder transcode(sender, CompressionType_ZlibWithSize);
324 std::string u;
325 ASSERT_TRUE(ReadAllStream(u, transcode, false, true));
326
327 ASSERT_EQ(0u, u.size());
328 }
329 }