Beispiel #1
0
 void runProcTest() {
   setProgressMinMax(0, m_nNumRuns - 1);
   int nProgressStep = m_nNumRuns / 10 + 1;
   CallableStatement stmt = null;
   try {
     boolean m_bTransactionsUsed = m_bTrans && m_conn.getMetaData().supportsTransactions();
     stmt = m_conn.prepareCall("{call ODBC_BENCHMARK(?,?,?,?,?,?,?)}");
     int nAccNum, nBranchNum, nTellerNum;
     double dDelta, dBalance;
     log(
         "Starting procedure benchmark for " + m_nNumRuns + ((m_time > 0) ? " min.\n" : " runs\n"),
         0);
     java.util.Random rand = new java.util.Random(m_nMaxAccount + m_nMaxBranch + m_nMaxTeller);
     for (int nRun = 0; (m_time > 0) ? true : nRun < m_nNumRuns; nRun++) {
       if (m_time > 0) {
         java.util.Date current = new java.util.Date();
         if ((current.getTime() - m_time) > (m_nNumRuns * 60000)) break;
       }
       try {
         nAccNum = (int) (rand.nextFloat() * rand.nextFloat() * (m_nMaxAccount - 1)) + 1;
         nBranchNum = (int) (rand.nextFloat() * (m_nMaxBranch - 1)) + 1;
         nTellerNum = (int) (rand.nextFloat() * (m_nMaxTeller - 1)) + 1;
         dDelta =
             ((double)
                     ((long)
                         ((((int) (rand.nextFloat() * (m_nMaxTeller - 1)) + 1)
                                 * (rand.nextFloat() > 0.5 ? -1 : 1))
                             * 100)))
                 / 100;
         stmt.clearParameters();
         stmt.setInt(1, nRun + 1);
         stmt.setInt(2, nAccNum);
         stmt.setInt(3, nTellerNum);
         stmt.setInt(4, nBranchNum);
         stmt.setFloat(5, (float) dDelta);
         stmt.registerOutParameter(6, Types.FLOAT);
         stmt.setString(7, BenchPanel.strFiller.substring(0, 22));
         java.util.Date startTime = new java.util.Date();
         log(
             "{call ODBC_BENCHMARK("
                 + nRun
                 + ", "
                 + nAccNum
                 + ","
                 + nTellerNum
                 + ","
                 + nBranchNum
                 + ","
                 + dDelta
                 + ",?,\'"
                 + BenchPanel.strFiller.substring(0, 22)
                 + "\')}\n",
             2);
         stmt.execute();
         stmt.getFloat(6);
         if (m_bQuery) executeQuery();
         java.util.Date endTime = new java.util.Date();
         m_nTrans += 1;
         double diff = endTime.getTime() - startTime.getTime();
         if (diff < 1000) m_nTrans1Sec += 1;
         else if (diff < 2000) m_nTrans2Sec += 1;
         m_nTimeSum += diff / 1000;
       } catch (SQLException e1) {
         //					System.err.println(e1.getMessage());
         //                    e1.printStackTrace();
         break;
       }
       if (nRun % nProgressStep == 0) setProgressValue(nRun);
       // yield();
     }
     setProgressValue(m_nNumRuns - 1);
   } catch (SQLException e) {
     // JOptionPane.showMessageDialog(null, e.getMessage(), "SQL Error in proc test",
     // JOptionPane.ERROR_MESSAGE);
     log("SQLError in procedure test : " + e.getMessage(), 0);
   } finally {
     if (stmt != null)
       try {
         stmt.close();
       } catch (SQLException e) {
       }
     stmt = null;
   }
 }