public void TestFileCreation_AddNewBreadcrumbToFile_SuccessfullyAddedBreadcrumb(LogType testedLevel) { var currentTime = DateTimeHelper.TimestampMs(); const string breadcrumbMessage = "foo"; var breadcrumbFile = new InMemoryBreadcrumbFile(); var breadcrumbsStorageManager = new BacktraceStorageLogManager(Application.temporaryCachePath) { BreadcrumbFile = breadcrumbFile }; var breadcrumbsManager = new BacktraceBreadcrumbs(breadcrumbsStorageManager); var unityEngineLogLevel = breadcrumbsManager.ConvertLogTypeToLogLevel(testedLevel); var logTypeThatUnsupportCurrentTestCase = (Enum.GetValues(typeof(UnityEngineLogLevel)) as IEnumerable <UnityEngineLogLevel>) .First(n => n == unityEngineLogLevel); breadcrumbsManager.EnableBreadcrumbs(ManualBreadcrumbsType, logTypeThatUnsupportCurrentTestCase); var added = breadcrumbsManager.Log(breadcrumbMessage, testedLevel); Assert.IsTrue(added); var data = ConvertToBreadcrumbs(breadcrumbFile); Assert.AreEqual(1, data.Count()); var breadcrumb = data.First(); Assert.AreEqual(ManualBreadcrumbsType, (BacktraceBreadcrumbType)breadcrumb.Type); Assert.AreEqual(unityEngineLogLevel, breadcrumb.Level); Assert.AreEqual(breadcrumbMessage, breadcrumb.Message); // round timestamp because timestamp value in the final json will reduce decimal part. Assert.That(Math.Round(currentTime, 0), Is.LessThanOrEqualTo(Math.Round(breadcrumb.Timestamp, 0))); }
public void TestFileCreation_ShouldRecreateFileIfFileExists_SuccessfullyRecreatedFile() { var breadcrumbFile = new InMemoryBreadcrumbFile(); var breadcrumbsStorageManager = new BacktraceStorageLogManager(Application.temporaryCachePath) { BreadcrumbFile = breadcrumbFile }; string emptyDocumentText = _startOfDocumentString + _endOfDocumentString; var enableResult = breadcrumbsStorageManager.Enable(); Assert.IsTrue(enableResult); Assert.AreEqual(Encoding.UTF8.GetBytes(emptyDocumentText), breadcrumbFile.MemoryStream.ToArray()); }
public void TestFileLimit_ShouldCleanupTheSpace_SpaceWasCleaned() { const string breadcrumbMessage = "foo"; const int minimalSize = 10 * 1000; var breadcrumbFile = new InMemoryBreadcrumbFile(); var breadcrumbsStorageManager = new BacktraceStorageLogManager(Application.temporaryCachePath) { BreadcrumbFile = breadcrumbFile, BreadcrumbsSize = minimalSize }; var breadcrumbsManager = new BacktraceBreadcrumbs(breadcrumbsStorageManager); var unityEngineLogLevel = UnityEngineLogLevel.Debug; var breadcrumbStart = breadcrumbsManager.BreadcrumbId(); breadcrumbsManager.EnableBreadcrumbs(ManualBreadcrumbsType, unityEngineLogLevel); int numberOfAddedBreadcrumbs = 1; breadcrumbsManager.Log(breadcrumbMessage, LogType.Assert); var breadcrumbSize = breadcrumbFile.Size - 2; while (breadcrumbFile.Size + breadcrumbSize < minimalSize != false) { breadcrumbsManager.Log(breadcrumbMessage, LogType.Assert); numberOfAddedBreadcrumbs++; } var sizeBeforeCleanup = breadcrumbFile.Size; var numberOfBreadcurmbsBeforeCleanUp = numberOfAddedBreadcrumbs; breadcrumbsManager.Log(breadcrumbMessage, LogType.Assert); numberOfAddedBreadcrumbs++; Assert.That(breadcrumbFile.Size, Is.LessThan(sizeBeforeCleanup)); var data = ConvertToBreadcrumbs(breadcrumbFile); Assert.IsNotEmpty(data); Assert.AreEqual(breadcrumbStart + numberOfAddedBreadcrumbs, breadcrumbsStorageManager.BreadcrumbId()); Assert.That(breadcrumbsStorageManager.Length(), Is.LessThan(numberOfBreadcurmbsBeforeCleanUp)); }
public void TestBreadcrumbs_BasicBreadcrumbsTestForAllEvents_ShouldStoreEvents() { const int expectedNumberOfBreadcrumbs = 3; string[] messages = new string[expectedNumberOfBreadcrumbs] { "CustomUserBreadcrumb1", "PlayerStarted", "unhandled exception custom message from breadcrumbs test case" }; var breadcrumb1Attributes = new Dictionary <string, string>() { { "name", "CustomUserBreadcrumb1Value" } }; var breadcrumbFile = new InMemoryBreadcrumbFile(); var breadcrumbsStorageManager = new BacktraceStorageLogManager(Application.temporaryCachePath) { BreadcrumbFile = breadcrumbFile }; var breadcrumbsManager = new BacktraceBreadcrumbs(breadcrumbsStorageManager); var expectedBreadcrumbId = breadcrumbsManager.BreadcrumbId(); var unityEngineLogLevel = UnityEngineLogLevel.Debug | UnityEngineLogLevel.Warning | UnityEngineLogLevel.Info | UnityEngineLogLevel.Error | UnityEngineLogLevel.Fatal; breadcrumbsManager.EnableBreadcrumbs(BacktraceBreadcrumbType.Manual | BacktraceBreadcrumbType.System, unityEngineLogLevel); breadcrumbsManager.Warning(messages[0], breadcrumb1Attributes); breadcrumbsManager.Info(messages[1]); breadcrumbsManager.Exception(messages[2]); Assert.AreEqual(expectedNumberOfBreadcrumbs, breadcrumbsStorageManager.Length()); Assert.AreEqual(expectedNumberOfBreadcrumbs + expectedBreadcrumbId, breadcrumbsStorageManager.BreadcrumbId()); var breadcrumbs = ConvertToBreadcrumbs(breadcrumbFile); for (int i = 0; i < expectedNumberOfBreadcrumbs; i++) { Assert.AreEqual(messages[i], breadcrumbs.ElementAt(i).Message); } }
private IEnumerable <InMemoryBreadcrumb> ConvertToBreadcrumbs(InMemoryBreadcrumbFile file) { return(ConvertToBreadcrumbs(Encoding.UTF8.GetString(file.MemoryStream.ToArray()))); }