public void BacktraceMetricsUniqueEvent_ShouldPreventFromUpdatingAttributeWhenUniqueAttributeValueIsEmpty_UniqueEventIsUpdated() { const int nextTime = 1000; const string uniqueEventName = "BacktraceMetricsUniqueEvent_ShouldPreventFromUpdatingAttributeWhenUniqueAttributeValueIsEmpty_UniqueEventIsUpdated"; var attributeProvider = new AttributeProvider(); var timestamp = DateTimeHelper.Timestamp(); var expectedNewTimestamp = timestamp + nextTime; attributeProvider[uniqueEventName] = uniqueEventName; var attributes = attributeProvider.GenerateAttributes(); var uniqueEvent = new UniqueEvent(uniqueEventName, timestamp, attributes); attributeProvider[uniqueEventName] = string.Empty; uniqueEvent.UpdateTimestamp(expectedNewTimestamp, attributeProvider.GenerateAttributes()); Assert.AreEqual(uniqueEventName, uniqueEvent.Attributes[uniqueEventName]); }
internal override IEnumerable <BacktraceJObject> GetEventsPayload(ICollection <SummedEvent> events) { var summedEventJson = new List <BacktraceJObject>(); var attributes = _attributeProvider.GenerateAttributes(false); foreach (var summedEvent in events) { summedEventJson.Add(summedEvent.ToJson(attributes)); } Events.Clear(); return(summedEventJson); }
public void BacktraceMetricsUniqueEvents_ShouldAddCorrectlyUniqueEventWithEmptyAttributes_StoreValidUniqueEvent() { var backtraceMetrics = new BacktraceMetrics(_attributeProvider, 0, _defaultUniqueEventsSubmissionUrl, _defaultSummedEventsSubmissionUrl); backtraceMetrics.AddUniqueEvent(UniqueAttributeName, null); Assert.AreEqual(backtraceMetrics.UniqueEvents.Count, 1); var uniqueEvent = backtraceMetrics.UniqueEvents.First.Value; Assert.AreEqual(uniqueEvent.Name, UniqueAttributeName); Assert.AreNotEqual(uniqueEvent.Timestamp, 0); Assert.AreEqual(uniqueEvent.Attributes.Count, _attributeProvider.GenerateAttributes().Count); }
public void Refresh() { if (Configuration == null || !Configuration.IsValid()) { return; } if (Instance != null) { return; } Enabled = true; _current = Thread.CurrentThread; CaptureUnityMessages(); _reportLimitWatcher = new ReportLimitWatcher(Convert.ToUInt32(Configuration.ReportPerMin)); _clientReportAttachments = Configuration.GetAttachmentPaths(); BacktraceApi = new BacktraceApi( credentials: new BacktraceCredentials(Configuration.GetValidServerUrl()), #if UNITY_2018_4_OR_NEWER ignoreSslValidation: Configuration.IgnoreSslValidation #else ignoreSslValidation: false #endif ); BacktraceApi.EnablePerformanceStatistics = Configuration.PerformanceStatistics; if (!Configuration.DestroyOnLoad) { DontDestroyOnLoad(gameObject); _instance = this; } var nativeAttachments = _clientReportAttachments.ToList() .Where(n => !string.IsNullOrEmpty(n)) .OrderBy(System.IO.Path.GetFileName, StringComparer.InvariantCultureIgnoreCase).ToList(); if (Configuration.Enabled) { Database = GetComponent <BacktraceDatabase>(); if (Database != null) { Database.Reload(); Database.SetApi(BacktraceApi); Database.SetReportWatcher(_reportLimitWatcher); if (Database.Breadcrumbs != null) { nativeAttachments.Add(Database.Breadcrumbs.GetBreadcrumbLogPath()); } _nativeClient = NativeClientFactory.CreateNativeClient(Configuration, name, AttributeProvider.GenerateAttributes(false), nativeAttachments); Database.EnableBreadcrumbsSupport(); } } AttributeProvider.AddDynamicAttributeProvider(_nativeClient); if (Configuration.SendUnhandledGameCrashesOnGameStartup && isActiveAndEnabled) { var nativeCrashUplaoder = new NativeCrashUploader(); nativeCrashUplaoder.SetBacktraceApi(BacktraceApi); StartCoroutine(nativeCrashUplaoder.SendUnhandledGameCrashesOnGameStartup()); } #if !UNITY_WEBGL EnableMetrics(false); #endif }
private IDictionary <string, string> GetUniqueEventAttributes() { return(_attributeProvider.GenerateAttributes(false)); }