package streamcruncher.test.nonfunc.h2;
import java.sql.Connection;
import java.util.List;
import org.testng.Assert;
import org.testng.annotations.Test;
import streamcruncher.api.OutputSession;
import streamcruncher.api.QueryConfig;
import streamcruncher.api.ResultSetCacheConfig;
import streamcruncher.api.StreamCruncher;
import streamcruncher.test.Suite;
import streamcruncher.test.TestGroupNames;
import streamcruncher.test.func.BatchResult;
import streamcruncher.test.func.h2.H2OAConfigurableFTest;
/*
* Author: Ashwin Jayaprakash Date: Oct 29, 2006 Time: 11:54:29 AM
*/
public class H2StartupShutdown3Test extends H2OAConfigurableFTest {
@Override
protected void modifyQueryConfig(QueryConfig config) {
super.modifyQueryConfig(config);
config.setStuckJobInterruptionTimeMsecs(4700);
config.setResumeCheckTimeMsecs(2600);
}
@Test(dependsOnGroups = { TestGroupNames.SC_INIT_REQUIRED }, groups = { TestGroupNames.SC_TEST_H2 })
protected void performTest() throws Exception {
List<BatchResult> results = test();
// -----------
String queryName = "order_fulfillment_rql";
QueryConfig config = cruncher.getQueryConfig(queryName);
config.pauseQuery();
for (String sql : parsedQuery.getCachedSubQueries()) {
ResultSetCacheConfig cacheConfig = cruncher.getResultSetCacheConfig(sql);
cacheConfig.setRefreshIntervalMsecs(8320);
}
// -----------
Suite suite = new Suite();
suite.end();
System.err.println("Stopped...");
Thread.sleep(5000);
System.err.println("Restarting...");
// -----------
suite.start();
// -----------
config = cruncher.getQueryConfig(queryName);
Assert
.assertTrue(config.isQueryPaused(),
"Query state should've been Paused after restart");
for (String sql : parsedQuery.getCachedSubQueries()) {
ResultSetCacheConfig cacheConfig = cruncher.getResultSetCacheConfig(sql);
Assert.assertEquals(cacheConfig.getRefreshIntervalMsecs(), 8320,
"Cache Config values did not get restored: " + sql);
}
StreamCruncher streamCruncher = new StreamCruncher();
Connection connection = streamCruncher.createConnection();
beforeQueryParse(connection);
connection.close();
config.resumeQuery();
// -----------
config = cruncher.getQueryConfig(queryName);
Assert.assertEquals(config.getStuckJobInterruptionTimeMsecs(), 4700,
"Config values did not get restored: StuckJobInterruptionTimeMsecs");
Assert.assertEquals(config.getResumeCheckTimeMsecs(), 2600,
"Config values did not get restored: ResumeCheckTimeMsecs");
OutputSession outputSession = cruncher.createOutputSession(queryName);
outputSession.start();
outputSession.close();
// Test again.
results = test();
}
}