public static async Task <SelectedPartition> GetPartitionAsync(this IFabricTestabilityClient client, PartitionSelector partitionSelector)
        {
            var systemFabricCient = GetSystemFabricClient(client);
            GetSelectedPartitionStateAction partitionAction = new GetSelectedPartitionStateAction(partitionSelector);
            await systemFabricCient.FabricClient.TestManager.TestContext.ActionExecutor.RunAsync(partitionAction);

            return(partitionAction.Result);
        }
        public static async Task <Replica> GetReplicaAsync(this IFabricTestabilityClient client, ReplicaSelector replicaSelector)
        {
            var systemFabricCient = GetSystemFabricClient(client);
            GetSelectedReplicaStateAction replicaAction = new GetSelectedReplicaStateAction(replicaSelector);
            await systemFabricCient.FabricClient.TestManager.TestContext.ActionExecutor.RunAsync(replicaAction);

            return(replicaAction.Result.Item2);
        }
        // IFabricTestabilityClient extensions for test convenience
        public static void ConnectToEventStore(this IFabricTestabilityClient client, EventStoreConnectionInformation connInfo)
        {
            var systemFabricCient = GetSystemFabricClient(client);
            var testContext       = systemFabricCient.FabricClient.TestManager.TestContext;
            var storeConnection   = new EventStoreConnection(connInfo);

            testContext.ExtensionProperties.Add(Constants.EventStoreConnection, storeConnection);
        }
        private static SystemFabricClient GetSystemFabricClient(IFabricTestabilityClient client)
        {
            var fabricClientHelper = client as FabricClientHelper;

            ReleaseAssert.AssertIf(fabricClientHelper == null, "Unexpected type for IFabricTestabilityClient: {0}", client.GetType());
            var systemFabricCient = fabricClientHelper.GetFabricClientObject(FabricClientTypes.System) as SystemFabricClient;

            ReleaseAssert.AssertIf(systemFabricCient == null, "Unexpected type for FabricClientObject: {0}", systemFabricCient.GetType());
            return(systemFabricCient);
        }
        public static async Task ValidateServiceAsync(
            this IFabricTestabilityClient client,
            Uri serviceName,
            bool allowQuorumLoss,
            TimeSpan stabilizationTimeout,
            CancellationToken token)
        {
            var systemFabricCient = GetSystemFabricClient(client);

            TestabilityTrace.TraceSource.WriteInfo("TestabilityExtensionsFuture", "ValidateServiceAsync(): stabilizationTimeout='{0}'", stabilizationTimeout);

            ValidateServiceAction validateServiceAction = new ValidateServiceAction(serviceName, stabilizationTimeout);

            validateServiceAction.CheckFlag = allowQuorumLoss ? ValidationCheckFlag.AllButQuorumLoss : ValidationCheckFlag.All;
            await systemFabricCient.FabricClient.TestManager.TestContext.ActionExecutor.RunAsync(validateServiceAction, token);
        }
        internal static async Task <ApiFaultInformation> GetApiFaultInformationAsync(
            this IFabricTestabilityClient client,
            DateTime start,
            DateTime end,
            TimeSpan operationTimeout,
            CancellationToken token)
        {
            var systemFabricCient         = GetSystemFabricClient(client);
            var testContext               = systemFabricCient.FabricClient.TestManager.TestContext;
            var apiFaultInformationAction = new ApiFaultInformationAction(start, end)
            {
                ActionTimeout  = operationTimeout,
                RequestTimeout = TestabilityExtensionsFuture.GetRequestTimeout(operationTimeout)
            };
            await testContext.ActionExecutor.RunAsync(apiFaultInformationAction, token);

            return(apiFaultInformationAction.Result);
        }
        public static async Task <IList <AbnormalProcessTerminationInformation> > GetAbnormalProcessTerminationInformationAsync(
            this IFabricTestabilityClient client,
            DateTime start,
            DateTime end,
            string hostName,
            TimeSpan operationTimeout,
            CancellationToken token)
        {
            var systemFabricCient = GetSystemFabricClient(client);
            var testContext       = systemFabricCient.FabricClient.TestManager.TestContext;
            AbnormalProcessTerminationAction abnornalTerminationAction = new AbnormalProcessTerminationAction(start, end, hostName);

            abnornalTerminationAction.ActionTimeout  = operationTimeout;
            abnornalTerminationAction.RequestTimeout = TestabilityExtensionsFuture.GetRequestTimeout(operationTimeout);
            await testContext.ActionExecutor.RunAsync(abnornalTerminationAction, token);

            return(abnornalTerminationAction.Result);
        }