Exemplo n.º 1
0
        //Service start
        public static void Start(DynamoModel dynamoModel)
        {
            string appVersion = Process.GetCurrentProcess().ProcessName + "-"
                                + UpdateManager.UpdateManager.Instance.ProductVersion.ToString();


            CSharpAnalytics.MeasurementConfiguration mc = new MeasurementConfiguration(ANALYTICS_PROPERTY,
                                                                                       "Dynamo", appVersion);

            sessionID  = Guid.NewGuid().ToString();
            loggerImpl = new Log("Dynamo", userID, sessionID);


            CSharpAnalytics.AutoMeasurement.Start(mc);
            client = AutoMeasurement.Client;

            if (IS_VERBOSE_DIAGNOSTICS)
            {
                AutoMeasurement.DebugWriter = d => Debug.WriteLine(d);
            }

            started = true;

            // The following starts the heartbeat, do not remove this
            // because of the unreferenced "heartbeat" variable.

// ReSharper disable UnusedVariable
            var heartbeat = Heartbeat.GetInstance(dynamoModel);
// ReSharper restore UnusedVariable
        }
        public void TrackContentView_Tracks_ContentView()
        {
            var          url         = new Uri("http://csharpanalytics.com/doc");
            const string title       = "CSharpAnalytics docs";
            const string description = "Documentation for CSharpAnalaytics";
            const string path        = "/docs";
            const string hostName    = "docs.csharpanalytics.com";

            var list   = new List <Uri>();
            var client = new MeasurementAnalyticsClient();

            MeasurementTestHelpers.ConfigureForTest(client, list.Add);

            client.TrackContentView(url, title, description, path, hostName);

            Assert.AreEqual(1, list.Count);
            var parameters = list[0].GetComponents(UriComponents.Query, UriFormat.Unescaped).Split('&');

            CollectionAssert.Contains(parameters, "t=pageview");
            CollectionAssert.Contains(parameters, "dl=" + url);
            CollectionAssert.Contains(parameters, "dt=" + title);
            CollectionAssert.Contains(parameters, "cd=" + description);
            CollectionAssert.Contains(parameters, "dp=" + path);
            CollectionAssert.Contains(parameters, "dh=" + hostName);
        }
Exemplo n.º 3
0
        //Service start
        public static void Start(DynamoModel dynamoModel)
        {
            InstrumentationLogger.dynamoModel = dynamoModel;

            if (IsAnalyticsEnabled)
            {
                string appVersion = dynamoModel.AppVersion;

                var mc = new MeasurementConfiguration(ANALYTICS_PROPERTY,
                                                      "Dynamo", appVersion);
                mc.AnonymizeIp = true;

                sessionID  = Guid.NewGuid().ToString();
                loggerImpl = new Log("Dynamo", userID, sessionID);

                AutoMeasurement.Start(mc);
                client = AutoMeasurement.Client;

                if (IS_VERBOSE_DIAGNOSTICS)
                {
                    AutoMeasurement.DebugWriter = d => Debug.WriteLine(d);
                }

                started = true;
            }


            // The following starts the heartbeat, do not remove this
            // because of the unreferenced "heartbeat" variable.

// ReSharper disable UnusedVariable
            var heartbeat = Heartbeat.GetInstance(dynamoModel);
// ReSharper restore UnusedVariable
        }
Exemplo n.º 4
0
 /// <summary>
 /// Track a social activity being performed.
 /// </summary>
 /// <param name="analyticsClient">MeasurementAnalyticsClient object with queue and configuration set-up.</param>
 /// <param name="action">Social action being performed.</param>
 /// <param name="network">Name of the social network being acted upon.</param>
 /// <param name="pagePath">Optional path of the page the action occured on.</param>
 /// <param name="target">Optional target resource being acted upon.</param>
 public static void TrackSocial(this MeasurementAnalyticsClient analyticsClient, string action, string network, string target = null, string pagePath = null)
 {
     if (analyticsClient == null)
     {
         throw new ArgumentNullException("analyticsClient");
     }
     analyticsClient.Track(new SocialActivity(action, network, pagePath, target));
 }
        public void MeasurementAnalyticsClient_AdjustUriBeforeRequest_Clears_Fragment()
        {
            var originalUri = new Uri("http://anything.really.com/something#" + DateTime.UtcNow.ToString("o"));

            var actual = new MeasurementAnalyticsClient().AdjustUriBeforeRequest(originalUri);

            Assert.AreEqual(actual.Fragment, "");
        }
        public void MeasurementAnalyticsClient_AdjustUriBeforeRequest_Does_Not_Add_Qt_Parameter_If_Sc_Parameter_Present()
        {
            var originalUri = new Uri("http://anything.really.com/something?sc=start#" + DateTime.UtcNow.ToString("o"));

            var actual = new MeasurementAnalyticsClient().AdjustUriBeforeRequest(originalUri);

            Assert.IsFalse(actual.Query.Contains("qt="));
        }
        public void MeasurementAnalyticsClient_AdjustUriBeforeRequest_Adds_Qt_Parameter()
        {
            var originalUri = new Uri("http://anything.really.com/something#" + DateTime.UtcNow.ToString("o"));

            var actual = new MeasurementAnalyticsClient().AdjustUriBeforeRequest(originalUri);

            StringAssert.Contains(actual.Query, "qt=");
        }
Exemplo n.º 8
0
 /// <summary>
 /// Capture the details of an event that will be sent to analytics.
 /// </summary>
 /// <param name="analyticsClient">MeasurementAnalyticsClient object with queue and configuration set-up.</param>
 /// <param name="description">Description of the exception.</param>
 /// <param name="isFatal">Optional whether the exception was fatal (caused the app to crash), defaults to false.</param>
 public static void TrackException(this MeasurementAnalyticsClient analyticsClient, string description, bool isFatal = false)
 {
     if (analyticsClient == null)
     {
         throw new ArgumentNullException("analyticsClient");
     }
     analyticsClient.Track(new ExceptionActivity(description, isFatal));
 }
Exemplo n.º 9
0
 /// <summary>
 /// Capture the details of an event that will be sent to analytics.
 /// </summary>
 /// <param name="analyticsClient">MeasurementAnalyticsClient object with queue and configuration set-up.</param>
 /// <param name="action">Action name of the event to send.</param>
 /// <param name="category">Category of the event to send.</param>
 /// <param name="label">Optional label name of the event to send.</param>
 /// <param name="value">Optional numeric value of the event to send.</param>
 /// <param name="nonInteraction">Optional boolean value to be assigned to the NonInteraction property.</param>
 public static void TrackEvent(this MeasurementAnalyticsClient analyticsClient, string action, string category, string label = null, int?value = null, bool nonInteraction = false)
 {
     if (analyticsClient == null)
     {
         throw new ArgumentNullException("analyticsClient");
     }
     analyticsClient.Track(new EventActivity(action, category, label, value, nonInteraction));
 }
Exemplo n.º 10
0
 /// <summary>
 /// Capture the details of a timed event that will be sent to analytics.
 /// </summary>
 /// <param name="analyticsClient">MeasurementAnalyticsClient object with queue and configuration set-up.</param>
 /// <param name="category">Category of the event to send.</param>
 /// <param name="variable">Variable name of the event to send.</param>
 /// <param name="time">Time of the event to send.</param>
 /// <param name="label">Optional label name of the event to send.</param>
 public static void TrackTimedEvent(this MeasurementAnalyticsClient analyticsClient, string category, string variable, TimeSpan time, string label = null)
 {
     if (analyticsClient == null)
     {
         throw new ArgumentNullException("analyticsClient");
     }
     analyticsClient.Track(new TimedEventActivity(category, variable, time, label));
 }
        public void MeasurementAnalyticsClient_Track_Ends_AutoTimedEventActivity()
        {
            var client         = new MeasurementAnalyticsClient();
            var autoTimedEvent = new AutoTimedEventActivity("Category", "Variable");

            client.Track(autoTimedEvent);

            Assert.IsNotNull(autoTimedEvent.EndedAt);
        }
Exemplo n.º 12
0
 /// <summary>
 /// Track a ContentView activity for a given piece of content.
 /// </summary>
 /// <param name="analyticsClient">MeasurementAnalyticsClient object with queue and configuration set-up.</param>
 /// <param name="documentLocation">URI location of the document.</param>
 /// <param name="contentDescription">Description of the content.</param>
 /// <param name="documentPath">Optional path override of the document location.</param>
 /// <param name="documentHostName">Optional host name override of the document location.</param>
 public static void TrackContentView(this MeasurementAnalyticsClient analyticsClient, Uri documentLocation, string contentDescription,
                                     string documentPath = null, string documentHostName = null)
 {
     if (analyticsClient == null)
     {
         throw new ArgumentNullException("analyticsClient");
     }
     analyticsClient.Track(new ContentViewActivity(documentLocation, contentDescription, documentPath, documentHostName));
 }
        public void MeasurementAnalyticsClient_OnTrack_Fires_When_Tracked()
        {
            var fired           = false;
            var analyticsClient = new MeasurementAnalyticsClient();

            analyticsClient.OnTrack += (s, e) => fired = true;
            analyticsClient.Track(new ScreenViewActivity("Testing"));

            Assert.IsTrue(fired);
        }
        public void MeasurementAnalyticsClient_OnTrack_Fires_After_AutoTimedEvent_Ended()
        {
            DateTimeOffset?endedAt         = null;
            var            analyticsClient = new MeasurementAnalyticsClient();
            var            autoTimedEvent  = new AutoTimedEventActivity("Category", "Variable");

            analyticsClient.OnTrack += (s, e) => { endedAt = ((AutoTimedEventActivity)e).EndedAt; };
            analyticsClient.Track(autoTimedEvent);

            Assert.IsNotNull(endedAt);
        }
Exemplo n.º 15
0
 /// <summary>
 /// Capture the details of a campaign that will be sent to analytics.
 /// </summary>
 /// <param name="analyticsClient">MeasurementAnalyticsClient object with queue and configuration set-up.</param>
 /// <param name="source">Source of the campaign.</param>
 /// <param name="name">Optional name of the campaign.</param>
 /// <param name="medium">Optional type of campaign.</param>
 /// <param name="term">Optional keyword terms for this campaign.</param>
 /// <param name="content">Optional content such as the specific link or content item for this campaign.</param>
 public static void TrackCampaign(this MeasurementAnalyticsClient analyticsClient, string source, string name = null, string medium = null, string term = null, string content = null)
 {
     if (analyticsClient == null)
     {
         throw new ArgumentNullException("analyticsClient");
     }
     analyticsClient.Track(new CampaignActivity(source)
     {
         Name = name, Medium = medium, Term = term, Content = content
     });
 }
        public void AppViewExtension_Tracks_AppView()
        {
            var list   = new List <Uri>();
            var client = new MeasurementAnalyticsClient();

            MeasurementTestHelpers.ConfigureForTest(client, list.Add);

            client.TrackAppView("SomeScreenName");

            Assert.AreEqual(1, list.Count);
            StringAssert.Contains(list[0].OriginalString, "t=appview");
        }
Exemplo n.º 17
0
 /// <summary>
 /// Capture the details of an application view event that will be sent to analytics.
 /// </summary>
 /// <param name="analyticsClient"></param>
 /// <param name="screenName"></param>
 public static void TrackAppView(this MeasurementAnalyticsClient analyticsClient, string screenName)
 {
     if (analyticsClient == null)
     {
         throw new ArgumentNullException("analyticsClient");
     }
     if (String.IsNullOrWhiteSpace(screenName))
     {
         throw new ArgumentException("Screen name must not be null or blank", "screenName");
     }
     analyticsClient.Track(new AppViewActivity(screenName));
 }
        public void MeasurementAnalyticsClient_Replays_Tracked_Activities_After_Configured()
        {
            var actual = new List <Uri>();

            var client = new MeasurementAnalyticsClient();

            client.Track(new ScreenViewActivity("The Big Screen"));
            client.Track(new ScreenViewActivity("Silk Screen"));

            MeasurementTestHelpers.ConfigureForTest(client, actual.Add);

            Assert.AreEqual(2, actual.Count);
        }
        public void MeasurementAnalyticsClient_SetCustomMetric_Int_Is_Sent()
        {
            var actual = new List <Uri>();
            var client = new MeasurementAnalyticsClient();

            MeasurementTestHelpers.ConfigureForTest(client, actual.Add);

            client.SetCustomMetric(6, 6060);
            client.TrackScreenView("Test View");

            Assert.AreEqual(1, actual.Count);
            StringAssert.Contains(actual[0].Query, "cm6=6060");
        }
        public void MeasurementAnalyticsClient_SetCustomMetric_Decimal_Is_Sent()
        {
            var actual = new List <Uri>();
            var client = new MeasurementAnalyticsClient();

            MeasurementTestHelpers.ConfigureForTest(client, actual.Add);

            client.SetCustomMetric(8, 123456.78m);
            client.TrackAppView("Test View");

            Assert.AreEqual(1, actual.Count);
            StringAssert.Contains(actual[0].Query, "cm8=123456.78");
        }
        public void MeasurementAnalyticsClient_SetCustomDimension_By_Enum_Is_Sent()
        {
            var actual = new List <Uri>();
            var client = new MeasurementAnalyticsClient();

            MeasurementTestHelpers.ConfigureForTest(client, actual.Add);

            client.SetCustomDimension(CustomDimensions.Eight, "DimensionEight");
            client.TrackScreenView("Test View");

            Assert.AreEqual(1, actual.Count);
            StringAssert.Contains(actual[0].Query, "cd8=DimensionEight");
        }
        public void MeasurementAnalyticsClient_SetCustomMetric_Timespan_Is_Sent()
        {
            var actual         = new List <Uri>();
            var actualTimespan = new TimeSpan(4, 1, 2, 3);
            var client         = new MeasurementAnalyticsClient();

            MeasurementTestHelpers.ConfigureForTest(client, actual.Add);

            client.SetCustomMetric(7, actualTimespan);
            client.TrackScreenView("Test View");

            Assert.AreEqual(1, actual.Count);
            StringAssert.Contains(actual[0].Query, "cm7=" + (int)actualTimespan.TotalSeconds);
        }
        public void TrackException_Tracks_Exception()
        {
            const string description = "Some action";

            var list   = new List <Uri>();
            var client = new MeasurementAnalyticsClient();

            MeasurementTestHelpers.ConfigureForTest(client, list.Add);

            client.TrackException(description);

            Assert.AreEqual(1, list.Count);
            var parameters = list[0].GetComponents(UriComponents.Query, UriFormat.Unescaped).Split('&');

            CollectionAssert.Contains(parameters, "t=exception");
            CollectionAssert.Contains(parameters, "exd=" + description);
            CollectionAssert.Contains(parameters, "exf=0");
        }
        public void TrackSocial_Tracks_Social()
        {
            const string action  = "Poke";
            const string network = "FriendFace";
            const string target  = "Clown";

            var list   = new List <Uri>();
            var client = new MeasurementAnalyticsClient();

            MeasurementTestHelpers.ConfigureForTest(client, list.Add);

            client.TrackSocial(action, network, target);

            Assert.AreEqual(1, list.Count);
            var parameters = list[0].GetComponents(UriComponents.Query, UriFormat.Unescaped).Split('&');

            CollectionAssert.Contains(parameters, "t=social");
            CollectionAssert.Contains(parameters, "sa=" + action);
            CollectionAssert.Contains(parameters, "sn=" + network);
            CollectionAssert.Contains(parameters, "st=" + target);
        }
        public void TrackTimedEvent_Tracks_TimedEvent()
        {
            const string category = "A category";
            const string variable = "Some variable";
            var          time     = TimeSpan.FromMilliseconds(12345);
            const string label    = "Blue";

            var list   = new List <Uri>();
            var client = new MeasurementAnalyticsClient();

            MeasurementTestHelpers.ConfigureForTest(client, list.Add);

            client.TrackTimedEvent(category, variable, time, label);

            Assert.AreEqual(1, list.Count);
            var parameters = list[0].GetComponents(UriComponents.Query, UriFormat.Unescaped).Split('&');

            CollectionAssert.Contains(parameters, "t=timing");
            CollectionAssert.Contains(parameters, "utc=" + category);
            CollectionAssert.Contains(parameters, "utv=" + variable);
            CollectionAssert.Contains(parameters, "utt=" + time.TotalMilliseconds);
            CollectionAssert.Contains(parameters, "utl=" + label);
        }
        public void TrackEvent_Tracks_Event()
        {
            const string action   = "Some action";
            const string category = "Category Z";
            const string label    = "I am a label";
            const int    value    = 55;

            var list   = new List <Uri>();
            var client = new MeasurementAnalyticsClient();

            MeasurementTestHelpers.ConfigureForTest(client, list.Add);

            client.TrackEvent(action, category, label, value, true);

            Assert.AreEqual(1, list.Count);
            var parameters = list[0].GetComponents(UriComponents.Query, UriFormat.Unescaped).Split('&');

            CollectionAssert.Contains(parameters, "t=event");
            CollectionAssert.Contains(parameters, "ea=" + action);
            CollectionAssert.Contains(parameters, "ec=" + category);
            CollectionAssert.Contains(parameters, "el=" + label);
            CollectionAssert.Contains(parameters, "ev=" + value);
            CollectionAssert.Contains(parameters, "ni=1");
        }
Exemplo n.º 27
0
 public static void ConfigureForTest(MeasurementAnalyticsClient client, Action <Uri> sender)
 {
     client.Configure(Configuration, CreateSessionManager(), CreateEnvironment(), sender);
 }