Return-Path: Delivered-To: apmail-db-ojb-dev-archive@www.apache.org Received: (qmail 74663 invoked from network); 8 Jan 2006 00:28:13 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 8 Jan 2006 00:28:13 -0000 Received: (qmail 38409 invoked by uid 500); 8 Jan 2006 00:28:12 -0000 Delivered-To: apmail-db-ojb-dev-archive@db.apache.org Received: (qmail 38381 invoked by uid 500); 8 Jan 2006 00:28:12 -0000 Mailing-List: contact ojb-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "OJB Developers List" Reply-To: "OJB Developers List" Delivered-To: mailing list ojb-dev@db.apache.org Received: (qmail 38370 invoked by uid 500); 8 Jan 2006 00:28:12 -0000 Received: (qmail 38367 invoked by uid 99); 8 Jan 2006 00:28:12 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 07 Jan 2006 16:28:12 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Sat, 07 Jan 2006 16:28:11 -0800 Received: (qmail 74583 invoked by uid 65534); 8 Jan 2006 00:27:50 -0000 Message-ID: <20060108002750.74582.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r366953 - in /db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance: PerfMain.java PerfRunner.java PerfTest.java Date: Sun, 08 Jan 2006 00:27:50 -0000 To: ojb-commits@db.apache.org From: arminw@apache.org X-Mailer: svnmailer-1.0.5 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: arminw Date: Sat Jan 7 16:27:44 2006 New Revision: 366953 URL: http://svn.apache.org/viewcvs?rev=366953&view=rev Log: fix thread handling problem, fix incorrect result, change order of tests on each loop Modified: db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance/PerfMain.java db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance/PerfRunner.java db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance/PerfTest.java Modified: db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance/PerfMain.java URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance/PerfMain.java?rev=366953&r1=366952&r2=366953&view=diff ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance/PerfMain.java (original) +++ db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance/PerfMain.java Sat Jan 7 16:27:44 2006 @@ -225,57 +225,53 @@ } if(logAll) printer().println(" " + - EOL + "Start OJB performance-test framework - running " + testLoops + " loops" + - EOL + "-------------------------------------------------------"); + EOL + "Start OJB Performance Test - running " + testLoops + " test loops" + + EOL + "---------------------------------------------------"); PerfRunner test; + ThreadGroup threadGroup = new ThreadGroup("PerfTest_Group_id=" + Math.random()); for (int i = 0; i < testLoops; i++) { Runtime rt = Runtime.getRuntime(); long freeMem; if(logAll) printer().println(" Loop " + (i + 1)); - if(i%2 == 0) + for(int j = 0; j < testList.size(); j++) { - for(int j = 0; j < testList.size(); j++) - { - String perfTest = (String) testList.get(j); - Class testHandle = Class.forName(perfTest); - test = new PerfRunner(testHandle); - test.registerPerfMain(this); - - rt.gc(); - Thread.sleep(300); - rt.freeMemory(); - rt.gc(); - Thread.sleep(100); - freeMem = rt.freeMemory(); - test.performTest(); - freeMem = (freeMem - rt.freeMemory()) / 1024; - if(logAll) printer().println(" allocated memory=" + freeMem + "kb"); - // rt.gc(); - } + String perfTest = (String) testList.get(j); + Class testHandle = Class.forName(perfTest); + test = new PerfRunner(threadGroup, testHandle); + test.registerPerfMain(this); + + rt.gc(); + Thread.sleep(300); + rt.freeMemory(); + rt.gc(); + Thread.sleep(100); + freeMem = rt.freeMemory(); + test.performTest(); + freeMem = (freeMem - rt.freeMemory()) / 1024; + if(logAll) printer().println(" allocated memory=" + freeMem + "kb"); + // rt.gc(); + } + ArrayList tmpList = new ArrayList(testList); + int size = tmpList.size(); + Object last = tmpList.remove(size - 1); + tmpList.add(0, last); + testList = tmpList; + } + + // should always be skipped, because we use 'thread.join' + while(threadGroup.activeCount() > 0) + { + PerfMain.printer().println("## active threads: " + threadGroup.activeCount()); + try + { + Thread.sleep(200); } - else + catch(InterruptedException ignore) { - for(int j = (testList.size() - 1); j >= 0; j--) - { - String perfTest = (String) testList.get(j); - Class testHandle = Class.forName(perfTest); - test = new PerfRunner(testHandle); - test.registerPerfMain(this); - - rt.gc(); - Thread.sleep(300); - rt.freeMemory(); - rt.gc(); - Thread.sleep(100); - freeMem = rt.freeMemory(); - test.performTest(); - freeMem = (freeMem - rt.freeMemory()) / 1024; - if(logAll) printer().println(" allocated memory: " + freeMem + " kb"); - // rt.gc(); - } + // ignore } } } @@ -283,25 +279,6 @@ public void printResult() { printer().println(); - if (!getExceptionMap().isEmpty()) - { - StringBuffer buf = new StringBuffer(); - buf.append(EOL).append("Failures occured, test not valid:").append(EOL); - Iterator it = getExceptionMap().entrySet().iterator(); - while (it.hasNext()) - { - Map.Entry entry = (Map.Entry) it.next(); - buf.append("Failure cause by ").append(entry.getKey()); - if(entry.getValue() != null) - { - Throwable ex = ExceptionUtils.getRootCause((Exception) entry.getValue()); - if(ex == null) ex = (Exception) entry.getValue(); - buf.append(EOL).append("Exception was: ").append(EOL).append(ExceptionUtils.getStackTrace(ex)); - } - buf.append(EOL); - } - printer().println(buf.toString()); - } printer().println(buildTestSummary(prepareTestResults())); } @@ -516,19 +493,30 @@ counter++; } buf.append(EOL); + + if (!getExceptionMap().isEmpty()) + { + buf.append(EOL).append("!! Failures occured, test not valid:").append(EOL); + Iterator it = getExceptionMap().entrySet().iterator(); + while (it.hasNext()) + { + Map.Entry entry = (Map.Entry) it.next(); + buf.append("Failure cause by ").append(entry.getKey()); + if(entry.getValue() != null) + { + Throwable ex = ExceptionUtils.getRootCause((Exception) entry.getValue()); + if(ex == null) ex = (Exception) entry.getValue(); + buf.append(EOL).append("Exception was: ").append(EOL).append(ExceptionUtils.getStackTrace(ex)); + } + buf.append(EOL); + } + printer().println(buf.toString()); + } + for (int i = 0; i < columnNumbers; i++) { buf.append(alignToLength(columnLength, "=")); } -// if(failures.size() > 0) -// { -// buf.append(EOL + "Failures detected:" + EOL); -// for(int i = 0; i < failures.size(); i++) -// { -// PerfResult perfResult = (PerfResult) failures.get(i); -// buf.append("name=" + perfResult.getTestName() + ", isValid=" +perfResult.isValid() + EOL); -// } -// } return buf.toString(); } @@ -569,7 +557,7 @@ * testTimes[5] updating times * testTimes[6] deleting times */ - public synchronized void addPeriodResult(String testName, long[] resultArr) + public synchronized void addPeriodResult(String testName, long[] resultArr, boolean isValid) { PerfResult result = (PerfResult) resultMap.get(testName); if (result == null) @@ -583,6 +571,7 @@ resultMap.put(testName, result); } + result.setValid(isValid); result.addTestPeriod(resultArr[TIME_TOTAL]); result.addInsertPeriod(resultArr[TIME_INSERT]); result.addFetchPeriod(resultArr[TIME_FETCH]); @@ -595,13 +584,13 @@ { StringBuffer buf = new StringBuffer(); buf.append(" Test '").append(result.getTestName()).append("' [ms]") - .append(": testPeriod=").append(resultArr[0]/getConcurrentThreads()) - .append(" insert=").append(resultArr[1]/getConcurrentThreads()) - .append(" read=").append(resultArr[2]/getConcurrentThreads()) - .append(" read2=").append(resultArr[3]/getConcurrentThreads()) - .append(" byIdentity=").append(resultArr[4]/getConcurrentThreads()) - .append(" update=").append(resultArr[5]/getConcurrentThreads()) - .append(" delete=").append(resultArr[6]/getConcurrentThreads()); + .append(": testPeriod=").append(resultArr[TIME_TOTAL]/getConcurrentThreads()) + .append(" insert=").append(resultArr[TIME_INSERT]/getConcurrentThreads()) + .append(" read=").append(resultArr[TIME_FETCH]/getConcurrentThreads()) + .append(" read2=").append(resultArr[TIME_FETCH_2]/getConcurrentThreads()) + .append(" byIdentity=").append(resultArr[TIME_BY_IDENTITY]/getConcurrentThreads()) + .append(" update=").append(resultArr[TIME_UPDATE]/getConcurrentThreads()) + .append(" delete=").append(resultArr[TIME_DELETE]/getConcurrentThreads()); printer().print(buf.toString()); } else @@ -816,7 +805,7 @@ public long getTotalTime() { - long result = ((insertPeriod + fetchPeriod + updatePeriod + deletePeriod) / getTestLoops()) / getNumberOfThreads(); + long result = ((insertPeriod + fetchPeriod + fetchSecondPeriod + byIdentityPeriod + updatePeriod + deletePeriod) / getTestLoops()) / getNumberOfThreads(); return result > 0 ? result : 1; } Modified: db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance/PerfRunner.java URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance/PerfRunner.java?rev=366953&r1=366952&r2=366953&view=diff ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance/PerfRunner.java (original) +++ db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance/PerfRunner.java Sat Jan 7 16:27:44 2006 @@ -39,6 +39,8 @@ private PerfMain perfMain; private long perfTestId; private boolean checked; + private boolean isValid; + /** * The threads that are executing. */ @@ -47,14 +49,15 @@ private PerfTest test; - public PerfRunner(Class perfTestClass) + public PerfRunner(ThreadGroup group, Class perfTestClass) { this.perfTestId = System.currentTimeMillis(); this.checked = false; this.testClass = perfTestClass; // create a tmp test instance this.test = createTest(); - this.threadGroup = new ThreadGroup(testName() + "_Group"); + this.threadGroup = group; + this.isValid = true; } private PerfTest createTest() @@ -137,14 +140,6 @@ { PerfMain.printer().println(PREFIX_LOG + "Thread join interrupted."); } - - // should always be skipped, because we use 'thread.join' - while(threadGroup.activeCount() > 0) - { - PerfMain.printer().println("## active threads: " + threadGroup.activeCount()); - } - - threads = null; } public void performTest() @@ -177,7 +172,7 @@ // end of test threads objectCountAfter = test.articleCount(); - perfMain.addPeriodResult(testName(), testTimes); + perfMain.addPeriodResult(testName(), testTimes, isValid); perfMain.addConsistentResult(testName(), objectCount, objectCountAfter); // tear down tmp used test @@ -192,6 +187,7 @@ public void registerException(String causer, Exception e) { + this.isValid = false; perfMain.registerException(causer, e); } Modified: db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance/PerfTest.java URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance/PerfTest.java?rev=366953&r1=366952&r2=366953&view=diff ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance/PerfTest.java (original) +++ db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/performance/PerfTest.java Sat Jan 7 16:27:44 2006 @@ -207,7 +207,6 @@ // read objects period = System.currentTimeMillis(); Collection col = readArticlesByCursor(objectName); - period = System.currentTimeMillis() - period; try { checkQueryResult(col, m_arr); @@ -217,6 +216,7 @@ test.registerException(PREFIX_LOG + "(Something wrong with query result or with object insert operation) ", e); } + period = System.currentTimeMillis() - period; test.addTime(PerfMain.TIME_FETCH, period); totalTime+=period; // System.out.println("R=" + period); @@ -225,7 +225,6 @@ // read objects 2 period = System.currentTimeMillis(); col = readArticlesByCursor(objectName); - period = System.currentTimeMillis() - period; try { checkQueryResult(col, m_arr); @@ -235,6 +234,7 @@ test.registerException(PREFIX_LOG + "(Something wrong with query result or with object insert operation) ", e); } + period = System.currentTimeMillis() - period; test.addTime(PerfMain.TIME_FETCH_2, period); totalTime+=period; // System.out.println("R2=" + period); @@ -328,11 +328,26 @@ if(col.size() > 0) { Iterator it = col.iterator(); - Object obj = it.next(); - if(!(obj instanceof PerfArticle)) + while(it.hasNext()) { - throw new Exception("Wrong object type found. Expected instance of"+ - PerfArticle.class.getName() + ", found " + obj.getClass().getName()); + Object obj = it.next(); + if(!(obj instanceof PerfArticle)) + { + throw new Exception("Wrong object type found. Expected instance of"+ + PerfArticle.class.getName() + ", found " + obj.getClass().getName()); + } + else + { + PerfArticle article = (PerfArticle) obj; + article.getArticleId(); + article.getArticleName(); + article.getMinimumStock(); + article.getPrice(); + article.getProductGroupId(); + article.getStock(); + article.getSupplierId(); + article.getUnit(); + } } } if (col.size() != m_arr.length) --------------------------------------------------------------------- To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org For additional commands, e-mail: ojb-dev-help@db.apache.org