/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.communication.testutils; import static org.junit.Assert.assertEquals; import org.junit.Test; import de.rcenvironment.core.communication.transport.virtual.VirtualTransportTestConfiguration; /** * Tests for the {@link VirtualInstance} class itself. * * @author Robert Mischke */ public class VirtualInstanceSelfTest extends AbstractVirtualInstanceTest { /** * Minimal test of {@link VirtualInstance} creation. * * @throws InterruptedException on test interruption */ @Test public void testMinimalSetup() throws InterruptedException { VirtualInstance virtualInstance = new VirtualInstance("The Node Name"); log.debug("Starting virtual instance"); virtualInstance.start(); log.debug("Shutting down virtual instance"); virtualInstance.shutDown(); log.debug("Shutdown complete"); } /** * Verifies proper behavior of the command-driven state transitions of {@link VirtualInstance}. * * @throws InterruptedException on interruption */ @Test public void testStateChanges() throws InterruptedException { // note: don't use too many instances as threading problems may be masked by startup time int numNodes = 5; setupInstances(numNodes, true, false); // do not start VirtualInstanceGroup group = testTopology.getAsGroup(); for (VirtualInstance vi : allInstances) { assertEquals(vi.getInstanceNodeSessionId().toString(), VirtualInstanceState.INITIAL, vi.getCurrentState()); } group.start(); for (VirtualInstance vi : allInstances) { assertEquals(vi.getInstanceNodeSessionId().toString(), VirtualInstanceState.STARTED, vi.getCurrentState()); } group.shutDown(); for (VirtualInstance vi : allInstances) { assertEquals(vi.getInstanceNodeSessionId().toString(), VirtualInstanceState.STOPPED, vi.getCurrentState()); } group.start(); for (VirtualInstance vi : allInstances) { assertEquals(vi.getInstanceNodeSessionId().toString(), VirtualInstanceState.STARTED, vi.getCurrentState()); } group.simulateCrash(); for (VirtualInstance vi : allInstances) { assertEquals(vi.getInstanceNodeSessionId().toString(), VirtualInstanceState.STOPPED, vi.getCurrentState()); } group.start(); for (VirtualInstance vi : allInstances) { assertEquals(vi.getInstanceNodeSessionId().toString(), VirtualInstanceState.STARTED, vi.getCurrentState()); } group.shutDown(); for (VirtualInstance vi : allInstances) { assertEquals(vi.getInstanceNodeSessionId().toString(), VirtualInstanceState.STOPPED, vi.getCurrentState()); } } @Override protected TestConfiguration defineTestConfiguration() { return new VirtualTransportTestConfiguration(true); } }