db-torque-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomas Fox <thomas....@seitenbau.com>
Subject Re: Torque, Derby and unit tests
Date Sun, 17 Aug 2014 13:21:51 GMT
In case you are trying to run the test project, have you tried adding

add -DonSqlError=continue

to your maven command line ?

If not, you have to execute the SQL manually. Something like the following usually does the
trick.

    try
    {
      String driverClassName = ...;
      logger.info("Trying to load driver " + driverClassName);
      Class.forName(driverClassName);

      String username = ...;
      String password = ...;

      InputStream inputStream = getClass().getResourceAsStream(...);

      schemaConnection = DriverManager.getConnection(p.getProperty("connection.url"), username,
password);

      BufferedReader bufferedReader = new BufferedReader(
          new InputStreamReader(inputStream, SQL_CHARSET));
      String line;
      StringBuilder queryBuffer = new StringBuilder();
      while ((line = bufferedReader.readLine()) != null)
      {
        if (line.trim().length() == 0
            || line.trim().startsWith("--")
            || line.trim().startsWith("#"))
        {
          continue;
        }
        queryBuffer.append(line);
      }
      bufferedReader.close();
      StringTokenizer tokenizer = new StringTokenizer(queryBuffer.toString(), ";", false);
      int successStatements = 0;
      int errorStatements = 0;
      while (tokenizer.hasMoreTokens())
      {
        String sqlQuery = tokenizer.nextToken();
        Statement statement = schemaConnection.createStatement();
        try
        {
          statement.execute(sqlQuery);
          ++successStatements;
        }
        catch (SQLException e)
        {
          logger.warn(e.getMessage() + ", failed statement : " + sqlQuery);
          ++errorStatements;
        }
        statement.close();
      }
      logger.info(
          "Executed " + successStatements + " statements sucessfully and " + errorStatements
+ " unsuccessfully");
    }
    catch (Exception e)
    {
      throw new RuntimeException(e);
    }
  }


   Thanks,

          Thomas

----- Ursprüngliche Mail -----
Von: "Graham Leggett" <minfrin@sharp.fm>
An: "Apache Torque Developers List" <torque-dev@db.apache.org>
Gesendet: Sonntag, 17. August 2014 15:10:11
Betreff: Torque, Derby and unit tests

Hi all,

I am trying to test some torque code against an in-memory derby database, and am running into
a chicken-and-egg situation with respect to the database schema.

When the torque code runs it assumes the database has had a schema loaded, which in the case
of the in-memory derby database isn’t true. I am looking for some switch in the torque configuration
that will cause torque to apply a schema on startup after the database is created by derby,
but I am not finding one.

A trawl of both Google and the torque docs have come up with a blank, there seems to be a
base assumption that the database will always exist and the schema correctly applied before
torque initialises itself, which makes the writing of unit tests difficult.

Am I missing something fundamental?

Regards,
Graham
—


---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org


Mime
View raw message