/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.instancemanagement.internal;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import de.rcenvironment.core.utils.testing.ParameterizedTestUtils;
import de.rcenvironment.core.utils.testing.TestParametersProvider;
/**
* Integration tests for {@link InstanceOperationsImpl} that are not intended to be run within the automated test battery, usually because
* it requires certain external resources.
*
* @author Robert Mischke
*/
public class InstanceOperationsImplManualTests {
private TestParametersProvider testParameters;
/**
* Common setup.
*
* @throws Exception on uncaught exceptions
*/
@Before
public void setUp() throws Exception {
testParameters = new ParameterizedTestUtils().readDefaultPropertiesFile(getClass());
}
/**
* Common teardown.
*
* @throws Exception on uncaught exceptions
*/
@After
public void tearDown() throws Exception {}
/**
* Tests the basic start/stop cycle with a provided external installation.
*
* @throws IOException on uncaught exceptions
*/
@Test
public void startStopRoundTrip() throws IOException {
// must exist
final File installationDir = testParameters.getExistingDir("startStopRoundTrip.installationDir");
// may exist
final File profileDir = testParameters.getDefinedFileOrDir("startStopRoundTrip.profileDir");
List<File> profileDirList = new ArrayList<>();
profileDirList.add(profileDir);
// optional repetitions, e.g. for stability testing
final int repetitions = testParameters.getOptionalInteger("startStopRoundTrip.repetitions", 1);
assertTrue(profileDir.getPath(), profileDir.isAbsolute()); // doesn't have to exist, but should be absolute for reliable starting
assertTrue(installationDir.getPath(), installationDir.isAbsolute());
assertTrue(installationDir.getPath(), installationDir.isDirectory());
InstanceOperationsImpl instanceOperations = new InstanceOperationsImpl();
assertFalse(instanceOperations.isProfileLocked(profileDir));
for (int i = 0; i < repetitions; i++) {
instanceOperations.startInstanceUsingInstallation(profileDirList, installationDir, 0, null, false);
assertTrue("profile not locked after start", instanceOperations.isProfileLocked(profileDir));
instanceOperations.shutdownInstance(profileDirList, 0, null);
assertFalse("profile still locked after shutdown", instanceOperations.isProfileLocked(profileDir));
}
}
}