/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/search/trunk/search-impl/impl/src/test/org/sakaiproject/search/index/soaktest/SearchSoak.java $
* $Id: SearchSoak.java 105078 2012-02-24 23:00:38Z ottenhoff@longsight.com $
***********************************************************************************
*
* Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008 The Sakai Foundation
*
* Licensed under the Educational Community License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.opensource.org/licenses/ECL-2.0
*
* 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.sakaiproject.search.index.soaktest;
import java.io.File;
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.sakaiproject.search.mock.MockClusterService;
import org.sakaiproject.search.util.FileUtils;
/**
* to run this test use mvn -Dtest=SearchSoak test
*
* @author ieb
*/
public class SearchSoak extends TestCase
{
private static final Log log = LogFactory.getLog(SearchSoak.class);
private File testBase;
private File dbFile;
public SearchSoak(String name)
{
super(name);
}
/*
* (non-Javadoc)
*
* @see junit.framework.TestCase#setUp()
*/
@Override
protected void setUp() throws Exception
{
// TODO Auto-generated method stub
super.setUp();
init();
}
/*
* (non-Javadoc)
*
* @see junit.framework.TestCase#tearDown()
*/
@Override
protected void tearDown() throws Exception
{
// TODO Auto-generated method stub
super.tearDown();
}
/**
* @throws Exception
*/
private void init() throws Exception
{
testBase = new File("target");
testBase = new File(testBase, "SearchSoak");
dbFile = new File(testBase, "searchsoakdb");
FileUtils.deleteAll(testBase);
}
/*
* public void testSoakOneNode() throws Exception { SearchIndexerNode node =
* new SearchIndexerNode(testBase.getAbsolutePath(),"onethread");
* node.init(); Thread.sleep(30 * 1000); }
*/
public void testSoakTenCLuster() throws Exception
{
String driver = "org.apache.derby.jdbc.EmbeddedDriver";
String url = "jdbc:derby:" + testBase.getAbsolutePath() + ";create=true";
String user = "sa";
String password = "manager";
try
{
Class.forName("com.mysql.jdbc.Driver");
driver = "com.mysql.jdbc.Driver";
url = "dbc:mysql://127.0.0.1:3306/sakai22?useUnicode=true&characterEncoding=UTF-8";
user = "sakai22";
password = "sakai22";
}
catch (ClassNotFoundException cnfe)
{
log.debug(cnfe);
}
log.info("Using " + driver);
SearchIndexerNode[] node = new SearchIndexerNode[4];
MockClusterService clusterService = new MockClusterService();
for (int i = 0; i < 4; i++)
{
node[i] = new SearchIndexerNode(clusterService, testBase.getAbsolutePath(),
"node" + i, driver, url, user, password);
node[i].init();
}
clusterService.init();
long endTime = System.currentTimeMillis() + 3600000;
long timeLeft = endTime - System.currentTimeMillis();
while (timeLeft > 0)
{
for (int i = 0; i < 4; i++)
{
node[i].testSearch();
// simulate holes in the sequence
node[i].makeTransactionHole();
}
Thread.sleep(1000);
for (int i = 0; i < 4; i++)
{
node[i].getThreadLocalManager().clear();
}
timeLeft = endTime - System.currentTimeMillis();
}
for (int i = 0; i < 4; i++)
{
node[i].close();
}
for (int i = 0; i < 4; i++)
{
node[i].cleanup();
}
log.info(" waiting for 30 ");
Thread.sleep(30000);
Runtime.getRuntime().gc();
for (int k = 0; k < 50; k++)
{
for (int i = 0; i < 4; i++)
{
node[i].testSearch();
}
log.info("Done " + k);
}
log.info(" take snapshot will terminate in 1h, ctrl+C to exit ");
Thread.sleep(3600000);
}
}