public void EventDataPlayerSession_HandleOperationDestroy_DestroyedEventHasParentCase() { EventDataPlayerSession edps = new EventDataPlayerSession(); DiagnosticEvent dependencyEvt = CreateNewGenericEvent(ResourceManager.DiagnosticEventType.AsyncOperationReferenceCount, 0, 0, 1001); DiagnosticEvent creationEvt = CreateNewGenericEvent(ResourceManager.DiagnosticEventType.AsyncOperationCreate, 0, 1, 1000, new int[] { dependencyEvt.ObjectId }); DiagnosticEvent deletionEvt = CreateNewGenericEvent(ResourceManager.DiagnosticEventType.AsyncOperationDestroy, 1, 1, 1001); bool entryCreated = false; edps.AddSample(dependencyEvt, false, ref entryCreated); Assert.IsTrue(entryCreated, "Either a new entry was supposed to be created, but was not, or the value of entryCreated was not properly updated."); edps.AddSample(creationEvt, false, ref entryCreated); Assert.IsTrue(entryCreated, "Either a new entry was supposed to be created, but was not, or the value of entryCreated was not properly updated."); edps.AddSample(deletionEvt, false, ref entryCreated); Assert.IsFalse(entryCreated, "Either a new entry was created when it shouldn't have been, or the value of entryCreated was not properly updated."); Assert.AreEqual(1, edps.m_RootStreamEntry.Children.Count(), "DependencyEvt's id should have been removed from RootStreamEntry's children because it is a dependency."); Assert.AreEqual(1, edps.m_Queue.Count, "Deletion event should have been added to the removal queue."); edps.HandleOperationDestroy(deletionEvt); Assert.IsFalse(edps.m_DataSets.ContainsKey(deletionEvt.ObjectId), "DataSet was not properly removed after dependency was cleared. "); EventDataSet creationEvtEds = null; Assert.IsTrue(edps.m_DataSets.TryGetValue(creationEvt.ObjectId, out creationEvtEds), "Parent event was removed from m_DataSets incorrectly."); Assert.IsNull(creationEvtEds.m_Children, "dependencyEvt's dataset should have been removed from the children of creationEvt's dataset. "); Assert.AreEqual(1, edps.m_Queue.Count, "No further deletion events should have been added to the deletion queue."); }
public void EventDataPlayerSession_HandleOperationDestroy_DoesNotDestroyOnNonzeroRefcount() { EventDataPlayerSession edps = new EventDataPlayerSession(); DiagnosticEvent creationEvt = CreateNewGenericEvent(ResourceManager.DiagnosticEventType.AsyncOperationCreate, 0, 1, 1000); DiagnosticEvent refcountEvt = CreateNewGenericEvent(ResourceManager.DiagnosticEventType.AsyncOperationReferenceCount, 0, 1, 1000); DiagnosticEvent deletionEvt = CreateNewGenericEvent(ResourceManager.DiagnosticEventType.AsyncOperationDestroy, 1, 1, 1000); bool entryCreated = false; edps.AddSample(creationEvt, false, ref entryCreated); Assert.IsTrue(entryCreated, "creationEvt: Either a new entry was supposed to be created, but was not, or the value of entryCreated was not properly updated."); edps.AddSample(refcountEvt, false, ref entryCreated); Assert.IsFalse(entryCreated, "refcountEvt: Either a new entry was created when it shouldn't have been, or the value of entryCreated was not properly updated."); edps.AddSample(deletionEvt, false, ref entryCreated); Assert.IsFalse(entryCreated, "deletionEvt: Either a new entry was created when it shouldn't have been, or the value of entryCreated was not properly updated."); Assert.AreEqual(1, edps.m_Queue.Count, "Deletion event should've been added to the removal queue."); edps.HandleOperationDestroy(deletionEvt); Assert.IsTrue(edps.m_DataSets.ContainsKey(creationEvt.ObjectId), "Dataset should not have been removed because it's refcount is greater than 0. "); }