示例#1
0
        public static ITelimena GetCrackedTelimena(ICollection <ITelemetry> sentTelemetry, Guid telemetryKey, string userName, bool excludeStartingEvent = false)
        {
            var startupInfo = new TelimenaStartupInfo(telemetryKey, Helpers.TeliUri)
            {
                UserInfo = new TelimenaClient.Model.UserInfo()
                {
                    UserIdentifier = userName
                }
            };
            var telimena = TelimenaFactory.Construct(startupInfo);
            StubTelemetryChannel channel = new StubTelemetryChannel
            {
                OnSend = t =>
                {
                    EventTelemetry ev = t as EventTelemetry;
                    if (excludeStartingEvent && ev?.Name == "TelimenaSessionStarted")
                    {
                        return;
                    }
                    sentTelemetry.Add(t);
                }
            };
            TelemetryModule module = telimena.GetFieldValue <TelemetryModule>("telemetryModule");

            SetStaticFieldValue(module, "isSessionStartedEventSent", false);

            TelemetryClient client = module.GetPropertyValue <TelemetryClient>("TelemetryClient");
            var             config = client.GetPropertyValue <TelemetryConfiguration>("TelemetryConfiguration");

            config.SetPropertyValue("TelemetryChannel", channel);


            return(telimena);
        }
示例#2
0
        public static TelemetryModule GetTelemetryModule(ICollection <ITelemetry> sentTelemetry, Guid telemetryKey)
        {
            TelemetryModule      module  = new TelemetryModule(new TelimenaProperties(new TelimenaStartupInfo(telemetryKey)));
            StubTelemetryChannel channel = new StubTelemetryChannel {
                OnSend = t => sentTelemetry.Add(t)
            };

#pragma warning disable 618
            module.InvokeMethod(nameof(TelemetryModule.InitializeTelemetryClient), channel);
#pragma warning restore 618

            Assert.IsInstanceOf <StubTelemetryChannel>(module.TelemetryClient.GetPropertyValue <TelemetryConfiguration>("TelemetryConfiguration").TelemetryChannel);
            return(module);
        }
示例#3
0
        public void TestLogMessage()
        {
            List <ITelemetry> sentTelemetry   = new List <ITelemetry>();
            TelemetryModule   telemetryModule = Helpers.GetTelemetryModule(sentTelemetry, this.testTelemetryKey);

            telemetryModule.Log(LogLevel.Warn, "A Message");

            List <TelemetryItem> mapped = DoTheMapping(sentTelemetry);

            Assert.AreEqual(TelemetryItemTypes.LogMessage, mapped.Single().TelemetryItemType);
            Assert.AreEqual(LogLevel.Warn.ToString(), mapped.Single().LogLevel.ToString());
            Assert.AreEqual((int)LogLevel.Warn, (int)mapped.Single().LogLevel);
            Assert.AreEqual((sentTelemetry[0] as TraceTelemetry).Message, mapped[0].LogMessage);
        }
示例#4
0
        public void TestView()
        {
            List <ITelemetry> sentTelemetry   = new List <ITelemetry>();
            TelemetryModule   telemetryModule = Helpers.GetTelemetryModule(sentTelemetry, this.testTelemetryKey);

            telemetryModule.View("A View", new Dictionary <string, string>()
            {
                { "AKey", $"AValue" }
            });

            List <TelemetryItem> mapped = DoTheMapping(sentTelemetry);

            Assert.AreEqual(TelemetryItemTypes.View, mapped.Single().TelemetryItemType);
            Assert.AreEqual("AValue", mapped[0].Properties["AKey"]);
            Assert.AreEqual(1, mapped[0].Properties.Count);
        }
示例#5
0
        public void TestException()
        {
            List <ITelemetry> sentTelemetry   = new List <ITelemetry>();
            TelemetryModule   telemetryModule = Helpers.GetTelemetryModule(sentTelemetry, this.testTelemetryKey);

            telemetryModule.Exception(new InvalidCastException("A Message", new InvalidOperationException("Inner")));

            List <TelemetryItem> mapped = DoTheMapping(sentTelemetry);
            var exTelemetry             = sentTelemetry.First() as ExceptionTelemetry;

            Assert.AreEqual(TelemetryItemTypes.Exception, mapped.Single().TelemetryItemType);
            Assert.AreEqual(exTelemetry.Exception.Message, mapped[0].Exceptions[0].Message);
            Assert.AreEqual(exTelemetry.Exception.InnerException.Message, mapped[0].Exceptions[1].Message);
            Assert.AreEqual(exTelemetry.Exception.GetType().FullName, mapped[0].Exceptions[0].TypeName);
            Assert.AreEqual(exTelemetry.Exception.InnerException.GetType().FullName, mapped[0].Exceptions[1].TypeName);
        }
示例#6
0
        public void CheckListOfItems()
        {
            List <ITelemetry> sentTelemetry   = new List <ITelemetry>();
            TelemetryModule   telemetryModule = Helpers.GetTelemetryModule(sentTelemetry, this.testTelemetryKey);

            telemetryModule.Event("TestEvent", new Dictionary <string, string>()
            {
                { "AKey", $"AValue" }
            });
            telemetryModule.View("TestView");
            telemetryModule.Log(LogLevel.Warn, "A log message");
            telemetryModule.Exception(new Exception("An error that happened"));
            telemetryModule.Exception(new Exception("An error that happened with note"), "A note for error");

            byte[] serialized = JsonSerializer.Serialize(sentTelemetry, true);


            var items  = AppInsightsDeserializer.Deserialize(serialized, true).ToList();
            var mapped = AppInsightsTelemetryMapper.Map(items).ToList();

            for (int index = 0; index < sentTelemetry.Count; index++)
            {
                ITelemetry    appInsightsItem = sentTelemetry[index];
                TelemetryItem telimenaItem    = mapped[index];

                Assert.AreEqual(appInsightsItem.Timestamp, telimenaItem.Timestamp);
                Assert.AreEqual(appInsightsItem.Sequence, telimenaItem.Sequence);
                Assert.AreEqual(appInsightsItem.Context.User.Id, telimenaItem.UserIdentifier);
                if (telimenaItem.TelemetryItemType != TelemetryItemTypes.LogMessage && telimenaItem.TelemetryItemType != TelemetryItemTypes.Exception)
                {
                    Assert.AreEqual(appInsightsItem.GetPropertyValue <string>("Name"), telimenaItem.EntryKey);
                }
                foreach (KeyValuePair <string, string> keyValuePair in appInsightsItem.GetPropertyValue <ConcurrentDictionary <string, string> >("Properties"))
                {
                    var props = typeof(TelimenaContextPropertyKeys).GetProperties().Select(x => x.Name);
                    if (!props.Contains(keyValuePair.Key))
                    {
                        Assert.AreEqual(keyValuePair.Value, telimenaItem.Properties[keyValuePair.Key]);
                    }
                }
            }
        }
示例#7
0
        public void TestEvent()
        {
            List <ITelemetry> sentTelemetry   = new List <ITelemetry>();
            TelemetryModule   telemetryModule = Helpers.GetTelemetryModule(sentTelemetry, this.testTelemetryKey);

            telemetryModule.Event("TestEvent", new Dictionary <string, string>()
            {
                { "AKey", $"AValue" },
                { "AKey2", $"AValue2" }
            });

            List <TelemetryItem> mapped = DoTheMapping(sentTelemetry);


            Assert.AreEqual(TelemetryItemTypes.Event, mapped.Single().TelemetryItemType);
            Assert.AreEqual("AValue", mapped[0].Properties["AKey"]);
            Assert.AreEqual("AValue2", mapped[0].Properties["AKey2"]);
            Assert.AreEqual(3, mapped[0].Properties.Count);
            Assert.IsNotNull(mapped[0].Properties.SingleOrDefault(x => x.Value == this.testTelemetryKey.ToString()));
        }
        private static void Main(string[] args)
        {
            var module = new TelemetryModule();

            module.StartModuleAsync(args).Wait();
        }