示例#1
0
        public async void GetReplicaListAsync_ServiceFabricFails_ResultIsCached()
        {
            var caller           = Create <CachedServiceFabricCaller>();
            var partitionId      = Guid.NewGuid();
            var originalReplicas = new List <ReplicaWrapper> {
                SFTestHelpers.FakeReplica(new Uri("http://localhost/app1/sv1"), 1)
            };

            Mock <IQueryClientWrapper>()
            .SetupSequence(m => m.GetReplicaListAsync(
                               partitionId,
                               It.IsAny <TimeSpan>(),
                               It.IsAny <CancellationToken>()))
            .ReturnsAsync(originalReplicas)
            .ThrowsAsync(new Exception("the cake is a lie"))
            .ThrowsAsync(new Exception("the cake is still a lie"));

            await CallThreeTimesAndAssertAsync(() => caller.GetReplicaListAsync(partitionId, CancellationToken.None));
        }
示例#2
0
        private ServiceWrapper CreateService(string appName, string serviceName, int numPartitions, int numReplicasPerPartition, out List <ReplicaWrapper> replicas, ServiceKind serviceKind = ServiceKind.Stateless)
        {
            var svcName = new Uri($"fabric:/{appName}/{serviceName}");
            var service = SFTestHelpers.FakeService(svcName, $"{appName}_{serviceName}_Type", serviceKind: serviceKind);

            replicas = new List <ReplicaWrapper>();

            var partitions = new List <Guid>();

            for (var i = 0; i < numPartitions; i++)
            {
                var partitionReplicas = Enumerable.Range(i * numReplicasPerPartition, numReplicasPerPartition).Select(replicaId => SFTestHelpers.FakeReplica(svcName, replicaId)).ToList();
                replicas.AddRange(partitionReplicas);
                var partition = SFTestHelpers.FakePartition();
                partitions.Add(partition);
                Mock_ReplicasResponse(partition, partitionReplicas.ToArray());
            }
            Mock_PartitionsResponse(svcName, partitions.ToArray());
            return(service);
        }