public void MessageSourceRoundtripTest() { string json = JsonConvert.SerializeObject(TelemetryMessageSource.Instance); IMessageSource deserializedMessageSource = JsonConvert.DeserializeObject <CustomMessageSource>(json); Assert.NotNull(deserializedMessageSource); Assert.True(TelemetryMessageSource.Instance.Match(deserializedMessageSource)); json = JsonConvert.SerializeObject(ModuleMessageSource.Create("module1")); deserializedMessageSource = JsonConvert.DeserializeObject <CustomMessageSource>(json); Assert.NotNull(deserializedMessageSource); Assert.True(TelemetryMessageSource.Instance.Match(deserializedMessageSource)); json = JsonConvert.SerializeObject(ModuleMessageSource.Create("module1", "output1")); deserializedMessageSource = JsonConvert.DeserializeObject <CustomMessageSource>(json); Assert.NotNull(deserializedMessageSource); Assert.True(TelemetryMessageSource.Instance.Match(deserializedMessageSource)); json = JsonConvert.SerializeObject(TwinChangeEventMessageSource.Instance); deserializedMessageSource = JsonConvert.DeserializeObject <CustomMessageSource>(json); Assert.NotNull(deserializedMessageSource); Assert.True(TwinChangeEventMessageSource.Instance.Match(deserializedMessageSource)); IMessageSource customMessageSource = CustomMessageSource.Create("/messages/modules/ModId1/outputs/Op1"); json = JsonConvert.SerializeObject(customMessageSource); deserializedMessageSource = JsonConvert.DeserializeObject <CustomMessageSource>(json); Assert.NotNull(deserializedMessageSource); Assert.True(customMessageSource.Match(deserializedMessageSource)); }
public void TestTwinChangeEventMessageSource() { Assert.False(TwinChangeEventMessageSource.Instance.IsTelemetry()); TwinChangeEventMessageSource twinChangeEventMessageSource = TwinChangeEventMessageSource.Instance; Assert.True(TwinChangeEventMessageSource.Instance.Match(twinChangeEventMessageSource)); Assert.False(TwinChangeEventMessageSource.Instance.Match(TelemetryMessageSource.Instance)); Assert.False(TwinChangeEventMessageSource.Instance.Match(ModuleMessageSource)); CustomMessageSource customMessageSource1 = CustomMessageSource.Create("/twinChangeNotifications"); Assert.True(TwinChangeEventMessageSource.Instance.Match(customMessageSource1)); }
internal void ParseRoute(string routeString, out IMessageSource messageSource, out string condition, out Endpoint endpoint) { var errorListener = new ErrorListener(); var input = new AntlrInputStream(routeString); var lexer = new RouteLexer(input); var tokens = new CommonTokenStream(lexer); var parser = new RouteParser(tokens); parser.RemoveErrorListeners(); parser.AddErrorListener(errorListener); IParseTree tree = parser.route(); errorListener.Validate(); var walker = new ParseTreeWalker(); var listener = new RouteParserListener(this.endpointFactory); walker.Walk(listener, tree); condition = listener.Condition ?? DefaultCondition; messageSource = CustomMessageSource.Create(listener.Source); endpoint = listener.Endpoint; }
// ReSharper disable once UnusedMember.Local Message(CustomMessageSource messageSource, byte[] body, IDictionary <string, string> properties, IDictionary <string, string> systemProperties, long offset, DateTime enqueuedTime, DateTime dequeuedTime) : this((IMessageSource)messageSource, body, properties, systemProperties, offset, enqueuedTime, dequeuedTime) { }
public static IEnumerable <object[]> GetFunctionEndpointParserData() { var testData = new List <object[]>(); testData.Add( new object[] { @"FROM /* INTO brokeredEndpoint(""/modules/alertLogic/inputs/in"")", CustomMessageSource.Create("/"), "true", "brokeredEndpoint", "/modules/alertLogic/inputs/in" }); testData.Add( new object[] { @"FROM /messages/modules/adapter INTO brokeredEndpoint(""/modules/alertLogic/inputs/in"")", CustomMessageSource.Create("/messages/modules/adapter"), "true", "brokeredEndpoint", "/modules/alertLogic/inputs/in" }); testData.Add( new object[] { @"FROM /messages/modules/alertLogic/outputs/commands INTO brokeredEndpoint(""/modules/adapter/inputs/write"")", CustomMessageSource.Create("/messages/modules/alertLogic/outputs/commands"), @"true", "brokeredEndpoint", "/modules/adapter/inputs/write" }); testData.Add( new object[] { @"FROM /messages INTO brokeredEndpoint(""/modules/alertLogic/inputs/in1"")", CustomMessageSource.Create("/messages"), "true", "brokeredEndpoint", "/modules/alertLogic/inputs/in1" }); testData.Add( new object[] { @"FROM /messages/modules WHERE messageType = ""alert"" INTO brokeredEndpoint(""/modules/alertLogic/inputs/in"")", CustomMessageSource.Create("/messages/modules/"), @"messageType = ""alert""", "brokeredEndpoint", "/modules/alertLogic/inputs/in" }); testData.Add( new object[] { @" FROM /messages/modules/adapter WHERE messageType = ""alert"" AND alert = ""imp"" INTO brokeredEndpoint(""/a/b/c/d"") ", CustomMessageSource.Create("/messages/modules/adapter"), @"messageType = ""alert"" AND alert = ""imp""", "brokeredEndpoint", "/a/b/c/d" }); testData.Add( new object[] { @"FROM /messages/modules/alertLogic/outputs/commands WHERE messageType = ""alert"" AND ( temp > 100 OR humidity = 50 OR place = ""basement"") INTO brokeredEndpoint(""/modules/adapter/inputs/write"")", CustomMessageSource.Create("/messages/modules/alertLogic/outputs/commands"), @"messageType = ""alert"" AND ( temp > 100 OR humidity = 50 OR place = ""basement"")", "brokeredEndpoint", "/modules/adapter/inputs/write" }); testData.Add( new object[] { @" FROM /messages WHERE messageType = ""alert"" AND humidity = 'high' AND temp >= 200 INTO brokeredEndpoint(""/modules/alertLogic/inputs/in1"")", CustomMessageSource.Create("/messages"), @"messageType = ""alert"" AND humidity = 'high' AND temp >= 200", "brokeredEndpoint", "/modules/alertLogic/inputs/in1" }); testData.Add( new object[] { @" SELECT * FROM /messages WHERE messageType = ""alert"" AND humidity = 'high' AND temp >= 200 INTO brokeredEndpoint(""/modules/alertLogic/inputs/in1"")", CustomMessageSource.Create("/messages"), @"messageType = ""alert"" AND humidity = 'high' AND temp >= 200", "brokeredEndpoint", "/modules/alertLogic/inputs/in1" }); return(testData); }
public static IEnumerable <object[]> GetSystemEndpointParserData() { var testData = new List <object[]>(); testData.Add( new object[] { @"FROM /* INTO $upstream", CustomMessageSource.Create("/"), "true", "$upstream" }); testData.Add( new object[] { @"FROM /messages/modules/adapter INTO $upstream", CustomMessageSource.Create("/messages/modules/adapter"), "true", "$upstream" }); testData.Add( new object[] { @"FROM /messages/modules/alertLogic/outputs/commands INTO $upstream", CustomMessageSource.Create("/messages/modules/alertLogic/outputs/commands"), @"true", "$upstream" }); testData.Add( new object[] { @"FROM /messages INTO $upstream", CustomMessageSource.Create("/messages"), "true", "$upstream" }); testData.Add( new object[] { @"FROM /messages/modules WHERE messageType = ""alert"" INTO $upstream", CustomMessageSource.Create("/messages/modules"), @"messageType = ""alert""", "$upstream" }); testData.Add( new object[] { @" FROM /messages/modules/adapter WHERE messageType = ""alert"" AND alert = ""imp"" INTO $upstream ", CustomMessageSource.Create("/messages/modules/adapter"), @"messageType = ""alert"" AND alert = ""imp""", "$upstream" }); testData.Add( new object[] { @"FROM /messages/modules/alertLogic/outputs/commands WHERE messageType = ""alert"" AND ( temp > 100 OR humidity = 50 OR place = ""basement"") INTO $upstream", CustomMessageSource.Create("/messages/modules/alertLogic/outputs/commands"), @"messageType = ""alert"" AND ( temp > 100 OR humidity = 50 OR place = ""basement"")", "$upstream" }); testData.Add( new object[] { @" FROM /messages WHERE messageType = ""alert"" AND humidity = 'high' AND temp >= 200 INTO $upstream", CustomMessageSource.Create("/messages"), @"messageType = ""alert"" AND humidity = 'high' AND temp >= 200", "$upstream" }); testData.Add( new object[] { @" SELECT * FROM /messages WHERE messageType = ""alert"" AND humidity = 'high' AND temp >= 200 INTO $upstream", CustomMessageSource.Create("/messages"), @"messageType = ""alert"" AND humidity = 'high' AND temp >= 200", "$upstream" }); return(testData); }
public void TestTwinChangeEventMessageSourcePatternMatch(string source) { CustomMessageSource customMessageSource = CustomMessageSource.Create(source); Assert.True(customMessageSource.Match(TwinChangeEventMessageSource.Instance)); }
public void TestTelemetryMessageSourcePatternNoMatch(string source) { CustomMessageSource customMessageSource = CustomMessageSource.Create(source); Assert.False(customMessageSource.Match(TelemetryMessageSource.Instance)); }
public void TestModuleMessageSourcePatternNoMatch(string source) { CustomMessageSource customMessageSource = CustomMessageSource.Create(source); Assert.False(customMessageSource.Match(ModuleMessageSource)); }