package jetbrains.buildServer.clouds.vmware; import com.intellij.util.WaitFor; import java.io.File; import java.util.Calendar; import java.util.Collections; import jetbrains.buildServer.BaseTestCase; import jetbrains.buildServer.clouds.CloudImageParameters; import jetbrains.buildServer.clouds.CloudInstanceUserData; import jetbrains.buildServer.clouds.InstanceStatus; import jetbrains.buildServer.clouds.base.connector.CloudAsyncTaskExecutor; import jetbrains.buildServer.clouds.base.types.CloneBehaviour; import jetbrains.buildServer.clouds.vmware.connector.VMWareApiConnector; import jetbrains.buildServer.clouds.vmware.stubs.FakeApiConnector; import jetbrains.buildServer.clouds.vmware.stubs.FakeDatacenter; import jetbrains.buildServer.clouds.vmware.stubs.FakeModel; import jetbrains.buildServer.clouds.vmware.stubs.FakeVirtualMachine; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import static jetbrains.buildServer.clouds.vmware.VmwareCloudIntegrationTest.PROFILE_ID; import static jetbrains.buildServer.clouds.vmware.VmwareCloudIntegrationTest.TEST_SERVER_UUID; /** * @author Sergey.Pak * Date: 5/19/2014 * Time: 4:25 PM */ @Test public class VmwareCloudInstanceTest extends BaseTestCase { private CloudAsyncTaskExecutor myStatusTask; private VMWareApiConnector myApiConnector; private VmwareCloudImage myImage; private VmwareCloudImageDetails myImageDetails; private File myIdxStorage; @BeforeMethod public void setUp() throws Exception { super.setUp(); myStatusTask = new CloudAsyncTaskExecutor("Test-vmware"); myApiConnector = new FakeApiConnector(TEST_SERVER_UUID, PROFILE_ID); myIdxStorage = createTempDir(); CloudImageParameters imageParameters = new CloudImageParameters(); imageParameters.setParameter("nickname", "imageNickname"); imageParameters.setParameter("sourceVmName", "mySource"); imageParameters.setParameter("snapshot", "mySourceSnapshot"); imageParameters.setParameter("folder", "myFolder"); imageParameters.setParameter("pool", "myPool"); imageParameters.setParameter("behaviour", CloneBehaviour.FRESH_CLONE.toString()); imageParameters.setParameter("maxInstances", "5"); myImageDetails = new VmwareCloudImageDetails(imageParameters); final FakeDatacenter dc2 = FakeModel.instance().addDatacenter("dc2"); FakeModel.instance().addFolder("myFolder").setParent(dc2); FakeModel.instance().addVM("mySource").setParentFolder("myFolder"); FakeModel.instance().addVMSnapshot("mySource", "mySourceSnapshot"); FakeModel.instance().addResourcePool("myPool"); myImage = new VmwareCloudImage(myApiConnector, myImageDetails, myStatusTask, myIdxStorage); } public void do_not_make_instance_start_date_earlier(){ final CloudInstanceUserData data = new CloudInstanceUserData("aaa", "bbbb", "localhost", 10000l, "profileDescr", Collections.<String, String>emptyMap()); final VmwareCloudInstance instance = myImage.startNewInstance(data); new WaitFor(5 * 1000){ @Override protected boolean condition() { return instance.getStatus() == InstanceStatus.RUNNING; } }; FakeVirtualMachine fakeVM = FakeModel.instance().getVirtualMachine(instance.getName()); final Calendar calendarInstance = Calendar.getInstance(); calendarInstance.set(2001, 1, 1); fakeVM.setBootTime(calendarInstance); calendarInstance.set(2001, 1, 1); final Calendar instance2 = Calendar.getInstance(); instance2.set(2002, 1, 1); assertTrue(instance.getStartedTime().after(instance2.getTime())); } @AfterMethod public void tearDown() throws Exception { super.tearDown(); } }