Mercurial > hg > orthanc
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 } |