use of software.amazon.awssdk.eventstreamrpc.StreamResponseHandler in project aws-iot-greengrass-edge-connector-for-kinesis-video-stream by awslabs.
the class VideoUploadRequestHandlerTest method subscribeToMqttTopic_receivesInvalidMessageWithoutHyphen_onStartNotCalled.
@Test
public void subscribeToMqttTopic_receivesInvalidMessageWithoutHyphen_onStartNotCalled() throws ExecutionException, InterruptedException {
MQTTMessage mqttMessage = new MQTTMessage();
mqttMessage.setTopicName(MQTT_TOPIC_NAME);
mqttMessage.setPayload(MQTT_PAYLOAD_INVALID_VALUE_WITHOUT_HYPHEN.getBytes(StandardCharsets.US_ASCII));
IoTCoreMessage invalidIoTCoreMessage = new IoTCoreMessage();
invalidIoTCoreMessage.setMessage(mqttMessage);
SubscribeToIoTCoreResponse response = new SubscribeToIoTCoreResponse();
when(responseCompletableFuture.get()).thenReturn(response);
when(subscribeToIoTCoreResponseHandler.getResponse()).thenReturn(responseCompletableFuture);
doAnswer(invocationOnMock -> {
Optional<StreamResponseHandler<IoTCoreMessage>> streamResponseHandler = invocationOnMock.getArgument(1);
streamResponseHandler.get().onStreamEvent(invalidIoTCoreMessage);
return subscribeToIoTCoreResponseHandler;
}).when(greengrassCoreIPCClient).subscribeToIoTCore(any(), any());
videoUploadRequestHandler.subscribeToMqttTopic(MQTT_TOPIC_NAME, videoUploadRequestEvent);
verify(videoUploadRequestEvent, never()).onStart(IS_LIVE_TRUE, EVENT_TIMESTAMP, START_TIME, END_TIME);
}
use of software.amazon.awssdk.eventstreamrpc.StreamResponseHandler in project aws-iot-greengrass-edge-connector-for-kinesis-video-stream by awslabs.
the class VideoUploadRequestHandlerTest method subscribeToMqttTopic_receivesOnLiveEvent_onStart.
@Test
public void subscribeToMqttTopic_receivesOnLiveEvent_onStart() throws ExecutionException, InterruptedException {
MQTTMessage mqttMessage = new MQTTMessage();
mqttMessage.setTopicName(MQTT_TOPIC_NAME);
mqttMessage.setPayload(MQTT_PAYLOAD_LIVE.getBytes(StandardCharsets.US_ASCII));
IoTCoreMessage ioTCoreMessage = new IoTCoreMessage();
ioTCoreMessage.setMessage(mqttMessage);
SubscribeToIoTCoreResponse response = new SubscribeToIoTCoreResponse();
when(responseCompletableFuture.get()).thenReturn(response);
when(subscribeToIoTCoreResponseHandler.getResponse()).thenReturn(responseCompletableFuture);
doAnswer(invocationOnMock -> {
Optional<StreamResponseHandler<IoTCoreMessage>> streamResponseHandler = invocationOnMock.getArgument(1);
streamResponseHandler.get().onStreamEvent(ioTCoreMessage);
return subscribeToIoTCoreResponseHandler;
}).when(greengrassCoreIPCClient).subscribeToIoTCore(any(), any());
videoUploadRequestHandler.subscribeToMqttTopic(MQTT_TOPIC_NAME, videoUploadRequestEvent);
verify(videoUploadRequestEvent).onStart(IS_LIVE_TRUE, EVENT_TIMESTAMP, 0, 0);
}
use of software.amazon.awssdk.eventstreamrpc.StreamResponseHandler in project aws-iot-greengrass-edge-connector-for-kinesis-video-stream by awslabs.
the class VideoUploadRequestHandlerTest method subscribeToMqttTopic_receivesMultipleValuesMessage_onStartNotCalled.
@Test
public void subscribeToMqttTopic_receivesMultipleValuesMessage_onStartNotCalled() throws ExecutionException, InterruptedException {
MQTTMessage mqttMessage = new MQTTMessage();
mqttMessage.setTopicName(MQTT_TOPIC_NAME);
mqttMessage.setPayload(MQTT_PAYLOAD_MULTIPLE_VALUES.getBytes(StandardCharsets.US_ASCII));
IoTCoreMessage multipleValuesIoTCoreMessage = new IoTCoreMessage();
multipleValuesIoTCoreMessage.setMessage(mqttMessage);
SubscribeToIoTCoreResponse response = new SubscribeToIoTCoreResponse();
when(responseCompletableFuture.get()).thenReturn(response);
when(subscribeToIoTCoreResponseHandler.getResponse()).thenReturn(responseCompletableFuture);
doAnswer(invocationOnMock -> {
Optional<StreamResponseHandler<IoTCoreMessage>> streamResponseHandler = invocationOnMock.getArgument(1);
streamResponseHandler.get().onStreamEvent(multipleValuesIoTCoreMessage);
return subscribeToIoTCoreResponseHandler;
}).when(greengrassCoreIPCClient).subscribeToIoTCore(any(), any());
videoUploadRequestHandler.subscribeToMqttTopic(MQTT_TOPIC_NAME, videoUploadRequestEvent);
verify(videoUploadRequestEvent, never()).onStart(IS_LIVE_TRUE, EVENT_TIMESTAMP, START_TIME, END_TIME);
}
use of software.amazon.awssdk.eventstreamrpc.StreamResponseHandler in project aws-iot-greengrass-edge-connector-for-kinesis-video-stream by awslabs.
the class VideoUploadRequestHandlerTest method subscribeToMqttTopic_receivesEvent_onError.
@Test
public void subscribeToMqttTopic_receivesEvent_onError() throws ExecutionException, InterruptedException {
SubscribeToIoTCoreResponse response = new SubscribeToIoTCoreResponse();
when(responseCompletableFuture.get()).thenReturn(response);
when(subscribeToIoTCoreResponseHandler.getResponse()).thenReturn(responseCompletableFuture);
doAnswer(invocationOnMock -> {
Optional<StreamResponseHandler<IoTCoreMessage>> streamResponseHandler = invocationOnMock.getArgument(1);
streamResponseHandler.get().onStreamError(new Exception(ERR_MSG));
return subscribeToIoTCoreResponseHandler;
}).when(greengrassCoreIPCClient).subscribeToIoTCore(any(), any());
videoUploadRequestHandler.subscribeToMqttTopic(MQTT_TOPIC_NAME, videoUploadRequestEvent);
verify(videoUploadRequestEvent).onError(ERR_MSG);
}
use of software.amazon.awssdk.eventstreamrpc.StreamResponseHandler in project aws-greengrass-nucleus by aws-greengrass.
the class DynamicComponentConfigurationValidationTest method GIVEN_deployment_changes_component_config_WHEN_component_validates_config_THEN_deployment_is_successful.
@Test
void GIVEN_deployment_changes_component_config_WHEN_component_validates_config_THEN_deployment_is_successful() throws Throwable {
LogConfig.getRootLogConfig().setLevel(Level.DEBUG);
// Subscribe to config validation on behalf of the running service
CountDownLatch eventReceivedByClient = new CountDownLatch(1);
Topics servicePrivateConfig = kernel.getConfig().findTopics(SERVICES_NAMESPACE_TOPIC, "OldService", PRIVATE_STORE_NAMESPACE_TOPIC);
String authToken = Coerce.toString(servicePrivateConfig.find(SERVICE_UNIQUE_ID_KEY));
CountDownLatch subscriptionLatch = new CountDownLatch(1);
try (EventStreamRPCConnection clientConnection = IPCTestUtils.connectToGGCOverEventStreamIPC(socketOptions, authToken, kernel);
AutoCloseable l = TestUtils.createCloseableLogListener(m -> {
if (m.getMessage().contains("Config IPC subscribe to config validation request")) {
subscriptionLatch.countDown();
}
})) {
GreengrassCoreIPCClient greengrassCoreIPCClient = new GreengrassCoreIPCClient(clientConnection);
SubscribeToValidateConfigurationUpdatesRequest subscribe = new SubscribeToValidateConfigurationUpdatesRequest();
greengrassCoreIPCClient.subscribeToValidateConfigurationUpdates(subscribe, Optional.of(new StreamResponseHandler<ValidateConfigurationUpdateEvents>() {
@Override
public void onStreamEvent(ValidateConfigurationUpdateEvents events) {
assertNotNull(events);
assertNotNull(events.getValidateConfigurationUpdateEvent());
assertNotNull(events.getValidateConfigurationUpdateEvent().getConfiguration());
assertThat(events.getValidateConfigurationUpdateEvent().getConfiguration(), IsMapContaining.hasEntry("ConfigKey1", "ConfigValue2"));
eventReceivedByClient.countDown();
SendConfigurationValidityReportRequest reportRequest = new SendConfigurationValidityReportRequest();
ConfigurationValidityReport report = new ConfigurationValidityReport();
report.setStatus(ConfigurationValidityStatus.ACCEPTED);
report.setDeploymentId(events.getValidateConfigurationUpdateEvent().getDeploymentId());
reportRequest.setConfigurationValidityReport(report);
try {
greengrassCoreIPCClient.sendConfigurationValidityReport(reportRequest, Optional.empty()).getResponse().get(10, TimeUnit.SECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
fail("received invalid update validate configuration event", e);
}
}
@Override
public boolean onStreamError(Throwable error) {
log.atError().log("Received stream error.", error);
return false;
}
@Override
public void onStreamClosed() {
}
}));
assertTrue(subscriptionLatch.await(20, TimeUnit.SECONDS));
// Attempt changing the configuration for the running service
Map<String, Object> newConfig = new HashMap<String, Object>() {
{
put(SERVICES_NAMESPACE_TOPIC, new HashMap<String, Object>() {
{
put("main", kernel.getMain().getServiceConfig().toPOJO());
put("OldService", new HashMap<String, Object>() {
{
put(CONFIGURATION_CONFIG_KEY, new HashMap<String, Object>() {
{
put("ConfigKey1", "ConfigValue2");
}
});
put(SERVICE_LIFECYCLE_NAMESPACE_TOPIC, new HashMap<String, Object>() {
{
put(LIFECYCLE_RUN_NAMESPACE_TOPIC, "echo Running OldService");
}
});
put(VERSION_CONFIG_KEY, DEFAULT_EXISTING_SERVICE_VERSION);
}
});
put(DEFAULT_NUCLEUS_COMPONENT_NAME, getNucleusConfig(kernel));
}
});
}
};
DeploymentResult result = deploymentConfigMerger.mergeInNewConfig(createTestDeployment(), newConfig).get(60, TimeUnit.SECONDS);
assertEquals(DeploymentResult.DeploymentStatus.SUCCESSFUL, result.getDeploymentStatus());
assertTrue(eventReceivedByClient.await(20, TimeUnit.SECONDS));
}
}
Aggregations