Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #3
0
        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;
        }
Example #4
0
 // 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)
 {
 }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        public void TestTwinChangeEventMessageSourcePatternMatch(string source)
        {
            CustomMessageSource customMessageSource = CustomMessageSource.Create(source);

            Assert.True(customMessageSource.Match(TwinChangeEventMessageSource.Instance));
        }
Example #8
0
        public void TestTelemetryMessageSourcePatternNoMatch(string source)
        {
            CustomMessageSource customMessageSource = CustomMessageSource.Create(source);

            Assert.False(customMessageSource.Match(TelemetryMessageSource.Instance));
        }
Example #9
0
        public void TestModuleMessageSourcePatternNoMatch(string source)
        {
            CustomMessageSource customMessageSource = CustomMessageSource.Create(source);

            Assert.False(customMessageSource.Match(ModuleMessageSource));
        }