/// <summary> /// Gets whether the <see cref="PipExecutorCounter"/> should expand pip type specific variations /// </summary> private static bool IsPipTypeSpecificCounter(PipExecutorCounter counter) { switch (counter) { case PipExecutorCounter.ExecutePipStepDuration: case PipExecutorCounter.ScheduleDependentDuration: case PipExecutorCounter.ScheduledByDependencyDuration: return(true); } return(false); }
/// <summary> /// Returns a 'frontier pip' variant of cache miss counter. /// </summary> public static PipExecutorCounter ToFrontierPipCacheMissCounter(this PipExecutorCounter counter) { switch (counter) { case PipExecutorCounter.CacheMissesForDescriptorsDueToStrongFingerprints: return(PipExecutorCounter.CacheMissesForDescriptorsDueToStrongFingerprints_Frontier); case PipExecutorCounter.CacheMissesForDescriptorsDueToWeakFingerprints: return(PipExecutorCounter.CacheMissesForDescriptorsDueToWeakFingerprints_Frontier); case PipExecutorCounter.CacheMissesForDescriptorsDueToAugmentedWeakFingerprints: return(PipExecutorCounter.CacheMissesForDescriptorsDueToAugmentedWeakFingerprints_Frontier); case PipExecutorCounter.CacheMissesForDescriptorsDueToArtificialMissOptions: return(PipExecutorCounter.CacheMissesForDescriptorsDueToArtificialMissOptions_Frontier); case PipExecutorCounter.CacheMissesForCacheEntry: return(PipExecutorCounter.CacheMissesForCacheEntry_Frontier); case PipExecutorCounter.CacheMissesDueToInvalidDescriptors: return(PipExecutorCounter.CacheMissesDueToInvalidDescriptors_Frontier); case PipExecutorCounter.CacheMissesForProcessMetadata: return(PipExecutorCounter.CacheMissesForProcessMetadata_Frontier); case PipExecutorCounter.CacheMissesForProcessMetadataFromHistoricMetadata: return(PipExecutorCounter.CacheMissesForProcessMetadataFromHistoricMetadata_Frontier); case PipExecutorCounter.CacheMissesForProcessOutputContent: return(PipExecutorCounter.CacheMissesForProcessOutputContent_Frontier); case PipExecutorCounter.CacheMissesForProcessConfiguredUncacheable: return(PipExecutorCounter.CacheMissesForProcessConfiguredUncacheable_Frontier); default: throw new ArgumentException($"Cannot find a corresponding counter for '{counter}'"); } }
/// <summary> /// Gets whether the <see cref="PipExecutorCounter"/> should expand pip type specific variations /// </summary> private static bool IsTrackedCacheCounter(PipExecutorCounter counter) { switch (counter) { case PipExecutorCounter.ObservedInputProcessorPreProcessDuration: case PipExecutorCounter.ObservedInputProcessorPass1InitializeObservationInfosDuration: case PipExecutorCounter.ObservedInputProcessorTryQuerySealedInputContentDuration: case PipExecutorCounter.ObservedInputProcessorTryProbeForExistenceDuration: case PipExecutorCounter.ObservedInputProcessorComputePipFileSystemPaths: case PipExecutorCounter.ObservedInputProcessorReportUnexpectedAccess: case PipExecutorCounter.ObservedInputProcessorComputeSearchPathsAndFilterDuration: case PipExecutorCounter.ObservedInputProcessorTryQueryDirectoryFingerprintDuration: case PipExecutorCounter.ComputeWeakFingerprintDuration: case PipExecutorCounter.CacheQueryingWeakFingerprintDuration: case PipExecutorCounter.TryLoadPathSetFromContentCacheDuration: case PipExecutorCounter.CheckProcessRunnableFromCacheExecutionLogDuration: case PipExecutorCounter.CheckProcessRunnableFromCacheChapter3RetrieveAndParseMetadataDuration: case PipExecutorCounter.CheckProcessRunnableFromCacheChapter4CheckContentAvailabilityDuration: return(true); } return(false); }
/// <summary> /// Validates that a pip execution event was counted the correct number of times /// </summary> public static void AssertPipExecutorStatCounted(this ScheduleRunResult result, PipExecutorCounter counter, long count) => XAssert.AreEqual(count, result.PipExecutorCounters.GetCounterValue(counter));
protected void AssertProcessPipCountersByFilterSumToPipExecutorCounters(ScheduleRunResult result, PipExecutorCounter pipExecutorCounter, PipCountersByGroup pipCountersByGroup) { var explicitCounter = result.ProcessPipCountersByFilter.ExplicitlyScheduledProcesses.GetElapsedTime(pipCountersByGroup); var implicitCounter = result.ProcessPipCountersByFilter.ImplicitlyScheduledProcesses.GetElapsedTime(pipCountersByGroup); var executorCounter = result.PipExecutorCounters.GetElapsedTime(pipExecutorCounter); AssertOkTimeDiff(executorCounter, explicitCounter + implicitCounter, "(explicit: " + explicitCounter.TotalMilliseconds + "ms, implicit: " + implicitCounter.TotalMilliseconds + "ms, executor: " + executorCounter.TotalMilliseconds + "ms)"); }