use of org.opensmartgridplatform.shared.infra.jms.MessageMetadata in project open-smart-grid-platform by OSGP.
the class SystemEventServiceTest method verifyInvocationCounterIsNull.
@Test
void verifyInvocationCounterIsNull() {
final DlmsDevice device = new DlmsDeviceBuilder().withInvocationCounter(null).build();
final MessageMetadata messageMetadata = new Builder().withOrganisationIdentification("org-id").build();
this.service.verifySystemEventThresholdReachedEvent(device, messageMetadata);
verifyNoInteractions(this.correlationIdProviderService);
verify(this.osgpRequestMessageSender, never()).send(any(RequestMessage.class), eq(MessageType.SYSTEM_EVENT.name()), any(MessageMetadata.class));
}
use of org.opensmartgridplatform.shared.infra.jms.MessageMetadata in project open-smart-grid-platform by OSGP.
the class SystemEventServiceTest method verifyMaxValueReachedEvent.
@Test
void verifyMaxValueReachedEvent() {
final DlmsDevice device = new DlmsDeviceBuilder().withDeviceIdentification("device-1").withInvocationCounter(this.invocationCounterEventThreshold).build();
final MessageMetadata messageMetadata = new Builder().withIpAddress("127.0-.0.1").withOrganisationIdentification("org-id").withDomain("domain").withDomainVersion("1.0").build();
when(this.correlationIdProviderService.getCorrelationId(messageMetadata.getOrganisationIdentification(), device.getDeviceIdentification())).thenReturn("corr-id");
this.service.verifySystemEventThresholdReachedEvent(device, messageMetadata);
final ArgumentCaptor<MessageMetadata> messageMetadataCaptor = ArgumentCaptor.forClass(MessageMetadata.class);
final ArgumentCaptor<RequestMessage> requestMessageCaptor = ArgumentCaptor.forClass(RequestMessage.class);
verify(this.osgpRequestMessageSender).send(requestMessageCaptor.capture(), eq(MessageType.SYSTEM_EVENT.name()), messageMetadataCaptor.capture());
final RequestMessage requestMessage = requestMessageCaptor.getValue();
assertThat(requestMessage.getDeviceIdentification()).isEqualTo(device.getDeviceIdentification());
assertThat(requestMessage.getCorrelationUid()).isEqualTo("corr-id");
assertThat(requestMessage.getOrganisationIdentification()).isEqualTo(messageMetadata.getOrganisationIdentification());
assertThat(requestMessage.getIpAddress()).isEqualTo(messageMetadata.getIpAddress());
assertThat(requestMessage.getRequest()).isInstanceOf(SystemEventDto.class);
final SystemEventDto systemEventDto = (SystemEventDto) requestMessage.getRequest();
assertThat(systemEventDto.getDeviceIdentification()).isEqualTo(device.getDeviceIdentification());
assertThat(systemEventDto.getSystemEventType()).isEqualTo(SystemEventTypeDto.INVOCATION_COUNTER_THRESHOLD_REACHED);
assertThat(systemEventDto.getTimestamp()).isNotNull();
final MessageMetadata metadata = messageMetadataCaptor.getValue();
assertThat(metadata.getDeviceIdentification()).isEqualTo(device.getDeviceIdentification());
assertThat(metadata.getCorrelationUid()).isEqualTo("corr-id");
assertThat(metadata.getOrganisationIdentification()).isEqualTo(messageMetadata.getOrganisationIdentification());
assertThat(metadata.getIpAddress()).isEqualTo(messageMetadata.getIpAddress());
assertThat(metadata.getMessagePriority()).isEqualTo(MessagePriorityEnum.HIGH.getPriority());
assertThat(metadata.getMessageType()).isEqualTo(MessageType.SYSTEM_EVENT.name());
assertThat(metadata.getDomain()).isEqualTo(messageMetadata.getDomain());
assertThat(metadata.getDomainVersion()).isEqualTo(messageMetadata.getDomainVersion());
}
use of org.opensmartgridplatform.shared.infra.jms.MessageMetadata in project open-smart-grid-platform by OSGP.
the class OsgpResponseMessageProcessor method processMessage.
@Override
public void processMessage(final ObjectMessage message) throws JMSException {
LOGGER.debug("Processing {} request message", this.messageType);
final MessageMetadata messageMetadata = MessageMetadata.fromMessage(message);
final Serializable messageObject = message.getObject();
final ThrowingConsumer<DlmsConnectionManager> taskForConnectionManager = conn -> this.processMessageTask(messageObject, messageMetadata, conn);
try {
if (this.usesDeviceConnection()) {
this.createAndHandleConnectionForDevice(this.domainHelperService.findDlmsDevice(messageMetadata), messageMetadata, taskForConnectionManager);
} else {
this.processMessageTask(messageObject, messageMetadata, null);
}
} catch (final OsgpException e) {
LOGGER.error("Something went wrong with the DlmsConnection", e);
}
}
use of org.opensmartgridplatform.shared.infra.jms.MessageMetadata in project open-smart-grid-platform by OSGP.
the class FirmwareServiceTest method updateFirmwareShouldCallExecutorWhenFirmwareFileInCache.
@Test
public void updateFirmwareShouldCallExecutorWhenFirmwareFileInCache() throws OsgpException {
// Arrange
final byte[] firmwareFile = firmwareIdentification.getBytes();
final byte[] firmwareImageIdentifier = Hex.decode("496d6167654964656e746966696572");
final MessageMetadata messageMetadata = MessageMetadata.newBuilder().withCorrelationUid("123456").build();
when(this.firmwareFileCachingRepository.isAvailable(firmwareIdentification)).thenReturn(true);
when(this.firmwareFileCachingRepository.retrieve(firmwareIdentification)).thenReturn(firmwareFile);
when(this.firmwareImageIdentifierCachingRepository.isAvailable(firmwareIdentification)).thenReturn(true);
when(this.firmwareImageIdentifierCachingRepository.retrieve(firmwareIdentification)).thenReturn(firmwareImageIdentifier);
// Act
this.firmwareService.updateFirmware(this.dlmsConnectionManagerMock, this.dlmsDeviceMock, updateFirmwareRequestDto, messageMetadata);
// Assert
verify(this.updateFirmwareCommandExecutor, times(1)).execute(this.dlmsConnectionManagerMock, this.dlmsDeviceMock, updateFirmwareRequestDto, messageMetadata);
}
use of org.opensmartgridplatform.shared.infra.jms.MessageMetadata in project open-smart-grid-platform by OSGP.
the class DeviceRequestMessageListener method onMessage.
@Override
public void onMessage(final Message message) {
ObjectMessage objectMessage = null;
MessageMetadata messageMetadata = null;
try {
objectMessage = (ObjectMessage) message;
messageMetadata = MessageMetadata.fromMessage(objectMessage);
} catch (final Exception e) {
LOGGER.error("UNRECOVERABLE ERROR, unable to read JMS message instance, giving up.", e);
return;
}
final String correlationUid = messageMetadata.getCorrelationUid();
final String deviceIdentification = messageMetadata.getDeviceIdentification();
try {
LOGGER.info("Received message [correlationUid={}, messageType={}, messagePriority={}] for device {}", correlationUid, messageMetadata.getMessageType(), messageMetadata.getMessagePriority(), deviceIdentification);
this.pendingRequestsQueue.enqueue(deviceIdentification, correlationUid);
final MessageProcessor processor = this.messageProcessorMap.getMessageProcessor(objectMessage);
processor.processMessage(objectMessage);
} catch (final IllegalArgumentException | JMSException e) {
this.pendingRequestsQueue.remove(deviceIdentification, correlationUid);
LOGGER.error("Unexpected exception for message [correlationUid={}]", correlationUid, e);
this.sendNotSupportedException(objectMessage, messageMetadata);
}
}
Aggregations