Exemple #1
0
        public async Task TestThatStorageExceptionsAreRetried()
        {
            string appId = "appId";

            var flushAndReleaseSequence = StubsUtils.Sequence <Func <Task> >()
                                          .Once(() => AsyncUtils.AsyncTaskThatThrows(new StorageException()))
                                          .Once(() => Task.CompletedTask)
                                          .Once(() => AsyncUtils.AsyncTaskThatThrows(new StorageException()))
                                          .Once(() => Task.CompletedTask);

            IUpdateBlob updateBlobStub = new StubIUpdateBlob()
                                         .FlushAndRelease(() => flushAndReleaseSequence.Next())
                                         .Dispose(() => { })
                                         .GetUpdateDomain(() => "1")
                                         .SetUpdateDomain(domain => { })
                                         .AddInstance(id => { })
                                         .RemoveInstance(id => { });

            var updateBlobFactoryStub = new StubIUpdateBlobFactory()
                                        .TryLockUpdateBlob(id => AsyncUtils.AsyncTaskWithResult(updateBlobStub));


            ContainerBuilder builder = AzureBlobStorageUpdateSessionDiModule.RegisterTypes("clusterId",
                                                                                           "instanceId", "1",
                                                                                           EmulatorConnectionString);

            builder.RegisterInstance(updateBlobFactoryStub).As <IUpdateBlobFactory>();
            IUpdateSessionManager updateSessionManager = new AzureBlobStorageUpdateSessionDiModule(builder.Build()).UpdateSessionManager;

            Assert.True(await updateSessionManager.TryStartUpdateSession(appId));

            await updateSessionManager.EndUpdateSession(appId);

            Assert.Equal(4, flushAndReleaseSequence.CallCount);
        }
Exemple #2
0
        public EndToEndTest(AzureStorageEmulatorTestFixture fixture)
        {
            fixture.ClearBlobStorage();

            var module = new AzureBlobStorageUpdateSessionDiModule("deploymentId", "instanceId", "1",
                                                                   EmulatorConnectionString);

            _updateSessionManager = module.UpdateSessionManager;
        }
Exemple #3
0
        public static IYamsService Create(YamsConfig yamsConfig, string deploymentRepositoryStorageConnectionString,
                                          string updateSessionStorageConnectionString)
        {
            IUpdateSessionManager updateSessionManager = new AzureBlobStorageUpdateSessionDiModule(
                yamsConfig.ClusterDeploymentId,
                yamsConfig.InstanceId,
                yamsConfig.InstanceUpdateDomain,
                updateSessionStorageConnectionString).UpdateSessionManager;

            IDeploymentRepository deploymentRepository = new BlobStorageDeploymentRepository(deploymentRepositoryStorageConnectionString);

            return(new YamsDiModule(yamsConfig, deploymentRepository, updateSessionManager).YamsService);
        }