Ejemplo n.º 1
0
        public void ProcessMustRunLocalDueToTag()
        {
            // Force run remotely.
            Configuration.Schedule.RemotingThresholdMultiplier = 0.0;

            // This configuration will test that must-run-local tags take precendence over can-run-remote tags.
            const string MustRunLocalTag = nameof(MustRunLocalTag);

            Configuration.Schedule.ProcessMustRunLocalTags = new List <string> {
                MustRunLocalTag
            };
            Configuration.Schedule.ProcessCanRunRemoteTags = new List <string> {
                MustRunLocalTag
            };

            ProcessBuilder builder = CreatePipBuilder(new[] { Operation.ReadFile(CreateSourceFile()), Operation.WriteFile(CreateOutputFileArtifact()) });

            builder.AddTags(Context.StringTable, MustRunLocalTag);

            ProcessWithOutputs process = SchedulePipBuilder(builder);
            ScheduleRunResult  result  = RunScheduler().AssertSuccess();

            XAssert.AreEqual(0, result.PipExecutorCounters.GetCounterValue(global::BuildXL.Scheduler.PipExecutorCounter.TotalRunRemoteProcesses));
            XAssert.AreEqual(1, result.PipExecutorCounters.GetCounterValue(global::BuildXL.Scheduler.PipExecutorCounter.TotalRunLocallyProcessesOnRemotingWorker));
            XAssert.AreEqual(0, result.PipExecutorCounters.GetCounterValue(global::BuildXL.Scheduler.PipExecutorCounter.TotalRemoteFallbackRetries));
        }