Search in sources :

Example 41 with AllocationContext

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);
                }
            }
        }
    }
}
Also used : AllocationContext(org.palladiosimulator.pcm.allocation.AllocationContext) Set(java.util.Set) TcpDeactivationControlEvent(org.iobserve.utility.tcp.events.TcpDeactivationControlEvent) OperationSignature(org.palladiosimulator.pcm.repository.OperationSignature) ControlEventCreationFailedException(org.iobserve.service.privacy.violation.exceptions.ControlEventCreationFailedException)

Example 42 with AllocationContext

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;
}
Also used : AllocationContext(org.palladiosimulator.pcm.allocation.AllocationContext) Set(java.util.Set) HashSet(java.util.HashSet) HashMap(java.util.HashMap) OperationSignature(org.palladiosimulator.pcm.repository.OperationSignature) HashSet(java.util.HashSet)

Example 43 with AllocationContext

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;
}
Also used : AllocationContext(org.palladiosimulator.pcm.allocation.AllocationContext) HashSet(java.util.HashSet) LinkedHashSet(java.util.LinkedHashSet) Set(java.util.Set) HashMap(java.util.HashMap) OperationSignature(org.palladiosimulator.pcm.repository.OperationSignature) Edge(org.iobserve.service.privacy.violation.transformation.analysisgraph.Edge)

Example 44 with AllocationContext

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;
}
Also used : AllocationContext(org.palladiosimulator.pcm.allocation.AllocationContext) LinkedHashSet(java.util.LinkedHashSet) DBException(org.iobserve.model.persistence.DBException) InvocationException(org.iobserve.model.persistence.neo4j.InvocationException)

Example 45 with AllocationContext

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()));
}
Also used : Vertex(org.iobserve.service.privacy.violation.transformation.analysisgraph.Vertex) Set(java.util.Set) HashSet(java.util.HashSet) HashMap(java.util.HashMap) ModelProbeController(org.iobserve.service.privacy.violation.filter.ModelProbeController) ProbeManagementData(org.iobserve.service.privacy.violation.data.ProbeManagementData) WarningModel(org.iobserve.service.privacy.violation.data.WarningModel) LinkedList(java.util.LinkedList) AllocationContext(org.palladiosimulator.pcm.allocation.AllocationContext) OperationSignature(org.palladiosimulator.pcm.repository.OperationSignature) Edge(org.iobserve.service.privacy.violation.transformation.analysisgraph.Edge) HashSet(java.util.HashSet) Test(org.junit.Test)

Aggregations

AllocationContext (org.palladiosimulator.pcm.allocation.AllocationContext)48 AssemblyContext (org.palladiosimulator.pcm.core.composition.AssemblyContext)16 Set (java.util.Set)11 OperationSignature (org.palladiosimulator.pcm.repository.OperationSignature)11 ResourceContainer (org.palladiosimulator.pcm.resourceenvironment.ResourceContainer)11 HashSet (java.util.HashSet)10 HashMap (java.util.HashMap)9 Allocation (org.palladiosimulator.pcm.allocation.Allocation)9 Test (org.junit.Test)7 LinkedHashSet (java.util.LinkedHashSet)4 ProbeManagementData (org.iobserve.service.privacy.violation.data.ProbeManagementData)4 Edge (org.iobserve.service.privacy.violation.transformation.analysisgraph.Edge)4 DBException (org.iobserve.model.persistence.DBException)3 InvocationException (org.iobserve.model.persistence.neo4j.InvocationException)3 ControlEventCreationFailedException (org.iobserve.service.privacy.violation.exceptions.ControlEventCreationFailedException)3 Vertex (org.iobserve.service.privacy.violation.transformation.analysisgraph.Vertex)3 RepositoryComponent (org.palladiosimulator.pcm.repository.RepositoryComponent)3 ResourceEnvironment (org.palladiosimulator.pcm.resourceenvironment.ResourceEnvironment)3 LinkedList (java.util.LinkedList)2 AllocationEntry (org.iobserve.model.correspondence.AllocationEntry)2