| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 | 7 |
| 8 #include <deque> | 8 #include <deque> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 }; | 259 }; |
| 260 | 260 |
| 261 TEST_F(MultiBufferTest, ReadAll) { | 261 TEST_F(MultiBufferTest, ReadAll) { |
| 262 multibuffer_.SetMaxWriters(1); | 262 multibuffer_.SetMaxWriters(1); |
| 263 size_t pos = 0; | 263 size_t pos = 0; |
| 264 size_t end = 10000; | 264 size_t end = 10000; |
| 265 multibuffer_.SetFileSize(10000); | 265 multibuffer_.SetFileSize(10000); |
| 266 multibuffer_.SetMustReadWholeFile(true); | 266 multibuffer_.SetMustReadWholeFile(true); |
| 267 MultiBufferReader reader(&multibuffer_, pos, end, | 267 MultiBufferReader reader(&multibuffer_, pos, end, |
| 268 base::Callback<void(int64_t, int64_t)>()); | 268 base::Callback<void(int64_t, int64_t)>()); |
| 269 reader.SetMaxBuffer(2000, 5000); | 269 reader.SetPinRange(2000, 5000); |
| 270 reader.SetPreload(1000, 1000); | 270 reader.SetPreload(1000, 1000); |
| 271 while (pos < end) { | 271 while (pos < end) { |
| 272 unsigned char buffer[27]; | 272 unsigned char buffer[27]; |
| 273 buffer[17] = 17; | 273 buffer[17] = 17; |
| 274 size_t to_read = std::min<size_t>(end - pos, 17); | 274 size_t to_read = std::min<size_t>(end - pos, 17); |
| 275 int64_t bytes_read = reader.TryRead(buffer, to_read); | 275 int64_t bytes_read = reader.TryRead(buffer, to_read); |
| 276 if (bytes_read) { | 276 if (bytes_read) { |
| 277 EXPECT_EQ(buffer[17], 17); | 277 EXPECT_EQ(buffer[17], 17); |
| 278 for (int64_t i = 0; i < bytes_read; i++) { | 278 for (int64_t i = 0; i < bytes_read; i++) { |
| 279 uint8_t expected = static_cast<uint8_t>((pos * 15485863) >> 16); | 279 uint8_t expected = static_cast<uint8_t>((pos * 15485863) >> 16); |
| 280 EXPECT_EQ(expected, buffer[i]) << " pos = " << pos; | 280 EXPECT_EQ(expected, buffer[i]) << " pos = " << pos; |
| 281 pos++; | 281 pos++; |
| 282 } | 282 } |
| 283 } else { | 283 } else { |
| 284 Advance(); | 284 Advance(); |
| 285 } | 285 } |
| 286 } | 286 } |
| 287 } | 287 } |
| 288 | 288 |
| 289 TEST_F(MultiBufferTest, ReadAllAdvanceFirst) { | 289 TEST_F(MultiBufferTest, ReadAllAdvanceFirst) { |
| 290 multibuffer_.SetMaxWriters(1); | 290 multibuffer_.SetMaxWriters(1); |
| 291 size_t pos = 0; | 291 size_t pos = 0; |
| 292 size_t end = 10000; | 292 size_t end = 10000; |
| 293 multibuffer_.SetFileSize(10000); | 293 multibuffer_.SetFileSize(10000); |
| 294 multibuffer_.SetMustReadWholeFile(true); | 294 multibuffer_.SetMustReadWholeFile(true); |
| 295 MultiBufferReader reader(&multibuffer_, pos, end, | 295 MultiBufferReader reader(&multibuffer_, pos, end, |
| 296 base::Callback<void(int64_t, int64_t)>()); | 296 base::Callback<void(int64_t, int64_t)>()); |
| 297 reader.SetMaxBuffer(2000, 5000); | 297 reader.SetPinRange(2000, 5000); |
| 298 reader.SetPreload(1000, 1000); | 298 reader.SetPreload(1000, 1000); |
| 299 while (pos < end) { | 299 while (pos < end) { |
| 300 unsigned char buffer[27]; | 300 unsigned char buffer[27]; |
| 301 buffer[17] = 17; | 301 buffer[17] = 17; |
| 302 size_t to_read = std::min<size_t>(end - pos, 17); | 302 size_t to_read = std::min<size_t>(end - pos, 17); |
| 303 while (AdvanceAll()) { | 303 while (AdvanceAll()) { |
| 304 } | 304 } |
| 305 int64_t bytes = reader.TryRead(buffer, to_read); | 305 int64_t bytes = reader.TryRead(buffer, to_read); |
| 306 EXPECT_GT(bytes, 0); | 306 EXPECT_GT(bytes, 0); |
| 307 EXPECT_EQ(buffer[17], 17); | 307 EXPECT_EQ(buffer[17], 17); |
| 308 for (int64_t i = 0; i < bytes; i++) { | 308 for (int64_t i = 0; i < bytes; i++) { |
| 309 uint8_t expected = static_cast<uint8_t>((pos * 15485863) >> 16); | 309 uint8_t expected = static_cast<uint8_t>((pos * 15485863) >> 16); |
| 310 EXPECT_EQ(expected, buffer[i]) << " pos = " << pos; | 310 EXPECT_EQ(expected, buffer[i]) << " pos = " << pos; |
| 311 pos++; | 311 pos++; |
| 312 } | 312 } |
| 313 } | 313 } |
| 314 } | 314 } |
| 315 | 315 |
| 316 // Checks that if the data provider provides too much data after we told it | 316 // Checks that if the data provider provides too much data after we told it |
| 317 // to defer, we kill it. | 317 // to defer, we kill it. |
| 318 TEST_F(MultiBufferTest, ReadAllAdvanceFirst_NeverDefer) { | 318 TEST_F(MultiBufferTest, ReadAllAdvanceFirst_NeverDefer) { |
| 319 multibuffer_.SetMaxWriters(1); | 319 multibuffer_.SetMaxWriters(1); |
| 320 size_t pos = 0; | 320 size_t pos = 0; |
| 321 size_t end = 10000; | 321 size_t end = 10000; |
| 322 multibuffer_.SetFileSize(10000); | 322 multibuffer_.SetFileSize(10000); |
| 323 multibuffer_.SetMaxBlocksAfterDefer(-10000); | 323 multibuffer_.SetMaxBlocksAfterDefer(-10000); |
| 324 multibuffer_.SetRangeSupported(true); | 324 multibuffer_.SetRangeSupported(true); |
| 325 MultiBufferReader reader(&multibuffer_, pos, end, | 325 MultiBufferReader reader(&multibuffer_, pos, end, |
| 326 base::Callback<void(int64_t, int64_t)>()); | 326 base::Callback<void(int64_t, int64_t)>()); |
| 327 reader.SetMaxBuffer(2000, 5000); | 327 reader.SetPinRange(2000, 5000); |
| 328 reader.SetPreload(1000, 1000); | 328 reader.SetPreload(1000, 1000); |
| 329 while (pos < end) { | 329 while (pos < end) { |
| 330 unsigned char buffer[27]; | 330 unsigned char buffer[27]; |
| 331 buffer[17] = 17; | 331 buffer[17] = 17; |
| 332 size_t to_read = std::min<size_t>(end - pos, 17); | 332 size_t to_read = std::min<size_t>(end - pos, 17); |
| 333 while (AdvanceAll()) { | 333 while (AdvanceAll()) { |
| 334 } | 334 } |
| 335 int64_t bytes = reader.TryRead(buffer, to_read); | 335 int64_t bytes = reader.TryRead(buffer, to_read); |
| 336 EXPECT_GT(bytes, 0); | 336 EXPECT_GT(bytes, 0); |
| 337 EXPECT_EQ(buffer[17], 17); | 337 EXPECT_EQ(buffer[17], 17); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 348 // ranges, so we don't destroy it no matter how much data it provides. | 348 // ranges, so we don't destroy it no matter how much data it provides. |
| 349 TEST_F(MultiBufferTest, ReadAllAdvanceFirst_NeverDefer2) { | 349 TEST_F(MultiBufferTest, ReadAllAdvanceFirst_NeverDefer2) { |
| 350 multibuffer_.SetMaxWriters(1); | 350 multibuffer_.SetMaxWriters(1); |
| 351 size_t pos = 0; | 351 size_t pos = 0; |
| 352 size_t end = 10000; | 352 size_t end = 10000; |
| 353 multibuffer_.SetFileSize(10000); | 353 multibuffer_.SetFileSize(10000); |
| 354 multibuffer_.SetMustReadWholeFile(true); | 354 multibuffer_.SetMustReadWholeFile(true); |
| 355 multibuffer_.SetMaxBlocksAfterDefer(-10000); | 355 multibuffer_.SetMaxBlocksAfterDefer(-10000); |
| 356 MultiBufferReader reader(&multibuffer_, pos, end, | 356 MultiBufferReader reader(&multibuffer_, pos, end, |
| 357 base::Callback<void(int64_t, int64_t)>()); | 357 base::Callback<void(int64_t, int64_t)>()); |
| 358 reader.SetMaxBuffer(2000, 5000); | 358 reader.SetPinRange(2000, 5000); |
| 359 reader.SetPreload(1000, 1000); | 359 reader.SetPreload(1000, 1000); |
| 360 while (pos < end) { | 360 while (pos < end) { |
| 361 unsigned char buffer[27]; | 361 unsigned char buffer[27]; |
| 362 buffer[17] = 17; | 362 buffer[17] = 17; |
| 363 size_t to_read = std::min<size_t>(end - pos, 17); | 363 size_t to_read = std::min<size_t>(end - pos, 17); |
| 364 while (AdvanceAll()) { | 364 while (AdvanceAll()) { |
| 365 } | 365 } |
| 366 int64_t bytes = reader.TryRead(buffer, to_read); | 366 int64_t bytes = reader.TryRead(buffer, to_read); |
| 367 EXPECT_GT(bytes, 0); | 367 EXPECT_GT(bytes, 0); |
| 368 EXPECT_EQ(buffer[17], 17); | 368 EXPECT_EQ(buffer[17], 17); |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 455 TestRandom* rnd) | 455 TestRandom* rnd) |
| 456 : pos_(0), | 456 : pos_(0), |
| 457 end_(end), | 457 end_(end), |
| 458 max_read_size_(max_read_size), | 458 max_read_size_(max_read_size), |
| 459 read_size_(0), | 459 read_size_(0), |
| 460 rnd_(rnd), | 460 rnd_(rnd), |
| 461 reader_(multibuffer, | 461 reader_(multibuffer, |
| 462 pos_, | 462 pos_, |
| 463 end_, | 463 end_, |
| 464 base::Callback<void(int64_t, int64_t)>()) { | 464 base::Callback<void(int64_t, int64_t)>()) { |
| 465 reader_.SetMaxBuffer(2000, 5000); | 465 reader_.SetPinRange(2000, 5000); |
| 466 reader_.SetPreload(1000, 1000); | 466 reader_.SetPreload(1000, 1000); |
| 467 } | 467 } |
| 468 | 468 |
| 469 bool Read() { | 469 bool Read() { |
| 470 if (read_size_ == 0) | 470 if (read_size_ == 0) |
| 471 return true; | 471 return true; |
| 472 unsigned char buffer[4096]; | 472 unsigned char buffer[4096]; |
| 473 CHECK_LE(read_size_, static_cast<int64_t>(sizeof(buffer))); | 473 CHECK_LE(read_size_, static_cast<int64_t>(sizeof(buffer))); |
| 474 CHECK_EQ(pos_, reader_.Tell()); | 474 CHECK_EQ(pos_, reader_.Tell()); |
| 475 int64_t bytes_read = reader_.TryRead(buffer, read_size_); | 475 int64_t bytes_read = reader_.TryRead(buffer, read_size_); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 566 multibuffer_.CheckLRUState(); | 566 multibuffer_.CheckLRUState(); |
| 567 } | 567 } |
| 568 multibuffer_.CheckPresentState(); | 568 multibuffer_.CheckPresentState(); |
| 569 while (!read_helpers.empty()) { | 569 while (!read_helpers.empty()) { |
| 570 delete read_helpers.back(); | 570 delete read_helpers.back(); |
| 571 read_helpers.pop_back(); | 571 read_helpers.pop_back(); |
| 572 } | 572 } |
| 573 } | 573 } |
| 574 | 574 |
| 575 } // namespace media | 575 } // namespace media |
| OLD | NEW |