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]>

Reply via email to