// Tests_SRS_DEVICECLIENT_33_002: [** The OnReceiveEventMessageCalled shall invoke the specified delegate. **]** public async Task ModuleClient_OnReceiveEventMessageCalled_SpecifiedCallbackCalled() { ModuleClient moduleClient = ModuleClient.CreateFromConnectionString(fakeConnectionString, TransportType.Mqtt_Tcp_Only); var innerHandler = Substitute.For <IDelegatingHandler>(); moduleClient.InnerHandler = innerHandler; bool isDefaultCallbackCalled = false; await moduleClient.SetMessageHandlerAsync((message, context) => { isDefaultCallbackCalled = true; return(Task.FromResult(MessageResponse.Completed)); }, "custom data"); bool isSpecificCallbackCalled = false; await moduleClient.SetInputMessageHandlerAsync("endpoint2", (message, context) => { isSpecificCallbackCalled = true; return(Task.FromResult(MessageResponse.Completed)); }, "custom data"); Message testMessage = new Message(); testMessage.LockToken = "AnyLockToken"; await moduleClient.InternalClient.OnReceiveEventMessageCalled("endpoint2", testMessage); Assert.IsFalse(isDefaultCallbackCalled); Assert.IsTrue(isSpecificCallbackCalled); }
private async Task ReceiveC2DMessagesAsync(ModuleClient moduleClient, ModuleSettings settings, ILogger logger) { string logPrefix = "c2dmessages".BuildLogPrefix(); await moduleClient.SetMessageHandlerAsync(C2DMessageHandler, null); logger.LogTrace($"{logPrefix}::{ModuleSettings.ArtifactId}::C2D MESSAGE reception handler registered."); }
// Tests_SRS_DEVICECLIENT_33_004: [** It shall call DisableEventReceiveAsync when the last delegate has been removed. **]** public async Task ModuleClient_SetDefaultReceiveCallbackAsync_RemoveCallback() { ModuleClient moduleClient = ModuleClient.CreateFromConnectionString(fakeConnectionString, TransportType.Mqtt_Tcp_Only); var innerHandler = Substitute.For <IDelegatingHandler>(); moduleClient.InnerHandler = innerHandler; await moduleClient.SetMessageHandlerAsync((message, context) => Task.FromResult(MessageResponse.Completed), "custom data"); await innerHandler.Received(1).EnableEventReceiveAsync(Arg.Any <CancellationToken>()); await innerHandler.DidNotReceiveWithAnyArgs().DisableEventReceiveAsync(Arg.Any <CancellationToken>()); await moduleClient.SetMessageHandlerAsync(null, null); await innerHandler.Received(1).EnableEventReceiveAsync(Arg.Any <CancellationToken>()); await innerHandler.Received(1).DisableEventReceiveAsync(Arg.Any <CancellationToken>()); }
public async Task ModuleClient_SetDefaultReceiveCallbackAsync_RemoveCallback_Amqp() { ModuleClient moduleClient = await CreateAmqpModuleClientAsync(); IDelegatingHandler innerHandler = Substitute.For <IDelegatingHandler>(); moduleClient.InnerHandler = innerHandler; await moduleClient.SetMessageHandlerAsync((message, context) => Task.FromResult(MessageResponse.Completed), "custom data").ConfigureAwait(false); await innerHandler.Received(1).EnableEventReceiveAsync(true, Arg.Any <CancellationToken>()).ConfigureAwait(false); await innerHandler.DidNotReceiveWithAnyArgs().EnableReceiveMessageAsync(Arg.Any <CancellationToken>()).ConfigureAwait(false); await innerHandler.DidNotReceiveWithAnyArgs().DisableEventReceiveAsync(true, Arg.Any <CancellationToken>()).ConfigureAwait(false); await moduleClient.SetMessageHandlerAsync(null, null).ConfigureAwait(false); await innerHandler.Received(1).EnableEventReceiveAsync(true, Arg.Any <CancellationToken>()).ConfigureAwait(false); await innerHandler.DidNotReceiveWithAnyArgs().EnableReceiveMessageAsync(Arg.Any <CancellationToken>()).ConfigureAwait(false); await innerHandler.Received(1).DisableEventReceiveAsync(true, Arg.Any <CancellationToken>()).ConfigureAwait(false); }
private static void InitIoTHub() { try { // Find a way to get the connection string //IOTEDGE_GATEWAYHOSTNAME = rpimoscowgarden //IOTEDGE_WORKLOADURI = unix:///var/run/iotedge/workload.sock //HOSTNAME = 346d1c5b3ed1 //PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin //IOTEDGE_IOTHUBHOSTNAME = EllerbachIOT.azure-devices.net //IOTEDGE_MODULEGENERATIONID = 636893565275753486 //ASPNETCORE_ENVIRONMENT = Development //DOTNET_VERSION = 2.2.3 //IOTEDGE_MODULEID = sprinkler //IOTEDGE_AUTHSCHEME = sasToken //IOTEDGE_APIVERSION = 2018-06-28 //DOTNET_RUNNING_IN_CONTAINER = true //IOTEDGE_DEVICEID = MoscowGarden //HOME = /root //ASPNETCORE_URLS = http://+:80 //RuntimeLogLevel = Information _strconn = Environment.GetEnvironmentVariable("IOTHUB_DEVICE_CONN_STRING"); // Either IoT Edge either IoT Hub if (_strconn == null) { _deviceClient = ModuleClient.CreateFromEnvironmentAsync().GetAwaiter().GetResult(); _deviceClient.OpenAsync().Wait(); _deviceClient.SetMessageHandlerAsync(MessageHandlerIoT, _site); _deviceId = Environment.GetEnvironmentVariable("IOTEDGE_DEVICEID"); } else { _deviceId = _strconn; _deviceId = _deviceId.Substring(_deviceId.IndexOf("DeviceId=", StringComparison.CurrentCultureIgnoreCase) + 9); _deviceId = _deviceId.Substring(0, _deviceId.IndexOf(';')); ReceiveDataFromAzure(); } } catch (Exception ex) { Debug.WriteLine($"Error initializing Azure Iot Hub connection string: {ex.Message}"); } }