/**
  * Specifically, this opens a mem-only DB, populates it, starts a HyperSQL Server to server it,
  * and opens network JDBC Connection "netConn" to it,
  *
  * <p>Invoked before each test*() invocation by JUnit.
  */
 protected void setUp() {
   try {
     Connection setupConn = DriverManager.getConnection("jdbc:hsqldb:mem:test", "SA", "");
     setupConn.setAutoCommit(false);
     Statement st = setupConn.createStatement();
     st.executeUpdate("SET PASSWORD 'sapwd'");
     populate(st);
     st.close();
     setupConn.commit();
     setupConn.close();
   } catch (SQLException se) {
     throw new RuntimeException("Failed to set up in-memory database", se);
   }
   try {
     server = new Server();
     HsqlProperties properties = new HsqlProperties();
     if (System.getProperty("VERBOSE") == null) {
       server.setLogWriter(null);
       server.setErrWriter(null);
     } else {
       properties.setProperty("server.silent", "false");
       properties.setProperty("server.trace", "true");
     }
     properties.setProperty("server.database.0", "mem:test");
     properties.setProperty("server.dbname.0", "");
     properties.setProperty("server.port", AbstractTestOdbc.portString);
     server.setProperties(properties);
     server.start();
     try {
       Thread.sleep(1000);
     } catch (InterruptedException ie) {
     }
   } catch (Exception e) {
     throw new RuntimeException("Failed to set up in-memory database", e);
   }
   if (server.getState() != ServerConstants.SERVER_STATE_ONLINE) {
     throw new RuntimeException("Server failed to start up");
   }
   try {
     netConn = DriverManager.getConnection("jdbc:odbc:" + dsnName, "SA", "sapwd");
     // netConn.setAutoCommit(false);
   } catch (SQLException se) {
     if (se.getMessage().indexOf("No suitable driver") > -1) {
       throw new RuntimeException(
           "You must install the native library for Sun's jdbc:odbc " + "JDBC driver");
     }
     if (se.getMessage().indexOf("Data source name not found") > -1) {
       throw new RuntimeException(
           "You must configure ODBC DSN '"
               + dsnName
               + "' (you may change the name and/or port by setting Java "
               + "system properties 'test.hsqlodbc.port' or "
               + "'test.hsqlodbc.dsnname'");
     }
     throw new RuntimeException("Failed to set up JDBC/ODBC network connection", se);
   }
 }
 @Override
 protected void after() {
   super.after();
   if (server != null) {
     server.stop();
   }
 }
  @Override
  protected void before() throws Throwable {
    super.before();

    File hsqlHome = new File("target/temporary/hsqldb/" + name);
    if (hsqlHome.exists()) {
      hsqlHome.delete();
    }
    hsqlHome.mkdirs();

    String dbHome = "file:" + hsqlHome.getAbsolutePath();

    HsqlProperties p = new HsqlProperties();
    p.setProperty("server.database.0", dbHome);
    p.setProperty("server.dbname.0", name);
    p.setProperty("server.port", port);
    server = new Server();
    server.setProperties(p);
    server.setLogWriter(new PrintWriter(System.out));
    server.setErrWriter(new PrintWriter(System.err));
    server.start();
  }
 /**
  * JUnit convention for cleanup.
  *
  * <p>Called after each test*() method.
  */
 protected void tearDown() throws SQLException {
   if (netConn != null) {
     netConn.rollback();
     // Necessary to prevent the SHUTDOWN command from causing implied
     // transaction control commands, which will not be able to
     // complete.
     netConn.createStatement().executeUpdate("SHUTDOWN");
     netConn.close();
     netConn = null;
     try {
       Thread.sleep(1000);
     } catch (InterruptedException ie) {
     }
   }
   if (server != null && server.getState() != ServerConstants.SERVER_STATE_SHUTDOWN) {
     throw new RuntimeException("Server failed to shut down");
   }
 }
 /**
  * Load driver, and create database, schema and data.
  *
  * @throws SchemaCrawlerException On an exception
  */
 public void startDatabase(final boolean silent) throws SchemaCrawlerException {
   LOGGER.log(Level.FINE, toString() + " - Setting up database");
   // Attempt to delete the database files
   deleteServerFiles();
   // Start the server
   org.hsqldb.server.Server.main(
       new String[] {
         "-database.0",
         serverFileStem,
         "-dbname.0",
         "schemacrawler",
         "-silent",
         Boolean.toString(silent),
         "-trace",
         Boolean.toString(!silent),
         "-no_system_exit",
         "true"
       });
   createDatabase("jdbc:hsqldb:hsql://localhost/schemacrawler");
 }
Example #6
0
  private void runHsqldbServer(final String fileName, final int port, final char[] password) {
    org.hsqldb.server.Server hsqlServer = new org.hsqldb.server.Server();

    hsqlServer.setPort(port);
    hsqlServer.setDatabaseName(0, "jgnash"); // the alias
    hsqlServer.setDatabasePath(0, "file:" + FileUtils.stripFileExtension(fileName));

    hsqlServer.start();

    // Start the message server and engine, this should block until closed
    if (!run(DataStoreType.HSQL_DATABASE, fileName, port, password)) {
      Logger.getLogger(JpaNetworkServer.class.getName()).severe("Failed to start the server");
    }

    hsqlServer.stop();
  }
  /*
   * 启动数据库服务
   */
  public static boolean startHSQL() {
    if (mode == SERVER_MODE) {
      Server server = new Server(); // 它可是hsqldb.jar里面的类啊。
      server.setDatabaseName(0, DB_NAME);
      server.setDatabasePath(0, DB_PATH + DB_NAME);
      server.setPort(PORT);
      server.setSilent(true);
      server.start(); // 自动多线程运行
      System.out.println("hsqldb started...");
    } else if (mode == STAND_ALONE_MODE) {
      // standalone模式,打开连接就同时启动数据库,所以这里可以什么都不做
    }

    try {
      Thread.sleep(1000); // 等待Server启动
    } catch (InterruptedException e) {
    }
    return true;
  }
Example #8
0
 public static void main(String[] args) throws Exception {
   Server.main(new String[] {"--database.0", "file:./db/sample", "--dbname.0", "sample"});
 }