/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed 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 dalvik.runner;
import java.io.File;
import java.util.logging.Logger;
/**
* A target runtime environment such as a remote device or the local host
*/
abstract class Environment {
private static final Logger logger = Logger.getLogger(Environment.class.getName());
final boolean cleanBefore;
final boolean cleanAfter;
final Integer debugPort;
private final File localTemp;
Environment (boolean cleanBefore, boolean cleanAfter, Integer debugPort, File localTemp) {
this.cleanBefore = cleanBefore;
this.cleanAfter = cleanAfter;
this.debugPort = debugPort;
this.localTemp = localTemp;
}
/**
* Initializes the temporary directories and test harness necessary to run
* tests.
*/
abstract void prepare();
/**
* Prepares the directory from which the test will be executed. Some tests
* expect to read data files from the current working directory; this step
* should ensure such files are available.
*/
abstract void prepareUserDir(TestRun testRun);
/**
* Deletes files and releases any resources required for the execution of
* the given test.
*/
void cleanup(TestRun testRun) {
if (cleanAfter) {
logger.fine("clean " + testRun.getQualifiedName());
new Rm().directoryTree(testCompilationDir(testRun));
new Rm().directoryTree(testUserDir(testRun));
}
}
final File testDir(String name) {
return new File(localTemp, name);
}
final File testRunnerDir(String name) {
return new File(testDir("testrunner"), name);
}
final File testRunnerClassesDir() {
return testRunnerDir("classes");
}
final File testCompilationDir(TestRun testRun) {
return new File(localTemp, testRun.getQualifiedName());
}
final File testClassesDir(TestRun testRun) {
return new File(testCompilationDir(testRun), "classes");
}
final File testUserDir(TestRun testRun) {
File testTemp = new File(localTemp, "userDir");
return new File(testTemp, testRun.getQualifiedName());
}
abstract void shutdown();
}