    1   /***
    2    *
    3    * Copyright 2004 Hiram Chirino
    4    *
    5    * Licensed under the Apache License, Version 2.0 (the "License");
    6    * you may not use this file except in compliance with the License.
    7    * You may obtain a copy of the License at
    8    *
    9    * http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   *
    17   **/
    18  package org.activeio.journal.howl;
    19
    20  import java.io.File;
    21
    22  import org.activeio.journal.Journal;
    23  import org.activeio.journal.JournalPerfToolSupport;
    24  import org.objectweb.howl.log.Configuration;
    25
    26  /***
    27   * A Performance statistics gathering tool for the HOWL based Journal.
    28   *
    29   * @version $Revision: 1.1 $
    30   */
    31  public class JournalPerfTool extends JournalPerfToolSupport {
    32
    33      private int maxLogFiles=  2;
    34  	private int bufferSize = 1024*4;
    35  	private int maxBuffers = 20;
    36  	private int maxBlocksPerFile = 100;
    37
    38  	public static void main(String[] args) throws Exception {
    39
    40  		try {
    41  			JournalPerfTool tool = new JournalPerfTool();
    42  			if( args.length > 0 ) {
    43  				tool.journalDirectory = new File(args[0]);
    44  			}
    45  			if( args.length > 1 ) {
    46  				tool.workerIncrement = Integer.parseInt(args[1]);
    47  			}
    48  			if( args.length > 2 ) {
    49  				tool.incrementDelay = Long.parseLong(args[2]);
    50  			}
    51  			if( args.length > 3 ) {
    52  				tool.verbose = Boolean.getBoolean(args[3]);
    53  			}
    54  			if( args.length > 4 ) {
    55  				tool.recordSize = Integer.parseInt(args[4]);
    56  			}
    57  			if( args.length > 5 ) {
    58  				tool.syncFrequency = Integer.parseInt(args[5]);
    59  			}
    60  			if( args.length > 6 ) {
    61  				tool.workerThinkTime = Integer.parseInt(args[6]);
    62  			}
    63
    64  			if( args.length > 7 ) {
    65  				tool.maxLogFiles = Integer.parseInt(args[7]);
    66  			}
    67  			if( args.length > 8 ) {
    68  				tool.bufferSize = Integer.parseInt(args[8]);
    69  			}
    70  			if( args.length > 9 ) {
    71  				tool.maxBuffers = Integer.parseInt(args[9]);
    72  			}
    73  			if( args.length > 10 ) {
    74  				tool.maxBlocksPerFile = Integer.parseInt(args[10]);
    75  			}
    76  			tool.exec();
    77  		} catch (Throwable e) {
    78  			e.printStackTrace();
    79  		}
    80  	}
    81
    82  	public Journal createJournal() throws Exception {
    83  		Configuration c = new Configuration();
    84  		c.setLogFileDir(journalDirectory.getPath());
    85  		c.setMaxLogFiles(maxLogFiles);
    86  		c.setBufferSize(bufferSize);
    87  		c.setMaxBuffers(maxBuffers);
    88  		c.setMaxBlocksPerFile(maxBlocksPerFile);
    89  		return new HowlJournal( c );
    90  	}
    91
    92  }