Skip to content
Snippets Groups Projects
Commit f8afde51 authored by Johannes Mey's avatar Johannes Mey
Browse files

resource classes do not have sub-resources

parent bd0c5096
No related branches found
No related tags found
No related merge requests found
Showing
with 19 additions and 35 deletions
......@@ -330,7 +330,7 @@ ResourceMapping resource_mapping =
:}
| NAME.i RIGHT_ARROW NAME.res LB_CURLY resource_mapping.rml* RB_CURLY
{:
ResourceMapping result = new ResourceResourceMapping(null, rml, null);
ResourceMapping result = new ResourceResourceMapping(null, null, rml);
mph.resourceMappingTerminals.put(result, new Tuple<>(i, res));
return result;
:}
......
......@@ -38,9 +38,6 @@ aspect Helpers {
ResourceClassMapping copy = new ResourceClassMapping();
copy.setInstance(this.getInstance());
copy.setResourceClass(this.getResourceClass());
for (ResourceMapping subMapping : getResourceMappingList()) {
copy.addResourceMapping(subMapping.deepCopy());
}
return copy;
}
......
......@@ -46,15 +46,7 @@ aspect Printing {
MquatString result = new MquatString(settings, indentationLevel);
result.append(getInstance() == null ? "<no instance>" : getInstance().name())
.append(" -> ").append((getResourceClass() == null) ? "<no resource class>" : "{" + getResourceClass().name() + "}");
if (getNumResourceMapping() > 0) {
result.append(" {").lb().ind();
for (ResourceMapping subMapping : getResourceMappingList()) {
result.append(subMapping.print(settings, indentationLevel));
}
result.und().append("}").lb();
} else {
result.lb();
}
return result;
}
......
Solution ::= <Model:Root> Assignment* ;
Assignment ::= <TopLevel:boolean> <Request:Request> <Implementation:Implementation> ResourceMapping ComponentMapping* ;
abstract ResourceMapping ::= <Instance:Instance> ResourceMapping* ;
ResourceResourceMapping:ResourceMapping ::= <Resource:Resource> ;
abstract ResourceMapping ::= <Instance:Instance> ;
ResourceResourceMapping:ResourceMapping ::= <Resource:Resource> ResourceMapping* ;
ResourceClassMapping:ResourceMapping ::= <ResourceClass:ResourceClass> ;
ComponentMapping ::= <Instance:Instance> Assignment ;
......@@ -30,13 +30,8 @@ aspect Traversal {
}
}
eq ResourceClassMapping.mappedResource(Instance instance) {
for (ResourceMapping subMapping : this.getResourceMappingList()) {
Resource result = subMapping.mappedResource(instance);
if (result != null) {
return result;
}
}
return null;
// TODO this method does not make sense.
throw new RuntimeException("A ResourceClassMapping does not have a mapped resource!");
}
syn java.util.List<Assignment> Assignment.allAssignments() {
......
......@@ -8,7 +8,7 @@ aspect Helpers {
if (impl != null) {
assignment.setImplementation(impl);
ResourceResourceMapping mapping = new ResourceResourceMapping(impl.getResourceRequirement().getInstance(0),new List<>(),resource);
ResourceResourceMapping mapping = new ResourceResourceMapping(impl.getResourceRequirement().getInstance(0),resource,new List<>());
Resource.populateResourceMapping(mapping,impl.getResourceRequirement(),resource);
assignment.setResourceMapping(mapping);
}
......@@ -23,7 +23,7 @@ aspect Helpers {
if (impl != null) {
assignment.setImplementation(impl);
ResourceClassMapping mapping = new ResourceClassMapping(impl.getResourceRequirement().getInstance(0),new List<>(),resourceClass);
ResourceClassMapping mapping = new ResourceClassMapping(impl.getResourceRequirement().getInstance(0), resourceClass);
// Resource.populateResourceMapping(mapping,impl.getResourceRequirement(),resource);
assignment.setResourceMapping(mapping);
}
......
......@@ -10,7 +10,7 @@ aspect SolverUtils {
Resource subResource = resource.getSubResource(currentResource);
if (subResource.getType().getRef() == subRequirement.getResourceTypeRef().getRef()) {
if (currentInstance == fittingResourceCount) {
ResourceResourceMapping newMapping = new ResourceResourceMapping(instance, new List<>(), subResource);
ResourceResourceMapping newMapping = new ResourceResourceMapping(instance, subResource, new List<>());
mapping.addResourceMapping(newMapping);
populateResourceMapping(newMapping, subRequirement, subResource);
fittingResourceCount++;
......
......@@ -35,7 +35,7 @@ aspect Construction {
}
for (Instance instance : implementation.getResourceRequirement().getInstanceList()) {
assignment.setResourceMapping(new ResourceResourceMapping(instance, new List<>(), null));
assignment.setResourceMapping(new ResourceResourceMapping(instance, null, new List<>()));
}
return assignment;
......
......@@ -110,7 +110,7 @@ aspect Iterator {
assignment.setImplementation(newImplementation);
// the resourceRequirementAssignments change (even though just the keys are set.)
assignment.setResourceMapping(new ResourceResourceMapping(newImplementation.getResourceRequirement().getInstance(0), new List<>(), null));
assignment.setResourceMapping(new ResourceResourceMapping(newImplementation.getResourceRequirement().getInstance(0), null, new List<>()));
// the componentRequirementAssignments change!
assignment.setComponentMappingList(new List<>());
......
......@@ -568,7 +568,7 @@ public class ScenarioGenerator {
// add a new resource to allocate the current component to
Resource resource = createResource(model);
model.getHardwareModel().addResource(resource);
currentAssignment.setResourceMapping(new ResourceResourceMapping(currentAssignment.getImplementation().getResourceRequirement().getInstance(0), new List<>(), resource));
currentAssignment.setResourceMapping(new ResourceResourceMapping(currentAssignment.getImplementation().getResourceRequirement().getInstance(0), resource, new List<>()));
// do the recursive assignment of dependent components
for (ComponentRequirement componentRequirement : implementation.getComponentRequirementList()) {
......@@ -635,7 +635,7 @@ public class ScenarioGenerator {
if (sub.getType().getRef().equals(cpuType)) {
for (CurrentResourceValue value : sub.getCurrentResourceValueList()) {
if (value.getPropertyRef().getRef().getName().getName().equals("frequency")) {
computeResourceMapping.addResourceMapping(new ResourceResourceMapping(cpuInstance[currentCpu], new List<>(), sub));
computeResourceMapping.addResourceMapping(new ResourceResourceMapping(cpuInstance[currentCpu], sub, new List<>()));
if (logger.isTraceEnabled()) {
logger.trace("set frequency value from {} to {}", value.getValue().evalAsDouble(), frequencyValue[currentCpu]);
}
......@@ -645,14 +645,14 @@ public class ScenarioGenerator {
}
} else if (sub.getType().getRef().equals(ramType)) {
setTotalStorageValue(computeResourceMapping, totalRamValue, ramInstance, sub);
computeResourceMapping.addResourceMapping(new ResourceResourceMapping(ramInstance, new List<>(), sub));
computeResourceMapping.addResourceMapping(new ResourceResourceMapping(ramInstance, sub, new List<>()));
} else if (sub.getType().getRef().equals(diskType)) {
setTotalStorageValue(computeResourceMapping, totalDiskValue, diskInstance, sub);
computeResourceMapping.addResourceMapping(new ResourceResourceMapping(diskInstance, new List<>(), sub));
computeResourceMapping.addResourceMapping(new ResourceResourceMapping(diskInstance, sub, new List<>()));
} else if (sub.getType().getRef().equals(networkType)) {
for (CurrentResourceValue value : sub.getCurrentResourceValueList()) {
if (value.getPropertyRef().getRef().getName().getName().equals("throughput")) {
computeResourceMapping.addResourceMapping(new ResourceResourceMapping(networkInstance, new List<>(), sub));
computeResourceMapping.addResourceMapping(new ResourceResourceMapping(networkInstance, sub, new List<>()));
if (logger.isTraceEnabled()) {
logger.trace("set throughput value from {} to {}", value.getValue().evalAsDouble(), networkThroughputValue);
}
......
......@@ -117,7 +117,7 @@ public abstract class AbstractILPSolver implements BenchmarkableSolver {
Assignment assignment = new Assignment();
assignment.setRequest(mappingVar.getRequest());
assignment.setImplementation(mappingVar.getImpl());
assignment.setResourceMapping(new ResourceResourceMapping(assignment.getImplementation().getResourceRequirement().getInstance(0), new de.tudresden.inf.st.mquat.jastadd.model.List<>(), mappingVar.getResource()));
assignment.setResourceMapping(new ResourceResourceMapping(assignment.getImplementation().getResourceRequirement().getInstance(0), mappingVar.getResource(), new de.tudresden.inf.st.mquat.jastadd.model.List<>()));
listOfAssignments.add(assignment);
}
}
......
......@@ -21,7 +21,7 @@ public class SolverUtils {
Implementation impl = assignment.getImplementation();
Resource resource = assignment.getResource();
ResourceResourceMapping mapping = new ResourceResourceMapping(impl.getResourceRequirement().getInstance(0), new de.tudresden.inf.st.mquat.jastadd.model.List<>(), resource);
ResourceResourceMapping mapping = new ResourceResourceMapping(impl.getResourceRequirement().getInstance(0), resource, new de.tudresden.inf.st.mquat.jastadd.model.List<>());
Resource.populateResourceMapping(mapping, impl.getResourceRequirement(), resource);
assignment.setResourceMapping(mapping);
......
......@@ -55,7 +55,7 @@ public abstract class HandwrittenTestSuite {
Assignment expectedAssignment = new Assignment();
expectedAssignment.setRequest(model.getRequest(request));
expectedAssignment.setImplementation(model.resolveImplementation(impl).get());
expectedAssignment.setResourceMapping(new ResourceResourceMapping(expectedAssignment.getImplementation().getResourceRequirement().getInstance(0), new List<>(), model.resolveResource(resource).get()));
expectedAssignment.setResourceMapping(new ResourceResourceMapping(expectedAssignment.getImplementation().getResourceRequirement().getInstance(0), model.resolveResource(resource).get(), new List<>()));
// check if assignment matches (partly) one listed in the solution
Iterator<Assignment> assignmentIterator = modelAndSolution.getSecondElement().assignmentIterator();
while (assignmentIterator.hasNext()) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment