DiskBasedCacheTest.java revision b33d0d6651b0b31e965839211d410136db2dcb5b
1e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick/* 2e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick * Copyright (C) 2013 The Android Open Source Project 3e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick * 4e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick * Licensed under the Apache License, Version 2.0 (the "License"); 5e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick * you may not use this file except in compliance with the License. 6e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick * You may obtain a copy of the License at 7e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick * 8e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick * http://www.apache.org/licenses/LICENSE-2.0 9e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick * 10e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick * Unless required by applicable law or agreed to in writing, software 11e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick * distributed under the License is distributed on an "AS IS" BASIS, 12e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick * See the License for the specific language governing permissions and 14e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick * limitations under the License. 15e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick */ 16e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick 17e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrickpackage com.android.volley.toolbox; 18e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick 19e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrickimport android.test.AndroidTestCase; 20e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick 21e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrickimport com.android.volley.Cache; 22e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrickimport com.android.volley.toolbox.DiskBasedCache.CacheHeader; 23e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick 24e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrickimport java.io.ByteArrayInputStream; 25e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrickimport java.io.ByteArrayOutputStream; 26e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrickimport java.util.HashMap; 27b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrickimport java.util.Map; 28e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick 29e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrickpublic class DiskBasedCacheTest extends AndroidTestCase { 30e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick 31e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick // Simple end-to-end serialize/deserialize test. 32e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick public void testCacheHeaderSerialization() throws Exception { 33e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick Cache.Entry e = new Cache.Entry(); 34e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick e.data = new byte[8]; 35e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick e.serverDate = 1234567L; 36e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick e.ttl = 9876543L; 37e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick e.softTtl = 8765432L; 38e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick e.etag = "etag"; 39e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick e.responseHeaders = new HashMap<String, String>(); 40e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick e.responseHeaders.put("fruit", "banana"); 41e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick 42e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick CacheHeader first = new CacheHeader("my-magical-key", e); 43e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick ByteArrayOutputStream baos = new ByteArrayOutputStream(); 44e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick first.writeHeader(baos); 45e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); 46e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick CacheHeader second = CacheHeader.readHeader(bais); 47e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick 48e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick assertEquals(first.key, second.key); 49e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick assertEquals(first.serverDate, second.serverDate); 50e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick assertEquals(first.ttl, second.ttl); 51e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick assertEquals(first.softTtl, second.softTtl); 52e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick assertEquals(first.etag, second.etag); 53e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick assertEquals(first.responseHeaders, second.responseHeaders); 54e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick } 55e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick 56b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick public void testSerializeInt() throws Exception { 57b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick ByteArrayOutputStream baos = new ByteArrayOutputStream(); 58b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeInt(baos, 0); 59b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeInt(baos, 19791214); 60b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeInt(baos, -20050711); 61b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeInt(baos, Integer.MIN_VALUE); 62b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeInt(baos, Integer.MAX_VALUE); 63b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); 64b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readInt(bais), 0); 65b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readInt(bais), 19791214); 66b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readInt(bais), -20050711); 67b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readInt(bais), Integer.MIN_VALUE); 68b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readInt(bais), Integer.MAX_VALUE); 69b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick } 70b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick 71b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick public void testSerializeLong() throws Exception { 72b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick ByteArrayOutputStream baos = new ByteArrayOutputStream(); 73b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeLong(baos, 0); 74b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeLong(baos, 31337); 75b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeLong(baos, -4160); 76b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeLong(baos, 4295032832L); 77b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeLong(baos, -4314824046L); 78b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeLong(baos, Long.MIN_VALUE); 79b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeLong(baos, Long.MAX_VALUE); 80b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); 81b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readLong(bais), 0); 82b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readLong(bais), 31337); 83b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readLong(bais), -4160); 84b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readLong(bais), 4295032832L); 85b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readLong(bais), -4314824046L); 86b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readLong(bais), Long.MIN_VALUE); 87b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readLong(bais), Long.MAX_VALUE); 88b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick } 89b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick 90b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick public void testSerializeString() throws Exception { 91b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick ByteArrayOutputStream baos = new ByteArrayOutputStream(); 92b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeString(baos, ""); 93b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeString(baos, "This is a string."); 94b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeString(baos, "ファイカス"); 95b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); 96b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readString(bais), ""); 97b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readString(bais), "This is a string."); 98b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readString(bais), "ファイカス"); 99b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick } 100b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick 101b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick public void testSerializeMap() throws Exception { 102b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick ByteArrayOutputStream baos = new ByteArrayOutputStream(); 103b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick Map<String, String> empty = new HashMap<String, String>(); 104b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeStringStringMap(empty, baos); 105b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeStringStringMap(null, baos); 106b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick Map<String, String> twoThings = new HashMap<String, String>(); 107b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick twoThings.put("first", "thing"); 108b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick twoThings.put("second", "item"); 109b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeStringStringMap(twoThings, baos); 110b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick Map<String, String> emptyKey = new HashMap<String, String>(); 111b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick emptyKey.put("", "value"); 112b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeStringStringMap(emptyKey, baos); 113b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick Map<String, String> emptyValue = new HashMap<String, String>(); 114b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick emptyValue.put("key", ""); 115b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick DiskBasedCache.writeStringStringMap(emptyValue, baos); 116b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); 117b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readStringStringMap(bais), empty); 118b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readStringStringMap(bais), empty); // null reads back empty 119b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readStringStringMap(bais), twoThings); 120b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readStringStringMap(bais), emptyKey); 121b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick assertEquals(DiskBasedCache.readStringStringMap(bais), emptyValue); 122b33d0d6651b0b31e965839211d410136db2dcb5bFicus Kirkpatrick } 123e5a344749f100325cd8ef0d78cd7db5221b5e628Ficus Kirkpatrick} 124