コード例 #1
0
        /// <summary>
        /// Wraps the given bond transport client in to allow injecting failures using different patterns.
        /// </summary>
        public static IBondTransportClient TryWrapClientForTest(DistributedBuildRoles role, IBondTransportClient client)
        {
            Contract.Requires(client != null);
            Contract.Requires(role != DistributedBuildRoles.None);
            Contract.Ensures(Contract.Result <IBondTransportClient>() != null);

            var scenarioRole = Environment.GetEnvironmentVariable("BuildXL_Test_Resiliency_Role");
            var scenarioName = Environment.GetEnvironmentVariable("BuildXL_Test_Resiliency_Scenario") ?? string.Empty;

            if (!string.IsNullOrEmpty(scenarioRole) && !string.Equals(scenarioRole, role.ToString(), StringComparison.OrdinalIgnoreCase))
            {
                return(client);
            }

            scenarioName = scenarioName.ToUpperInvariant();
            FailureScenario scenario = null;

            switch (scenarioName)
            {
            case "RANDOM":
                scenario = new RandomFailuresScenario();
                break;

            case "RANDOMCHECKSUM":
                scenario = new RandomChecksumFailuresScenario();
                break;

            case "SHORT":
                scenario = new ShortDurationFailureScenario();
                break;

            case "LONG":
                scenario = new LongDurationFailureScenario();
                break;

            case "IRRECOVERABLE":
                scenario = new IrrecoverableFailureScenario();
                break;
            }

            return(scenario == null ? client : new ResiliencyTestBondTransportClient(client, scenario));
        }
コード例 #2
0
 /// <summary>
 /// Helper method to check if the role is orchestrator while keeping the 'Master' role for compatibility
 /// </summary>
 public static bool IsOrchestrator(this DistributedBuildRoles role)
 {
     return(role == DistributedBuildRoles.Master || role == DistributedBuildRoles.Orchestrator);
 }