Britt Park c4ae3bd5fa Clears up problems submitting deleted files via workflow. Still need to systematically
go through DeletedNode implementation to make sure it's fully first class.
Adding some debugging code that throws exceptions if it detects certain kinds of races. 
It can be turned off but I want to leave it on until GA.  And, you'll need to start from a clean
database as the AVM schema have changed.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4683 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2006-12-21 18:19:54 +00:00

122 lines
3.6 KiB
Java

/*
* Copyright (C) 2006 Alfresco, Inc.
*
* Licensed under the Mozilla Public License version 1.1
* with a permitted attribution clause. You may obtain a
* copy of the License at
*
* http://www.alfresco.org/legal/license.txt
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific
* language governing permissions and limitations under the
* License.
*/
package org.alfresco.repo.avm;
import java.util.ArrayList;
import java.util.List;
import org.alfresco.repo.avm.util.BulkLoader;
/**
* Another performance test that runs simultaneous crawlers that
* do operations with locality of reference.
* @author britt
*/
public class AVMCrawlTestP extends AVMServiceTestBase
{
/**
* Do the crawl test.
*/
public void testCrawl()
{
int n = 4; // Number of Threads.
int m = 12; // How many multiples of content to start with.
long runTime = 28800000; // 6 hours.
fService.purgeStore("main");
BulkLoader loader = new BulkLoader();
loader.setAvmService(fService);
for (int i = 0; i < m; i++)
{
fService.createStore("d" + i);
loader.recursiveLoad("source", "d" + i + ":/");
fService.createSnapshot("d" + i, null, null);
}
long startTime = System.currentTimeMillis();
List<AVMCrawler> crawlers = new ArrayList<AVMCrawler>();
List<Thread> threads = new ArrayList<Thread>();
for (int i = 0; i < n; i++)
{
crawlers.add(new AVMCrawler(fService));
threads.add(new Thread(crawlers.get(i)));
threads.get(i).start();
}
while (true)
{
try
{
Thread.sleep(5000);
// Check that none of the crawlers has errored out.
for (AVMCrawler crawler : crawlers)
{
if (crawler.getError())
{
for (AVMCrawler craw : crawlers)
{
craw.setDone();
}
for (Thread thread : threads)
{
try
{
thread.join();
}
catch (InterruptedException ie)
{
// Do nothing.
}
}
fail();
}
}
}
catch (InterruptedException ie)
{
// Do nothing.
}
long now = System.currentTimeMillis();
if (now - startTime > runTime)
{
break;
}
}
for (AVMCrawler crawler : crawlers)
{
crawler.setDone();
}
for (Thread thread : threads)
{
try
{
thread.join();
}
catch (InterruptedException ie)
{
// Do nothing.
}
}
long ops = 0L;
for (AVMCrawler crawler : crawlers)
{
ops += crawler.getOpCount();
}
long time = System.currentTimeMillis() - startTime;
System.out.println("Ops/Sec: " + (ops * 1000L / time));
}
}