use of org.palladiosimulator.pcm.allocation.AllocationContext in project iobserve-analysis by research-iobserve.
the class ProbeMapper method createMethodsToDeactivate.
private void createMethodsToDeactivate(final ProbeManagementData element) throws ControlEventCreationFailedException, InvocationException, DBException {
final Map<AllocationContext, Set<OperationSignature>> methodsToDeactivate = element.getMethodsToDeactivate();
if (methodsToDeactivate != null) {
this.logger.debug("methods to deactivate");
for (final AllocationContext allocation : methodsToDeactivate.keySet()) {
this.logger.debug("AllocationContext to deactivate {}", allocation.getEntityName());
for (final OperationSignature operationSignature : methodsToDeactivate.get(allocation)) {
try {
final String pattern = this.computeAllocationComponentIdentifierPattern(allocation, operationSignature);
this.logger.debug("AllocationContext deactivate operation {} -- {}", operationSignature.getEntityName(), pattern);
// deactivation -> no parameters needed
final TcpDeactivationControlEvent currentEvent = new TcpDeactivationControlEvent(pattern, element.getTriggerTime());
this.fillTcpControlEvent(currentEvent, allocation);
this.outputPort.send(currentEvent);
} catch (final ControlEventCreationFailedException e) {
this.logger.error("Could not construct deactivation event for: " + operationSignature.toString(), e);
}
}
}
}
}
use of org.palladiosimulator.pcm.allocation.AllocationContext in project iobserve-analysis by research-iobserve.
the class ModelProbeController method computeNewWarningMap.
private Map<AllocationContext, Set<OperationSignature>> computeNewWarningMap(final Map<AllocationContext, Set<OperationSignature>> currentWarnings, final Map<AllocationContext, Set<OperationSignature>> addedWarnings, final Map<AllocationContext, Set<OperationSignature>> missingWarnings) {
final Map<AllocationContext, Set<OperationSignature>> newWarningMap = new HashMap<>(currentWarnings);
for (final AllocationContext allocation : missingWarnings.keySet()) {
Set<OperationSignature> currentMethodSet = new HashSet<>();
if (currentWarnings.get(allocation) != null) {
currentMethodSet = new HashSet<>(currentWarnings.get(allocation));
}
currentMethodSet.removeAll(missingWarnings.get(allocation));
if (currentMethodSet.isEmpty()) {
newWarningMap.remove(allocation);
} else {
newWarningMap.put(allocation, currentMethodSet);
}
}
for (final AllocationContext allocation : addedWarnings.keySet()) {
Set<OperationSignature> currentMethodSet = new HashSet<>();
if (currentWarnings.get(allocation) != null) {
currentMethodSet = new HashSet<>(currentWarnings.get(allocation));
}
currentMethodSet.addAll(addedWarnings.get(allocation));
if (currentMethodSet.isEmpty()) {
newWarningMap.remove(allocation);
} else {
newWarningMap.put(allocation, currentMethodSet);
}
}
return newWarningMap;
}
use of org.palladiosimulator.pcm.allocation.AllocationContext in project iobserve-analysis by research-iobserve.
the class NonAdaptiveModelProbeController method idenitifyProtectedOperations.
/**
* Identify the set of allocations which are mentioned by the warnings collect all operation
* signatures which are considered relevant for data protection.
*
* @param warningEdges
* the privacy analysis warnings model edges
* @return map of {@link AllocationContext}s and {@link OperationSignature}s relevant for data
* protection
*/
private Map<AllocationContext, Set<OperationSignature>> idenitifyProtectedOperations(final List<Edge> warningEdges) {
final Map<AllocationContext, Set<OperationSignature>> protectedOperationsPerAllocation = new HashMap<>();
if (warningEdges != null && warningEdges.isEmpty()) {
for (final Edge edge : warningEdges) {
// multiple methods per allocation possible
final AllocationContext allocation = edge.getSource().getAllocationContext();
Set<OperationSignature> operationSignatures = protectedOperationsPerAllocation.get(allocation);
// if not present, add new entry
if (operationSignatures == null) {
operationSignatures = new HashSet<>();
}
if (edge.getOperationSignature() != null) {
operationSignatures.add(edge.getOperationSignature());
protectedOperationsPerAllocation.put(allocation, operationSignatures);
} else {
this.logger.debug("Recevied warning without operation signature");
}
}
}
return protectedOperationsPerAllocation;
}
use of org.palladiosimulator.pcm.allocation.AllocationContext in project iobserve-analysis by research-iobserve.
the class WhitelistFilter method computeAvailableIps.
private Set<String> computeAvailableIps() throws DBException {
final List<AllocationContext> allocations = this.allocationResource.collectAllObjectsByType(AllocationContext.class, AllocationPackage.Literals.ALLOCATION_CONTEXT);
final Set<String> availableIps = new LinkedHashSet<>();
for (final AllocationContext allocation : allocations) {
try {
availableIps.add(this.resourceEnvironmentResource.resolve(allocation.getResourceContainer_AllocationContext()).getEntityName());
} catch (InvocationException | DBException e) {
this.logger.error("Could not resolve resource container during the computation of the IP from: " + allocation, e);
}
}
return availableIps;
}
use of org.palladiosimulator.pcm.allocation.AllocationContext in project iobserve-analysis by research-iobserve.
the class ModelProbeControllerTest method testComputedMethodsToActivateAndToDeactivate.
@Test
public void testComputedMethodsToActivateAndToDeactivate() {
this.modelProbeController = new ModelProbeController();
final OperationSignature operationSignature1 = Mockito.mock(OperationSignature.class);
final OperationSignature operationSignature2 = Mockito.mock(OperationSignature.class);
final AllocationContext allocationContext1 = Mockito.mock(AllocationContext.class);
final AllocationContext allocationContext2 = Mockito.mock(AllocationContext.class);
final WarningModel warnings1 = new WarningModel();
final Edge edge1 = new Edge(new Vertex("test vertex 1", EStereoType.DATASOURCE), new Vertex("test vertex 2", EStereoType.DATASOURCE));
edge1.setOperationSignature(operationSignature1);
edge1.getSource().setAllocationContext(allocationContext1);
final Edge edge2 = new Edge(new Vertex("test vertex 3", EStereoType.DATASOURCE), new Vertex("test vertex 4", EStereoType.DATASOURCE));
edge2.setOperationSignature(operationSignature2);
edge2.getSource().setAllocationContext(allocationContext2);
warnings1.addWarningEdge(edge1);
warnings1.addWarningEdge(edge2);
final Map<AllocationContext, Set<OperationSignature>> methodsToActivate1 = new HashMap<>();
final Set<OperationSignature> methodsSet1 = new HashSet<>();
methodsSet1.add(operationSignature1);
methodsToActivate1.put(allocationContext1, methodsSet1);
final Set<OperationSignature> methodsSet2 = new HashSet<>();
methodsSet2.add(operationSignature2);
methodsToActivate1.put(allocationContext2, methodsSet2);
final ProbeManagementData expectedOutcome1 = new ProbeManagementData(methodsToActivate1, new HashMap<AllocationContext, Set<OperationSignature>>());
// deactivate 1, keep 1, add 1 to existing and add double set / allocation to output port
final OperationSignature operationSignature3 = Mockito.mock(OperationSignature.class);
final OperationSignature operationSignature4 = Mockito.mock(OperationSignature.class);
final OperationSignature operationSignature5 = Mockito.mock(OperationSignature.class);
final AllocationContext allocationContext3 = Mockito.mock(AllocationContext.class);
final Edge edge3 = new Edge(new Vertex("test vertex 5", EStereoType.DATASOURCE), new Vertex("test vertex 6", EStereoType.DATASOURCE));
edge3.setOperationSignature(operationSignature3);
edge3.getSource().setAllocationContext(allocationContext2);
final Edge edge4 = new Edge(new Vertex("test vertex 7", EStereoType.DATASOURCE), new Vertex("test vertex 8", EStereoType.DATASOURCE));
edge4.setOperationSignature(operationSignature4);
edge4.getSource().setAllocationContext(allocationContext3);
final Edge edge5 = new Edge(new Vertex("test vertex 9", EStereoType.DATASOURCE), new Vertex("test vertex 10", EStereoType.DATASOURCE));
edge5.setOperationSignature(operationSignature5);
edge5.getSource().setAllocationContext(allocationContext3);
final WarningModel warnings2 = new WarningModel();
warnings2.addWarningEdge(edge2);
warnings2.addWarningEdge(edge3);
warnings2.addWarningEdge(edge4);
warnings2.addWarningEdge(edge5);
final Map<AllocationContext, Set<OperationSignature>> methodsToActivate2 = new HashMap<>();
final Set<OperationSignature> methodsSet3 = new HashSet<>();
methodsSet3.add(operationSignature3);
methodsToActivate2.put(allocationContext2, methodsSet3);
final Set<OperationSignature> methodsSet4 = new HashSet<>();
methodsSet4.add(operationSignature4);
methodsSet4.add(operationSignature5);
methodsToActivate2.put(allocationContext3, methodsSet4);
final Map<AllocationContext, Set<OperationSignature>> methodsToDeactivate2 = new HashMap<>();
methodsToDeactivate2.put(allocationContext1, methodsSet1);
final ProbeManagementData expectedOutcome2 = new ProbeManagementData(methodsToActivate2, methodsToDeactivate2);
final List<WarningModel> input = new LinkedList<>();
input.add(warnings1);
input.add(warnings2);
final List<ProbeManagementData> output = new LinkedList<>();
StageTester.test(this.modelProbeController).and().send(input).to(this.modelProbeController.getInputPort()).receive(output).from(this.modelProbeController.getOutputPort()).start();
Assert.assertTrue(output.get(0).getMethodsToActivate().equals(expectedOutcome1.getMethodsToActivate()));
Assert.assertTrue(output.get(0).getMethodsToDeactivate().equals(expectedOutcome1.getMethodsToDeactivate()));
Assert.assertTrue(output.get(1).getMethodsToActivate().equals(expectedOutcome2.getMethodsToActivate()));
Assert.assertTrue(output.get(1).getMethodsToDeactivate().equals(expectedOutcome2.getMethodsToDeactivate()));
}
Aggregations