| Index: components/cronet/android/test/javatests/src/org/chromium/net/DiskCacheTest.java
|
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/DiskCacheTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/DiskCacheTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..527fde16586a1e3e5db3b2564cc62c7c69d7a8eb
|
| --- /dev/null
|
| +++ b/components/cronet/android/test/javatests/src/org/chromium/net/DiskCacheTest.java
|
| @@ -0,0 +1,139 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.net;
|
| +
|
| +import android.test.suitebuilder.annotation.SmallTest;
|
| +
|
| +import org.chromium.base.test.util.Feature;
|
| +
|
| +import java.io.File;
|
| +import java.io.FileInputStream;
|
| +import java.io.FileOutputStream;
|
| +import java.util.Arrays;
|
| +
|
| +/**
|
| + * Test CronetEngine disk cache.
|
| + */
|
| +public class DiskCacheTest extends CronetTestBase {
|
| + CronetTestFramework mTestFramework;
|
| +
|
| + @Override
|
| + protected void setUp() throws Exception {
|
| + super.setUp();
|
| + System.loadLibrary("cronet_tests");
|
| + assertTrue(NativeTestServer.startNativeTestServer(getContext()));
|
| + }
|
| +
|
| + @Override
|
| + protected void tearDown() throws Exception {
|
| + NativeTestServer.shutdownNativeTestServer();
|
| + super.tearDown();
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + @OnlyRunNativeCronet
|
| + public void testPurgeOldVersion() throws Exception {
|
| + String testStorage = CronetTestFramework.getTestStorage(getContext());
|
| + File versionFile = new File(testStorage + "/version");
|
| + FileOutputStream versionOut = null;
|
| + try {
|
| + versionOut = new FileOutputStream(versionFile);
|
| + versionOut.write(new byte[] {2, 0, 0, 0}, 0, 4);
|
| + } finally {
|
| + if (versionOut != null) {
|
| + versionOut.close();
|
| + }
|
| + }
|
| + File oldPrefsFile = new File(testStorage + "/local_prefs.json");
|
| + FileOutputStream oldPrefsOut = null;
|
| + try {
|
| + oldPrefsOut = new FileOutputStream(oldPrefsFile);
|
| + String dummy = "dummy content";
|
| + oldPrefsOut.write(dummy.getBytes(), 0, dummy.length());
|
| + } finally {
|
| + if (oldPrefsOut != null) {
|
| + oldPrefsOut.close();
|
| + }
|
| + }
|
| +
|
| + CronetEngine.Builder builder = new CronetEngine.Builder(getContext());
|
| + builder.setStoragePath(CronetTestFramework.getTestStorage(getContext()));
|
| + builder.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_DISK, 1024 * 1024);
|
| +
|
| + mTestFramework = new CronetTestFramework(null, null, getContext(), builder);
|
| + TestUrlRequestCallback callback = new TestUrlRequestCallback();
|
| + String url = NativeTestServer.getFileURL("/cacheable.txt");
|
| + UrlRequest.Builder requestBuilder = new UrlRequest.Builder(
|
| + url, callback, callback.getExecutor(), mTestFramework.mCronetEngine);
|
| + UrlRequest urlRequest = requestBuilder.build();
|
| + urlRequest.start();
|
| + callback.blockForDone();
|
| + assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
|
| + mTestFramework.mCronetEngine.shutdown();
|
| + FileInputStream newVersionFile = null;
|
| + try {
|
| + newVersionFile = new FileInputStream(versionFile);
|
| + byte[] buffer = new byte[] {0, 0, 0, 0};
|
| + int bytesRead = newVersionFile.read(buffer, 0, 4);
|
| + assertEquals(4, bytesRead);
|
| + assertTrue(Arrays.equals(new byte[] {1, 0, 0, 0}, buffer));
|
| + } finally {
|
| + if (newVersionFile != null) {
|
| + newVersionFile.close();
|
| + }
|
| + }
|
| + oldPrefsFile = new File(testStorage + "/local_prefs.json");
|
| + assertTrue(!oldPrefsFile.exists());
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + @OnlyRunNativeCronet
|
| + // Tests that if cache version is current, Cronet does not purge the
|
| + // directory.
|
| + public void testCacheVersionCurrent() throws Exception {
|
| + String testStorage = CronetTestFramework.getTestStorage(getContext());
|
| + File versionFile = new File(testStorage + "/version");
|
| + FileOutputStream versionOut = null;
|
| + try {
|
| + versionOut = new FileOutputStream(versionFile);
|
| + versionOut.write(new byte[] {1, 0, 0, 0}, 0, 4);
|
| + } finally {
|
| + if (versionOut != null) {
|
| + versionOut.close();
|
| + }
|
| + }
|
| + File dir = new File(testStorage + "/random");
|
| + assertTrue(dir.mkdir());
|
| + File dummyFile = new File(testStorage + "/random/dummy.json");
|
| + FileOutputStream dummyFileOut = null;
|
| + try {
|
| + dummyFileOut = new FileOutputStream(dummyFile);
|
| + String dummy = "dummy content";
|
| + dummyFileOut.write(dummy.getBytes(), 0, dummy.length());
|
| + } finally {
|
| + if (dummyFileOut != null) {
|
| + dummyFileOut.close();
|
| + }
|
| + }
|
| +
|
| + CronetEngine.Builder builder = new CronetEngine.Builder(getContext());
|
| + builder.setStoragePath(CronetTestFramework.getTestStorage(getContext()));
|
| + builder.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_DISK, 1024 * 1024);
|
| +
|
| + mTestFramework = new CronetTestFramework(null, null, getContext(), builder);
|
| + TestUrlRequestCallback callback = new TestUrlRequestCallback();
|
| + String url = NativeTestServer.getFileURL("/cacheable.txt");
|
| + UrlRequest.Builder requestBuilder = new UrlRequest.Builder(
|
| + url, callback, callback.getExecutor(), mTestFramework.mCronetEngine);
|
| + UrlRequest urlRequest = requestBuilder.build();
|
| + urlRequest.start();
|
| + callback.blockForDone();
|
| + assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
|
| + mTestFramework.mCronetEngine.shutdown();
|
| + assertTrue(dummyFile.exists());
|
| + }
|
| +}
|
|
|