/**
* Copyright 2012 Terremark Worldwide Inc.
*
* 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 com.terremark;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import com.terremark.annotations.Order;
import com.terremark.api.ComputePool;
import com.terremark.api.ComputePoolReference;
import com.terremark.api.ComputePoolResourceSummary;
import com.terremark.api.ComputePoolResourceSummaryList;
import com.terremark.api.ComputePools;
import com.terremark.api.CreateLayoutGroup;
import com.terremark.api.CreateLayoutRow;
import com.terremark.api.DeviceLayout;
import com.terremark.api.LayoutGroup;
import com.terremark.api.LayoutRow;
import com.terremark.exception.TerremarkException;
/**
* TODO
*
* @author <a href="mailto:spasam@terremark.com">Seshu Pasam</a>
*/
public class EnvironmentTest extends AbstractCloudApiAuthTestBase {
/** TODO */
private static final String NEW_COMPUTE_POOL_NAME = "Compute Pool Rename Test";
/**
* TODO
*
* @throws TerremarkException
*/
@Order(1)
@Test
public void testComputePools() throws TerremarkException {
getComputePoolId();
}
/**
* TODO
*
* @throws TerremarkException
*/
@Order(2)
@Test
public void testComputePool() throws TerremarkException {
final ComputePool pool = client.getEnvironmentHandler().getComputePoolByID(computePoolId);
assertResource(pool);
assertNotNull("Invalid CPU burst: " + pool, pool.getCpuBurst());
assertNotNull("Invalid memory burst: " + pool, pool.getMemoryBurst());
assertNotNull("Invalid purchased: " + pool, pool.getPurchased());
assertNotNull("Invalid virtual machines: " + pool, pool.getVirtualMachines());
}
/**
* TODO
*
* @throws TerremarkException
*/
@Order(3)
@Test
public void testComputePoolEdit() throws TerremarkException {
ComputePool pool = client.getEnvironmentHandler().getComputePoolByID(computePoolId);
assertResource(pool);
String oldName = pool.getName();
pool.setName(NEW_COMPUTE_POOL_NAME);
pool = client.getEnvironmentHandler().computePoolEdit(pool);
assertEquals("Compute pool not renamed", NEW_COMPUTE_POOL_NAME, pool.getName());
pool.setName(oldName);
client.getEnvironmentHandler().computePoolEdit(pool);
assertEquals("Compute pool not renamed", oldName, pool.getName());
}
/**
* TODO
*
* @throws TerremarkException
*/
@Order(4)
@Test(expected = IllegalArgumentException.class)
public void testComputePoolEditNull() throws TerremarkException {
client.getEnvironmentHandler().computePoolEdit(null);
}
/**
* TODO
*
* @throws TerremarkException
*/
@Order(5)
@Test(expected = IllegalArgumentException.class)
public void testComputePoolEditNoName() throws TerremarkException {
ComputePool pool = client.getEnvironmentHandler().getComputePoolByID(computePoolId);
assertResource(pool);
pool.setName(null);
pool = client.getEnvironmentHandler().computePoolEdit(pool);
}
/**
* TODO
*
* @throws TerremarkException
*/
@Order(6)
@Test(expected = IllegalArgumentException.class)
public void testComputePoolEditLongName() throws TerremarkException {
ComputePool pool = client.getEnvironmentHandler().getComputePoolByID(computePoolId);
assertResource(pool);
pool.setName("abcdefghijklmnopqrstuvwxyz0123456789");
pool = client.getEnvironmentHandler().computePoolEdit(pool);
}
/**
* TODO
*
* @throws TerremarkException
*/
@Order(7)
@Test
public void testLayouts() throws TerremarkException {
DeviceLayout layout = client.getEnvironmentHandler().getLayouts(environmentId);
assertResourceNoName(layout);
// Create row 1
CreateLayoutRow createLayoutRow = new CreateLayoutRow();
createLayoutRow.setName("Row 1" + TEST_ID);
LayoutRow row1 = client.getEnvironmentHandler().layoutRowCreate(environmentId, createLayoutRow);
assertResource(row1);
// Create row 2
createLayoutRow.setName("Row 2" + TEST_ID);
LayoutRow row2 = client.getEnvironmentHandler().layoutRowCreate(environmentId, createLayoutRow);
assertResource(row2);
// Create group 1 in row 1
CreateLayoutGroup createLayoutGroup = new CreateLayoutGroup();
createLayoutGroup.setRow(TerremarkFactory.getReference(row1));
createLayoutGroup.setName("Group 1" + TEST_ID);
LayoutGroup group11 = client.getEnvironmentHandler().layoutGroupCreate(environmentId, createLayoutGroup);
assertResource(group11);
// Create group 2 in row 1
createLayoutGroup.setName("Group 2" + TEST_ID);
LayoutGroup group12 = client.getEnvironmentHandler().layoutGroupCreate(environmentId, createLayoutGroup);
assertResource(group12);
// Get row 1 and group 1 by ID
assertResource(client.getEnvironmentHandler().getLayoutRowByID(TerremarkFactory.getId(row1)));
assertResource(client.getEnvironmentHandler().getLayoutGroupByID(TerremarkFactory.getId(group11)));
// Edit row 1
row1.setName("New Row 1" + TEST_ID);
client.getEnvironmentHandler().layoutRowEdit(row1);
// Edit group 1
group11.setName("New Group 1" + TEST_ID);
client.getEnvironmentHandler().layoutGroupEdit(group11);
// Move row 1 down and then up
client.getEnvironmentHandler().layoutRowMoveDown(TerremarkFactory.getId(row1));
client.getEnvironmentHandler().layoutRowMoveUp(TerremarkFactory.getId(row1));
// Move group 1 down and then up. The following calls fail in Livespec environment
//client.getEnvironmentHandler().layoutGroupOrderLower(TerremarkFactory.getId(group11));
//client.getEnvironmentHandler().layoutGroupOrderHigher(TerremarkFactory.getId(group11));
// Remove all groups and rows
client.getEnvironmentHandler().layoutGroupRemove(TerremarkFactory.getId(group11));
client.getEnvironmentHandler().layoutGroupRemove(TerremarkFactory.getId(group12));
client.getEnvironmentHandler().layoutRowRemove(TerremarkFactory.getId(row1));
client.getEnvironmentHandler().layoutRowRemove(TerremarkFactory.getId(row2));
}
/**
* TODO
*
* @throws Exception If there is a problem retrieving resource summary information.
*/
@Order(8)
@Test
public void testResourceSummary() throws Exception {
ComputePoolResourceSummaryList summaryList = client.getComputePoolHandler().getResourceSummaryList(environmentId);
assertResourceNoName(summaryList);
ComputePools pools = client.getEnvironmentHandler().getComputePools(environmentId);
for (ComputePoolReference pool : pools.getComputePools()) {
assertReference(pool);
ComputePoolResourceSummary summary = client.getComputePoolHandler().getResourceSummary(TerremarkFactory.getId(pool));
assertResourceNoName(summary);
}
}
}