arminw 2005/08/27 05:44:05
Modified: src/test/org/apache/ojb/otm CopyTest.java OtmExamples.java
SwizzleTests.java
src/test/org/apache/ojb/performance PerfHandle.java
PerfMain.java PerfTest.java
src/tools/org/apache/ojb/tools/mapping/reversedb2/actions
ActionOpenOJBRepository.java
Removed: src/test/org/apache/ojb/otm PerformanceTest.java
Log:
merge 1.0.x branch with 1.x trunk
Revision Changes Path
1.13 +2 -0 db-ojb/src/test/org/apache/ojb/otm/CopyTest.java
Index: CopyTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/otm/CopyTest.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- CopyTest.java 5 Dec 2004 19:55:10 -0000 1.12
+++ CopyTest.java 27 Aug 2005 12:44:02 -0000 1.13
@@ -60,6 +60,8 @@
public void setUp() throws Exception
{
super.setUp();
+ ojbChangeReferenceSetting(TestClassA.class, "b", true, true, true,
false);
+ ojbChangeReferenceSetting(TestClassB.class, "a", true, true,
true, false);
m_pb = ojb.lookupBroker();
_kit = TestKit.getTestInstance();
_conn = _kit.acquireConnection(ojb.getDefaultConfiguration());
1.25 +15 -9 db-ojb/src/test/org/apache/ojb/otm/OtmExamples.java
Index: OtmExamples.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/otm/OtmExamples.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- OtmExamples.java 18 Dec 2004 14:01:18 -0000 1.24
+++ OtmExamples.java 27 Aug 2005 12:44:02 -0000 1.25
@@ -60,6 +60,8 @@
public void setUp() throws Exception
{
super.setUp();
+ ojbChangeReferenceSetting(ProductGroup.class, "allArticlesInGroup",
true, true, true, false);
+ ojbChangeReferenceSetting(Article.class, "productGroup", true,
true, true, false);
_kit = TestKit.getTestInstance();
_conn = _kit.acquireConnection(ojb.getDefaultConfiguration());
}
@@ -642,6 +644,10 @@
public void testUpdateByReachability() throws Throwable
{
+ if(ojbSkipKnownIssueProblem("Update by reachabilitiy doesn't work
proper"))
+ {
+ return;
+ }
Transaction tx = null;
ProductGroup pg;
Article article;
@@ -691,27 +697,27 @@
tx = _kit.getTransaction(_conn);
tx.begin();
pg = (ProductGroup) _conn.getObjectByIdentity(pgOid);
- article2 = (Article) pg.getAllArticles().get(0);
- article = (Article) pg.getAllArticles().get(1);
- if (!_conn.getIdentity(article2).equals(aOid2))
+ InterfaceArticle articleNew1 = (InterfaceArticle)
pg.getAllArticles().get(0);
+ InterfaceArticle articleNew2 = (InterfaceArticle)
pg.getAllArticles().get(1);
+ if (!_conn.getIdentity(articleNew2).equals(aOid2))
{
- article = (Article) pg.getAllArticles().get(0);
- article2 = (Article) pg.getAllArticles().get(1);
+ articleNew2 = (InterfaceArticle) pg.getAllArticles().get(0);
+ articleNew1 = (InterfaceArticle) pg.getAllArticles().get(1);
if (!_conn.getIdentity(article2).equals(aOid2))
{
fail("Missing the second article");
}
}
- article.setStock(433);
- article2.setStock(434);
+ articleNew1.setStock(433);
+ articleNew2.setStock(434);
pg.setName("2");
tx.commit();
tx = _kit.getTransaction(_conn);
tx.begin();
_conn.invalidateAll();
- article = (Article) _conn.getObjectByIdentity(aOid);
- article2 = (Article) _conn.getObjectByIdentity(aOid2);
+ articleNew1 = (InterfaceArticle) _conn.getObjectByIdentity(aOid);
+ articleNew2 = (InterfaceArticle)
_conn.getObjectByIdentity(aOid2);
assertEquals("should be equal", "2",
article.getProductGroup().getName());
assertEquals("should be equal", 433, article.getStock());
assertEquals("should be equal", 434, article2.getStock());
1.19 +8 -0 db-ojb/src/test/org/apache/ojb/otm/SwizzleTests.java
Index: SwizzleTests.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/otm/SwizzleTests.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- SwizzleTests.java 18 Dec 2004 14:01:18 -0000 1.18
+++ SwizzleTests.java 27 Aug 2005 12:44:02 -0000 1.19
@@ -55,6 +55,10 @@
public void setUp() throws Exception
{
super.setUp();
+ ojbChangeReferenceSetting(TestClassA.class, "b", true, true, true,
false);
+ ojbChangeReferenceSetting(TestClassB.class, "a", true, true,
true, false);
+ ojbChangeReferenceSetting(ProductGroup.class,
"allArticlesInGroup", true, true, true, false);
+ ojbChangeReferenceSetting(Article.class, "productGroup", true,
true, true, false);
_kit = TestKit.getTestInstance();
_conn = _kit.acquireConnection(ojb.getDefaultConfiguration());
}
@@ -339,6 +343,10 @@
public void testSwizzle1toN() throws Exception
{
+ if (ojbSkipKnownIssueProblem("OTM-layer has caching issues"))
+ {
+ return;
+ }
clearTestData();
Transaction tx = _kit.getTransaction(_conn);
tx.begin();
1.12 +3 -2
db-ojb/src/test/org/apache/ojb/performance/PerfHandle.java
Index: PerfHandle.java
===================================================================
RCS file:
/home/cvs/db-ojb/src/test/org/apache/ojb/performance/PerfHandle.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- PerfHandle.java 5 Apr 2004 12:16:22 -0000 1.11
+++ PerfHandle.java 27 Aug 2005 12:44:03 -0000 1.12
@@ -184,7 +184,8 @@
}
catch (Exception e)
{
- test.registerException(PREFIX_LOG + "(Something wrong with
query result) ", e);
+ test.registerException(PREFIX_LOG
+ + "(Something wrong with query result or with object
insert operation) ", e);
}
test.addTime(2, period);
1.11 +155 -67 db-ojb/src/test/org/apache/ojb/performance/PerfMain.java
Index: PerfMain.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/performance/PerfMain.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- PerfMain.java 11 Aug 2004 00:37:31 -0000 1.10
+++ PerfMain.java 27 Aug 2005 12:44:03 -0000 1.11
@@ -25,6 +25,10 @@
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
+import java.util.Collections;
+import java.util.Comparator;
+
+import org.apache.commons.lang.ArrayUtils;
/**
* The OJB stress/performance test - a simple performance test framework for
@@ -188,27 +192,73 @@
EOL + "# Start OJB performance-test framework - do " +
testLoops + " loop #" +
EOL + "####################################################"
+ EOL);
- Iterator it = testList.iterator();
- while (it.hasNext())
+ PerfTest test = null;
+ for (int i = 0; i < testLoops; i++)
{
- String perfTest = (String) it.next();
- PerfTest test = (PerfTest) Class.forName(perfTest).newInstance();
- test.registerPerfMain(this);
Runtime rt = Runtime.getRuntime();
long freeMem = 0;
+ System.out.println("==> perform test loop " + (i + 1));
- test.setUp();
- for (int i = 0; i < testLoops; i++)
+ if(i%2 == 0)
{
- System.out.println("perform test loop " + (i + 1));
- freeMem = rt.freeMemory();
- test.performTest();
- freeMem = (freeMem - rt.freeMemory()) / 1024;
- System.out.println("allocated memory after test: " + freeMem
+ " kb");
- rt.gc();
+ for(int j = 0; j < testList.size(); j++)
+ {
+ String perfTest = (String) testList.get(j);
+ test = (PerfTest) Class.forName(perfTest).newInstance();
+ test.registerPerfMain(this);
+
+ rt.gc();
+ Thread.sleep(500);
+ rt.freeMemory();
+ rt.gc();
+ Thread.sleep(500);
+ freeMem = rt.freeMemory();
+ test.performTest();
+ freeMem = (freeMem - rt.freeMemory()) / 1024;
+ System.out.println("allocated memory after test: " +
freeMem + " kb");
+ // rt.gc();
+ }
+ }
+ else
+ {
+ for(int j = (testList.size() - 1); j >= 0; j--)
+ {
+ String perfTest = (String) testList.get(j);
+ test = (PerfTest) Class.forName(perfTest).newInstance();
+ test.registerPerfMain(this);
+
+ rt.gc();
+ Thread.sleep(500);
+ rt.freeMemory();
+ rt.gc();
+ Thread.sleep(500);
+ freeMem = rt.freeMemory();
+ test.performTest();
+ freeMem = (freeMem - rt.freeMemory()) / 1024;
+ System.out.println("allocated memory after test: " +
freeMem + " kb");
+ // rt.gc();
+ }
}
- test.tearDown();
}
+
+// Iterator it = testList.iterator();
+// while (it.hasNext())
+// {
+// String perfTest = (String) it.next();
+// PerfTest test = (PerfTest)
Class.forName(perfTest).newInstance();
+// test.registerPerfMain(this);
+// Runtime rt = Runtime.getRuntime();
+// long freeMem = 0;
+// for (int i = 0; i < testLoops; i++)
+// {
+// System.out.println("perform test loop " + (i + 1));
+// freeMem = rt.freeMemory();
+// test.performTest();
+// freeMem = (freeMem - rt.freeMemory()) / 1024;
+// System.out.println("allocated memory after test: " +
freeMem + " kb");
+// rt.gc();
+// }
+// }
}
public void printResult(OutputStream out)
@@ -228,76 +278,113 @@
}
print.println(buf.toString());
}
-
- print.println(buildTestSummary(resultMap.values()));
+ List results = new ArrayList(resultMap.values());
+ Collections.sort(results, new Comparator()
+ {
+ public int compare(Object o1, Object o2)
+ {
+ PerfResult r1 = (PerfResult) o1;
+ PerfResult r2 = (PerfResult) o2;
+ return new Long(r1.getTotalTime()).compareTo(new
Long(r2.getTotalTime()));
+ }
+ });
+ print.println(buildTestSummary(results));
}
private String buildTestSummary(Collection results)
{
- int column = 8;
+ int columnLength = 8;
+ int columnNumbers = 8;
+
StringBuffer buf = new StringBuffer();
// table header
buf.append(EOL);
- for (int i = 0; i < 7; i++)
+ for (int i = 0; i < columnNumbers; i++)
{
- buf.append(getFilledUpToLength("", column, "="));
+ buf.append(getFilledUpToLength("", columnLength, "="));
}
buf.append(EOL);
- buf.append(getFilledUpToLength("", column, " "));
- buf.append(getFilledUpToLength("OJB PERFORMANCE TEST SUMMARY",
column, " "));
+ buf.append(getFilledUpToLength("", columnLength, " "));
+ buf.append(getFilledUpToLength("OJB PERFORMANCE TEST SUMMARY",
columnLength, " "));
buf.append(EOL);
buf.append(PerfMain.getConcurrentThreads() + " concurrent threads,
handle " +
PerfMain.getIterationsPerThread() + " objects per thread");
buf.append(EOL);
- buf.append(getFilledUpToLength("", column, " "));
- buf.append("- " + (isUseStressMode() == false ? "performance mode" :
"stress mode -"));
+ buf.append(getFilledUpToLength("", columnLength, " "));
+ buf.append("- " + (isUseStressMode() == false ? "performance mode" :
"stress mode"));
+ buf.append(" - results per thread");
buf.append(EOL);
- for (int i = 0; i < 7; i++)
+ for (int i = 0; i < columnNumbers; i++)
{
- buf.append(getFilledUpToLength("", column, "="));
+ buf.append(getFilledUpToLength("", columnLength, "="));
}
buf.append(EOL);
- buf.append(getFilledUpToLength("API", column, " "));
- buf.append(getFilledUpToLength("Period", column, " "));
- buf.append(getFilledUpToLength("Total", column, " "));
- buf.append(getFilledUpToLength("Insert", column, " "));
- buf.append(getFilledUpToLength("Fetch", column, " "));
- buf.append(getFilledUpToLength("Update", column, " "));
- buf.append(getFilledUpToLength("Delete", column, " "));
+ buf.append(getFilledUpToLength("API", columnLength, " "));
+ buf.append(getFilledUpToLength("Period", columnLength, " "));
+ buf.append(getFilledUpToLength("Total", columnLength, " "));
+ buf.append(getFilledUpToLength("Total", columnLength, " "));
+ buf.append(getFilledUpToLength("Insert", columnLength, " "));
+ buf.append(getFilledUpToLength("Fetch", columnLength, " "));
+ buf.append(getFilledUpToLength("Update", columnLength, " "));
+ buf.append(getFilledUpToLength("Delete", columnLength, " "));
buf.append(EOL);
- buf.append(getFilledUpToLength("", column, " "));
- buf.append(getFilledUpToLength("[sec]", column, " "));
- buf.append(getFilledUpToLength("[sec]", column, " "));
- buf.append(getFilledUpToLength("[msec]", column, " "));
- buf.append(getFilledUpToLength("[msec]", column, " "));
- buf.append(getFilledUpToLength("[msec]", column, " "));
- buf.append(getFilledUpToLength("[msec]", column, " "));
+ buf.append(getFilledUpToLength("", columnLength, " "));
+ buf.append(getFilledUpToLength("[sec]", columnLength, " "));
+ buf.append(getFilledUpToLength("[sec]", columnLength, " "));
+ buf.append(getFilledUpToLength("[%]", columnLength, " "));
+ buf.append(getFilledUpToLength("[msec]", columnLength, " "));
+ buf.append(getFilledUpToLength("[msec]", columnLength, " "));
+ buf.append(getFilledUpToLength("[msec]", columnLength, " "));
+ buf.append(getFilledUpToLength("[msec]", columnLength, " "));
buf.append(EOL);
- for (int i = 0; i < 7; i++)
+ for (int i = 0; i < columnNumbers; i++)
{
- buf.append(getFilledUpToLength("", column, "-"));
+ buf.append(getFilledUpToLength("", columnLength, "-"));
}
+ List failures = new ArrayList();
// fill table
Iterator it = results.iterator();
+ int counter = 0;
+ double calibrationMark = 0;
while (it.hasNext())
{
buf.append(EOL);
PerfResult res = (PerfResult) it.next();
- buf.append(getFilledUpToLength(res.getTestName(), column, " "));
- buf.append(getFilledUpToLength(new Double((double) (((double)
res.getTestPeriod()) / 1000)).toString(), column, " "));
- buf.append(getFilledUpToLength(new Double((double) (((double)
res.getTotalTime()) / 1000)).toString(), column, " "));
- buf.append(getFilledUpToLength(new
Long(res.getInsertPeriod()).toString(), column, " "));
- buf.append(getFilledUpToLength(new
Long(res.getFetchPeriod()).toString(), column, " "));
- buf.append(getFilledUpToLength(new
Long(res.getUpdatePeriod()).toString(), column, " "));
- buf.append(getFilledUpToLength(new
Long(res.getDeletePeriod()).toString(), column, " "));
+// if(!res.isValid())
+// {
+// failures.add(res);
+// }
+ if(counter == 0)
+ {
+ calibrationMark = (double) (((double) res.getTotalTime()) /
1000);
+ }
+ buf.append(getFilledUpToLength(res.getTestName(), columnLength,
" "));
+ buf.append(getFilledUpToLength(new Double((double) (((double)
res.getTestPeriod()) / 1000)).toString(), columnLength, " "));
+ Double totalTime = new Double((double) (((double)
res.getTotalTime()) / 1000));
+ buf.append(getFilledUpToLength(totalTime.toString(),
columnLength, " "));
+ buf.append(getFilledUpToLength(new
Long(Math.round((totalTime.doubleValue() / calibrationMark) * 100)).toString(),
columnLength, " "));
+ buf.append(getFilledUpToLength(new
Long(res.getInsertPeriod()).toString(), columnLength, " "));
+ buf.append(getFilledUpToLength(new
Long(res.getFetchPeriod()).toString(), columnLength, " "));
+ buf.append(getFilledUpToLength(new
Long(res.getUpdatePeriod()).toString(), columnLength, " "));
+ buf.append(getFilledUpToLength(new
Long(res.getDeletePeriod()).toString(), columnLength, " "));
+ counter++;
}
buf.append(EOL);
- for (int i = 0; i < 7; i++)
+ for (int i = 0; i < columnNumbers; i++)
{
- buf.append(getFilledUpToLength("", column, "="));
+ buf.append(getFilledUpToLength("", 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();
}
@@ -309,25 +396,11 @@
String blanks = "";
for (int i = 0; i < count; i++)
{
- blanks = blanks + fillCharacter;
+ blanks += fillCharacter;
}
return blanks + target;
}
-// private String buildObjectBeforeAfterList(List consistentList)
-// {
-// StringBuffer buf = new StringBuffer();
-// buf.append("Test failed, inconsistent object count:");
-// buf.append(EOL);
-// for (int i = 0; i < consistentList.size(); i++)
-// {
-// ConsistentEntry entry = (ConsistentEntry)
consistentList.get(i);
-// buf.append("passed: " + entry.isPassed() + " - objects before
test/ after test " +
-// entry.getObjectsBefore() + "/" +
entry.getObjectsAfter() + EOL);
-// }
-// return buf.toString();
-// }
-
/**
* resultArr[0] startTime/test length
* resultArr[1] inserting times
@@ -354,12 +427,28 @@
result.addFetchPeriod(resultArr[2]);
result.addUpdatePeriod(resultArr[3]);
result.addDeletePeriod(resultArr[4]);
+
+ StringBuffer buf = new StringBuffer();
+ buf.append("Test '").append(result.getTestName()).append("' [ms]")
+ .append(": testPeriod=").append(resultArr[0])
+ .append("
insert=").append(resultArr[1]/getConcurrentThreads())
+ .append(" read=").append(resultArr[2]/getConcurrentThreads())
+ .append("
update=").append(resultArr[3]/getConcurrentThreads())
+ .append("
delete=").append(resultArr[4]/getConcurrentThreads());
+ System.out.println(buf.toString());
}
public void addConsistentResult(String testName, int objectsBefore, int
objectsAfter)
{
ConsistentEntry ce = new ConsistentEntry(objectsBefore,
objectsAfter);
PerfResult result = (PerfResult) resultMap.get(testName);
+ if(objectsBefore != objectsAfter)
+ {
+ try{throw new Exception("Wrong object count, before=" +
objectsBefore + ", after=" + objectsAfter);}catch(Exception e)
+ {
+ registerException(testName, e);
+ }
+ }
result.addConsistentEntry(ce);
}
@@ -573,7 +662,6 @@
{
private int objectsBefore;
private int objectsAfter;
- // private boolean passed;
public ConsistentEntry(int objectsBefore, int objectsAfter)
{
1.11 +8 -19 db-ojb/src/test/org/apache/ojb/performance/PerfTest.java
Index: PerfTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/performance/PerfTest.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- PerfTest.java 11 Aug 2004 00:37:31 -0000 1.10
+++ PerfTest.java 27 Aug 2005 12:44:03 -0000 1.11
@@ -55,35 +55,25 @@
public abstract String testName();
/**
- * Returns a new instance of a [EMAIL PROTECTED]
org.apache.ojb.performance.PerfHandle} implementation.
+ * Returns a new instance of a [EMAIL PROTECTED] PerfHandle}
implementation.
*/
- public abstract org.apache.ojb.performance.PerfHandle
newPerfHandle(PerfTest test);
+ public abstract PerfHandle newPerfHandle(PerfTest test);
/**
- * Returns the count of all found [EMAIL PROTECTED]
org.apache.ojb.performance.PerfArticle}
- * in database. Do not use the cache to get the count!
+ * Returns the count of all found [EMAIL PROTECTED] PerfArticle}
+ * in database.
* This method is not involved in the performance test
* methods, thus it's not mandatory to use the api-methods
* for implementation.
*/
public abstract int articleCount();
- /**
- * Do initial work here. Was called one time before the test starts.
- */
- public abstract void setUp();
-
- /**
- * Do cleanup here. Was called one time after the test.
- */
- public abstract void tearDown();
-
private void checkApi() throws Exception
{
String name = testName() + "_Pre_Test_Object";
- org.apache.ojb.performance.PerfHandle handle = newPerfHandle(this);
- org.apache.ojb.performance.PerfArticle article =
handle.getPreparedPerfArticle(name);
+ PerfHandle handle = newPerfHandle(this);
+ PerfArticle article = handle.getPreparedPerfArticle(name);
PerfArticle[] arr = new PerfArticle[]{article};
handle.init();
handle.insertNewArticles(arr);
@@ -149,14 +139,13 @@
if (!checked)
{
checkApi();
- System.out.println(PerfMain.EOL + "# Start PerfTest: " +
testName() + " #");
+ System.out.println("# Start PerfTest: " + testName() + " #");
}
int objectCount = 0;
int objectCountAfter = 0;
testTimes = new long[5];
- // threadCount = PerfMain.getConcurrentThreads();
objectCount = articleCount();
1.5 +1 -1
db-ojb/src/tools/org/apache/ojb/tools/mapping/reversedb2/actions/ActionOpenOJBRepository.java
Index: ActionOpenOJBRepository.java
===================================================================
RCS file:
/home/cvs/db-ojb/src/tools/org/apache/ojb/tools/mapping/reversedb2/actions/ActionOpenOJBRepository.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ActionOpenOJBRepository.java 2 Apr 2005 09:44:39 -0000 1.4
+++ ActionOpenOJBRepository.java 27 Aug 2005 12:44:04 -0000 1.5
@@ -55,7 +55,7 @@
{
try
{
- RepositoryPersistor persistor = new
RepositoryPersistor(new PersistentFieldFactory(PersistentFieldDirectImpl.class,
new ProxyFactoryCGLIBImpl()));
+ RepositoryPersistor persistor = new
RepositoryPersistor(new
PersistentFieldFactory(PersistentFieldDirectImpl.class));
DescriptorRepository repository =
persistor.readDescriptorRepository(selectedFile.getCanonicalPath());
JIFrmOJBRepository frm = new
JIFrmOJBRepository(repository);
containingFrame.getContentPane().add(frm);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]