Chromium Code Reviews| Index: net/http/http_cache_unittest.cc |
| diff --git a/net/http/http_cache_unittest.cc b/net/http/http_cache_unittest.cc |
| index c87fa1b7eecba7e2f12fef38c342b24e87325947..112f293d4dacc426fe898db481a499cc87827046 100644 |
| --- a/net/http/http_cache_unittest.cc |
| +++ b/net/http/http_cache_unittest.cc |
| @@ -4421,6 +4421,41 @@ TEST(HttpCache, RangeGET_Cancel3) { |
| RemoveMockTransaction(&kRangeGET_TransactionOK); |
| } |
| +// Tests that we allow multiple simultaneous, non-overlapping transactions to |
| +// take place on a sparse entry. Currently this is supported with a hack (see |
| +// comment in Transaction::DoAddToEntry in http_cache_transaction.cc), but a |
|
rvargas (doing something else)
2014/05/29 19:58:52
If we expect this test to pass now and with a futu
rileya (GONE FROM CHROMIUM)
2014/05/29 20:15:03
Good point, removed.
|
| +// future, cleaner solution should still pass this test. |
| +TEST(HttpCache, RangeGET_MultipleRequests) { |
| + MockHttpCache cache; |
| + |
| + // Create a transaction for bytes 0-9. |
| + MockHttpRequest request(kRangeGET_TransactionOK); |
| + request.load_flags |= net::LOAD_VALIDATE_CACHE; |
|
rvargas (doing something else)
2014/05/29 19:58:52
no need for this flag
rileya (GONE FROM CHROMIUM)
2014/05/29 20:15:03
Removed.
|
| + MockTransaction transaction(kRangeGET_TransactionOK); |
| + transaction.request_headers = "Range: bytes = 0-9\r\n" EXTRA_HEADER; |
| + transaction.data = "rg: 00-09"; |
|
rvargas (doing something else)
2014/05/29 19:58:52
Should need an extra space at the end (to make it
rileya (GONE FROM CHROMIUM)
2014/05/29 20:15:03
Added.
|
| + transaction.handler = NULL; |
|
rvargas (doing something else)
2014/05/29 19:58:52
why remove the server?
rileya (GONE FROM CHROMIUM)
2014/05/29 20:15:03
Another test elsewhere did this so I assumed it ha
|
| + AddMockTransaction(&transaction); |
|
rvargas (doing something else)
2014/05/29 19:58:52
Should be paired with a RemoveMockTransaction()
rileya (GONE FROM CHROMIUM)
2014/05/29 20:15:03
Added.
|
| + |
| + net::TestCompletionCallback callback; |
| + scoped_ptr<net::HttpTransaction> trans; |
| + int rv = cache.http_cache()->CreateTransaction(net::DEFAULT_PRIORITY, &trans); |
| + EXPECT_EQ(net::OK, rv); |
| + ASSERT_TRUE(trans.get()); |
| + |
| + // Start our transaction. |
| + trans->Start(&request, callback.callback(), net::BoundNetLog()); |
| + |
| + // A second transaction on a different part of the file (the default |
| + // kRangeGET_TransactionOK requests 40-49) should not be blocked by |
| + // the already pending transaction. |
| + AddMockTransaction(&kRangeGET_TransactionOK); |
|
rvargas (doing something else)
2014/05/29 19:58:52
This is not needed... transactions are keyed by th
rileya (GONE FROM CHROMIUM)
2014/05/29 20:15:03
Removed.
|
| + RunTransactionTest(cache.http_cache(), kRangeGET_TransactionOK); |
| + |
| + // Let the first transaction complete. |
| + callback.WaitForResult(); |
| +} |
| + |
| // Tests that an invalid range response results in no cached entry. |
| TEST(HttpCache, RangeGET_InvalidResponse1) { |
| MockHttpCache cache; |