/**
Copyright (C) SYSTAP, LLC DBA Blazegraph 2006-2016. All rights reserved.
Contact:
SYSTAP, LLC DBA Blazegraph
2501 Calvert ST NW #106
Washington, DC 20008
licenses@blazegraph.com
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Created on Oct 14, 2006
*/
package com.bigdata.journal;
import junit.extensions.proxy.ProxyTestSuite;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* Aggregates all tests into something approximately increasing dependency
* order. Most of the tests that are aggregated are proxied test suites and will
* therefore run with the configuration of the test class running that suite.
*
* @author <a href="mailto:thompsonbry@users.sourceforge.net">Bryan Thompson</a>
* @version $Id$
*
* @see AbstractJournalTestCase
* @see ProxyTestCase
*/
public class TestJournalBasics extends TestCase {
public TestJournalBasics() {
super();
}
public TestJournalBasics(String arg0) {
super(arg0);
}
/**
* Aggregates the test suites into something approximating increasing
* dependency. This is designed to run as a <em>proxy test suite</em> in
* which all tests are run using a common configuration and a delegation
* mechanism. You MUST add the returned {@link Test} into a properly
* configured {@link ProxyTestSuite}.
*
* @see ProxyTestSuite
*/
public static Test suite()
{
final TestSuite suite = new TestSuite("journal basics");
// tests of creation, lookup, use, commit of named indices.
suite.addTestSuite(TestNamedIndices.class);
// tests of Name2Addr semantics (isolation, prefix scans, etc).
suite.addTestSuite(TestName2Addr.class);
// verify that an index is restart-safe iff the journal commits.
suite.addTestSuite(TestRestartSafe.class);
// tests of the commit list for named indices.
suite.addTestSuite(TestCommitList.class);
// tests the ability to recover and find historical commit records.
suite.addTestSuite(TestCommitHistory.class);
// tests the ability to abort operations.
suite.addTestSuite(TestAbort.class);
// test ability to rollback a commit.
suite.addTestSuite(TestRollbackCommit.class);
/*
* test behavior when journal is opened by two threads.
*
* Note: This test has been disabled. First, it fails on a regular basis
* for no reason which we can discover (the OS should forbid it).
* Second, it appears that it is leaking file handles, perhaps when the
* double-open is falsely allowed.
*
* @see https://sourceforge.net/apps/trac/bigdata/ticket/523 (Temporary
* Journals in CI).
*/
// suite.addTestSuite(TestDoubleOpen.class);
// test compacting merge of a Journal.
suite.addTestSuite(TestCompactJournal.class);
// test snapshot of a Journal
suite.addTestSuite(TestSnapshotJournal.class);
// test the DumpJournal utility.
suite.addTestSuite(TestDumpJournal.class);
// test ability to warmup indices in namespaces on the journal.
suite.addTestSuite(TestWarmupJournal.class);
/*
* tests of transaction support.
*/
suite.addTest(TestTransactionSupport.suite());
/*
* Tests of concurrent execution of readers, writers, and transactions
* and group commit.
*/
// test basics of the concurrent task execution.
suite.addTestSuite(TestConcurrentJournal.class);
// test tasks to add and drop named indices.
// This has been commented out since the unit test has dated semantics.
// suite.addTestSuite(TestAddDropIndexTask.class);
// test writing on one or more unisolated indices and verify read back after the commit.
suite.addTestSuite(TestUnisolatedWriteTasks.class);
// test suite for hierarchical locking (namespace prefixes).
suite.addTestSuite(TestHierarchicalLockingTasks.class);
// test suite for GIST operations using group commit.
//suite.addTestSuite(TestGISTTasks.class);
// stress test of throughput when lock contention serializes unisolated writers.
suite.addTestSuite(StressTestLockContention.class);
// stress test of group commit.
suite.addTestSuite(StressTestGroupCommit.class);
// stress tests of writes on unisolated named indices using ConcurrencyManager.
suite.addTestSuite(StressTestConcurrentUnisolatedIndices.class);
/*
* Stress tests of writes on unisolated named indices using
* UnisolatedReadWriteIndex.
*/
suite.addTestSuite(StressTestUnisolatedReadWriteIndex.class);
/*
* Stress test of concurrent transactions.
*
* Note: transactions use unisolated operations on the live indices when
* they commit and read against unisolated (but not live) indices so
* stress tests written in terms of transactions cover a lot of
* territory.
*
* @todo add correctness tests here.
*
* @todo we add known transaction processing benchmarks here.
*/
suite.addTestSuite(StressTestConcurrentTx.class);
/*
* Test suite for low-level data replication.
*
* @todo test basic replication here
*/
// suite.addTestSuite(TestReplicatedStore.class);
return suite;
}
}