public async Task Aborting_Unhides_The_TimeoutEntities_even_when_preparing_failed() { // Arrange var endpointName = nameof(Aborting_Unhides_The_TimeoutEntities); var timeoutsSource = new AspTimeoutsSource(connectionString, 1, containerName, fakeEndpointName, fakeEndpointTimeoutTableName, tablePrefix: tableNamePrefix); var cutOffDate = DateTime.UtcNow; var endpointTimeoutTableName = tableClient.GetTableReference($"{tableNamePrefix}{fakeEndpointTimeoutTableName}"); await endpointTimeoutTableName.CreateIfNotExistsAsync(); var toolStateTable = tableClient.GetTableReference($"{tableNamePrefix}{AspConstants.ToolStateTableName}"); await toolStateTable.CreateIfNotExistsAsync(); var uniqueHiddenEndpointName = string.Format(AspConstants.MigrationHiddenEndpointNameFormat, "gurlugurlu", endpointName); var toolStateEntity = new ToolStateEntity() { Status = MigrationStatus.Preparing, EndpointName = endpointName, PartitionKey = ToolStateEntity.FixedPartitionKey, RowKey = "bar", UniqueHiddenEndpointName = uniqueHiddenEndpointName }; await toolStateTable.ExecuteAsync(TableOperation.Insert(toolStateEntity)); for (var x = 0; x < 3; x++) { var dateTime = cutOffDate.AddDays(random.Next(1, 5)); var entity = new TimeoutDataEntity(dateTime.ToString(AspConstants.PartitionKeyScope), Guid.NewGuid().ToString()) { OwningTimeoutManager = uniqueHiddenEndpointName, Destination = endpointName, SagaId = Guid.NewGuid(), StateAddress = x.ToString(), Time = dateTime, Headers = "Headers", }; await endpointTimeoutTableName.ExecuteAsync(TableOperation.Insert(entity)); } // Act await timeoutsSource.Abort(); // Assert var query = new TableQuery <TimeoutDataEntity>() .Where(TableQuery.GenerateFilterCondition("OwningTimeoutManager", QueryComparisons.Equal, endpointName)); var timeouts = await endpointTimeoutTableName.ExecuteQuerySegmentedAsync(query, null); Assert.AreEqual(3, timeouts.Results.Count); var currentAfterAborting = await timeoutsSource.TryLoadOngoingMigration(); Assert.IsNull(currentAfterAborting); Assert.IsFalse(await timeoutsSource.CheckIfAMigrationIsInProgress()); }
public async Task CheckMigrationInProgress_Should_be_false_when_no_migration_running() { // Arrange var timeoutsSource = new AspTimeoutsSource(connectionString, 10, containerName, fakeEndpointName, fakeEndpointTimeoutTableName, tablePrefix: tableNamePrefix); // Act var currentMigration = await timeoutsSource.CheckIfAMigrationIsInProgress(); // Assert Assert.IsFalse(currentMigration); }
public async Task CheckMigrationInProgress_Should_be_true_when_migration_running() { // Arrange var endpointName = nameof(CheckMigrationInProgress_Should_be_true_when_migration_running); var timeoutsSource = new AspTimeoutsSource(connectionString, 10, containerName, fakeEndpointName, fakeEndpointTimeoutTableName, tablePrefix: tableNamePrefix); var toolStateTable = tableClient.GetTableReference($"{tableNamePrefix}{AspConstants.ToolStateTableName}"); await toolStateTable.CreateIfNotExistsAsync(); var toolStateEntity = new ToolStateEntity { Status = MigrationStatus.StoragePrepared, EndpointName = endpointName, PartitionKey = ToolStateEntity.FixedPartitionKey, RowKey = "bar" }; await toolStateTable.ExecuteAsync(TableOperation.Insert(toolStateEntity)); // Act var currentMigration = await timeoutsSource.CheckIfAMigrationIsInProgress(); // Assert Assert.IsTrue(currentMigration); }