blob: a551c9dbefd46321c7f12ccf0ff408b0ee4935d7 [file] [log] [blame]
/*
*
* Derby - Class org.apache.derbyTesting.functionTests.tests.derbynet.NetIjTests
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache 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.apache.org/licenses/LICENSE-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.apache.derbyTesting.functionTests.tests.derbynet;
import java.util.Properties;
import junit.framework.Test;
import org.apache.derbyTesting.functionTests.util.ScriptTestCase;
import org.apache.derbyTesting.junit.BaseTestSuite;
import org.apache.derbyTesting.junit.CleanDatabaseTestSetup;
import org.apache.derbyTesting.junit.SystemPropertyTestSetup;
import org.apache.derbyTesting.junit.TestConfiguration;
/**
* Network client .sql tests to run via ij.
*/
/**
* NetScripts runs ij scripts (.sql files) in the derbynet package
* and compares the output to a canon file in the standard master package.
* <BR>
* Its suite() method returns a set of tests where each test is an instance of
* this class for an individual script wrapped in a clean database decorator.
* <BR>
* It can also be used as a command line program to run one or more
* ij scripts as tests.
*
*/
public final class NetIjTest extends ScriptTestCase {
/**
* scripts (.sql files) - only run in client.
*/
private static final String[] CLIENT_TESTS = {
"testclientij",
};
/**
* Run a set of scripts (.sql files) passed in on the
* command line. Note the .sql suffix must not be provided as
* part of the script name.
* <code>
* example
* java org.apache.derbyTesting.functionTests.tests.derbynet.NetIjTest case union
* </code>
*/
public static void main(String[] args)
{
junit.textui.TestRunner.run(getSuite(args));
}
/**
* Return the suite that runs all the derbynet scripts.
*/
public static Test suite() {
BaseTestSuite suite = new BaseTestSuite("NetScripts");
// Set up the scripts run with the network client
BaseTestSuite clientTests = new BaseTestSuite("NetScripts:client");
clientTests.addTest(getSuite(CLIENT_TESTS));
int port = TestConfiguration.getCurrent().getPort();
Properties prop = new Properties();
prop.setProperty("ij.protocol",
"jdbc:derby://localhost:"+port+"/");
Test client = new SystemPropertyTestSetup(
TestConfiguration.clientServerDecoratorWithPort(clientTests,port),
prop);
// add those client tests into the top-level suite.
suite.addTest(client);
return suite;
}
/*
* A single JUnit test that runs a single derbynet script.
*/
private NetIjTest(String netTest){
super(netTest,true);
}
/**
* Return a suite of derbynet tests from the list of
* script names. Each test is surrounded in a decorator
* that cleans the database.
*/
private static Test getSuite(String[] list) {
BaseTestSuite suite = new BaseTestSuite("Net scripts");
for (int i = 0; i < list.length; i++)
suite.addTest(
new CleanDatabaseTestSetup(
new NetIjTest(list[i])));
return getIJConfig(suite);
}
}