Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCacheUnitTest.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCacheUnitTest.java?rev=647264&r1=647263&r2=647264&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCacheUnitTest.java (original)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCacheUnitTest.java Fri Apr 11 11:43:26 2008
@@ -1,201 +1,218 @@
-package org.apache.jcs.auxiliary.disk.jdbc;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Properties;
-
-import junit.framework.TestCase;
-
-import org.apache.jcs.JCS;
-
-/**
- * Runs basic tests for the JDBC disk cache.
- *
- * @author Aaron Smuts
- *
- */
-public class JDBCDiskCacheUnitTest
- extends TestCase
-{
-
- /**
- * Test setup
- */
- public void setUp()
- {
- JCS.setConfigFilename( "/TestJDBCDiskCache.ccf" );
- }
-
- /**
- * Test the basic JDBC disk cache functionality with a hsql backing.
- *
- * @throws Exception
- */
- public void testSimpleJDBCPutGetWithHSQL()
- throws Exception
- {
- System.setProperty( "hsqldb.cache_scale", "8" );
-
- String rafroot = "target";
- Properties p = new Properties();
- String driver = p.getProperty( "driver", "org.hsqldb.jdbcDriver" );
- String url = p.getProperty( "url", "jdbc:hsqldb:" );
- String database = p.getProperty( "database", rafroot + "/cache_hsql_db" );
- String user = p.getProperty( "user", "sa" );
- String password = p.getProperty( "password", "" );
-
- new org.hsqldb.jdbcDriver();
- Class.forName( driver ).newInstance();
- Connection cConn = DriverManager.getConnection( url + database, user, password );
-
- setupTABLE( cConn );
-
- runTestForRegion( "testCache1", 200 );
- }
-
- /**
- * Adds items to cache, gets them, and removes them. The item count is more
- * than the size of the memory cache, so items should spool to disk.
- *
- * @param region
- * Name of the region to access
- * @param items
- *
- * @exception Exception
- * If an error occurs
- */
- public void runTestForRegion( String region, int items )
- throws Exception
- {
- JCS jcs = JCS.getInstance( region );
-
- System.out.println( "BEFORE PUT \n" + jcs.getStats() );
-
- // Add items to cache
-
- for ( int i = 0; i <= items; i++ )
- {
- jcs.put( i + ":key", region + " data " + i );
- }
-
- System.out.println( jcs.getStats() );
-
- Thread.sleep( 1000 );
-
- System.out.println( jcs.getStats() );
-
- // Test that all items are in cache
-
- for ( int i = 0; i <= items; i++ )
- {
- String value = (String) jcs.get( i + ":key" );
-
- assertEquals( "key = [" + i + ":key] value = [" + value + "]", region + " data " + i, value );
- }
-
- // Remove all the items
-
- for ( int i = 0; i <= items; i++ )
- {
- jcs.remove( i + ":key" );
- }
-
- // Verify removal
-
- for ( int i = 0; i <= items; i++ )
- {
- assertNull( "Removed key should be null: " + i + ":key", jcs.get( i + ":key" ) );
- }
- }
-
- /**
- * SETUP TABLE FOR CACHE
- *
- * @param cConn
- */
- void setupTABLE( Connection cConn )
- {
- boolean newT = true;
-
- StringBuffer createSql = new StringBuffer();
- createSql.append( "CREATE CACHED TABLE JCS_STORE2 " );
- createSql.append( "( " );
- createSql.append( "CACHE_KEY VARCHAR(250) NOT NULL, " );
- createSql.append( "REGION VARCHAR(250) NOT NULL, " );
- createSql.append( "ELEMENT BINARY, " );
- createSql.append( "CREATE_TIME DATE, " );
- createSql.append( "CREATE_TIME_SECONDS BIGINT, " );
- createSql.append( "MAX_LIFE_SECONDS BIGINT, " );
- createSql.append( "SYSTEM_EXPIRE_TIME_SECONDS BIGINT, " );
- createSql.append( "IS_ETERNAL CHAR(1), " );
- createSql.append( "PRIMARY KEY (CACHE_KEY, REGION) " );
- createSql.append( ");" );
-
- Statement sStatement = null;
- try
- {
- sStatement = cConn.createStatement();
- }
- catch ( SQLException e )
- {
- e.printStackTrace();
- }
-
- try
- {
- sStatement.executeQuery( createSql.toString() );
- sStatement.close();
- }
- catch ( SQLException e )
- {
- if ( e.toString().indexOf( "already exists" ) != -1 )
- {
- newT = false;
- }
- else
- {
- // TODO figure out if it exists prior to trying to create it.
- // log.error( "Problem creating table.", e );
- e.printStackTrace();
- }
- }
-
- String setupData[] = { "create index iKEY on JCS_STORE2 (CACHE_KEY, REGION)" };
-
- if ( newT )
- {
- for ( int i = 1; i < setupData.length; i++ )
- {
- try
- {
- sStatement.executeQuery( setupData[i] );
- }
- catch ( SQLException e )
- {
- System.out.println( "Exception: " + e );
- }
- }
- } // end ifnew
- }
-}
+package org.apache.jcs.auxiliary.disk.jdbc;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.apache.jcs.JCS;
+import org.apache.jcs.engine.behavior.ICacheElement;
+
+/**
+ * Runs basic tests for the JDBC disk cache.
+ *
+ * @author Aaron Smuts
+ *
+ */
+public class JDBCDiskCacheUnitTest
+ extends TestCase
+{
+
+ /**
+ * Test setup
+ */
+ public void setUp()
+ {
+ JCS.setConfigFilename( "/TestJDBCDiskCache.ccf" );
+ }
+
+ /**
+ * Test the basic JDBC disk cache functionality with a hsql backing.
+ *
+ * @throws Exception
+ */
+ public void testSimpleJDBCPutGetWithHSQL()
+ throws Exception
+ {
+ System.setProperty( "hsqldb.cache_scale", "8" );
+
+ String rafroot = "target";
+ Properties p = new Properties();
+ String driver = p.getProperty( "driver", "org.hsqldb.jdbcDriver" );
+ String url = p.getProperty( "url", "jdbc:hsqldb:" );
+ String database = p.getProperty( "database", rafroot + "/cache_hsql_db" );
+ String user = p.getProperty( "user", "sa" );
+ String password = p.getProperty( "password", "" );
+
+ new org.hsqldb.jdbcDriver();
+ Class.forName( driver ).newInstance();
+ Connection cConn = DriverManager.getConnection( url + database, user, password );
+
+ setupTABLE( cConn );
+
+ runTestForRegion( "testCache1", 200 );
+ }
+
+ /**
+ * Adds items to cache, gets them, and removes them. The item count is more
+ * than the size of the memory cache, so items should spool to disk.
+ *
+ * @param region
+ * Name of the region to access
+ * @param items
+ *
+ * @exception Exception
+ * If an error occurs
+ */
+ public void runTestForRegion( String region, int items )
+ throws Exception
+ {
+ JCS jcs = JCS.getInstance( region );
+
+ System.out.println( "BEFORE PUT \n" + jcs.getStats() );
+
+ // Add items to cache
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ jcs.put( i + ":key", region + " data " + i );
+ }
+
+ System.out.println( jcs.getStats() );
+
+ Thread.sleep( 1000 );
+
+ System.out.println( jcs.getStats() );
+
+ // Test that all items are in cache
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ String value = (String) jcs.get( i + ":key" );
+
+ assertEquals( "key = [" + i + ":key] value = [" + value + "]", region + " data " + i, value );
+ }
+
+ // Test that getElements returns all the expected values
+ Set keys = new HashSet();
+ for ( int i = 0; i <= items; i++ )
+ {
+ keys.add( i + ":key" );
+ }
+
+ Map elements = jcs.getCacheElements( keys );
+ for ( int i = 0; i <= items; i++ )
+ {
+ ICacheElement element = (ICacheElement) elements.get( i + ":key" );
+ assertNotNull( "element " + i + ":key is missing", element );
+ assertEquals( "value " + i + ":key", region + " data " + i, element.getVal() );
+ }
+
+ // Remove all the items
+ for ( int i = 0; i <= items; i++ )
+ {
+ jcs.remove( i + ":key" );
+ }
+
+ // Verify removal
+ for ( int i = 0; i <= items; i++ )
+ {
+ assertNull( "Removed key should be null: " + i + ":key", jcs.get( i + ":key" ) );
+ }
+ }
+
+ /**
+ * SETUP TABLE FOR CACHE
+ *
+ * @param cConn
+ */
+ void setupTABLE( Connection cConn )
+ {
+ boolean newT = true;
+
+ StringBuffer createSql = new StringBuffer();
+ createSql.append( "CREATE CACHED TABLE JCS_STORE2 " );
+ createSql.append( "( " );
+ createSql.append( "CACHE_KEY VARCHAR(250) NOT NULL, " );
+ createSql.append( "REGION VARCHAR(250) NOT NULL, " );
+ createSql.append( "ELEMENT BINARY, " );
+ createSql.append( "CREATE_TIME DATE, " );
+ createSql.append( "CREATE_TIME_SECONDS BIGINT, " );
+ createSql.append( "MAX_LIFE_SECONDS BIGINT, " );
+ createSql.append( "SYSTEM_EXPIRE_TIME_SECONDS BIGINT, " );
+ createSql.append( "IS_ETERNAL CHAR(1), " );
+ createSql.append( "PRIMARY KEY (CACHE_KEY, REGION) " );
+ createSql.append( ");" );
+
+ Statement sStatement = null;
+ try
+ {
+ sStatement = cConn.createStatement();
+ }
+ catch ( SQLException e )
+ {
+ e.printStackTrace();
+ }
+
+ try
+ {
+ sStatement.executeQuery( createSql.toString() );
+ sStatement.close();
+ }
+ catch ( SQLException e )
+ {
+ if ( e.toString().indexOf( "already exists" ) != -1 )
+ {
+ newT = false;
+ }
+ else
+ {
+ // TODO figure out if it exists prior to trying to create it.
+ // log.error( "Problem creating table.", e );
+ e.printStackTrace();
+ }
+ }
+
+ String setupData[] = { "create index iKEY on JCS_STORE2 (CACHE_KEY, REGION)" };
+
+ if ( newT )
+ {
+ for ( int i = 1; i < setupData.length; i++ )
+ {
+ try
+ {
+ sStatement.executeQuery( setupData[i] );
+ }
+ catch ( SQLException e )
+ {
+ System.out.println( "Exception: " + e );
+ }
+ }
+ } // end ifnew
+ }
+}
Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/hsql/HSQLDiskCacheConcurrentUnitTest.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/hsql/HSQLDiskCacheConcurrentUnitTest.java?rev=647264&r1=647263&r2=647264&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/hsql/HSQLDiskCacheConcurrentUnitTest.java (original)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/hsql/HSQLDiskCacheConcurrentUnitTest.java Fri Apr 11 11:43:26 2008
@@ -1,155 +1,171 @@
-package org.apache.jcs.auxiliary.disk.jdbc.hsql;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import junit.extensions.ActiveTestSuite;
-import junit.framework.Test;
-import junit.framework.TestCase;
-
-import org.apache.jcs.JCS;
-
-/**
- * Test which exercises the indexed disk cache. This one uses three different regions for thre
- * threads.
- */
-public class HSQLDiskCacheConcurrentUnitTest
- extends TestCase
-{
- /**
- * Number of items to cache, twice the configured maxObjects for the memory cache regions.
- */
- private static int items = 100;
-
- /**
- * Constructor for the TestDiskCache object.
- * @param testName
- */
- public HSQLDiskCacheConcurrentUnitTest( String testName )
- {
- super( testName );
- }
-
- /**
- * Main method passes this test to the text test runner.
- * <p>
- * @param args
- */
- public static void main( String args[] )
- {
- String[] testCaseName = { HSQLDiskCacheConcurrentUnitTest.class.getName() };
- junit.textui.TestRunner.main( testCaseName );
- }
-
- /**
- * A unit test suite for JUnit. Uses ActiveTestSuite to run multiple tests concurrently.
- * <p>
- * @return The test suite
- */
- public static Test suite()
- {
- ActiveTestSuite suite = new ActiveTestSuite();
-
- suite.addTest( new HSQLDiskCacheConcurrentUnitTest( "testHSQLDiskCache1" )
- {
- public void runTest()
- throws Exception
- {
- this.runTestForRegion( "indexedRegion1" );
- }
- } );
-
- suite.addTest( new HSQLDiskCacheConcurrentUnitTest( "testHSQLDiskCache2" )
- {
- public void runTest()
- throws Exception
- {
- this.runTestForRegion( "indexedRegion2" );
- }
- } );
-
- suite.addTest( new HSQLDiskCacheConcurrentUnitTest( "testHSQLDiskCache3" )
- {
- public void runTest()
- throws Exception
- {
- this.runTestForRegion( "indexedRegion3" );
- }
- } );
-
- return suite;
- }
-
- /**
- * Test setup
- */
- public void setUp()
- {
- JCS.setConfigFilename( "/TestHSQLDiskCacheConcurrent.ccf" );
- }
-
- /**
- * Adds items to cache, gets them, and removes them. The item count is more than the size of the
- * memory cache, so items should spool to disk.
- * <p>
- * @param region Name of the region to access
- * @exception Exception If an error occurs
- */
- public void runTestForRegion( String region )
- throws Exception
- {
- JCS jcs = JCS.getInstance( region );
-
- // Add items to cache
-
- for ( int i = 0; i <= items; i++ )
- {
- jcs.put( i + ":key", region + " data " + i );
- }
-
- System.out.println( jcs.getStats() );
-
- // Thread.sleep( 1000 );
-
- // System.out.println( jcs.getStats() );
-
- // Test that all items are in cache
-
- for ( int i = 0; i <= items; i++ )
- {
- String value = (String) jcs.get( i + ":key" );
-
- assertEquals( "key = [" + i + ":key] value = [" + value + "]", region + " data " + i, value );
- }
-
- // Remove all the items
-
- for ( int i = 0; i <= items; i++ )
- {
- jcs.remove( i + ":key" );
- }
-
- // Verify removal
-
- for ( int i = 0; i <= items; i++ )
- {
- assertNull( "Removed key should be null: " + i + ":key", jcs.get( i + ":key" ) );
- }
- }
-}
+package org.apache.jcs.auxiliary.disk.jdbc.hsql;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import junit.extensions.ActiveTestSuite;
+import junit.framework.Test;
+import junit.framework.TestCase;
+
+import org.apache.jcs.JCS;
+import org.apache.jcs.engine.behavior.ICacheElement;
+
+/**
+ * Test which exercises the indexed disk cache. This one uses three different regions for thre
+ * threads.
+ */
+public class HSQLDiskCacheConcurrentUnitTest
+ extends TestCase
+{
+ /**
+ * Number of items to cache, twice the configured maxObjects for the memory cache regions.
+ */
+ private static int items = 100;
+
+ /**
+ * Constructor for the TestDiskCache object.
+ * @param testName
+ */
+ public HSQLDiskCacheConcurrentUnitTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * Main method passes this test to the text test runner.
+ * <p>
+ * @param args
+ */
+ public static void main( String args[] )
+ {
+ String[] testCaseName = { HSQLDiskCacheConcurrentUnitTest.class.getName() };
+ junit.textui.TestRunner.main( testCaseName );
+ }
+
+ /**
+ * A unit test suite for JUnit. Uses ActiveTestSuite to run multiple tests concurrently.
+ * <p>
+ * @return The test suite
+ */
+ public static Test suite()
+ {
+ ActiveTestSuite suite = new ActiveTestSuite();
+
+ suite.addTest( new HSQLDiskCacheConcurrentUnitTest( "testHSQLDiskCache1" )
+ {
+ public void runTest()
+ throws Exception
+ {
+ this.runTestForRegion( "indexedRegion1" );
+ }
+ } );
+
+ suite.addTest( new HSQLDiskCacheConcurrentUnitTest( "testHSQLDiskCache2" )
+ {
+ public void runTest()
+ throws Exception
+ {
+ this.runTestForRegion( "indexedRegion2" );
+ }
+ } );
+
+ suite.addTest( new HSQLDiskCacheConcurrentUnitTest( "testHSQLDiskCache3" )
+ {
+ public void runTest()
+ throws Exception
+ {
+ this.runTestForRegion( "indexedRegion3" );
+ }
+ } );
+
+ return suite;
+ }
+
+ /**
+ * Test setup
+ */
+ public void setUp()
+ {
+ JCS.setConfigFilename( "/TestHSQLDiskCacheConcurrent.ccf" );
+ }
+
+ /**
+ * Adds items to cache, gets them, and removes them. The item count is more than the size of the
+ * memory cache, so items should spool to disk.
+ * <p>
+ * @param region Name of the region to access
+ * @exception Exception If an error occurs
+ */
+ public void runTestForRegion( String region )
+ throws Exception
+ {
+ JCS jcs = JCS.getInstance( region );
+
+ // Add items to cache
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ jcs.put( i + ":key", region + " data " + i );
+ }
+
+ System.out.println( jcs.getStats() );
+
+ // Test that all items are in cache
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ String value = (String) jcs.get( i + ":key" );
+
+ assertEquals( "key = [" + i + ":key] value = [" + value + "]", region + " data " + i, value );
+ }
+
+ // Test that getElements returns all the expected values
+ Set keys = new HashSet();
+ for ( int i = 0; i <= items; i++ )
+ {
+ keys.add( i + ":key" );
+ }
+
+ Map elements = jcs.getCacheElements( keys );
+ for ( int i = 0; i <= items; i++ )
+ {
+ ICacheElement element = (ICacheElement) elements.get( i + ":key" );
+ assertNotNull( "element " + i + ":key is missing", element );
+ assertEquals( "value " + i + ":key", region + " data " + i, element.getVal() );
+ }
+
+ // Remove all the items
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ jcs.remove( i + ":key" );
+ }
+
+ // Verify removal
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ assertNull( "Removed key should be null: " + i + ":key", jcs.get( i + ":key" ) );
+ }
+ }
+}
Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/hsql/HSQLDiskCacheUnitTest.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/hsql/HSQLDiskCacheUnitTest.java?rev=647264&r1=647263&r2=647264&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/hsql/HSQLDiskCacheUnitTest.java (original)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/hsql/HSQLDiskCacheUnitTest.java Fri Apr 11 11:43:26 2008
@@ -1,168 +1,188 @@
-package org.apache.jcs.auxiliary.disk.jdbc.hsql;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import junit.framework.TestCase;
-
-import org.apache.jcs.JCS;
-import org.apache.jcs.access.exception.CacheException;
-
-/**
- * Test which exercises the indexed disk cache. This one uses three different regions for thre
- * threads.
- */
-public class HSQLDiskCacheUnitTest
- extends TestCase
-{
- /**
- * Test setup
- */
- public void setUp()
- {
- JCS.setConfigFilename( "/TestHSQLDiskCache.ccf" );
- }
-
- /**
- * Adds items to cache, gets them, and removes them. The item count is more than the size of the
- * memory cache, so items should spool to disk.
- * <p>
- * @param region Name of the region to access
- * @exception Exception If an error occurs
- */
- public void testBasicPutRemove()
- throws Exception
- {
- int items = 20;
-
- String region = "testBasicPutRemove";
-
- JCS jcs = JCS.getInstance( region );
-
- // Add items to cache
-
- for ( int i = 0; i <= items; i++ )
- {
- jcs.put( i + ":key", region + " data " + i );
- }
-
- //SleepUtil.sleepAtLeast( 1000 );
-
- System.out.println( jcs.getStats() );
-
- // Test that all items are in cache
-
- for ( int i = 0; i <= items; i++ )
- {
- String value = (String) jcs.get( i + ":key" );
-
- assertEquals( "key = [" + i + ":key] value = [" + value + "]", region + " data " + i, value );
- }
-
- // Remove all the items
-
- for ( int i = 0; i <= items; i++ )
- {
- jcs.remove( i + ":key" );
- }
-
- // Verify removal
-
- for ( int i = 0; i <= items; i++ )
- {
- assertNull( "Removed key should be null: " + i + ":key", jcs.get( i + ":key" ) );
- }
- }
-
- /**
- * Verify that remove all work son a region where it is not prohibited.
- * <p>
- * @throws CacheException
- * @throws InterruptedException
- */
- public void testRemoveAll()
- throws CacheException, InterruptedException
- {
- String region = "removeAllAllowed";
- JCS jcs = JCS.getInstance( region );
-
- int items = 20;
-
- // Add items to cache
-
- for ( int i = 0; i <= items; i++ )
- {
- jcs.put( i + ":key", region + " data " + i );
- }
-
- // a db thread could be updating when we call remove all?
- // there was a race on remove all, an element may be put to disk after it is called even
- // though the put
- // was called before clear.
- // I discovered it and removed it.
- // Thread.sleep( 500 );
-
- System.out.println( jcs.getStats() );
-
- jcs.clear();
-
- for ( int i = 0; i <= items; i++ )
- {
- String value = (String) jcs.get( i + ":key" );
-
- assertNull( "value should be null key = [" + i + ":key] value = [" + value + "]", value );
- }
- }
-
- /**
- * Verify that remove all does not work on a region where it is prohibited.
- * <p>
- * @throws CacheException
- * @throws InterruptedException
- */
- public void testRemoveAllProhibition()
- throws CacheException, InterruptedException
- {
- String region = "noRemoveAll";
- JCS jcs = JCS.getInstance( region );
-
- int items = 20;
-
- // Add items to cache
-
- for ( int i = 0; i <= items; i++ )
- {
- jcs.put( i + ":key", region + " data " + i );
- }
-
- // a db thread could be updating the disk when
- // Thread.sleep( 500 );
-
- System.out.println( jcs.getStats() );
-
- jcs.clear();
-
- for ( int i = 0; i <= items; i++ )
- {
- String value = (String) jcs.get( i + ":key" );
-
- assertEquals( "key = [" + i + ":key] value = [" + value + "]", region + " data " + i, value );
- }
- }
-}
+package org.apache.jcs.auxiliary.disk.jdbc.hsql;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.apache.jcs.JCS;
+import org.apache.jcs.access.exception.CacheException;
+import org.apache.jcs.engine.behavior.ICacheElement;
+
+/**
+ * Test which exercises the indexed disk cache. This one uses three different regions for thre
+ * threads.
+ */
+public class HSQLDiskCacheUnitTest
+ extends TestCase
+{
+ /**
+ * Test setup
+ */
+ public void setUp()
+ {
+ JCS.setConfigFilename( "/TestHSQLDiskCache.ccf" );
+ }
+
+ /**
+ * Adds items to cache, gets them, and removes them. The item count is more than the size of the
+ * memory cache, so items should spool to disk.
+ * <p>
+ * @exception Exception If an error occurs
+ */
+ public void testBasicPutRemove()
+ throws Exception
+ {
+ int items = 20;
+
+ String region = "testBasicPutRemove";
+
+ JCS jcs = JCS.getInstance( region );
+
+ // Add items to cache
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ jcs.put( i + ":key", region + " data " + i );
+ }
+
+ //SleepUtil.sleepAtLeast( 1000 );
+
+ System.out.println( jcs.getStats() );
+
+ // Test that all items are in cache
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ String value = (String) jcs.get( i + ":key" );
+
+ assertEquals( "key = [" + i + ":key] value = [" + value + "]", region + " data " + i, value );
+ }
+
+ // Test that getElements returns all the expected values
+ Set keys = new HashSet();
+ for ( int i = 0; i <= items; i++ )
+ {
+ keys.add( i + ":key" );
+ }
+
+ Map elements = jcs.getCacheElements( keys );
+ for ( int i = 0; i <= items; i++ )
+ {
+ ICacheElement element = (ICacheElement) elements.get( i + ":key" );
+ assertNotNull( "element " + i + ":key is missing", element );
+ assertEquals( "value " + i + ":key", region + " data " + i, element.getVal() );
+ }
+
+
+ // Remove all the items
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ jcs.remove( i + ":key" );
+ }
+
+ // Verify removal
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ assertNull( "Removed key should be null: " + i + ":key", jcs.get( i + ":key" ) );
+ }
+ }
+
+ /**
+ * Verify that remove all work son a region where it is not prohibited.
+ * <p>
+ * @throws CacheException
+ * @throws InterruptedException
+ */
+ public void testRemoveAll()
+ throws CacheException, InterruptedException
+ {
+ String region = "removeAllAllowed";
+ JCS jcs = JCS.getInstance( region );
+
+ int items = 20;
+
+ // Add items to cache
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ jcs.put( i + ":key", region + " data " + i );
+ }
+
+ // a db thread could be updating when we call remove all?
+ // there was a race on remove all, an element may be put to disk after it is called even
+ // though the put
+ // was called before clear.
+ // I discovered it and removed it.
+ // Thread.sleep( 500 );
+
+ System.out.println( jcs.getStats() );
+
+ jcs.clear();
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ String value = (String) jcs.get( i + ":key" );
+
+ assertNull( "value should be null key = [" + i + ":key] value = [" + value + "]", value );
+ }
+ }
+
+ /**
+ * Verify that remove all does not work on a region where it is prohibited.
+ * <p>
+ * @throws CacheException
+ * @throws InterruptedException
+ */
+ public void testRemoveAllProhibition()
+ throws CacheException, InterruptedException
+ {
+ String region = "noRemoveAll";
+ JCS jcs = JCS.getInstance( region );
+
+ int items = 20;
+
+ // Add items to cache
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ jcs.put( i + ":key", region + " data " + i );
+ }
+
+ // a db thread could be updating the disk when
+ // Thread.sleep( 500 );
+
+ System.out.println( jcs.getStats() );
+
+ jcs.clear();
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ String value = (String) jcs.get( i + ":key" );
+
+ assertEquals( "key = [" + i + ":key] value = [" + value + "]", region + " data " + i, value );
+ }
+ }
+}
Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheHsqlBackedUnitTest.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheHsqlBackedUnitTest.java?rev=647264&r1=647263&r2=647264&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheHsqlBackedUnitTest.java (original)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheHsqlBackedUnitTest.java Fri Apr 11 11:43:26 2008
@@ -1,201 +1,218 @@
-package org.apache.jcs.auxiliary.disk.jdbc.mysql;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Properties;
-
-import junit.framework.TestCase;
-
-import org.apache.jcs.JCS;
-
-/**
- * Runs basic tests for the JDBC disk cache.
- *
- * @author Aaron Smuts
- *
- */
-public class MySQLDiskCacheHsqlBackedUnitTest
- extends TestCase
-{
-
- /**
- * Test setup
- */
- public void setUp()
- {
- JCS.setConfigFilename( "/TestMySQLDiskCache.ccf" );
- }
-
- /**
- * Test the basic JDBC disk cache functionality with a hsql backing.
- *
- * @throws Exception
- */
- public void testSimpleJDBCPutGetWithHSQL()
- throws Exception
- {
- System.setProperty( "hsqldb.cache_scale", "8" );
-
- String rafroot = "target";
- Properties p = new Properties();
- String driver = p.getProperty( "driver", "org.hsqldb.jdbcDriver" );
- String url = p.getProperty( "url", "jdbc:hsqldb:" );
- String database = p.getProperty( "database", rafroot + "/MySQLDiskCacheHsqlBackedUnitTest" );
- String user = p.getProperty( "user", "sa" );
- String password = p.getProperty( "password", "" );
-
- new org.hsqldb.jdbcDriver();
- Class.forName( driver ).newInstance();
- Connection cConn = DriverManager.getConnection( url + database, user, password );
-
- setupTABLE( cConn );
-
- runTestForRegion( "testCache1", 30 );
- }
-
- /**
- * Adds items to cache, gets them, and removes them. The item count is more
- * than the size of the memory cache, so items should spool to disk.
- *
- * @param region
- * Name of the region to access
- * @param items
- *
- * @exception Exception
- * If an error occurs
- */
- public void runTestForRegion( String region, int items )
- throws Exception
- {
- JCS jcs = JCS.getInstance( region );
-
- System.out.println( "BEFORE PUT \n" + jcs.getStats() );
-
- // Add items to cache
-
- for ( int i = 0; i <= items; i++ )
- {
- jcs.put( i + ":key", region + " data " + i );
- }
-
- System.out.println( jcs.getStats() );
-
- Thread.sleep( 1000 );
-
- System.out.println( jcs.getStats() );
-
- // Test that all items are in cache
-
- for ( int i = 0; i <= items; i++ )
- {
- String value = (String) jcs.get( i + ":key" );
-
- assertEquals( "key = [" + i + ":key] value = [" + value + "]", region + " data " + i, value );
- }
-
- // Remove all the items
-
- for ( int i = 0; i <= items; i++ )
- {
- jcs.remove( i + ":key" );
- }
-
- // Verify removal
-
- for ( int i = 0; i <= items; i++ )
- {
- assertNull( "Removed key should be null: " + i + ":key", jcs.get( i + ":key" ) );
- }
- }
-
- /**
- * SETUP TABLE FOR CACHE
- *
- * @param cConn
- */
- void setupTABLE( Connection cConn )
- {
- boolean newT = true;
-
- StringBuffer createSql = new StringBuffer();
- createSql.append( "CREATE CACHED TABLE JCS_STORE_MYSQL " );
- createSql.append( "( " );
- createSql.append( "CACHE_KEY VARCHAR(250) NOT NULL, " );
- createSql.append( "REGION VARCHAR(250) NOT NULL, " );
- createSql.append( "ELEMENT BINARY, " );
- createSql.append( "CREATE_TIME DATE, " );
- createSql.append( "CREATE_TIME_SECONDS BIGINT, " );
- createSql.append( "MAX_LIFE_SECONDS BIGINT, " );
- createSql.append( "SYSTEM_EXPIRE_TIME_SECONDS BIGINT, " );
- createSql.append( "IS_ETERNAL CHAR(1), " );
- createSql.append( "PRIMARY KEY (CACHE_KEY, REGION) " );
- createSql.append( ");" );
-
- Statement sStatement = null;
- try
- {
- sStatement = cConn.createStatement();
- }
- catch ( SQLException e )
- {
- e.printStackTrace();
- }
-
- try
- {
- sStatement.executeQuery( createSql.toString() );
- sStatement.close();
- }
- catch ( SQLException e )
- {
- if ( e.toString().indexOf( "already exists" ) != -1 )
- {
- newT = false;
- }
- else
- {
- // TODO figure out if it exists prior to trying to create it.
- // log.error( "Problem creating table.", e );
- e.printStackTrace();
- }
- }
-
- String setupData[] = { "create index iKEY on JCS_STORE_MYSQL (CACHE_KEY, REGION)" };
-
- if ( newT )
- {
- for ( int i = 1; i < setupData.length; i++ )
- {
- try
- {
- sStatement.executeQuery( setupData[i] );
- }
- catch ( SQLException e )
- {
- System.out.println( "Exception: " + e );
- }
- }
- } // end ifnew
- }
-}
+package org.apache.jcs.auxiliary.disk.jdbc.mysql;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.apache.jcs.JCS;
+import org.apache.jcs.engine.behavior.ICacheElement;
+
+/**
+ * Runs basic tests for the JDBC disk cache.
+ *
+ * @author Aaron Smuts
+ *
+ */
+public class MySQLDiskCacheHsqlBackedUnitTest
+ extends TestCase
+{
+
+ /**
+ * Test setup
+ */
+ public void setUp()
+ {
+ JCS.setConfigFilename( "/TestMySQLDiskCache.ccf" );
+ }
+
+ /**
+ * Test the basic JDBC disk cache functionality with a hsql backing.
+ *
+ * @throws Exception
+ */
+ public void testSimpleJDBCPutGetWithHSQL()
+ throws Exception
+ {
+ System.setProperty( "hsqldb.cache_scale", "8" );
+
+ String rafroot = "target";
+ Properties p = new Properties();
+ String driver = p.getProperty( "driver", "org.hsqldb.jdbcDriver" );
+ String url = p.getProperty( "url", "jdbc:hsqldb:" );
+ String database = p.getProperty( "database", rafroot + "/MySQLDiskCacheHsqlBackedUnitTest" );
+ String user = p.getProperty( "user", "sa" );
+ String password = p.getProperty( "password", "" );
+
+ new org.hsqldb.jdbcDriver();
+ Class.forName( driver ).newInstance();
+ Connection cConn = DriverManager.getConnection( url + database, user, password );
+
+ setupTABLE( cConn );
+
+ runTestForRegion( "testCache1", 30 );
+ }
+
+ /**
+ * Adds items to cache, gets them, and removes them. The item count is more
+ * than the size of the memory cache, so items should spool to disk.
+ *
+ * @param region
+ * Name of the region to access
+ * @param items
+ *
+ * @exception Exception
+ * If an error occurs
+ */
+ public void runTestForRegion( String region, int items )
+ throws Exception
+ {
+ JCS jcs = JCS.getInstance( region );
+
+ System.out.println( "BEFORE PUT \n" + jcs.getStats() );
+
+ // Add items to cache
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ jcs.put( i + ":key", region + " data " + i );
+ }
+
+ System.out.println( jcs.getStats() );
+
+ Thread.sleep( 1000 );
+
+ System.out.println( jcs.getStats() );
+
+ // Test that all items are in cache
+ for ( int i = 0; i <= items; i++ )
+ {
+ String value = (String) jcs.get( i + ":key" );
+
+ assertEquals( "key = [" + i + ":key] value = [" + value + "]", region + " data " + i, value );
+ }
+
+ // Test that getElements returns all the expected values
+ Set keys = new HashSet();
+ for ( int i = 0; i <= items; i++ )
+ {
+ keys.add( i + ":key" );
+ }
+
+ Map elements = jcs.getCacheElements( keys );
+ for ( int i = 0; i <= items; i++ )
+ {
+ ICacheElement element = (ICacheElement) elements.get( i + ":key" );
+ assertNotNull( "element " + i + ":key is missing", element );
+ assertEquals( "value " + i + ":key", region + " data " + i, element.getVal() );
+ }
+
+ // Remove all the items
+ for ( int i = 0; i <= items; i++ )
+ {
+ jcs.remove( i + ":key" );
+ }
+
+ // Verify removal
+
+ for ( int i = 0; i <= items; i++ )
+ {
+ assertNull( "Removed key should be null: " + i + ":key", jcs.get( i + ":key" ) );
+ }
+ }
+
+ /**
+ * SETUP TABLE FOR CACHE
+ *
+ * @param cConn
+ */
+ void setupTABLE( Connection cConn )
+ {
+ boolean newT = true;
+
+ StringBuffer createSql = new StringBuffer();
+ createSql.append( "CREATE CACHED TABLE JCS_STORE_MYSQL " );
+ createSql.append( "( " );
+ createSql.append( "CACHE_KEY VARCHAR(250) NOT NULL, " );
+ createSql.append( "REGION VARCHAR(250) NOT NULL, " );
+ createSql.append( "ELEMENT BINARY, " );
+ createSql.append( "CREATE_TIME DATE, " );
+ createSql.append( "CREATE_TIME_SECONDS BIGINT, " );
+ createSql.append( "MAX_LIFE_SECONDS BIGINT, " );
+ createSql.append( "SYSTEM_EXPIRE_TIME_SECONDS BIGINT, " );
+ createSql.append( "IS_ETERNAL CHAR(1), " );
+ createSql.append( "PRIMARY KEY (CACHE_KEY, REGION) " );
+ createSql.append( ");" );
+
+ Statement sStatement = null;
+ try
+ {
+ sStatement = cConn.createStatement();
+ }
+ catch ( SQLException e )
+ {
+ e.printStackTrace();
+ }
+
+ try
+ {
+ sStatement.executeQuery( createSql.toString() );
+ sStatement.close();
+ }
+ catch ( SQLException e )
+ {
+ if ( e.toString().indexOf( "already exists" ) != -1 )
+ {
+ newT = false;
+ }
+ else
+ {
+ // TODO figure out if it exists prior to trying to create it.
+ // log.error( "Problem creating table.", e );
+ e.printStackTrace();
+ }
+ }
+
+ String setupData[] = { "create index iKEY on JCS_STORE_MYSQL (CACHE_KEY, REGION)" };
+
+ if ( newT )
+ {
+ for ( int i = 1; i < setupData.length; i++ )
+ {
+ try
+ {
+ sStatement.executeQuery( setupData[i] );
+ }
+ catch ( SQLException e )
+ {
+ System.out.println( "Exception: " + e );
+ }
+ }
+ } // end ifnew
+ }
+}
Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPFilterRemoveHashCodeUnitTest.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPFilterRemoveHashCodeUnitTest.java?rev=647264&r1=647263&r2=647264&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPFilterRemoveHashCodeUnitTest.java (original)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPFilterRemoveHashCodeUnitTest.java Fri Apr 11 11:43:26 2008
@@ -33,11 +33,13 @@
public class LateralTCPFilterRemoveHashCodeUnitTest
extends TestCase
{
-
- //private static boolean isSysOut = false;
-
+ /** Does the test print to system out. */
private static boolean isSysOut = true;
+ //private static boolean isSysOut = false;
+ /** The port the server will listen to. */
+ private int serverPort = 1118;
+
/**
* Constructor for the TestDiskCache object.
*
@@ -53,6 +55,8 @@
*/
public void setUp()
{
+ System.setProperty( "jcs.auxiliary.LTCP.attributes.TcpServers", "localhost:" + serverPort );
+
JCS.setConfigFilename( "/TestTCPLateralRemoveFilter.ccf" );
}
@@ -91,7 +95,7 @@
TCPLateralCacheAttributes lattr2 = new TCPLateralCacheAttributes();
lattr2.setTcpListenerPort( 1102 );
lattr2.setTransmissionTypeName( "TCP" );
- lattr2.setTcpServer( "localhost:1110" );
+ lattr2.setTcpServer( "localhost:1118" );
lattr2.setIssueRemoveOnPut( true );
// should still try to remove
lattr2.setAllowPut( false );
Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPIssueRemoveOnPutUnitTest.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPIssueRemoveOnPutUnitTest.java?rev=647264&r1=647263&r2=647264&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPIssueRemoveOnPutUnitTest.java (original)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPIssueRemoveOnPutUnitTest.java Fri Apr 11 11:43:26 2008
@@ -29,17 +29,20 @@
/**
* Tests the issue remove on put fuctionality.
- *
* @author asmuts
*/
public class LateralTCPIssueRemoveOnPutUnitTest
extends TestCase
{
+ /** Should log data go to system out. */
private static boolean isSysOut = true;
+ /** The port the server will listen to. */
+ private int serverPort = 1118;
+
/**
* Constructor for the TestDiskCache object.
- *
+ * <p>
* @param testName
*/
public LateralTCPIssueRemoveOnPutUnitTest( String testName )
@@ -51,12 +54,13 @@
* Test setup
*/
public void setUp()
- {
+ {
+ System.setProperty( "jcs.auxiliary.LTCP.attributes.TcpServers", "localhost:" + serverPort );
+
JCS.setConfigFilename( "/TestTCPLateralIssueRemoveCache.ccf" );
}
/**
- *
* @throws Exception
*/
public void testPutLocalPutRemoteGetBusyVerifyRemoved()
@@ -66,13 +70,10 @@
}
/**
- * Verify that a standard put works.
- *
- * Get the cache configured from a file. Create a tcp service to talk to
- * that cache. Put via the servive. Verify that the cache got the data.
- *
+ * Verify that a standard put works. Get the cache configured from a file. Create a tcp service
+ * to talk to that cache. Put via the servive. Verify that the cache got the data.
+ * <p>
* @throws Exception
- *
*/
public void testStandardPut()
throws Exception
@@ -86,7 +87,7 @@
TCPLateralCacheAttributes lattr2 = new TCPLateralCacheAttributes();
lattr2.setTcpListenerPort( 1102 );
lattr2.setTransmissionTypeName( "TCP" );
- lattr2.setTcpServer( "localhost:1110" );
+ lattr2.setTcpServer( "localhost:" + serverPort );
lattr2.setIssueRemoveOnPut( false );
// should still try to remove
// lattr2.setAllowPut( false );
@@ -111,17 +112,14 @@
}
/**
- * This tests issues tons of puts. It also check to see that a key that was
- * put in was removed by the clients remove command.
- *
- * @param region
- * Name of the region to access
+ * This tests issues tons of puts. It also check to see that a key that was put in was removed
+ * by the clients remove command.
+ * <p>
+ * @param region Name of the region to access
* @param range
* @param numOps
* @param testNum
- *
- * @exception Exception
- * If an error occurs
+ * @exception Exception If an error occurs
*/
public void runTestForRegion( String region, int range, int numOps, int testNum )
throws Exception
@@ -136,7 +134,7 @@
TCPLateralCacheAttributes lattr2 = new TCPLateralCacheAttributes();
lattr2.setTcpListenerPort( 1102 );
lattr2.setTransmissionTypeName( "TCP" );
- lattr2.setTcpServer( "localhost:1110" );
+ lattr2.setTcpServer( "localhost:" + serverPort );
lattr2.setIssueRemoveOnPut( true );
// should still try to remove
lattr2.setAllowPut( false );
@@ -214,8 +212,7 @@
}
/**
- * @param s
- * String to be printed
+ * @param s String to be printed
*/
public static void p( String s )
{
@@ -224,4 +221,4 @@
System.out.println( s );
}
}
-}
+}
\ No newline at end of file
Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/RemoteCacheClientMockImpl.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/RemoteCacheClientMockImpl.java?rev=647264&r1=647263&r2=647264&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/RemoteCacheClientMockImpl.java (original)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/RemoteCacheClientMockImpl.java Fri Apr 11 11:43:26 2008
@@ -1,250 +1,241 @@
-package org.apache.jcs.auxiliary.remote;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.jcs.auxiliary.AuxiliaryCacheAttributes;
-import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheClient;
-import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheListener;
-import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheService;
-import org.apache.jcs.engine.CacheConstants;
-import org.apache.jcs.engine.behavior.ICacheElement;
-import org.apache.jcs.engine.stats.behavior.IStats;
-
-/**
- * Used for testing the no wait.
- * <p>
- * @author Aaron Smuts
- */
-public class RemoteCacheClientMockImpl
- implements IRemoteCacheClient
-{
- private static final long serialVersionUID = 1L;
-
- private final static Log log = LogFactory.getLog( RemoteCacheClientMockImpl.class );
-
- /**
- * List of ICacheElement objects passed into update.
- */
- public List updateList = new LinkedList();
-
- /**
- * List of key objects passed into remove.
- */
- public List removeList = new LinkedList();
-
- /** status to return. */
- public int status = CacheConstants.STATUS_ALIVE;
-
- /** Can setup values to return from get. values must be ICacheElement */
- public Map getSetupMap = new HashMap();
-
- /**
- * The last service passed to fixCache
- */
- public IRemoteCacheService fixed;
-
- /**
- * Attributes.
- */
- public RemoteCacheAttributes attributes = new RemoteCacheAttributes();
-
- /**
- * Stores the last argument as fixed.
- * <p>
- * (non-Javadoc)
- * @see org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheClient#fixCache(org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheService)
- */
- public void fixCache( IRemoteCacheService remote )
- {
- fixed = remote;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheClient#getListenerId()
- */
- public long getListenerId()
- {
- // TODO Auto-generated method stub
- return 0;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheClient#getListener()
- */
- public IRemoteCacheListener getListener()
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- /**
- * Adds the argument to the updatedList.
- * <p>
- * (non-Javadoc)
- * @see org.apache.jcs.auxiliary.AuxiliaryCache#update(org.apache.jcs.engine.behavior.ICacheElement)
- */
- public void update( ICacheElement ce )
- throws IOException
- {
- updateList.add( ce );
- }
-
- /**
- * Looks in the getSetupMap for a value.
- * <p>
- * (non-Javadoc)
- * @see org.apache.jcs.auxiliary.AuxiliaryCache#get(java.io.Serializable)
- */
- public ICacheElement get( Serializable key )
- throws IOException
- {
- log.info( "get [" + key + "]" );
- return (ICacheElement) getSetupMap.get( key );
- }
-
- /**
- * Adds the key to the remove list.
- * <p>
- * (non-Javadoc)
- * @see org.apache.jcs.auxiliary.AuxiliaryCache#remove(java.io.Serializable)
- */
- public boolean remove( Serializable key )
- throws IOException
- {
- removeList.add( key );
- return false;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.jcs.auxiliary.AuxiliaryCache#removeAll()
- */
- public void removeAll()
- throws IOException
- {
- // TODO Auto-generated method stub
-
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.jcs.auxiliary.AuxiliaryCache#dispose()
- */
- public void dispose()
- throws IOException
- {
- // TODO Auto-generated method stub
-
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.jcs.auxiliary.AuxiliaryCache#getSize()
- */
- public int getSize()
- {
- // TODO Auto-generated method stub
- return 0;
- }
-
- /**
- * Returns the status setup variable. (non-Javadoc)
- * @see org.apache.jcs.auxiliary.AuxiliaryCache#getStatus()
- */
- public int getStatus()
- {
- return status;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.jcs.auxiliary.AuxiliaryCache#getCacheName()
- */
- public String getCacheName()
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.jcs.auxiliary.AuxiliaryCache#getGroupKeys(java.lang.String)
- */
- public Set getGroupKeys( String group )
- throws IOException
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.jcs.auxiliary.AuxiliaryCache#getStatistics()
- */
- public IStats getStatistics()
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- /**
- * Returns the setup attributes. By default they are not null.
- * <p>
- * (non-Javadoc)
- * @see org.apache.jcs.auxiliary.AuxiliaryCache#getAuxiliaryCacheAttributes()
- */
- public AuxiliaryCacheAttributes getAuxiliaryCacheAttributes()
- {
- return attributes;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.jcs.engine.behavior.ICache#getStats()
- */
- public String getStats()
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.jcs.engine.behavior.ICacheType#getCacheType()
- */
- public int getCacheType()
- {
- // TODO Auto-generated method stub
- return 0;
- }
-
-}
+package org.apache.jcs.auxiliary.remote;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jcs.auxiliary.AuxiliaryCacheAttributes;
+import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheClient;
+import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheListener;
+import org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheService;
+import org.apache.jcs.engine.CacheConstants;
+import org.apache.jcs.engine.behavior.ICacheElement;
+import org.apache.jcs.engine.stats.behavior.IStats;
+
+/**
+ * Used for testing the no wait.
+ * <p>
+ * @author Aaron Smuts
+ */
+public class RemoteCacheClientMockImpl
+ implements IRemoteCacheClient
+{
+ /** For serialization. Don't change. */
+ private static final long serialVersionUID = 1L;
+
+ /** log instance */
+ private final static Log log = LogFactory.getLog( RemoteCacheClientMockImpl.class );
+
+ /** List of ICacheElement objects passed into update. */
+ public List updateList = new LinkedList();
+
+ /** List of key objects passed into remove. */
+ public List removeList = new LinkedList();
+
+ /** status to return. */
+ public int status = CacheConstants.STATUS_ALIVE;
+
+ /** Can setup values to return from get. values must be ICacheElement */
+ public Map getSetupMap = new HashMap();
+
+ /** Can setup values to return from get. values must be Map<Serializable, ICacheElement> */
+ public Map getMultipleSetupMap = new HashMap();
+
+ /** The last service passed to fixCache */
+ public IRemoteCacheService fixed;
+
+ /** Attributes. */
+ public RemoteCacheAttributes attributes = new RemoteCacheAttributes();
+
+ /**
+ * Stores the last argument as fixed.
+ * <p>
+ * (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheClient#fixCache(org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheService)
+ */
+ public void fixCache( IRemoteCacheService remote )
+ {
+ fixed = remote;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheClient#getListenerId()
+ */
+ public long getListenerId()
+ {
+ return 0;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.remote.behavior.IRemoteCacheClient#getListener()
+ */
+ public IRemoteCacheListener getListener()
+ {
+ return null;
+ }
+
+ /**
+ * Adds the argument to the updatedList.
+ * <p>
+ * (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.AuxiliaryCache#update(org.apache.jcs.engine.behavior.ICacheElement)
+ */
+ public void update( ICacheElement ce )
+ {
+ updateList.add( ce );
+ }
+
+ /**
+ * Looks in the getSetupMap for a value.
+ * <p>
+ * (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.AuxiliaryCache#get(java.io.Serializable)
+ */
+ public ICacheElement get( Serializable key )
+ {
+ log.info( "get [" + key + "]" );
+ return (ICacheElement) getSetupMap.get( key );
+ }
+
+ /**
+ * Gets multiple items from the cache based on the given set of keys.
+ * <p>
+ * @param keys
+ * @return a map of Serializable key to ICacheElement element, or an empty map if there is no data in cache for any of these keys
+ */
+ public Map getMultiple( Set keys )
+ {
+ log.info( "get [" + keys + "]" );
+ return (Map) getMultipleSetupMap.get( keys );
+ }
+
+ /**
+ * Adds the key to the remove list.
+ * <p>
+ * (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.AuxiliaryCache#remove(java.io.Serializable)
+ */
+ public boolean remove( Serializable key )
+ {
+ removeList.add( key );
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.AuxiliaryCache#removeAll()
+ */
+ public void removeAll()
+ {
+ // do nothing
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.AuxiliaryCache#dispose()
+ */
+ public void dispose()
+ {
+ // do nothing
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.AuxiliaryCache#getSize()
+ */
+ public int getSize()
+ {
+ return 0;
+ }
+
+ /**
+ * Returns the status setup variable. (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.AuxiliaryCache#getStatus()
+ */
+ public int getStatus()
+ {
+ return status;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.AuxiliaryCache#getCacheName()
+ */
+ public String getCacheName()
+ {
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.AuxiliaryCache#getGroupKeys(java.lang.String)
+ */
+ public Set getGroupKeys( String group )
+ {
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.AuxiliaryCache#getStatistics()
+ */
+ public IStats getStatistics()
+ {
+ return null;
+ }
+
+ /**
+ * Returns the setup attributes. By default they are not null.
+ * <p>
+ * (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.AuxiliaryCache#getAuxiliaryCacheAttributes()
+ */
+ public AuxiliaryCacheAttributes getAuxiliaryCacheAttributes()
+ {
+ return attributes;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.jcs.engine.behavior.ICache#getStats()
+ */
+ public String getStats()
+ {
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.jcs.engine.behavior.ICacheType#getCacheType()
+ */
+ public int getCacheType()
+ {
+ return 0;
+ }
+}
Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/RemoteCacheNoWaitUnitTest.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/RemoteCacheNoWaitUnitTest.java?rev=647264&r1=647263&r2=647264&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/RemoteCacheNoWaitUnitTest.java (original)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/RemoteCacheNoWaitUnitTest.java Fri Apr 11 11:43:26 2008
@@ -1,182 +1,215 @@
-package org.apache.jcs.auxiliary.remote;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import junit.framework.TestCase;
-
-import org.apache.jcs.engine.CacheConstants;
-import org.apache.jcs.engine.CacheElement;
-import org.apache.jcs.engine.behavior.ICacheElement;
-import org.apache.jcs.engine.behavior.ICacheEventQueue;
-import org.apache.jcs.utils.timing.SleepUtil;
-
-/**
- * Unit tests for the remote cache no wait. The no wait manages a queue on top of the client.
- * <p>
- * @author Aaron Smuts
- */
-public class RemoteCacheNoWaitUnitTest
- extends TestCase
-{
- /**
- * Simply verify that the client gets updated via the no wait.
- * <p>
- * @throws Exception
- */
- public void testUpdate()
- throws Exception
- {
- // SETUP
- RemoteCacheClientMockImpl client = new RemoteCacheClientMockImpl();
- RemoteCacheNoWait noWait = new RemoteCacheNoWait( client );
-
- ICacheElement element = new CacheElement( "testUpdate", "key", "value" );
-
- // DO WORK
- noWait.update( element );
-
- SleepUtil.sleepAtLeast( 10 );
-
- // VERIFY
- assertEquals( "Wrong number updated.", 1, client.updateList.size() );
- assertEquals( "Wrong element", element, client.updateList.get( 0 ) );
- }
-
- /**
- * Simply verify that the client get is called from the no wait.
- * <p>
- * @throws Exception
- */
- public void testGet()
- throws Exception
- {
- // SETUP
- RemoteCacheClientMockImpl client = new RemoteCacheClientMockImpl();
- RemoteCacheNoWait noWait = new RemoteCacheNoWait( client );
-
- ICacheElement input = new CacheElement( "testUpdate", "key", "value" );
- client.getSetupMap.put( "key", input );
-
- // DO WORK
- ICacheElement result = noWait.get( "key" );
-
- // VERIFY
- assertEquals( "Wrong element", input, result );
- }
-
- /**
- * Simply verify that the client gets updated via the no wait.
- * <p>
- * @throws Exception
- */
- public void testRemove()
- throws Exception
- {
- // SETUP
- RemoteCacheClientMockImpl client = new RemoteCacheClientMockImpl();
- RemoteCacheNoWait noWait = new RemoteCacheNoWait( client );
-
- String input = "MyKey";
-
- // DO WORK
- noWait.remove( input );
-
- SleepUtil.sleepAtLeast( 10 );
-
- // VERIFY
- assertEquals( "Wrong number updated.", 1, client.removeList.size() );
- assertEquals( "Wrong key", input, client.removeList.get( 0 ) );
- }
-
- /**
- * Simply verify that the client status is returned in the stats.
- * <p>
- * @throws Exception
- */
- public void testGetStats()
- throws Exception
- {
- // SETUP
- RemoteCacheClientMockImpl client = new RemoteCacheClientMockImpl();
- client.status = CacheConstants.STATUS_ALIVE;
- RemoteCacheNoWait noWait = new RemoteCacheNoWait( client );
-
- // DO WORK
- String result = noWait.getStats();
-
- // VERIFY
- assertTrue( "Status should contain 'ALIVE'", result.indexOf( "ALIVE" ) != -1 );
- }
-
- /**
- * Simply verify that we get a status of error if the cache is in error..
- * <p>
- * @throws Exception
- */
- public void testGetStatus_error()
- throws Exception
- {
- // SETUP
- RemoteCacheClientMockImpl client = new RemoteCacheClientMockImpl();
- client.status = CacheConstants.STATUS_ERROR;
- RemoteCacheNoWait noWait = new RemoteCacheNoWait( client );
-
- // DO WORK
- int result = noWait.getStatus();
-
- // VERIFY
- assertEquals( "Wrong status", CacheConstants.STATUS_ERROR, result );
- }
-
- /**
- * Simply verify that the serviced supplied to fix is passed onto the client. Verify that the
- * original event queue is destroyed. A new event queue willbe plugged in on fix.
- * <p>
- * @throws Exception
- */
- public void testFixCache()
- throws Exception
- {
- // SETUP
- RemoteCacheClientMockImpl client = new RemoteCacheClientMockImpl();
- client.status = CacheConstants.STATUS_ALIVE;
- RemoteCacheNoWait noWait = new RemoteCacheNoWait( client );
-
- RemoteCacheServiceMockImpl service = new RemoteCacheServiceMockImpl();
-
- ICacheElement element = new CacheElement( "testUpdate", "key", "value" );
-
- // DO WORK
- noWait.update( element );
- SleepUtil.sleepAtLeast( 10 );
- ICacheEventQueue originalQueue = noWait.getCacheEventQueue();
-
- noWait.fixCache( service );
-
- noWait.update( element );
- SleepUtil.sleepAtLeast( 10 );
- ICacheEventQueue newQueue = noWait.getCacheEventQueue();
-
- // VERIFY
- assertEquals( "Wrong status", service, client.fixed );
- assertFalse( "Original queue should not alive", originalQueue.isAlive() );
- assertTrue( "New queue should be alive." + newQueue, newQueue.isAlive() );
- }
-}
+package org.apache.jcs.auxiliary.remote;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.apache.jcs.engine.CacheConstants;
+import org.apache.jcs.engine.CacheElement;
+import org.apache.jcs.engine.behavior.ICacheElement;
+import org.apache.jcs.engine.behavior.ICacheEventQueue;
+import org.apache.jcs.utils.timing.SleepUtil;
+
+/**
+ * Unit tests for the remote cache no wait. The no wait manages a queue on top of the client.
+ * <p>
+ * @author Aaron Smuts
+ */
+public class RemoteCacheNoWaitUnitTest
+ extends TestCase
+{
+ /**
+ * Simply verify that the client gets updated via the no wait.
+ * <p>
+ * @throws Exception
+ */
+ public void testUpdate()
+ throws Exception
+ {
+ // SETUP
+ RemoteCacheClientMockImpl client = new RemoteCacheClientMockImpl();
+ RemoteCacheNoWait noWait = new RemoteCacheNoWait( client );
+
+ ICacheElement element = new CacheElement( "testUpdate", "key", "value" );
+
+ // DO WORK
+ noWait.update( element );
+
+ SleepUtil.sleepAtLeast( 10 );
+
+ // VERIFY
+ assertEquals( "Wrong number updated.", 1, client.updateList.size() );
+ assertEquals( "Wrong element", element, client.updateList.get( 0 ) );
+ }
+
+ /**
+ * Simply verify that the client get is called from the no wait.
+ * <p>
+ * @throws Exception
+ */
+ public void testGet()
+ throws Exception
+ {
+ // SETUP
+ RemoteCacheClientMockImpl client = new RemoteCacheClientMockImpl();
+ RemoteCacheNoWait noWait = new RemoteCacheNoWait( client );
+
+ ICacheElement input = new CacheElement( "testUpdate", "key", "value" );
+ client.getSetupMap.put( "key", input );
+
+ // DO WORK
+ ICacheElement result = noWait.get( "key" );
+
+ // VERIFY
+ assertEquals( "Wrong element", input, result );
+ }
+
+ /**
+ * Simply verify that the client getMultiple is called from the no wait.
+ * <p>
+ * @throws Exception
+ */
+ public void testGetMultiple()
+ throws Exception
+ {
+ // SETUP
+ RemoteCacheClientMockImpl client = new RemoteCacheClientMockImpl();
+ RemoteCacheNoWait noWait = new RemoteCacheNoWait( client );
+
+ ICacheElement inputElement = new CacheElement( "testUpdate", "key", "value" );
+ Map inputMap = new HashMap();
+ inputMap.put( "key", inputElement );
+
+ Set keys = new HashSet();
+ keys.add( "key" );
+
+ client.getMultipleSetupMap.put( keys, inputMap );
+
+ // DO WORK
+ Map result = noWait.getMultiple( keys );
+
+ // VERIFY
+ assertEquals( "elements map", inputMap, result );
+ }
+
+ /**
+ * Simply verify that the client gets updated via the no wait.
+ * <p>
+ * @throws Exception
+ */
+ public void testRemove()
+ throws Exception
+ {
+ // SETUP
+ RemoteCacheClientMockImpl client = new RemoteCacheClientMockImpl();
+ RemoteCacheNoWait noWait = new RemoteCacheNoWait( client );
+
+ String input = "MyKey";
+
+ // DO WORK
+ noWait.remove( input );
+
+ SleepUtil.sleepAtLeast( 10 );
+
+ // VERIFY
+ assertEquals( "Wrong number updated.", 1, client.removeList.size() );
+ assertEquals( "Wrong key", input, client.removeList.get( 0 ) );
+ }
+
+ /**
+ * Simply verify that the client status is returned in the stats.
+ * <p>
+ * @throws Exception
+ */
+ public void testGetStats()
+ throws Exception
+ {
+ // SETUP
+ RemoteCacheClientMockImpl client = new RemoteCacheClientMockImpl();
+ client.status = CacheConstants.STATUS_ALIVE;
+ RemoteCacheNoWait noWait = new RemoteCacheNoWait( client );
+
+ // DO WORK
+ String result = noWait.getStats();
+
+ // VERIFY
+ assertTrue( "Status should contain 'ALIVE'", result.indexOf( "ALIVE" ) != -1 );
+ }
+
+ /**
+ * Simply verify that we get a status of error if the cache is in error..
+ * <p>
+ * @throws Exception
+ */
+ public void testGetStatus_error()
+ throws Exception
+ {
+ // SETUP
+ RemoteCacheClientMockImpl client = new RemoteCacheClientMockImpl();
+ client.status = CacheConstants.STATUS_ERROR;
+ RemoteCacheNoWait noWait = new RemoteCacheNoWait( client );
+
+ // DO WORK
+ int result = noWait.getStatus();
+
+ // VERIFY
+ assertEquals( "Wrong status", CacheConstants.STATUS_ERROR, result );
+ }
+
+ /**
+ * Simply verify that the serviced supplied to fix is passed onto the client. Verify that the
+ * original event queue is destroyed. A new event queue willbe plugged in on fix.
+ * <p>
+ * @throws Exception
+ */
+ public void testFixCache()
+ throws Exception
+ {
+ // SETUP
+ RemoteCacheClientMockImpl client = new RemoteCacheClientMockImpl();
+ client.status = CacheConstants.STATUS_ALIVE;
+ RemoteCacheNoWait noWait = new RemoteCacheNoWait( client );
+
+ RemoteCacheServiceMockImpl service = new RemoteCacheServiceMockImpl();
+
+ ICacheElement element = new CacheElement( "testUpdate", "key", "value" );
+
+ // DO WORK
+ noWait.update( element );
+ SleepUtil.sleepAtLeast( 10 );
+ ICacheEventQueue originalQueue = noWait.getCacheEventQueue();
+
+ noWait.fixCache( service );
+
+ noWait.update( element );
+ SleepUtil.sleepAtLeast( 10 );
+ ICacheEventQueue newQueue = noWait.getCacheEventQueue();
+
+ // VERIFY
+ assertEquals( "Wrong status", service, client.fixed );
+ assertFalse( "Original queue should not alive", originalQueue.isAlive() );
+ assertTrue( "New queue should be alive." + newQueue, newQueue.isAlive() );
+ }
+}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.