1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2009 The Android Open Source Project 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License. 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.apache.harmony.xnet.provider.jsse; 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.File; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException; 213a3511edad46420b4287017ac66fe4783cb804dbJesse Wilsonimport junit.framework.TestCase; 223a3511edad46420b4287017ac66fe4783cb804dbJesse Wilsonimport libcore.javax.net.ssl.FakeSSLSession; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class FileClientSessionCacheTest extends TestCase { 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testMaxSize() throws IOException, InterruptedException { 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String tmpDir = System.getProperty("java.io.tmpdir"); 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (tmpDir == null) { 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Please set 'java.io.tmpdir' system property."); 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project File cacheDir = new File(tmpDir 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "/" + FileClientSessionCacheTest.class.getName() + "/cache"); 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final SSLClientSessionCache cache 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project = FileClientSessionCache.usingDirectory(cacheDir); 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Thread[] threads = new Thread[10]; 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final int iterations = FileClientSessionCache.MAX_SIZE * 10; 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < threads.length; i++) { 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final int id = i; 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project threads[i] = new Thread() { 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void run() { 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < iterations; i++) { 433a3511edad46420b4287017ac66fe4783cb804dbJesse Wilson cache.putSessionData(new FakeSSLSession(id + "" + i), new byte[10]); 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 483a3511edad46420b4287017ac66fe4783cb804dbJesse Wilson for (Thread thread : threads) { 493a3511edad46420b4287017ac66fe4783cb804dbJesse Wilson thread.start(); 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 513a3511edad46420b4287017ac66fe4783cb804dbJesse Wilson for (Thread thread : threads) { 523a3511edad46420b4287017ac66fe4783cb804dbJesse Wilson thread.join(); 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(FileClientSessionCache.MAX_SIZE, cacheDir.list().length); 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 57