public void WhenBeginAndEndScopeOnThread_StartAndEndTimeAreWithinMainThreadScope() { BuildLog log = new BuildLog(); using (log.ScopedStep(LogLevel.Info, "TestStep", true)) { var t = new Thread(() => { Thread.Sleep(1); log.AddEntry(LogLevel.Info, "ThreadedMsg1"); Thread.Sleep(1); using (log.ScopedStep(LogLevel.Info, "ThreadedStep")) Thread.Sleep(2); Thread.Sleep(1); }); t.Start(); t.Join(); } double testStepStart = log.Root.Children[0].StartTime; double threadedMessageStart = log.Root.Children[0].Entries[0].Time; double threadedScopeStart = log.Root.Children[0].Children[0].StartTime; double threadedScopeEnd = threadedScopeStart + log.Root.Children[0].Children[0].DurationMS; double testStepEnd = testStepStart + log.Root.Children[0].DurationMS; Assert.Less(testStepStart, threadedMessageStart); Assert.Less(threadedMessageStart, threadedScopeStart); Assert.Less(threadedScopeStart, threadedScopeEnd); Assert.Less(threadedScopeEnd, testStepEnd); }
public void WhenMessageAddedWithScope_EntryIsCreated() { BuildLog log = new BuildLog(); ((IDisposable)log.ScopedStep(LogLevel.Info, "TestStep", "TestEntry")).Dispose(); Assert.AreEqual("TestEntry", log.Root.Children[0].Entries[0].Message); }
/// <summary> /// Build the specified data with the provided builderInput. This is the public entry point. /// Child class overrides should use <see cref="BuildDataImplementation{TResult}"/> /// </summary> /// <typeparam name="TResult">The type of data to build.</typeparam> /// <param name="builderInput">The builderInput object used in the build.</param> /// <returns>The build data result.</returns> public TResult BuildData <TResult>(AddressablesDataBuilderInput builderInput) where TResult : IDataBuilderResult { if (!CanBuildData <TResult>()) { var message = "Data builder " + Name + " cannot build requested type: " + typeof(TResult); Debug.LogError(message); return(AddressableAssetBuildResult.CreateResult <TResult>(null, 0, message)); } BuildLog log = new BuildLog(); m_Log = log; AddressablesRuntimeProperties.ClearCachedPropertyValues(); TResult result; // Append the file registry to the results using (log.ScopedStep(LogLevel.Info, $"Building {this.Name}")) { result = BuildDataImplementation <TResult>(builderInput); if (result != null) { result.FileRegistry = builderInput.Registry; } } var perfOutputDirectory = Path.GetDirectoryName(Application.dataPath) + "/Library/com.unity.addressables"; File.WriteAllText(Path.Combine(perfOutputDirectory, "AddressablesBuildTEP.json"), log.FormatAsTraceEventProfiler()); File.WriteAllText(Path.Combine(perfOutputDirectory, "AddressablesBuildLog.txt"), log.FormatAsText()); return(result); }
public void WhenAddMessage_EntryIsCreated() { BuildLog log = new BuildLog(); using (log.ScopedStep(LogLevel.Info, "TestStep")) log.AddEntry(LogLevel.Info, "TestEntry"); Assert.AreEqual("TestEntry", log.Root.Children[0].Entries[0].Message); }
public void WhenBeginAndEndScope_DurationIsCorrect() { BuildLog log = new BuildLog(); using (log.ScopedStep(LogLevel.Info, "TestStep")) Thread.Sleep(5); Assert.AreEqual("TestStep", log.Root.Children[0].Name); Assert.Greater(log.Root.Children[0].DurationMS, 4); }
public void WhenConvertingToTraceEventFormat_BackslashesAreEscaped() { BuildLog log = new BuildLog(); using (log.ScopedStep(LogLevel.Info, "TestStep\\AfterSlash")) log.AddEntry(LogLevel.Info, "TestEntry\\AfterSlash"); string text = log.FormatAsTraceEventProfiler(); StringAssert.Contains("TestStep\\\\AfterSlash", text); StringAssert.Contains("TestStep\\\\AfterSlash", text); }
public void WhenScopeIsThreaded_AndThreadAddsNode_NodeEnteredInThreadedScope() { BuildLog log = new BuildLog(); using (log.ScopedStep(LogLevel.Info, "TestStep", true)) { var t = new Thread(() => { log.AddEntry(LogLevel.Info, "ThreadedMsg1"); using (log.ScopedStep(LogLevel.Info, "ThreadedStep")) { log.AddEntry(LogLevel.Info, "ThreadedMsg2"); } }); t.Start(); t.Join(); } Assert.AreEqual("ThreadedMsg1", log.Root.Children[0].Entries[0].Message); Assert.AreNotEqual(Thread.CurrentThread.ManagedThreadId, log.Root.Children[0].Entries[0].ThreadId); Assert.AreEqual("ThreadedStep", log.Root.Children[0].Children[0].Name); Assert.AreNotEqual(Thread.CurrentThread.ManagedThreadId, log.Root.Children[0].Children[0].ThreadId); Assert.AreEqual("ThreadedMsg2", log.Root.Children[0].Children[0].Entries[0].Message); Assert.AreNotEqual(Thread.CurrentThread.ManagedThreadId, log.Root.Children[0].Children[0].Entries[0].ThreadId); }