Search in sources :

Example 1 with ContainerAllocationEvent

use of org.iobserve.common.record.ContainerAllocationEvent in project iobserve-analysis by research-iobserve.

the class DynamicEventDispatcherTest method initializeRecordSwitch.

/**
 * Initialize the record switch test setup.
 */
@Before
public void initializeRecordSwitch() {
    this.kiekerMetadataRecords.add(new KiekerMetadataRecord(DynamicEventDispatcherTest.VERSION, DynamicEventDispatcherTest.CONTROLLER_NAME, DynamicEventDispatcherTest.HOSTNAME, DynamicEventDispatcherTest.EXPERIMENT_ID, DynamicEventDispatcherTest.DEBUG_MODE, DynamicEventDispatcherTest.TIME_OFFSET, DynamicEventDispatcherTest.TIME_UNIT, DynamicEventDispatcherTest.NUMBER_OF_RECORDS));
    /**
     * allocation.
     */
    this.allocationRecords.add(new ContainerAllocationEvent(DynamicEventDispatcherTest.URL));
    /**
     * declare deployment records.
     */
    this.deploymentRecords.add(new ServletDeployedEvent(this.time++, DynamicEventDispatcherTest.SERVICE, DynamicEventDispatcherTest.CONTEXT, DynamicEventDispatcherTest.DEPLOYMENT_ID));
    this.deploymentRecords.add(new EJBDeployedEvent(this.time++, DynamicEventDispatcherTest.SERVICE, DynamicEventDispatcherTest.CONTEXT, DynamicEventDispatcherTest.DEPLOYMENT_ID));
    /**
     * geolocation.
     */
    this.geolocationRecords.add(new ServerGeoLocation(this.time++, DynamicEventDispatcherTest.COUNTRY_CODE, DynamicEventDispatcherTest.HOSTNAME, DynamicEventDispatcherTest.ADDRESS));
    /**
     * session event (start).
     */
    final SessionStartEvent sessionStartEvent = new SessionStartEvent(this.time++, DynamicEventDispatcherTest.HOSTNAME, DynamicEventDispatcherTest.SESSION_ID);
    this.sessionEventRecords.add(sessionStartEvent);
    /**
     * start trace.
     */
    final TraceMetadata traceMetadata = new TraceMetadata(DynamicEventDispatcherTest.TRACE_ID, DynamicEventDispatcherTest.THREAD_ID, DynamicEventDispatcherTest.SESSION_ID, DynamicEventDispatcherTest.HOSTNAME, 0, -1);
    this.traceMetadataRecords.add(traceMetadata);
    this.flowRecords.add(traceMetadata);
    /**
     * flow record.
     */
    this.flowRecords.add(new BeforeOperationEvent(this.time++, DynamicEventDispatcherTest.TRACE_ID, DynamicEventDispatcherTest.ORDER_INDEX, DynamicEventDispatcherTest.OPERATION_SIGNATURE, DynamicEventDispatcherTest.CLASS_SIGNATURE));
    this.flowRecords.add(new AfterOperationEvent(this.time++, DynamicEventDispatcherTest.TRACE_ID, DynamicEventDispatcherTest.ORDER_INDEX + 1, DynamicEventDispatcherTest.OPERATION_SIGNATURE, DynamicEventDispatcherTest.CLASS_SIGNATURE));
    /**
     * session event (end).
     */
    final SessionEndEvent sessionEndEvent = new SessionEndEvent(this.time++, DynamicEventDispatcherTest.HOSTNAME, DynamicEventDispatcherTest.SESSION_ID);
    this.sessionEventRecords.add(sessionEndEvent);
    /**
     * declare undeployment records.
     */
    this.undeploymentRecords.add(new ServletUndeployedEvent(this.time++, DynamicEventDispatcherTest.SERVICE, DynamicEventDispatcherTest.CONTEXT, DynamicEventDispatcherTest.DEPLOYMENT_ID));
    this.undeploymentRecords.add(new EJBUndeployedEvent(this.time++, DynamicEventDispatcherTest.SERVICE, DynamicEventDispatcherTest.CONTEXT, DynamicEventDispatcherTest.DEPLOYMENT_ID));
    /**
     * allocation.
     */
    this.deallocationRecords.add(new ContainerDeallocationEvent(DynamicEventDispatcherTest.URL));
    /**
     * other records.
     */
    this.otherRecords.add(new GCRecord(this.time++, DynamicEventDispatcherTest.HOSTNAME, DynamicEventDispatcherTest.VM_NAME, DynamicEventDispatcherTest.GC_NAME, DynamicEventDispatcherTest.COLLECTION_COUNT, DynamicEventDispatcherTest.COLLECTION_TIME_MS));
    /**
     * declare all input record types.
     */
    this.inputRecords.addAll(this.kiekerMetadataRecords);
    this.inputRecords.addAll(this.allocationRecords);
    this.inputRecords.addAll(this.deploymentRecords);
    this.inputRecords.addAll(this.geolocationRecords);
    this.inputRecords.add(sessionStartEvent);
    this.inputRecords.addAll(this.flowRecords);
    this.inputRecords.add(sessionEndEvent);
    this.inputRecords.addAll(this.undeploymentRecords);
    this.inputRecords.addAll(this.deallocationRecords);
    this.inputRecords.addAll(this.otherRecords);
}
Also used : AfterOperationEvent(kieker.common.record.flow.trace.operation.AfterOperationEvent) EJBDeployedEvent(org.iobserve.common.record.EJBDeployedEvent) KiekerMetadataRecord(kieker.common.record.misc.KiekerMetadataRecord) EJBUndeployedEvent(org.iobserve.common.record.EJBUndeployedEvent) ContainerDeallocationEvent(org.iobserve.common.record.ContainerDeallocationEvent) GCRecord(kieker.common.record.jvm.GCRecord) ServletUndeployedEvent(org.iobserve.common.record.ServletUndeployedEvent) SessionStartEvent(org.iobserve.common.record.SessionStartEvent) SessionEndEvent(org.iobserve.common.record.SessionEndEvent) ContainerAllocationEvent(org.iobserve.common.record.ContainerAllocationEvent) ServerGeoLocation(org.iobserve.common.record.ServerGeoLocation) TraceMetadata(kieker.common.record.flow.trace.TraceMetadata) ServletDeployedEvent(org.iobserve.common.record.ServletDeployedEvent) BeforeOperationEvent(kieker.common.record.flow.trace.operation.BeforeOperationEvent) Before(org.junit.Before)

Example 2 with ContainerAllocationEvent

use of org.iobserve.common.record.ContainerAllocationEvent in project iobserve-analysis by research-iobserve.

the class SynthesizeAllocationEventStage method execute.

@Override
protected void execute(final PCMDeployedEvent event) throws Exception {
    final ResourceContainer resourceContainer = ResourceEnvironmentModelFactory.getResourceContainerByName(this.resourceEnvironmentModelGraphProvider.readOnlyRootComponent(ResourceEnvironment.class), event.getService()).get();
    if (resourceContainer != null) {
        /**
         * execution environment exists. Can deploy.
         */
        event.setResourceContainer(resourceContainer);
        this.deployedOutputPort.send(event);
    } else {
        /**
         * If the resource container with this serverName is not available, send an event to
         * TAllocation (creating the resource container) and forward the deployment event to
         * TDeployment (deploying on created resource container).
         */
        this.allocationOutputPort.send(new ContainerAllocationEvent(event.getUrl()));
        this.deployedRelayOutputPort.send(event);
    }
}
Also used : ContainerAllocationEvent(org.iobserve.common.record.ContainerAllocationEvent) ResourceContainer(org.palladiosimulator.pcm.resourceenvironment.ResourceContainer)

Example 3 with ContainerAllocationEvent

use of org.iobserve.common.record.ContainerAllocationEvent in project iobserve-analysis by research-iobserve.

the class AllocationStage method execute.

/**
 * This method is triggered for every allocation event.
 *
 * @param event
 *            one allocation event to be processed
 * @throws MalformedURLException
 *             malformed url exception
 * @throws UnknownObjectException
 *             in case the allocation event is of an unknown type
 */
@Override
protected void execute(final IAllocationEvent event) throws MalformedURLException, UnknownObjectException {
    final URL url;
    if (event instanceof ContainerAllocationEvent) {
        url = new URL(((ContainerAllocationEvent) event).getUrl());
    } else {
        throw new UnknownObjectException(event.getClass() + " is not supported by the allocation filter.");
    }
    final String hostName = url.getHost();
    final Optional<ResourceContainer> resourceContainer = ResourceEnvironmentModelFactory.getResourceContainerByName(this.resourceEnvironmentModelGraphProvider.readOnlyRootComponent(ResourceEnvironment.class), hostName);
    if (!resourceContainer.isPresent()) {
        /**
         * new provider: update the resource environment graph.
         */
        final ResourceEnvironment resourceEnvironmentModelGraph = this.resourceEnvironmentModelGraphProvider.readOnlyRootComponent(ResourceEnvironment.class);
        final ResourceContainer newResourceContainer = ResourceEnvironmentModelFactory.createResourceContainer(resourceEnvironmentModelGraph, hostName);
        resourceEnvironmentModelGraph.getResourceContainer_ResourceEnvironment().add(newResourceContainer);
        this.resourceEnvironmentModelGraphProvider.updateComponent(ResourceEnvironment.class, resourceEnvironmentModelGraph);
        /**
         * signal allocation update.
         */
        this.allocationNotifyOutputPort.send(newResourceContainer);
        this.allocationOutputPort.send(event);
    } else {
        /**
         * error allocation already happened.
         */
        this.logger.debug("ResourceContainer %s was available." + hostName);
        final List<ProcessingResourceSpecification> procResSpec = resourceContainer.get().getActiveResourceSpecifications_ResourceContainer();
        for (int i = 0; i < procResSpec.size(); i++) {
            final String nodeGroupName = procResSpec.get(i).getActiveResourceType_ActiveResourceSpecification().getEntityName();
            this.logger.debug(nodeGroupName);
        }
        /**
         * Notify with existing container.
         */
        this.allocationNotifyOutputPort.send(resourceContainer.get());
    }
}
Also used : ResourceEnvironment(org.palladiosimulator.pcm.resourceenvironment.ResourceEnvironment) ContainerAllocationEvent(org.iobserve.common.record.ContainerAllocationEvent) ProcessingResourceSpecification(org.palladiosimulator.pcm.resourceenvironment.ProcessingResourceSpecification) UnknownObjectException(java.rmi.activation.UnknownObjectException) URL(java.net.URL) ResourceContainer(org.palladiosimulator.pcm.resourceenvironment.ResourceContainer)

Example 4 with ContainerAllocationEvent

use of org.iobserve.common.record.ContainerAllocationEvent in project iobserve-analysis by research-iobserve.

the class DeallocationStage method execute.

@Override
protected void execute(final IDeallocationEvent event) throws Exception {
    final URL url;
    if (event instanceof ContainerAllocationEvent) {
        url = new URL(((ContainerAllocationEvent) event).getUrl());
    } else {
        throw new UnknownObjectException(event.getClass() + " is not supported by the allocation filter.");
    }
    final String hostName = url.getHost();
    final Optional<ResourceContainer> resourceContainer = ResourceEnvironmentModelFactory.getResourceContainerByName(this.resourceEnvironmentModelProvider.readOnlyRootComponent(ResourceEnvironment.class), hostName);
    if (resourceContainer.isPresent()) {
        /**
         * new provider: update the resource environment graph.
         */
        final ResourceEnvironment resourceEnvironmentModelGraph = this.resourceEnvironmentModelProvider.readOnlyRootComponent(ResourceEnvironment.class);
        resourceEnvironmentModelGraph.getResourceContainer_ResourceEnvironment().remove(resourceContainer.get());
        this.resourceEnvironmentModelProvider.updateComponent(ResourceEnvironment.class, resourceEnvironmentModelGraph);
        /**
         * signal allocation update.
         */
        this.deallocationNotifyOutputPort.send(resourceContainer.get());
        this.deallocationOutputPort.send(event);
    } else {
        /**
         * error deallocation already happened.
         */
        this.logger.error("ResourceContainer %s is missing." + hostName);
    }
}
Also used : ResourceEnvironment(org.palladiosimulator.pcm.resourceenvironment.ResourceEnvironment) ContainerAllocationEvent(org.iobserve.common.record.ContainerAllocationEvent) UnknownObjectException(java.rmi.activation.UnknownObjectException) URL(java.net.URL) ResourceContainer(org.palladiosimulator.pcm.resourceenvironment.ResourceContainer)

Aggregations

ContainerAllocationEvent (org.iobserve.common.record.ContainerAllocationEvent)4 ResourceContainer (org.palladiosimulator.pcm.resourceenvironment.ResourceContainer)3 URL (java.net.URL)2 UnknownObjectException (java.rmi.activation.UnknownObjectException)2 ResourceEnvironment (org.palladiosimulator.pcm.resourceenvironment.ResourceEnvironment)2 TraceMetadata (kieker.common.record.flow.trace.TraceMetadata)1 AfterOperationEvent (kieker.common.record.flow.trace.operation.AfterOperationEvent)1 BeforeOperationEvent (kieker.common.record.flow.trace.operation.BeforeOperationEvent)1 GCRecord (kieker.common.record.jvm.GCRecord)1 KiekerMetadataRecord (kieker.common.record.misc.KiekerMetadataRecord)1 ContainerDeallocationEvent (org.iobserve.common.record.ContainerDeallocationEvent)1 EJBDeployedEvent (org.iobserve.common.record.EJBDeployedEvent)1 EJBUndeployedEvent (org.iobserve.common.record.EJBUndeployedEvent)1 ServerGeoLocation (org.iobserve.common.record.ServerGeoLocation)1 ServletDeployedEvent (org.iobserve.common.record.ServletDeployedEvent)1 ServletUndeployedEvent (org.iobserve.common.record.ServletUndeployedEvent)1 SessionEndEvent (org.iobserve.common.record.SessionEndEvent)1 SessionStartEvent (org.iobserve.common.record.SessionStartEvent)1 Before (org.junit.Before)1 ProcessingResourceSpecification (org.palladiosimulator.pcm.resourceenvironment.ProcessingResourceSpecification)1