asmuts 02/01/14 23:03:55
Added: src/java/org/apache/stratum/jcs/access TestCacheAccess.java
Log:
Revision Changes Path
1.1
jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/access/TestCacheAccess.java
Index: TestCacheAccess.java
===================================================================
package org.apache.stratum.jcs.access;
import java.io.*;
import java.util.*;
// CACHE
import org.apache.stratum.jcs.access.*;
import org.apache.stratum.jcs.access.behavior.*;
import org.apache.stratum.jcs.access.exception.*;
import org.apache.stratum.jcs.engine.*;
import org.apache.stratum.jcs.engine.control.*;
import org.apache.stratum.jcs.engine.group.*;
import org.apache.stratum.jcs.utils.log.*;
//////////////////////////////////////////////////////////////
/**
* Allows the user to run common cache commands fromt he command line
* for a test cache.
*/
public class TestCacheAccess {
static GroupCacheAccess cache_control = null;
/////////////////////////////////////////////////////
/** Test harness. */
public static void main(String[] args) {
try {
Logger log = LoggerManager.getLogger( "cacheaccess" );
p( "logLevel = " + log.logLevel );
//log.setLogLevel( log.DEBUG );
try {
//CacheManager cacheMgr = CacheManagerFactory.getInstance();
//CacheAttributes cattr = new CacheAttributes();
//cattr.setMaxObjects( 10 );
//cattr.setUseDisk( true );
//CacheAccess cache_control= CacheAccess.getAccess( "testCache" );
//cache_control= GroupCacheAccess.getGroupAccess( "testGroupCache" );
// start the local cache witht he appropriate props file
GroupCacheManagerFactory.getInstance( args[0] );
cache_control= GroupCacheAccess.getGroupAccess( "testCache" );
// not necessary if you don't set default element attributes
try {
cache_control.defineGroup( "gr" );
} catch( CacheException ce ) {
p( ce.toString() + " /n" + ce.getMessage() );
}
try {
cache_control.defineGroup( "gr2" );
} catch( CacheException ce ) {
p( ce.toString() + " /n" + ce.getMessage() );
}
GroupCacheAccess cache_control2= GroupCacheAccess.getGroupAccess( "testCache2" );
p( "cache_control = " + cache_control );
// process user input till done
boolean notDone = true;
String message = null;
// wait to dispose
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );
help();
while ( notDone ) {
p( "enter command:" );
message= br.readLine();
if ( message.startsWith("help") ) {
help();
} else
if ( message.startsWith("removeLateralDirect") ) {
removeLateralDirect( message );
} else
if ( message.startsWith("getAttributeNames") ) {
long n_start = System.currentTimeMillis();
String groupName = null;
StringTokenizer toke = new StringTokenizer( message );
int tcnt = 0;
while ( toke.hasMoreElements() ) {
tcnt++;
String t = (String)toke.nextElement();
if ( tcnt == 2 ) {
groupName = t.trim();
}
}
getAttributeNames( groupName );
long n_end = System.currentTimeMillis();
p("---got attrNames for " + groupName + " in " + String.valueOf( n_end -
n_start ) + " millis ---");
} else
if ( message.startsWith("dispose") ) {
cache_control.dispose();
notDone = false;
System.exit(-1);
} else
// get multiple from a region
if ( message.startsWith("getm") ) {
int num = 0;
boolean show = true;
StringTokenizer toke = new StringTokenizer( message );
int tcnt = 0;
while ( toke.hasMoreElements() ) {
tcnt++;
String t = (String)toke.nextElement();
if ( tcnt == 2 ) {
try {
num = Integer.parseInt( t.trim() );
} catch( NumberFormatException nfe ) {
p( t + "not a number" );
}
} else
if ( tcnt == 3 ) {
show = new Boolean(t).booleanValue();
}
}
if ( tcnt < 2 ) {
p( "usage: get numbertoget show values[true|false]" );
} else {
long n_start = System.currentTimeMillis();
for (int n=0; n < num; n++) {
try {
Object obj = cache_control.get("key"+n);
if ( show && obj != null ) {
p( obj.toString() );
}
}
catch ( Exception e ) {
log.error( e );
}
}
long n_end = System.currentTimeMillis();
p("---got " + num + " in " + String.valueOf( n_end - n_start ) + " millis
---");
}
} else
if ( message.startsWith("getg") ) {
String key = null;
String group = null;
boolean show = true;
boolean auto = true;
StringTokenizer toke = new StringTokenizer( message );
int tcnt = 0;
while ( toke.hasMoreElements() ) {
tcnt++;
String t = (String)toke.nextElement();
if ( tcnt == 2 ) {
key = t.trim();
} else
if ( tcnt == 3 ) {
group = t.trim();
} else
if ( tcnt == 4 ) {
show = new Boolean(t).booleanValue();
}
if ( tcnt == 5 ) {
auto = new Boolean(t).booleanValue();
}
}
if ( tcnt < 2 ) {
p( "usage: get key show values[true|false]" );
} else {
long n_start = System.currentTimeMillis();
try {
Object obj = cache_control.getG( key, group );
if ( show && obj != null ) {
p( obj.toString() );
}
}
catch ( Exception e ) {
log.error( e );
}
long n_end = System.currentTimeMillis();
p("---got " + key + " from group " + group + " in " + String.valueOf(
n_end - n_start ) + " millis ---");
}
} else
if ( message.startsWith("getag") ) {
// get auto from group
int num = 0;
String group = null;
boolean show = true;
boolean auto = true;
StringTokenizer toke = new StringTokenizer( message );
int tcnt = 0;
while ( toke.hasMoreElements() ) {
tcnt++;
String t = (String)toke.nextElement();
if ( tcnt == 2 ) {
num = Integer.parseInt(t.trim());
} else
if ( tcnt == 3 ) {
group = t.trim();
} else
if ( tcnt == 4 ) {
show = new Boolean(t).booleanValue();
}
if ( tcnt == 5 ) {
auto = new Boolean(t).booleanValue();
}
}
if ( tcnt < 2 ) {
p( "usage: get key show values[true|false]" );
} else {
long n_start = System.currentTimeMillis();
try {
for ( int a=0; a < num; a++ ) {
Object obj = cache_control.getG( "keygr"+a, group );
if ( show && obj != null ) {
p( obj.toString() );
}
}
}
catch ( Exception e ) {
log.error( e );
}
long n_end = System.currentTimeMillis();
p("---got " + num + " from group " + group + " in " + String.valueOf(
n_end - n_start ) + " millis ---");
}
} else
if ( message.startsWith("get") ) {
// plain old get
String key = null;
boolean show = true;
StringTokenizer toke = new StringTokenizer( message );
int tcnt = 0;
while ( toke.hasMoreElements() ) {
tcnt++;
String t = (String)toke.nextElement();
if ( tcnt == 2 ) {
key = t.trim();
} else
if ( tcnt == 3 ) {
show = new Boolean(t).booleanValue();
}
}
if ( tcnt < 2 ) {
p( "usage: get key show values[true|false]" );
} else {
long n_start = System.currentTimeMillis();
try {
Object obj = cache_control.get( key );
if ( show && obj != null ) {
p( obj.toString() );
}
}
catch ( Exception e ) {
log.error( e );
}
long n_end = System.currentTimeMillis();
p("---got " + key + " in " + String.valueOf( n_end - n_start ) + " millis
---");
}
} else
if ( message.startsWith("stats") ) {
// print stats
p( cache_control.getStats() );
} else
if ( message.startsWith("putg") ) {
String group = null;
String key = null;
StringTokenizer toke = new StringTokenizer( message );
int tcnt = 0;
while ( toke.hasMoreElements() ) {
tcnt++;
String t = (String)toke.nextElement();
if ( tcnt == 2 ) {
key = t.trim();
} else
if ( tcnt == 3 ) {
group = t.trim();
}
}
if ( tcnt < 3 ) {
p( "usage: putg key group" );
} else {
Attributes attrp = new Attributes();
attrp.setFlags( attrp.LATERAL );
attrp.setFlags( attrp.REMOTE );
long n_start = System.currentTimeMillis();
cache_control.putG( key, group, "data from putg
----asdfasfas-asfasfas-asfas in group " + group, attrp.copy() );
long n_end = System.currentTimeMillis();
p("---put " + key + " in group " + group + " in " + String.valueOf( n_end
- n_start ) + " millis ---");
}
} else
// put automatically
if ( message.startsWith("putag") ) {
String group = null;
int num = 0;
StringTokenizer toke = new StringTokenizer( message );
int tcnt = 0;
while ( toke.hasMoreElements() ) {
tcnt++;
String t = (String)toke.nextElement();
if ( tcnt == 2 ) {
num = Integer.parseInt(t.trim());
} else
if ( tcnt == 3 ) {
group = t.trim();
}
}
if ( tcnt < 3 ) {
p( "usage: putag num group" );
} else {
Attributes attrp = new Attributes();
attrp.setFlags( attrp.LATERAL );
attrp.setFlags( attrp.REMOTE );
long n_start = System.currentTimeMillis();
for ( int a =0; a < num; a++ ) {
cache_control.putG( "keygr"+a, group, "data " + a + " from putag
----asdfasfas-asfasfas-asfas in group " + group, attrp.copy() );
}
long n_end = System.currentTimeMillis();
p("---put " + num + " in group " + group + " in " + String.valueOf( n_end
- n_start ) + " millis ---");
}
} else
if ( message.startsWith("putm") ) {
String numS = message.substring( message.indexOf( " " ) + 1,
message.length() );
int num = Integer.parseInt( numS.trim() );
if ( numS == null ) {
p( "usage: putm numbertoput" );
} else {
Attributes attrp = new Attributes();
attrp.setFlags( attrp.LATERAL );
attrp.setFlags( attrp.REMOTE );
long n_start = System.currentTimeMillis();
for ( int n = 0; n < num; n ++ ) {
cache_control.put( "key"+n, "data" + n + " put from ta = junk",
attrp.copy() );
}
long n_end = System.currentTimeMillis();
p("---put " + num + " in " + String.valueOf( n_end - n_start ) + " millis
---");
}
} else
if ( message.startsWith("put") ) {
String key = null;
String val = null;
StringTokenizer toke = new StringTokenizer( message );
int tcnt = 0;
while ( toke.hasMoreElements() ) {
tcnt++;
String t = (String)toke.nextElement();
if ( tcnt == 2 ) {
key = t.trim();
} else
if ( tcnt == 3 ) {
val = t.trim();
}
}
if ( tcnt < 3 ) {
p( "usage: put key val" );
} else {
Attributes attrp = new Attributes();
attrp.setFlags( attrp.LATERAL );
attrp.setFlags( attrp.REMOTE );
long n_start = System.currentTimeMillis();
cache_control.put( key, val, attrp.copy() );
long n_end = System.currentTimeMillis();
p("---put " + key + " | " + val + " in " + String.valueOf( n_end - n_start
) + " millis ---");
}
} else
if ( message.startsWith("remove") ) {
String key = message.substring( message.indexOf( " " ) + 1, message.length()
);
cache_control.destroy( key );
p( "removed " + key );
} else
if ( message.startsWith("cloneattr") ) {
String numS = message.substring( message.indexOf( " " ) + 1,
message.length() );
int num = Integer.parseInt( numS.trim() );
if ( numS == null ) {
p( "usage: put numbertoput" );
} else {
Attributes attrp = new Attributes();
long n_start = System.currentTimeMillis();
for ( int n = 0; n < num; n ++ ) {
attrp.copy();
}
long n_end = System.currentTimeMillis();
p("---cloned attr " + num + " in " + String.valueOf( n_end - n_start ) + "
millis ---");
}
}
}
} catch( Exception e ) {
p( e.toString() );
e.printStackTrace(System.out);
}
} catch( Exception e ) {
p( e.toString() );
e.printStackTrace(System.out);
}
} // end main
////////////////////////////////////////
public static void p( String s ) {
System.out.println( s );
}
///////////////////////////////////////
public static void help() {
p( "\n\n\n\n" );
p( "type 'dispose' to dispose of the cache" );
p( "type 'getm num show[false|true]' to get num automatically from a region" );
p( "type 'putm num' to put num automatically to a region" );
p( "type 'remove key' to remove" );
p( "type 'get key show' to get" );
p( "type 'getg key group show' to get" );
p( "type 'getag num group show' to get automatically from a group" );
p( "type 'getAttributeNames group' to get a list og the group elements" );
p( "type 'putg key group val' to put" );
p( "type 'putag num group' to put automatically from a group" );
p( "type 'put key val' to put" );
p( "type 'stats' to get stats" );
p( "type 'cloneattr num' to clone attr" );
p( "type 'removeLateralDirect key' to remove lateral" );
p( "type 'help' for commands" );
} // end help
/////////////////////////////////////////////
static void getAttributeNames( String groupName ) {
Enumeration enum = cache_control.getAttributeNames( groupName );
p( "enum = " + enum );
while( enum.hasMoreElements() ) {
p( "=" + (String)enum.nextElement() );
}
}
////////////////////////////////////////
public static void removeLateralDirect( String message ) {
String key = null;
StringTokenizer toke = new StringTokenizer( message );
int tcnt = 0;
while ( toke.hasMoreElements() ) {
tcnt++;
String t = (String)toke.nextElement();
if ( tcnt == 2 ) {
key = t.trim();
}
}
if ( tcnt < 2 ) {
key = "ALL";
}
cache_control.removeLateralDirect( key );
p( "called delete multicast for key " + key );
}
} // end test
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>