/* * Copyright 2004-2011 H2 Group. Multiple-Licensed under the H2 License, * Version 1.0, and under the Eclipse Public License, Version 1.0 * (http://h2database.com/html/license.html). * Initial Developer: H2 Group */ package org.h2.test.synth; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.util.ArrayList; import java.util.Random; import org.h2.store.FileLister; import org.h2.test.TestBase; import org.h2.test.utils.SelfDestructor; /** * Test application for TestKill. */ public class TestKillProcess { private TestKillProcess() { // utility class } /** * This method is called when executing this application. * * @param args the command line parameters */ public static void main(String... args) { SelfDestructor.startCountdown(60); try { Class.forName("org.h2.Driver"); String url = args[0], user = args[1], password = args[2]; String baseDir = args[3]; int accounts = Integer.parseInt(args[4]); Random random = new Random(); Connection conn1 = DriverManager.getConnection(url, user, password); PreparedStatement prep1a = conn1.prepareStatement("INSERT INTO LOG(ACCOUNTID, AMOUNT) VALUES(?, ?)"); PreparedStatement prep1b = conn1.prepareStatement("UPDATE ACCOUNT SET SUM=SUM+? WHERE ID=?"); conn1.setAutoCommit(false); long time = System.currentTimeMillis(); String d = null; for (int i = 0;; i++) { long t = System.currentTimeMillis(); if (t > time + 1000) { ArrayList<String> list = FileLister.getDatabaseFiles(baseDir, "kill", true); System.out.println("inserting... i:" + i + " d:" + d + " files:" + list.size()); time = t; } if (i > 10000) { // System.out.println("halt"); // Runtime.getRuntime().halt(0); // conn.createStatement().execute("SHUTDOWN IMMEDIATELY"); // System.exit(0); } int account = random.nextInt(accounts); int value = random.nextInt(100); prep1a.setInt(1, account); prep1a.setInt(2, value); prep1a.execute(); prep1b.setInt(1, value); prep1b.setInt(2, account); prep1b.execute(); conn1.commit(); if (random.nextInt(100) < 2) { d = "D" + random.nextInt(1000); account = random.nextInt(accounts); conn1.createStatement().execute("UPDATE TEST_A SET DATA='" + d + "' WHERE ID=" + account); conn1.createStatement().execute("UPDATE TEST_B SET DATA='" + d + "' WHERE ID=" + account); } } } catch (Throwable e) { TestBase.logError("error", e); } } }