/**
* Logback: the reliable, generic, fast and flexible logging framework.
* Copyright (C) 1999-2013, QOS.ch. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation.
*/
package ch.qos.logback.classic.multiJVM;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Checker {
static long LEN;
static String FILENAME;
static void usage(String msg) {
System.err.println(msg);
System.err
.println("Usage: java "
+ Checker.class.getName()
+ " runLength filename stamp0 stamp1 ..stampN\n"
+ " runLength (integer) the number of logs to generate perthread\n"
+ " filename (string) the filename where to write\n"
+ " stamp0 JVM instance stamp0\n"
+ " stamp1 JVM instance stamp1\n");
System.exit(1);
}
public static void main(String[] argv) throws Exception {
if (argv.length < 3) {
usage("Wrong number of arguments.");
}
LEN = Integer.parseInt(argv[0]);
FILENAME = argv[1];
for (int i = 2; i < argv.length; i++) {
check(argv[i], FILENAME, true);
}
}
static void check(String stamp, String filename, boolean safetyMode)
throws Exception {
FileReader fr = new FileReader(FILENAME);
BufferedReader br = new BufferedReader(fr);
String regExp = "^" + stamp + " DEBUG - " + LoggingThread.msgLong
+ " (\\d+)$";
Pattern p = Pattern.compile(regExp);
String line;
int expected = 0;
while ((line = br.readLine()) != null) {
Matcher m = p.matcher(line);
if (m.matches()) {
String g = m.group(1);
int num = Integer.parseInt(g);
if (num != expected) {
System.err.println("ERROR: out of sequence line: ");
System.err.println(line);
return;
}
expected++;
}
}
if (expected != LEN) {
System.err.println("ERROR: For JVM stamp " + stamp + " found " + expected
+ " was expecting " + LEN);
} else {
System.out.println("For JVM stamp " + stamp + " found " + LEN
+ " lines in correct sequence");
}
fr.close();
br.close();
}
}