Merged V2.2 to HEAD

10953: Merged V2.1 to V2.2
      10904: AVM - add test suite wrapper, update existing tests to purge test stores (rather than all stores)
      10909: AVM - unit test updates only (exposed further tests via test suite)
      10947: AVM - unit test update only (extra checks)
   10969: Merged V2.1 to V2.2 (cont)
      10904: AVM - add test suite wrapper, update existing tests to purge test stores (rather than all stores)
   11054: Fixed blind failures in AVM unit tests
   11064: AVM - unit test error handling
   11068: Temporarily remove AvmTestSuite from the build
   11074: AVM - unit tests - added error stack on concurrency tests (to show failure in build output), removed 1 hour freeze, put back AVM test suite
   11218: Merged V2.1 to V2.2
      11217: AVM - unit test fix ("n must be positive")


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@11224 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2008-10-07 00:57:23 +00:00
parent 2f2af720da
commit 5407e7ff37
13 changed files with 675 additions and 289 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
* Copyright (C) 2005-2008 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -34,22 +34,85 @@ import org.alfresco.repo.avm.util.BulkLoader;
*/
public class AVMStressTestP extends AVMServiceTestBase
{
public void testStressA() throws Throwable
{
testNThreads( 1, // nThreads
"source/java/org/alfresco/repo/avm/actions", // relative dir to load from (.../repository)
1, // nCopies
1, // create file
1, // create dir
0, // rename
0, // create layered dir
0, // create layered file
0, // remove node
0, // modify file
50, // read file
0, // snapshot
100); // # ops (for each thread)
}
public void testStressB() throws Throwable
{
testNThreads( 2, // nThreads
"source/java/org/alfresco/repo/avm", // relative dir to load from (.../repository)
1, // nCopies
10, // create file
2, // create dir
2, // rename
0, // create layered dir // TODO pending ETWOTWO-715 (is 2 in 2.1.x)
0, // create layered file // TODO pending ETWOTWO-715 (is 2 in 2.1.x)
5, // remove node
10, // modify file
50, // read file
5, // snapshot
200); // # ops (for each thread)
}
/*
public void xtestStressZ()
{
testNThreads( 4, // nThreads
"source", // relative dir to load from (.../repository)
8, // nCopies
400, // create file
20, // create dir
5, // rename
5, // create layered dir
5, // create layered file
10, // remove node
20, // modify file
3200, // read file
10, // snapshot
40000); // # ops
}
*/
/**
* Test N threads
*/
public void testNThreads()
private void testNThreads(int nThreads,
String fsPath,
int nCopies,
int createFile,
int createDir,
int rename,
int createLayeredDir,
int createLayeredFile,
int removeNode,
int modifyFile,
int readFile,
int snapshot,
int opCount) throws Throwable
{
try
{
int nCopies = 8;
int nThreads = 4;
BulkLoader loader = new BulkLoader();
loader.setAvmService(fService);
long start = System.currentTimeMillis();
for (int i = 0; i < nCopies; i++)
{
fService.createDirectory("main:/", "" + i);
loader.recursiveLoad("source", "main:/" + i);
loader.recursiveLoad(fsPath, "main:/" + i);
fService.createSnapshot("main", null, null);
}
System.out.println("Load time: " + (System.currentTimeMillis() - start));
@@ -58,17 +121,17 @@ public class AVMStressTestP extends AVMServiceTestBase
for (int i = 0; i < nThreads; i++)
{
AVMTester tester
= new AVMTester(400, // create file.
20, // create dir,
5, // rename
5, // create layered dir
5, // create layered file
10, // remove node
20, // modify file.
3200, // read file
10, // snapshot
40000, // # ops
fService);
= new AVMTester(createFile,
createDir,
rename,
createLayeredDir,
createLayeredFile,
removeNode,
modifyFile,
readFile,
snapshot,
opCount,
fService);
tester.refresh();
Thread thread = new Thread(tester);
testers.add(tester);
@@ -101,7 +164,8 @@ public class AVMStressTestP extends AVMServiceTestBase
{
tester.setExit();
}
fail();
//fail();
System.err.println("Stress tester error");
}
exited++;
}
@@ -112,11 +176,33 @@ public class AVMStressTestP extends AVMServiceTestBase
// Do nothing.
}
}
int errorCnt = 0;
for (AVMTester tester : testers)
{
errorCnt += (tester.getError() ? 1 : 0);
}
if (errorCnt > 0)
{
StringBuffer errorStack = new StringBuffer();
errorStack.append("Stress tester errors: ").append(errorCnt).append(" out of ").append(testers.size()).append(" are in error state");
for (AVMTester tester : testers)
{
if (tester.getError())
{
errorStack.append("\n\n").append(tester.getErrorStackTrace());
}
}
fail(errorStack.toString());
}
}
catch (Exception e)
{
e.printStackTrace(System.err);
fail();
throw e;
}
}
}