use of es.bsc.compss.types.resources.MethodResourceDescription in project compss by bsc-wdc.
the class ResourceManager method addCloudWorker.
/**
* Adds a cloud worker
*
* @param origin
* @param worker
* @param granted
*/
public static void addCloudWorker(ResourceCreationRequest origin, CloudMethodWorker worker, CloudMethodResourceDescription granted) {
synchronized (pool) {
CloudProvider cloudProvider = origin.getProvider();
cloudProvider.confirmedCreation(origin, worker, granted);
worker.updatedFeatures();
pool.addDynamicResource(worker);
pool.defineCriticalSet();
int[] maxTaskCount = worker.getSimultaneousTasks();
for (int coreId = 0; coreId < maxTaskCount.length; coreId++) {
poolCoreMaxConcurrentTasks[coreId] += maxTaskCount[coreId];
}
}
ResourceUpdate<MethodResourceDescription> ru = new PerformedIncrease<>(worker.getDescription());
resourceUser.updatedResource(worker, ru);
// Log new resource
RESOURCES_LOGGER.info("TIMESTAMP = " + String.valueOf(System.currentTimeMillis()));
RESOURCES_LOGGER.info("INFO_MSG = [New resource available in the pool. Name = " + worker.getName() + "]");
RUNTIME_LOGGER.info("New resource available in the pool. Name = " + worker.getName());
}
use of es.bsc.compss.types.resources.MethodResourceDescription in project compss by bsc-wdc.
the class CloudProviderTest method testCreateTwoVMOneResource.
@Test
public void testCreateTwoVMOneResource() {
Map<String, String> properties = new HashMap<>();
CloudProvider cp = null;
try {
cp = new CloudProvider(PROVIDER_NAME, 0, RUNTIME_CONNECTOR, null, null, properties);
} catch (Exception e) {
fail("Could not create the Cloud Provider");
return;
}
String imageName = "IMAGE" + (int) (Math.random() * 10000);
CloudImageDescription cid = new CloudImageDescription(imageName, new HashMap<>());
cp.addCloudImage(cid);
String typeName = "TYPE" + (int) (Math.random() * 10000);
float type1Memory = (float) Math.random() * 5;
MethodResourceDescription mrd1 = new MethodResourceDescription();
mrd1.setMemorySize(type1Memory);
CloudInstanceTypeDescription citd = new CloudInstanceTypeDescription(typeName, mrd1);
cp.addInstanceType(citd);
CloudMethodResourceDescription cmrd = new CloudMethodResourceDescription(citd, cid);
ResourceCreationRequest crc = cp.requestResourceCreation(cmrd);
CloudMethodResourceDescription cmrd2 = new CloudMethodResourceDescription(citd, cid);
ResourceCreationRequest crc2 = cp.requestResourceCreation(cmrd2);
String vmName = "VM" + (int) (Math.random() * 1000);
CloudMethodWorker cmw = new CloudMethodWorker(vmName, cp, cmrd, new FakeNode(vmName), 0, 0, 0, 0, new HashMap<>());
CloudMethodResourceDescription granted = new CloudMethodResourceDescription(citd, cid);
cp.confirmedCreation(crc, cmw, granted);
if (cp.getCurrentVMCount() != 2) {
fail("Cloud Provider is not properly accounting the number of requested VMs");
}
List<ResourceCreationRequest> pendingRequests = cp.getPendingRequests();
Set<CloudMethodWorker> workers = cp.getHostedWorkers();
if (pendingRequests.size() != 1) {
fail("Cloud Provider is not properly registering the pending creations requests");
}
if (workers.size() != 1) {
fail("Cloud Provider is not properly registering the hosted workers");
}
if (!workers.contains(cmw)) {
fail("Cloud Provider is not properly registering the hosted workers");
}
granted = new CloudMethodResourceDescription(citd, cid);
cp.confirmedCreation(crc2, cmw, granted);
if (cp.getCurrentVMCount() != 2) {
fail("Cloud Provider is not properly accounting the number of requested VMs");
}
pendingRequests = cp.getPendingRequests();
workers = cp.getHostedWorkers();
if (!pendingRequests.isEmpty()) {
fail("Cloud Provider is not properly registering the pending creations requests");
}
if (workers.size() != 1) {
fail("Cloud Provider is not properly registering the hosted workers");
}
if (!workers.contains(cmw)) {
fail("Cloud Provider is not properly registering the hosted workers");
}
}
use of es.bsc.compss.types.resources.MethodResourceDescription in project compss by bsc-wdc.
the class CloudProviderTest method testDestroyOneVMOneResource.
@Test
public void testDestroyOneVMOneResource() {
Map<String, String> properties = new HashMap<>();
CloudProvider cp = null;
try {
cp = new CloudProvider(PROVIDER_NAME, 0, RUNTIME_CONNECTOR, null, null, properties);
} catch (Exception e) {
fail("Could not create the Cloud Provider");
return;
}
String imageName = "IMAGE" + (int) (Math.random() * 10000);
CloudImageDescription cid = new CloudImageDescription(imageName, new HashMap<>());
cp.addCloudImage(cid);
String typeName = "TYPE" + (int) (Math.random() * 10000);
float type1Memory = (float) Math.random() * 5;
MethodResourceDescription mrd1 = new MethodResourceDescription();
mrd1.setMemorySize(type1Memory);
CloudInstanceTypeDescription citd = new CloudInstanceTypeDescription(typeName, mrd1);
cp.addInstanceType(citd);
CloudMethodResourceDescription cmrd = new CloudMethodResourceDescription(citd, cid);
ResourceCreationRequest crc = cp.requestResourceCreation(cmrd);
String vmName = "VM" + (int) (Math.random() * 1000);
ExtendedCloudMethodWorker cmw = new ExtendedCloudMethodWorker(vmName, cp, cmrd, new FakeNode(vmName), 0, new HashMap<>());
CloudMethodResourceDescription granted = new CloudMethodResourceDescription(citd, cid);
cp.confirmedCreation(crc, cmw, granted);
CloudMethodResourceDescription reduction = new CloudMethodResourceDescription(citd, cid);
cmw.getDescription().reduce(reduction);
cp.requestResourceReduction(cmw, reduction);
if (cp.getCurrentVMCount() != 0) {
fail("Cloud Provider is not properly accounting the number of requested VMs");
}
List<ResourceCreationRequest> pendingRequests = cp.getPendingRequests();
Set<CloudMethodWorker> workers = cp.getHostedWorkers();
if (!pendingRequests.isEmpty()) {
fail("Cloud Provider is not properly registering the pending creations requests");
}
if (!workers.isEmpty()) {
fail("Cloud Provider is not properly registering the hosted workers");
}
}
use of es.bsc.compss.types.resources.MethodResourceDescription in project compss by bsc-wdc.
the class CloudProviderTest method testTurnOn.
@Test
public void testTurnOn() {
Map<String, String> properties = new HashMap<>();
CloudProvider cp = null;
try {
cp = new CloudProvider(PROVIDER_NAME, 0, RUNTIME_CONNECTOR, null, null, properties);
} catch (Exception e) {
fail("Could not create the Cloud Provider");
return;
}
String imageName = "IMAGE" + (int) (Math.random() * 10000);
CloudImageDescription cid = new CloudImageDescription(imageName, new HashMap<>());
cp.addCloudImage(cid);
String typeName = "TYPE" + (int) (Math.random() * 10000);
float type1Memory = (float) Math.random() * 5;
MethodResourceDescription mrd1 = new MethodResourceDescription();
mrd1.setMemorySize(type1Memory);
CloudInstanceTypeDescription citd = new CloudInstanceTypeDescription(typeName, mrd1);
cp.addInstanceType(citd);
if (cp.getCurrentVMCount() != 0) {
fail("Cloud Provider is not properly intialized the number of requested VMs should be 0");
}
CloudMethodResourceDescription cmrd = new CloudMethodResourceDescription(citd, cid);
ResourceCreationRequest crc = cp.requestResourceCreation(cmrd);
if (!FakeConnector.getProcessedRequests().contains(crc)) {
fail("Turn on has not reached the connector");
}
if (cp.getCurrentVMCount() != 1) {
fail("Cloud Provider is not properly accounting the number of requested VMs");
}
List<ResourceCreationRequest> pendingRequests = cp.getPendingRequests();
if (!pendingRequests.contains(crc)) {
fail("Cloud Provider is not properly registering the pending creations requests");
}
if (pendingRequests.size() != 1) {
fail("Cloud Provider is not properly registering the pending creations requests");
}
cmrd = new CloudMethodResourceDescription(citd, cid);
cmrd.addInstance(citd);
ResourceCreationRequest crc2 = cp.requestResourceCreation(cmrd);
pendingRequests = cp.getPendingRequests();
if (!pendingRequests.contains(crc)) {
fail("Cloud Provider is not properly registering the pending creations requests");
}
if (!pendingRequests.contains(crc2)) {
fail("Cloud Provider is not properly registering the pending creations requests");
}
if (pendingRequests.size() != 2) {
fail("Cloud Provider is not properly registering the pending creations requests");
}
if (!FakeConnector.getProcessedRequests().contains(crc)) {
fail("Turn on has not reached the connector");
}
if (cp.getCurrentVMCount() != 3) {
fail("Cloud Provider is not properly accounting the number of requested VMs");
}
}
use of es.bsc.compss.types.resources.MethodResourceDescription in project compss by bsc-wdc.
the class CloudProviderTest method testTwoInstanceType.
@Test
public void testTwoInstanceType() {
Map<String, String> properties = new HashMap<>();
CloudProvider cp = null;
try {
cp = new CloudProvider(PROVIDER_NAME, 0, RUNTIME_CONNECTOR, null, null, properties);
} catch (Exception e) {
fail("Could not create the Cloud Provider");
return;
}
String type1Name = "TYPE" + (int) (Math.random() * 10000);
float type1Memory = (float) Math.random() * 5;
MethodResourceDescription mrd1 = new MethodResourceDescription();
mrd1.setMemorySize(type1Memory);
CloudInstanceTypeDescription citd1 = new CloudInstanceTypeDescription(type1Name, mrd1);
cp.addInstanceType(citd1);
String type2Name = "TYPE" + (int) (Math.random() * 10000);
float type2Memory = (float) Math.random() * 5;
MethodResourceDescription mrd2 = new MethodResourceDescription();
mrd2.setMemorySize(type1Memory);
CloudInstanceTypeDescription citd2 = new CloudInstanceTypeDescription(type2Name, mrd2);
cp.addInstanceType(citd2);
Set<String> instanceNames = cp.getAllInstanceTypeNames();
int contains = 0;
if (instanceNames.contains(type1Name)) {
contains++;
}
if (instanceNames.contains(type2Name)) {
contains++;
}
switch(contains) {
case 0:
fail("Cloud Provider is not storing properly the Templates. Cannot find any template name on the two templates scenario.");
break;
case 1:
fail("Cloud Provider is not storing properly the Templates. Cannot find one template name on the two templates scenario.");
break;
default:
}
if (instanceNames.size() != 2) {
fail("Cloud Provider is not storing properly the Templates. only two templates are supposed to be in the set.");
}
CloudInstanceTypeDescription retrieved1 = cp.getInstanceType(type1Name);
try {
checkRetrievedType(retrieved1, type1Name, type1Memory);
} catch (Exception e) {
fail("Cloud Provider is not storing properly the Templates. The provider " + e.getMessage() + " on the two templates scenario.");
}
CloudInstanceTypeDescription retrieved2 = cp.getInstanceType(type2Name);
try {
checkRetrievedType(retrieved2, type2Name, type2Memory);
} catch (Exception e) {
fail("Cloud Provider is not storing properly the Templates. The provider " + e.getMessage() + " on the two templates scenario.");
}
}
Aggregations