From 93f54258d8800b618b7af5ba75dd73ba28ae1d4f Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 26 Aug 2020 00:43:40 +0800 Subject: [PATCH 1/9] MongoDB module ACID transaction implementation --- .../Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj | 2 +- .../Repositories/MongoDB/MongoDbRepository.cs | 96 +++++++++++++++---- .../Volo/Abp/MongoDB/AbpMongoDbContext.cs | 28 +++++- .../Volo/Abp/MongoDB/IAbpMongoDbContext.cs | 4 +- .../Abp/Uow/MongoDB/MongoDbTransactionApi.cs | 42 ++++++++ .../UnitOfWorkMongoDbContextProvider.cs | 44 +++++++-- .../Volo/Abp/MongoDB/AbpMongoDbTestModule.cs | 6 +- .../Volo/Abp/MongoDB/MongoClientExtension.cs | 84 ++++++++++++++++ .../Volo/Abp/MongoDB/MongoDbFixture.cs | 7 +- .../MongoDB/Transactions/Transaction_Tests.cs | 95 ++++++++++++++++++ 10 files changed, 374 insertions(+), 34 deletions(-) create mode 100644 framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/MongoDbTransactionApi.cs create mode 100644 framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoClientExtension.cs create mode 100644 framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Transactions/Transaction_Tests.cs diff --git a/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj b/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj index 2b9e46f43d..8d2942c145 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj +++ b/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs index 8676ac0f34..06ed98846d 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs @@ -29,6 +29,8 @@ namespace Volo.Abp.Domain.Repositories.MongoDB public virtual IMongoDatabase Database => DbContext.Database; + public virtual IClientSessionHandle SessionHandle => DbContext.SessionHandle; + public virtual TMongoDbContext DbContext => DbContextProvider.GetDbContext(); protected IMongoDbContextProvider DbContextProvider { get; } @@ -60,10 +62,21 @@ namespace Volo.Abp.Domain.Repositories.MongoDB { await ApplyAbpConceptsForAddedEntityAsync(entity); - await Collection.InsertOneAsync( - entity, - cancellationToken: GetCancellationToken(cancellationToken) - ); + if (SessionHandle != null) + { + await Collection.InsertOneAsync( + SessionHandle, + entity, + cancellationToken: GetCancellationToken(cancellationToken) + ); + } + else + { + await Collection.InsertOneAsync( + entity, + cancellationToken: GetCancellationToken(cancellationToken) + ); + } return entity; } @@ -88,12 +101,25 @@ namespace Volo.Abp.Domain.Repositories.MongoDB await TriggerDomainEventsAsync(entity); var oldConcurrencyStamp = SetNewConcurrencyStamp(entity); + ReplaceOneResult result; - var result = await Collection.ReplaceOneAsync( - CreateEntityFilter(entity, true, oldConcurrencyStamp), - entity, - cancellationToken: GetCancellationToken(cancellationToken) - ); + if (SessionHandle != null) + { + result = await Collection.ReplaceOneAsync( + SessionHandle, + CreateEntityFilter(entity, true, oldConcurrencyStamp), + entity, + cancellationToken: GetCancellationToken(cancellationToken) + ); + } + else + { + result = await Collection.ReplaceOneAsync( + CreateEntityFilter(entity, true, oldConcurrencyStamp), + entity, + cancellationToken: GetCancellationToken(cancellationToken) + ); + } if (result.MatchedCount <= 0) { @@ -114,11 +140,25 @@ namespace Volo.Abp.Domain.Repositories.MongoDB if (entity is ISoftDelete softDeleteEntity && !IsHardDeleted(entity)) { softDeleteEntity.IsDeleted = true; - var result = await Collection.ReplaceOneAsync( - CreateEntityFilter(entity, true, oldConcurrencyStamp), - entity, - cancellationToken: GetCancellationToken(cancellationToken) - ); + ReplaceOneResult result; + + if (SessionHandle != null) + { + result = await Collection.ReplaceOneAsync( + SessionHandle, + CreateEntityFilter(entity, true, oldConcurrencyStamp), + entity, + cancellationToken: GetCancellationToken(cancellationToken) + ); + } + else + { + result = await Collection.ReplaceOneAsync( + CreateEntityFilter(entity, true, oldConcurrencyStamp), + entity, + cancellationToken: GetCancellationToken(cancellationToken) + ); + } if (result.MatchedCount <= 0) { @@ -127,10 +167,23 @@ namespace Volo.Abp.Domain.Repositories.MongoDB } else { - var result = await Collection.DeleteOneAsync( - CreateEntityFilter(entity, true, oldConcurrencyStamp), - GetCancellationToken(cancellationToken) - ); + DeleteResult result; + + if (SessionHandle != null) + { + result = await Collection.DeleteOneAsync( + SessionHandle, + CreateEntityFilter(entity, true, oldConcurrencyStamp), + cancellationToken: GetCancellationToken(cancellationToken) + ); + } + else + { + result = await Collection.DeleteOneAsync( + CreateEntityFilter(entity, true, oldConcurrencyStamp), + GetCancellationToken(cancellationToken) + ); + } if (result.DeletedCount <= 0) { @@ -404,6 +457,13 @@ namespace Volo.Abp.Domain.Repositories.MongoDB bool includeDetails = true, CancellationToken cancellationToken = default) { + if (SessionHandle != null) + { + return await Collection + .Find(SessionHandle, RepositoryFilterer.CreateEntityFilter(id, true)) + .FirstOrDefaultAsync(GetCancellationToken(cancellationToken)); + } + return await Collection .Find(RepositoryFilterer.CreateEntityFilter(id, true)) .FirstOrDefaultAsync(GetCancellationToken(cancellationToken)); diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs index bfa4b87da1..0dea1710d9 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using MongoDB.Bson; using MongoDB.Driver; using Volo.Abp.DependencyInjection; @@ -10,18 +11,23 @@ namespace Volo.Abp.MongoDB public IMongoDatabase Database { get; private set; } + public IClientSessionHandle SessionHandle { get; private set; } + protected internal virtual void CreateModel(IMongoModelBuilder modelBuilder) { } - public virtual void InitializeDatabase(IMongoDatabase database) + public virtual void InitializeDatabase(IMongoDatabase database, IClientSessionHandle sessionHandle) { Database = database; + SessionHandle = sessionHandle; } public virtual IMongoCollection Collection() { + CreateCollectionIfNotExists(); + return Database.GetCollection(GetCollectionName()); } @@ -41,5 +47,23 @@ namespace Volo.Abp.MongoDB return model; } + + protected virtual void CreateCollectionIfNotExists() + { + var collectionName = GetCollectionName(); + + if (!CollectionExists(collectionName)) + { + Database.CreateCollection(collectionName); + } + } + + protected virtual bool CollectionExists(string collectionName) + { + var filter = new BsonDocument("name", collectionName); + var options = new ListCollectionNamesOptions { Filter = filter }; + + return Database.ListCollectionNames(options).Any(); + } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/IAbpMongoDbContext.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/IAbpMongoDbContext.cs index a2f48fd323..c4049e1389 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/IAbpMongoDbContext.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/IAbpMongoDbContext.cs @@ -7,5 +7,7 @@ namespace Volo.Abp.MongoDB IMongoDatabase Database { get; } IMongoCollection Collection(); + + IClientSessionHandle SessionHandle { get; } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/MongoDbTransactionApi.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/MongoDbTransactionApi.cs new file mode 100644 index 0000000000..6c3ab76ee5 --- /dev/null +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/MongoDbTransactionApi.cs @@ -0,0 +1,42 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using MongoDB.Driver; + +namespace Volo.Abp.Uow.MongoDB +{ + public class MongoDbTransactionApi : ITransactionApi, ISupportsRollback + { + public IClientSessionHandle SessionHandle { get; } + + public MongoDbTransactionApi(IClientSessionHandle sessionHandle) + { + SessionHandle = sessionHandle; + } + + public async Task CommitAsync() + { + await SessionHandle.CommitTransactionAsync(); + } + + protected void Commit() + { + SessionHandle.CommitTransaction(); + } + + public void Dispose() + { + SessionHandle.Dispose(); + } + + public void Rollback() + { + SessionHandle.AbortTransaction(); + } + + public async Task RollbackAsync(CancellationToken cancellationToken) + { + await SessionHandle.AbortTransactionAsync(cancellationToken); + } + } +} diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs index 0d527efc4c..893d80488d 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs @@ -1,5 +1,6 @@ using System; using Microsoft.Extensions.DependencyInjection; +using MongoDB.Bson; using MongoDB.Driver; using Volo.Abp.Data; using Volo.Abp.MongoDB; @@ -25,7 +26,8 @@ namespace Volo.Abp.Uow.MongoDB var unitOfWork = _unitOfWorkManager.Current; if (unitOfWork == null) { - throw new AbpException($"A {nameof(IMongoDatabase)} instance can only be created inside a unit of work!"); + throw new AbpException( + $"A {nameof(IMongoDatabase)} instance can only be created inside a unit of work!"); } var connectionString = _connectionStringResolver.Resolve(); @@ -41,18 +43,42 @@ namespace Volo.Abp.Uow.MongoDB //TODO: Create only single MongoDbClient per connection string in an application (extract MongoClientCache for example). var databaseApi = unitOfWork.GetOrAddDatabaseApi( dbContextKey, - () => + () => new MongoDbDatabaseApi(CreateDbContext(unitOfWork,mongoUrl,databaseName))); + + return ((MongoDbDatabaseApi) databaseApi).DbContext; + } + + private TMongoDbContext CreateDbContext(IUnitOfWork unitOfWork, MongoUrl mongoUrl, string databaseName) + { + var client = new MongoClient(mongoUrl); + var database = client.GetDatabase(databaseName); + var dbContext = unitOfWork.ServiceProvider.GetRequiredService(); + + if (unitOfWork.Options.IsTransactional) + { + var session = client.StartSession(); + + if (unitOfWork.Options.Timeout.HasValue) { - var database = new MongoClient(mongoUrl).GetDatabase(databaseName); + session.AdvanceOperationTime(new BsonTimestamp(unitOfWork.Options.Timeout.Value)); + } - var dbContext = unitOfWork.ServiceProvider.GetRequiredService(); + session.StartTransaction(); - dbContext.ToAbpMongoDbContext().InitializeDatabase(database); + var transactionApiKey = $"MongoDb_{mongoUrl}"; + unitOfWork.AddTransactionApi( + transactionApiKey, + new MongoDbTransactionApi(session) + ); - return new MongoDbDatabaseApi(dbContext); - }); + dbContext.ToAbpMongoDbContext().InitializeDatabase(database, session); + } + else + { + dbContext.ToAbpMongoDbContext().InitializeDatabase(database, null); + } - return ((MongoDbDatabaseApi)databaseApi).DbContext; + return dbContext; } } -} \ No newline at end of file +} diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs index cfa7b033b7..f2b04a3a7f 100644 --- a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs +++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs @@ -16,9 +16,11 @@ namespace Volo.Abp.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + + var stringArray = MongoDbFixture.ConnectionString.Split('?'); + + var connectionString = stringArray[0].EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N"); + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; Configure(options => { diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoClientExtension.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoClientExtension.cs new file mode 100644 index 0000000000..8b7508dabf --- /dev/null +++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoClientExtension.cs @@ -0,0 +1,84 @@ +using System; +using System.Threading; +using MongoDB.Driver; + +namespace Volo.Abp.MongoDB +{ + /// + /// TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 + /// + internal static class MongoClientExtension + { + private static readonly TimeSpan InitialDelay = TimeSpan.FromMilliseconds(500); + private static readonly TimeSpan MaxDelay = TimeSpan.FromSeconds(5000); + + + public static void EnsureReplicationSetReady(this IMongoClient mongoClient) + { + var delay = InitialDelay; + var database = mongoClient.GetDatabase("__dummy-db"); + try + { + while (true) + { + try + { + _ = database.GetCollection("__dummy"); + database.DropCollection("__dummy"); + + var session = mongoClient.StartSession(); + + try + { + session.StartTransaction(); + session.AbortTransaction(); + } + finally + { + session.Dispose(); + } + break; + } + catch (NotSupportedException) { } + + Thread.Sleep(delay); + delay = Min(Double(delay), MaxDelay); + } + } + finally + { + mongoClient.DropDatabase("__dummy-db"); + } + } + + private static TimeSpan Min(TimeSpan left, TimeSpan right) + { + return new TimeSpan(Math.Min(left.Ticks, right.Ticks)); + } + + private static TimeSpan Double(TimeSpan timeSpan) + { + long ticks; + try + { + ticks = checked(timeSpan.Ticks * 2); + } + catch (OverflowException) + { + if (timeSpan.Ticks >= 0) + { + return TimeSpan.MaxValue; + } + + return TimeSpan.MinValue; + } + + return new TimeSpan(ticks); + } + + private sealed class DummyEntry + { + public int Id { get; set; } + } + } +} diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs index 3fa239ebbb..dbb872bee6 100644 --- a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs +++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs @@ -1,5 +1,6 @@ using System; using Mongo2Go; +using MongoDB.Driver; namespace Volo.Abp.MongoDB { @@ -10,8 +11,12 @@ namespace Volo.Abp.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(); + MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 + var client = new MongoClient(MongoDbRunner.ConnectionString); + client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Transactions/Transaction_Tests.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Transactions/Transaction_Tests.cs new file mode 100644 index 0000000000..6c82b44f93 --- /dev/null +++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Transactions/Transaction_Tests.cs @@ -0,0 +1,95 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Shouldly; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.TestApp.Domain; +using Volo.Abp.TestApp.Testing; +using Volo.Abp.Uow; +using Xunit; + +namespace Volo.Abp.MongoDB.Transactions +{ + public class Transaction_Tests : TestAppTestBase + { + + private readonly IBasicRepository _personRepository; + private readonly IBasicRepository _cityRepository; + private readonly IUnitOfWorkManager _unitOfWorkManager; + + public Transaction_Tests() + { + _personRepository = ServiceProvider.GetRequiredService>(); + _cityRepository = ServiceProvider.GetRequiredService>(); + _unitOfWorkManager = ServiceProvider.GetRequiredService(); + } + + [Fact] + public async Task Should_Rollback_Transaction_When_An_Exception_Is_Thrown() + { + var personId = Guid.NewGuid(); + const string exceptionMessage = "thrown to rollback the transaction!"; + + try + { + await WithUnitOfWorkAsync(new AbpUnitOfWorkOptions {IsTransactional = true}, async () => + { + await _personRepository.InsertAsync(new Person(personId, "Adam", 42)); + throw new Exception(exceptionMessage); + }); + } + catch (Exception e) when (e.Message == exceptionMessage) + { + + } + + var person = await _personRepository.FindAsync(personId); + person.ShouldBeNull(); + } + + [Fact] + public async Task Should_Rollback_Transaction_Manually() + { + var personId = Guid.NewGuid(); + + await WithUnitOfWorkAsync(new AbpUnitOfWorkOptions {IsTransactional = true}, async () => + { + _unitOfWorkManager.Current.ShouldNotBeNull(); + + await _personRepository.InsertAsync(new Person(personId, "Adam", 42)); + + await _unitOfWorkManager.Current.RollbackAsync(); + }); + + var person = await _personRepository.FindAsync(personId); + person.ShouldBeNull(); + } + + [Fact] + public async Task Should_Rollback_Transaction_Manually_With_Double_DbContext_Transaction() + { + var personId = Guid.NewGuid(); + var cityId = Guid.NewGuid(); + + using (var scope = ServiceProvider.CreateScope()) + { + var uowManager = scope.ServiceProvider.GetRequiredService(); + + using (uowManager.Begin(new AbpUnitOfWorkOptions {IsTransactional = true})) + { + _unitOfWorkManager.Current.ShouldNotBeNull(); + + await _personRepository.InsertAsync(new Person(personId, "Adam", 42)); + await _cityRepository.InsertAsync(new City(cityId, cityId.ToString())); + + await _unitOfWorkManager.Current.SaveChangesAsync(); + + //Will automatically rollback since not called the Complete! + } + } + + (await _personRepository.FindAsync(personId)).ShouldBeNull(); + (await _cityRepository.FindAsync(cityId)).ShouldBeNull(); + } + } +} From 93ec65f0b1accf12d29a2048d91005a1c574b822 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 26 Aug 2020 16:20:12 +0800 Subject: [PATCH 2/9] Update unit tests --- .../Repositories/MongoDB/MongoDbRepository.cs | 6 +++--- .../Volo/Abp/MongoDB/AbpMongoDbContext.cs | 20 ------------------- .../Volo/Abp/MongoDB/MongoClientExtension.cs | 7 +++++-- .../Volo/Abp/MongoDB/MongoModelBuilder.cs | 19 ++++++++++++++++-- .../Volo/Abp/MongoDB/MongoModelSource.cs | 6 +++--- .../Volo/Abp/MongoDB/MongoDbFixture.cs | 1 + .../AbpAuditLoggingMongoDbTestModule.cs | 8 +++++--- .../AuditLogging/MongoDB/MongoDbFixture.cs | 8 +++++++- .../AbpBackgroundJobsMongoDbTestModule.cs | 10 ++++++---- .../BackgroundJobs/MongoDB/MongoDbFixture.cs | 8 +++++++- .../BlobStoringDatabaseMongoDbTestModule.cs | 8 +++++--- .../MongoDB/MongoDbFixture.cs | 8 +++++++- .../MongoDB/BloggingMongoDBTestModule.cs | 6 ++++-- .../Volo/Blogging/MongoDB/MongoDbFixture.cs | 8 +++++++- .../MongoDB/CmsKitMongoDbTestModule.cs | 6 ++++-- .../MongoDB/MongoDbFixture.cs | 8 +++++++- .../Docs/MongoDB/DocsMongoDBTestModule.cs | 6 ++++-- .../Volo/Docs/MongoDB/MongoDbFixture.cs | 8 +++++++- .../AbpFeatureManagementMongoDbTestModule.cs | 6 ++++-- .../MongoDB/MongoDbFixture.cs | 8 +++++++- .../MongoDB/AbpIdentityMongoDbTestModule.cs | 8 ++++++-- .../Abp/Identity/MongoDB/MongoDbFixture.cs | 8 +++++++- .../AbpIdentityServerMongoDbTestModule.cs | 6 ++++-- .../Volo/Abp/IdentityServer/MongoDbFixture.cs | 8 +++++++- ...bpPermissionManagementMongoDbTestModule.cs | 8 +++++--- .../MongoDb/MongoDbFixture.cs | 8 +++++++- .../AbpSettingManagementMongoDbTestModule.cs | 6 ++++-- .../MongoDB/MongoDbFixture.cs | 8 +++++++- .../AbpTenantManagementMongoDbTestModule.cs | 6 ++++-- .../MongoDb/MongoDbFixture.cs | 8 +++++++- .../MongoDb/MyProjectNameMongoDbFixture.cs | 7 ++++++- .../MongoDb/MyProjectNameMongoDbTestModule.cs | 6 ++++-- .../MongoDB/MongoDbFixture.cs | 8 +++++++- .../MongoDB/MyProjectNameMongoDbTestModule.cs | 8 +++++--- 34 files changed, 190 insertions(+), 78 deletions(-) rename framework/{test/Volo.Abp.MongoDB.Tests => src/Volo.Abp.MongoDB}/Volo/Abp/MongoDB/MongoClientExtension.cs (94%) diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs index 06ed98846d..02dd0e5de7 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs @@ -111,6 +111,8 @@ namespace Volo.Abp.Domain.Repositories.MongoDB entity, cancellationToken: GetCancellationToken(cancellationToken) ); + + } else { @@ -248,9 +250,7 @@ namespace Volo.Abp.Domain.Repositories.MongoDB public virtual IMongoQueryable GetMongoQueryable() { - return ApplyDataFilters( - Collection.AsQueryable() - ); + return ApplyDataFilters(SessionHandle != null ? Collection.AsQueryable(SessionHandle) : Collection.AsQueryable()); } protected virtual bool IsHardDeleted(TEntity entity) { diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs index 0dea1710d9..ab18d8cde6 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs @@ -26,8 +26,6 @@ namespace Volo.Abp.MongoDB public virtual IMongoCollection Collection() { - CreateCollectionIfNotExists(); - return Database.GetCollection(GetCollectionName()); } @@ -47,23 +45,5 @@ namespace Volo.Abp.MongoDB return model; } - - protected virtual void CreateCollectionIfNotExists() - { - var collectionName = GetCollectionName(); - - if (!CollectionExists(collectionName)) - { - Database.CreateCollection(collectionName); - } - } - - protected virtual bool CollectionExists(string collectionName) - { - var filter = new BsonDocument("name", collectionName); - var options = new ListCollectionNamesOptions { Filter = filter }; - - return Database.ListCollectionNames(options).Any(); - } } } diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoClientExtension.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoClientExtension.cs similarity index 94% rename from framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoClientExtension.cs rename to framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoClientExtension.cs index 8b7508dabf..f792f6c9a9 100644 --- a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoClientExtension.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoClientExtension.cs @@ -7,7 +7,7 @@ namespace Volo.Abp.MongoDB /// /// TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 /// - internal static class MongoClientExtension + public static class MongoClientExtension { private static readonly TimeSpan InitialDelay = TimeSpan.FromMilliseconds(500); private static readonly TimeSpan MaxDelay = TimeSpan.FromSeconds(5000); @@ -37,9 +37,12 @@ namespace Volo.Abp.MongoDB { session.Dispose(); } + break; } - catch (NotSupportedException) { } + catch (NotSupportedException) + { + } Thread.Sleep(delay); delay = Min(Double(delay), MaxDelay); diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelBuilder.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelBuilder.cs index 43ffbabf4a..6d8706d7ee 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelBuilder.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelBuilder.cs @@ -3,6 +3,8 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; +using MongoDB.Bson; +using MongoDB.Driver; using Volo.Abp.Domain.Entities; namespace Volo.Abp.MongoDB @@ -18,7 +20,7 @@ namespace Volo.Abp.MongoDB _entityModelBuilders = new Dictionary(); } - public MongoDbContextModel Build() + public MongoDbContextModel Build(AbpMongoDbContext dbContext) { lock (SyncObj) { @@ -38,6 +40,8 @@ namespace Volo.Abp.MongoDB } baseClasses.AddRange(entityModel.EntityType.GetBaseClasses(includeObject: false)); + + CreateCollectionIfNotExists(dbContext, entityModel.CollectionName); } baseClasses = baseClasses.Distinct().ToList(); @@ -84,5 +88,16 @@ namespace Volo.Abp.MongoDB { return _entityModelBuilders.Values.Cast().ToImmutableList(); } + + protected virtual void CreateCollectionIfNotExists(AbpMongoDbContext dbContext, string collectionName) + { + var filter = new BsonDocument("name", collectionName); + var options = new ListCollectionNamesOptions { Filter = filter }; + + if (!dbContext.Database.ListCollectionNames(options).Any()) + { + dbContext.Database.CreateCollection(collectionName); + } + } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelSource.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelSource.cs index c5cb0da1c8..295cb8b84f 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelSource.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelSource.cs @@ -12,7 +12,7 @@ namespace Volo.Abp.MongoDB public class MongoModelSource : IMongoModelSource, ISingletonDependency { protected readonly ConcurrentDictionary ModelCache = new ConcurrentDictionary(); - + public virtual MongoDbContextModel GetModel(AbpMongoDbContext dbContext) { return ModelCache.GetOrAdd( @@ -26,7 +26,7 @@ namespace Volo.Abp.MongoDB var modelBuilder = CreateModelBuilder(); BuildModelFromDbContextType(modelBuilder, dbContext.GetType()); BuildModelFromDbContextInstance(modelBuilder, dbContext); - return modelBuilder.Build(); + return modelBuilder.Build(dbContext); } protected virtual MongoModelBuilder CreateModelBuilder() @@ -65,4 +65,4 @@ namespace Volo.Abp.MongoDB dbContext.CreateModel(modelBuilder); } } -} \ No newline at end of file +} diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs index dbb872bee6..a3c3b25cac 100644 --- a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs +++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs @@ -1,6 +1,7 @@ using System; using Mongo2Go; using MongoDB.Driver; +using Volo.Abp.MongoDB; namespace Volo.Abp.MongoDB { diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs index 5cac32faae..37d43e4ee5 100644 --- a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs +++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs @@ -12,9 +12,11 @@ namespace Volo.Abp.AuditLogging.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + + var stringArray = MongoDbFixture.ConnectionString.Split('?'); + + var connectionString = stringArray[0].EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N"); + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; Configure(options => { @@ -22,4 +24,4 @@ namespace Volo.Abp.AuditLogging.MongoDB }); } } -} \ No newline at end of file +} diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/MongoDbFixture.cs b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/MongoDbFixture.cs index e217faf961..8d928e9f1e 100644 --- a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/MongoDbFixture.cs +++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/MongoDbFixture.cs @@ -1,5 +1,7 @@ using System; using Mongo2Go; +using MongoDB.Driver; +using Volo.Abp.MongoDB; namespace Volo.Abp.AuditLogging.MongoDB { @@ -10,8 +12,12 @@ namespace Volo.Abp.AuditLogging.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(); + MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 + var client = new MongoClient(MongoDbRunner.ConnectionString); + client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs index 07be76b792..17f561c086 100644 --- a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs +++ b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs @@ -12,9 +12,11 @@ namespace Volo.Abp.BackgroundJobs.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + - "Db_" + - Guid.NewGuid().ToString("N"); + var stringArray = MongoDbFixture.ConnectionString.Split('?'); + + var connectionString = stringArray[0].EnsureEndsWith('/') + + "Db_" + + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; Configure(options => { @@ -22,4 +24,4 @@ namespace Volo.Abp.BackgroundJobs.MongoDB }); } } -} \ No newline at end of file +} diff --git a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/MongoDbFixture.cs b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/MongoDbFixture.cs index c358bed276..9e2f4a76a4 100644 --- a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/MongoDbFixture.cs +++ b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/MongoDbFixture.cs @@ -1,5 +1,7 @@ using System; using Mongo2Go; +using MongoDB.Driver; +using Volo.Abp.MongoDB; namespace Volo.Abp.BackgroundJobs.MongoDB { @@ -10,8 +12,12 @@ namespace Volo.Abp.BackgroundJobs.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(); + MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 + var client = new MongoClient(MongoDbRunner.ConnectionString); + client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs index 03eb96f6d3..fa2e2f2936 100644 --- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs +++ b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs @@ -12,9 +12,11 @@ namespace Volo.Abp.BlobStoring.Database.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + + var stringArray = MongoDbFixture.ConnectionString.Split('?'); + + var connectionString = stringArray[0].EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N"); + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; Configure(options => { @@ -22,4 +24,4 @@ namespace Volo.Abp.BlobStoring.Database.MongoDB }); } } -} \ No newline at end of file +} diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/MongoDbFixture.cs b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/MongoDbFixture.cs index a7cfb4f4b6..82335b13f3 100644 --- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/MongoDbFixture.cs +++ b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/MongoDbFixture.cs @@ -1,5 +1,7 @@ using System; using Mongo2Go; +using MongoDB.Driver; +using Volo.Abp.MongoDB; namespace Volo.Abp.BlobStoring.Database.MongoDB { @@ -10,8 +12,12 @@ namespace Volo.Abp.BlobStoring.Database.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(); + MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 + var client = new MongoClient(MongoDbRunner.ConnectionString); + client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs index 1e68cebf21..cac9cd748e 100644 --- a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs +++ b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs @@ -12,9 +12,11 @@ namespace Volo.Blogging.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + + var stringArray = MongoDbFixture.ConnectionString.Split('?'); + + var connectionString = stringArray[0].EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N"); + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; Configure(options => { diff --git a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/MongoDbFixture.cs b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/MongoDbFixture.cs index 71824397b4..5198f4087d 100644 --- a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/MongoDbFixture.cs +++ b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/MongoDbFixture.cs @@ -1,5 +1,7 @@ using System; using Mongo2Go; +using MongoDB.Driver; +using Volo.Abp.MongoDB; namespace Volo.Blogging.MongoDB { @@ -10,8 +12,12 @@ namespace Volo.Blogging.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(); + MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 + var client = new MongoClient(MongoDbRunner.ConnectionString); + client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs index 125ec8dbd4..38f0179093 100644 --- a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs +++ b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs @@ -12,9 +12,11 @@ namespace Volo.CmsKit.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + + var stringArray = MongoDbFixture.ConnectionString.Split('?'); + + var connectionString = stringArray[0].EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N"); + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; Configure(options => { diff --git a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/MongoDbFixture.cs b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/MongoDbFixture.cs index 3898749c10..e7c60b7d8d 100644 --- a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/MongoDbFixture.cs +++ b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/MongoDbFixture.cs @@ -1,5 +1,7 @@ using System; using Mongo2Go; +using MongoDB.Driver; +using Volo.Abp.MongoDB; namespace Volo.CmsKit.MongoDB { @@ -10,8 +12,12 @@ namespace Volo.CmsKit.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(); + MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 + var client = new MongoClient(MongoDbRunner.ConnectionString); + client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs b/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs index b31f9b5acd..942d19071c 100644 --- a/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs +++ b/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs @@ -12,9 +12,11 @@ namespace Volo.Docs.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + + var stringArray = MongoDbFixture.ConnectionString.Split('?'); + + var connectionString = stringArray[0].EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N"); + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; Configure(options => { diff --git a/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/MongoDbFixture.cs b/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/MongoDbFixture.cs index 9a40d79492..90eab2fb2b 100644 --- a/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/MongoDbFixture.cs +++ b/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/MongoDbFixture.cs @@ -1,5 +1,7 @@ using System; using Mongo2Go; +using MongoDB.Driver; +using Volo.Abp.MongoDB; namespace Volo.Docs.MongoDB { @@ -10,8 +12,12 @@ namespace Volo.Docs.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(); + MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 + var client = new MongoClient(MongoDbRunner.ConnectionString); + client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs index 04d4ac916f..a1e24b829e 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs @@ -12,9 +12,11 @@ namespace Volo.Abp.FeatureManagement.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + + var stringArray = MongoDbFixture.ConnectionString.Split('?'); + + var connectionString = stringArray[0].EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N"); + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; Configure(options => { diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/MongoDbFixture.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/MongoDbFixture.cs index bb89a83f76..32cfd0dc5f 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/MongoDbFixture.cs +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/MongoDbFixture.cs @@ -1,5 +1,7 @@ using System; using Mongo2Go; +using MongoDB.Driver; +using Volo.Abp.MongoDB; namespace Volo.Abp.FeatureManagement.MongoDB { @@ -10,8 +12,12 @@ namespace Volo.Abp.FeatureManagement.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(); + MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 + var client = new MongoClient(MongoDbRunner.ConnectionString); + client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs index f730e5f445..6cf462ccb9 100644 --- a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs +++ b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs @@ -2,6 +2,7 @@ using Volo.Abp.Data; using Volo.Abp.Modularity; using Volo.Abp.PermissionManagement.MongoDB; +using Volo.Abp.Uow; namespace Volo.Abp.Identity.MongoDB { @@ -14,14 +15,17 @@ namespace Volo.Abp.Identity.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + + var stringArray = MongoDbFixture.ConnectionString.Split('?'); + + var connectionString = stringArray[0].EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N"); + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; Configure(options => { options.ConnectionStrings.Default = connectionString; }); + } } } diff --git a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/MongoDbFixture.cs b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/MongoDbFixture.cs index 09581c13d5..4c919b6adc 100644 --- a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/MongoDbFixture.cs +++ b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/MongoDbFixture.cs @@ -1,5 +1,7 @@ using System; using Mongo2Go; +using MongoDB.Driver; +using Volo.Abp.MongoDB; namespace Volo.Abp.Identity.MongoDB { @@ -10,8 +12,12 @@ namespace Volo.Abp.Identity.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(); + MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 + var client = new MongoClient(MongoDbRunner.ConnectionString); + client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs index d1721c720f..f9762d9d4a 100644 --- a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs +++ b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs @@ -16,9 +16,11 @@ namespace Volo.Abp.IdentityServer { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + + var stringArray = MongoDbFixture.ConnectionString.Split('?'); + + var connectionString = stringArray[0].EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N"); + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; Configure(options => { diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/MongoDbFixture.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/MongoDbFixture.cs index 2c2f120acd..f974990a54 100644 --- a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/MongoDbFixture.cs +++ b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/MongoDbFixture.cs @@ -1,5 +1,7 @@ using System; using Mongo2Go; +using MongoDB.Driver; +using Volo.Abp.MongoDB; namespace Volo.Abp.IdentityServer { @@ -10,8 +12,12 @@ namespace Volo.Abp.IdentityServer static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(); + MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 + var client = new MongoClient(MongoDbRunner.ConnectionString); + client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs index 8e3c7b2c22..baa579403a 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs @@ -11,9 +11,11 @@ namespace Volo.Abp.PermissionManagement.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + - "Db_" + - Guid.NewGuid().ToString("N"); + var stringArray = MongoDbFixture.ConnectionString.Split('?'); + + var connectionString = stringArray[0].EnsureEndsWith('/') + + "Db_" + + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; Configure(options => { diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbFixture.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbFixture.cs index 97799fc03b..385f9d3321 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbFixture.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbFixture.cs @@ -1,5 +1,7 @@ using System; using Mongo2Go; +using MongoDB.Driver; +using Volo.Abp.MongoDB; namespace Volo.Abp.PermissionManagement.MongoDB { @@ -10,8 +12,12 @@ namespace Volo.Abp.PermissionManagement.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(); + MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 + var client = new MongoClient(MongoDbRunner.ConnectionString); + client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs index ec221eba15..8bc35e2724 100644 --- a/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs @@ -12,9 +12,11 @@ namespace Volo.Abp.SettingManagement.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + + var stringArray = MongoDbFixture.ConnectionString.Split('?'); + + var connectionString = stringArray[0].EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N"); + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; Configure(options => { diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/MongoDbFixture.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/MongoDbFixture.cs index 4f9142a829..1212bb90f0 100644 --- a/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/MongoDbFixture.cs +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/MongoDbFixture.cs @@ -1,5 +1,7 @@ using System; using Mongo2Go; +using MongoDB.Driver; +using Volo.Abp.MongoDB; namespace Volo.Abp.SettingManagement.MongoDB { @@ -10,8 +12,12 @@ namespace Volo.Abp.SettingManagement.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(); + MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 + var client = new MongoClient(MongoDbRunner.ConnectionString); + client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs index 9584ec2d44..29154cc271 100644 --- a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs @@ -12,9 +12,11 @@ namespace Volo.Abp.TenantManagement.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + + var stringArray = MongoDbFixture.ConnectionString.Split('?'); + + var connectionString = stringArray[0].EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N"); + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; Configure(options => { diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs index 1b3777f6a8..6c95e09086 100644 --- a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs @@ -1,5 +1,7 @@ using System; using Mongo2Go; +using MongoDB.Driver; +using Volo.Abp.MongoDB; namespace Volo.Abp.TenantManagement.MongoDB { @@ -10,8 +12,12 @@ namespace Volo.Abp.TenantManagement.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(); + MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 + var client = new MongoClient(MongoDbRunner.ConnectionString); + client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs index d1a863eb2c..565bd1f5ff 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs @@ -1,5 +1,7 @@ using System; using Mongo2Go; +using MongoDB.Driver; +using Volo.Abp.MongoDB; namespace MyCompanyName.MyProjectName.MongoDB { @@ -10,8 +12,11 @@ namespace MyCompanyName.MyProjectName.MongoDB static MyProjectNameMongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(); + MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; + + var client = new MongoClient(MongoDbRunner.ConnectionString); + client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs index 44783b67e4..386c82d5b9 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs @@ -12,9 +12,11 @@ namespace MyCompanyName.MyProjectName.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MyProjectNameMongoDbFixture.ConnectionString.EnsureEndsWith('/') + + var stringArray = MyProjectNameMongoDbFixture.ConnectionString.Split('?'); + + var connectionString = stringArray[0].EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N"); + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; Configure(options => { diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MongoDbFixture.cs b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MongoDbFixture.cs index e471590369..55a7072a9d 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MongoDbFixture.cs +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MongoDbFixture.cs @@ -1,5 +1,7 @@ using System; using Mongo2Go; +using MongoDB.Driver; +using Volo.Abp.MongoDB; namespace MyCompanyName.MyProjectName.MongoDB { @@ -10,8 +12,12 @@ namespace MyCompanyName.MyProjectName.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(); + MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 + var client = new MongoClient(MongoDbRunner.ConnectionString); + client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs index f29c713c05..d074fe6b43 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs @@ -12,9 +12,11 @@ namespace MyCompanyName.MyProjectName.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + + var stringArray = MongoDbFixture.ConnectionString.Split('?'); + + var connectionString = stringArray[0].EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N"); + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; Configure(options => { @@ -22,4 +24,4 @@ namespace MyCompanyName.MyProjectName.MongoDB }); } } -} \ No newline at end of file +} From 9669254ecd45485e06924bd7158df3d7e974a4e8 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 26 Aug 2020 20:09:50 +0800 Subject: [PATCH 3/9] Update unit tests --- .../Volo/Abp/MongoDB/Transactions/Transaction_Tests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Transactions/Transaction_Tests.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Transactions/Transaction_Tests.cs index 6c82b44f93..3bfcf96cf7 100644 --- a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Transactions/Transaction_Tests.cs +++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Transactions/Transaction_Tests.cs @@ -10,6 +10,7 @@ using Xunit; namespace Volo.Abp.MongoDB.Transactions { + [Collection(MongoTestCollection.Name)] public class Transaction_Tests : TestAppTestBase { From 27e0821facb83007a78a641648df683aa761ec13 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 26 Aug 2020 21:34:56 +0800 Subject: [PATCH 4/9] Fix unit tests --- .../Volo/Abp/MongoDB/DataFiltering/HardDelete_Tests.cs | 2 ++ .../Abp/Identity/MongoDB/OrganizationUnitRepository_Tests.cs | 2 ++ 2 files changed, 4 insertions(+) diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/DataFiltering/HardDelete_Tests.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/DataFiltering/HardDelete_Tests.cs index 66c6e58b5c..699e6de5a3 100644 --- a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/DataFiltering/HardDelete_Tests.cs +++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/DataFiltering/HardDelete_Tests.cs @@ -2,9 +2,11 @@ using System.Collections.Generic; using System.Text; using Volo.Abp.TestApp.Testing; +using Xunit; namespace Volo.Abp.MongoDB.DataFiltering { + [Collection(MongoTestCollection.Name)] public class HardDelete_Tests : HardDelete_Tests { } diff --git a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/OrganizationUnitRepository_Tests.cs b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/OrganizationUnitRepository_Tests.cs index d60611b2b6..b017352f9e 100644 --- a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/OrganizationUnitRepository_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/OrganizationUnitRepository_Tests.cs @@ -1,9 +1,11 @@ using System; using System.Collections.Generic; using System.Text; +using Xunit; namespace Volo.Abp.Identity.MongoDB { + [Collection(MongoTestCollection.Name)] public class OrganizationUnitRepository_Tests : OrganizationUnitRepository_Tests { } From b2fe5c344f39886bed6156332e2ad8cc55a49921 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Thu, 27 Aug 2020 14:53:02 +0800 Subject: [PATCH 5/9] Improved --- .../Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj | 2 +- .../Volo/Abp/MongoDB/AbpMongoDbContext.cs | 6 +++ .../Volo/Abp/MongoDB/AbpMongoDbModule.cs | 42 +++++++++++++++++-- .../AbpMongoDbConventionalRegistrar.cs | 27 ++++++++++++ .../UnitOfWorkMongoDbContextProvider.cs | 27 ++++++++++-- .../OrganizationUnitRepository_Tests.cs | 2 +- 6 files changed, 97 insertions(+), 9 deletions(-) create mode 100644 framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/DependencyInjection/AbpMongoDbConventionalRegistrar.cs diff --git a/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj b/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj index 8d2942c145..e2f589b399 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj +++ b/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs index ab18d8cde6..e961fdf256 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs @@ -29,6 +29,12 @@ namespace Volo.Abp.MongoDB return Database.GetCollection(GetCollectionName()); } + public virtual void InitializeCollections(IMongoDatabase database) + { + Database = database; + ModelSource.GetModel(this); + } + protected virtual string GetCollectionName() { return GetEntityModel().CollectionName; diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs index e36e972954..bb35883f7c 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs @@ -1,7 +1,12 @@ -using Microsoft.Extensions.DependencyInjection.Extensions; +using System; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; +using MongoDB.Driver; +using Volo.Abp.Data; using Volo.Abp.Domain; using Volo.Abp.Domain.Repositories.MongoDB; using Volo.Abp.Modularity; +using Volo.Abp.MongoDB.DependencyInjection; using Volo.Abp.Uow.MongoDB; namespace Volo.Abp.MongoDB @@ -9,22 +14,53 @@ namespace Volo.Abp.MongoDB [DependsOn(typeof(AbpDddDomainModule))] public class AbpMongoDbModule : AbpModule { + public override void PreConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddConventionalRegistrar(new AbpMongoDbConventionalRegistrar()); + } + public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.TryAddTransient( typeof(IMongoDbContextProvider<>), typeof(UnitOfWorkMongoDbContextProvider<>) ); - + context.Services.TryAddTransient( typeof(IMongoDbRepositoryFilterer<>), typeof(MongoDbRepositoryFilterer<>) ); - + context.Services.TryAddTransient( typeof(IMongoDbRepositoryFilterer<,>), typeof(MongoDbRepositoryFilterer<,>) ); } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + InitializeAllCollections(context.ServiceProvider); + } + + private void InitializeAllCollections(IServiceProvider serviceProvider) + { + var dbContexts = serviceProvider.GetServices(); + var connectionStringResolver = serviceProvider.GetService(); + + foreach (var dbContext in dbContexts) + { + var connectionString = connectionStringResolver.Resolve(ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType())); + var mongoUrl = new MongoUrl(connectionString); + var databaseName = mongoUrl.DatabaseName; + var client = new MongoClient(mongoUrl); + + if (databaseName.IsNullOrWhiteSpace()) + { + databaseName = ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType()); + } + + (dbContext as AbpMongoDbContext)?.InitializeCollections(client.GetDatabase(databaseName)); + } + } } } diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/DependencyInjection/AbpMongoDbConventionalRegistrar.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/DependencyInjection/AbpMongoDbConventionalRegistrar.cs new file mode 100644 index 0000000000..cb1ed7ea54 --- /dev/null +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/DependencyInjection/AbpMongoDbConventionalRegistrar.cs @@ -0,0 +1,27 @@ +using System; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.MongoDB.DependencyInjection +{ + public class AbpMongoDbConventionalRegistrar : DefaultConventionalRegistrar + { + public override void AddType(IServiceCollection services, Type type) + { + if (!typeof(IAbpMongoDbContext).IsAssignableFrom(type) || type == typeof(AbpMongoDbContext)) + { + return; + } + + var dependencyAttribute = GetDependencyAttributeOrNull(type); + var lifeTime = GetLifeTimeOrNull(type, dependencyAttribute); + + if (lifeTime == null) + { + return; + } + + services.Add(ServiceDescriptor.Describe(typeof(IAbpMongoDbContext), type, ServiceLifetime.Transient)); + } + } +} diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs index 893d80488d..0d9969ee51 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs @@ -43,7 +43,7 @@ namespace Volo.Abp.Uow.MongoDB //TODO: Create only single MongoDbClient per connection string in an application (extract MongoClientCache for example). var databaseApi = unitOfWork.GetOrAddDatabaseApi( dbContextKey, - () => new MongoDbDatabaseApi(CreateDbContext(unitOfWork,mongoUrl,databaseName))); + () => new MongoDbDatabaseApi(CreateDbContext(unitOfWork, mongoUrl, databaseName))); return ((MongoDbDatabaseApi) databaseApi).DbContext; } @@ -52,9 +52,29 @@ namespace Volo.Abp.Uow.MongoDB { var client = new MongoClient(mongoUrl); var database = client.GetDatabase(databaseName); - var dbContext = unitOfWork.ServiceProvider.GetRequiredService(); if (unitOfWork.Options.IsTransactional) + { + return CreateDbContextWithTransaction(unitOfWork, mongoUrl, client, database); + } + + var dbContext = unitOfWork.ServiceProvider.GetRequiredService(); + dbContext.ToAbpMongoDbContext().InitializeDatabase(database, null); + + return dbContext; + } + + public TMongoDbContext CreateDbContextWithTransaction( + IUnitOfWork unitOfWork, + MongoUrl url, + MongoClient client, + IMongoDatabase database) + { + var transactionApiKey = $"MongoDb_{url}"; + var activeTransaction = unitOfWork.FindTransactionApi(transactionApiKey) as MongoDbTransactionApi; + var dbContext = unitOfWork.ServiceProvider.GetRequiredService(); + + if (activeTransaction?.SessionHandle == null) { var session = client.StartSession(); @@ -65,7 +85,6 @@ namespace Volo.Abp.Uow.MongoDB session.StartTransaction(); - var transactionApiKey = $"MongoDb_{mongoUrl}"; unitOfWork.AddTransactionApi( transactionApiKey, new MongoDbTransactionApi(session) @@ -75,7 +94,7 @@ namespace Volo.Abp.Uow.MongoDB } else { - dbContext.ToAbpMongoDbContext().InitializeDatabase(database, null); + dbContext.ToAbpMongoDbContext().InitializeDatabase(database, activeTransaction.SessionHandle); } return dbContext; diff --git a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/OrganizationUnitRepository_Tests.cs b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/OrganizationUnitRepository_Tests.cs index b017352f9e..dc134f9974 100644 --- a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/OrganizationUnitRepository_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/OrganizationUnitRepository_Tests.cs @@ -5,7 +5,7 @@ using Xunit; namespace Volo.Abp.Identity.MongoDB { - [Collection(MongoTestCollection.Name)] + [Collection(MongoTestCollection.Name)] public class OrganizationUnitRepository_Tests : OrganizationUnitRepository_Tests { } From 8ed7db41ba0d25f5bb01ea53c5605bee0a53613a Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 31 Aug 2020 17:31:18 +0800 Subject: [PATCH 6/9] Add mongodb scheme migrator --- .../Volo/Abp/MongoDB/AbpMongoDbModule.cs | 31 +------------ .../MongoDbMyProjectNameDbSchemaMigrator.cs | 45 +++++++++++++++++++ 2 files changed, 46 insertions(+), 30 deletions(-) create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs index bb35883f7c..d32f015a33 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs @@ -1,8 +1,5 @@ -using System; -using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; -using MongoDB.Driver; -using Volo.Abp.Data; using Volo.Abp.Domain; using Volo.Abp.Domain.Repositories.MongoDB; using Volo.Abp.Modularity; @@ -36,31 +33,5 @@ namespace Volo.Abp.MongoDB typeof(MongoDbRepositoryFilterer<,>) ); } - - public override void OnApplicationInitialization(ApplicationInitializationContext context) - { - InitializeAllCollections(context.ServiceProvider); - } - - private void InitializeAllCollections(IServiceProvider serviceProvider) - { - var dbContexts = serviceProvider.GetServices(); - var connectionStringResolver = serviceProvider.GetService(); - - foreach (var dbContext in dbContexts) - { - var connectionString = connectionStringResolver.Resolve(ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType())); - var mongoUrl = new MongoUrl(connectionString); - var databaseName = mongoUrl.DatabaseName; - var client = new MongoClient(mongoUrl); - - if (databaseName.IsNullOrWhiteSpace()) - { - databaseName = ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType()); - } - - (dbContext as AbpMongoDbContext)?.InitializeCollections(client.GetDatabase(databaseName)); - } - } } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs new file mode 100644 index 0000000000..6b74376030 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs @@ -0,0 +1,45 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using MongoDB.Driver; +using MyCompanyName.MyProjectName.Data; +using Volo.Abp.Data; +using Volo.Abp.MongoDB; + +namespace MyCompanyName.MyProjectName.MongoDB +{ + public class MongoDbMyProjectNameDbSchemaMigrator : IMyProjectNameDbSchemaMigrator + { + private readonly IServiceProvider _serviceProvider; + + public MongoDbMyProjectNameDbSchemaMigrator(IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + } + + public Task MigrateAsync() + { + var dbContexts = _serviceProvider.GetServices(); + var connectionStringResolver = _serviceProvider.GetService(); + + foreach (var dbContext in dbContexts) + { + var connectionString = + connectionStringResolver.Resolve( + ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType())); + var mongoUrl = new MongoUrl(connectionString); + var databaseName = mongoUrl.DatabaseName; + var client = new MongoClient(mongoUrl); + + if (databaseName.IsNullOrWhiteSpace()) + { + databaseName = ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType()); + } + + (dbContext as AbpMongoDbContext)?.InitializeCollections(client.GetDatabase(databaseName)); + } + + return Task.CompletedTask; + } + } +} From 178bde4ceec160321057989d1cdeaaea565d0cb2 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 15 Sep 2020 16:53:24 +0800 Subject: [PATCH 7/9] Update mongodb unit tests --- .../Volo/Abp/MongoDB/MongoClientExtension.cs | 87 ------------------- .../Volo/Abp/MongoDB/AbpMongoDbTestModule.cs | 12 +++ .../Volo/Abp/MongoDB/MongoDbFixture.cs | 6 -- .../AbpAuditLoggingMongoDbTestModule.cs | 12 +++ .../AuditLogging/MongoDB/MongoDbFixture.cs | 6 -- .../AbpBackgroundJobsMongoDbTestModule.cs | 12 +++ .../BackgroundJobs/MongoDB/MongoDbFixture.cs | 6 -- .../BlobStoringDatabaseMongoDbTestModule.cs | 20 +++-- .../MongoDB/MongoDbFixture.cs | 6 -- .../MongoDB/BloggingMongoDBTestModule.cs | 20 +++-- .../Volo/Blogging/MongoDB/MongoDbFixture.cs | 6 -- .../MongoDB/CmsKitMongoDbTestModule.cs | 22 +++-- .../MongoDB/MongoDbFixture.cs | 6 -- .../Docs/MongoDB/DocsMongoDBTestModule.cs | 18 +++- .../Volo/Docs/MongoDB/MongoDbFixture.cs | 6 -- .../AbpFeatureManagementMongoDbTestModule.cs | 14 ++- .../MongoDB/MongoDbFixture.cs | 6 -- .../MongoDB/AbpIdentityMongoDbTestModule.cs | 20 +++-- .../Abp/Identity/MongoDB/MongoDbFixture.cs | 6 -- .../AbpIdentityServerMongoDbTestModule.cs | 12 +++ .../Volo/Abp/IdentityServer/MongoDbFixture.cs | 6 -- ...bpPermissionManagementMongoDbTestModule.cs | 18 +++- .../MongoDb/MongoDbFixture.cs | 6 -- .../AbpSettingManagementMongoDbTestModule.cs | 12 +++ .../MongoDB/MongoDbFixture.cs | 6 -- .../AbpTenantManagementMongoDbTestModule.cs | 12 +++ .../MongoDb/MongoDbFixture.cs | 4 - .../MongoDb/MyProjectNameMongoDbFixture.cs | 5 -- .../MongoDb/MyProjectNameMongoDbTestModule.cs | 11 +++ .../MongoDB/MongoDbFixture.cs | 6 -- .../MongoDB/MyProjectNameMongoDbTestModule.cs | 11 +++ 31 files changed, 195 insertions(+), 205 deletions(-) delete mode 100644 framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoClientExtension.cs diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoClientExtension.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoClientExtension.cs deleted file mode 100644 index f792f6c9a9..0000000000 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoClientExtension.cs +++ /dev/null @@ -1,87 +0,0 @@ -using System; -using System.Threading; -using MongoDB.Driver; - -namespace Volo.Abp.MongoDB -{ - /// - /// TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 - /// - public static class MongoClientExtension - { - private static readonly TimeSpan InitialDelay = TimeSpan.FromMilliseconds(500); - private static readonly TimeSpan MaxDelay = TimeSpan.FromSeconds(5000); - - - public static void EnsureReplicationSetReady(this IMongoClient mongoClient) - { - var delay = InitialDelay; - var database = mongoClient.GetDatabase("__dummy-db"); - try - { - while (true) - { - try - { - _ = database.GetCollection("__dummy"); - database.DropCollection("__dummy"); - - var session = mongoClient.StartSession(); - - try - { - session.StartTransaction(); - session.AbortTransaction(); - } - finally - { - session.Dispose(); - } - - break; - } - catch (NotSupportedException) - { - } - - Thread.Sleep(delay); - delay = Min(Double(delay), MaxDelay); - } - } - finally - { - mongoClient.DropDatabase("__dummy-db"); - } - } - - private static TimeSpan Min(TimeSpan left, TimeSpan right) - { - return new TimeSpan(Math.Min(left.Ticks, right.Ticks)); - } - - private static TimeSpan Double(TimeSpan timeSpan) - { - long ticks; - try - { - ticks = checked(timeSpan.Ticks * 2); - } - catch (OverflowException) - { - if (timeSpan.Ticks >= 0) - { - return TimeSpan.MaxValue; - } - - return TimeSpan.MinValue; - } - - return new TimeSpan(ticks); - } - - private sealed class DummyEntry - { - public int Id { get; set; } - } - } -} diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs index f2b04a3a7f..17c46796f2 100644 --- a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs +++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs @@ -1,5 +1,9 @@ using System; +using System.Linq; +using System.Threading; using Microsoft.Extensions.DependencyInjection; +using MongoDB.Driver; +using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; using Volo.Abp.TestApp; @@ -32,6 +36,14 @@ namespace Volo.Abp.MongoDB options.AddDefaultRepositories(); options.AddRepository(); }); + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 + EnsureTransactionIsReady(new MongoClient(connectionString)); + } + + private void EnsureTransactionIsReady(MongoClient client) + { + SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); } } } diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs index a3c3b25cac..ee0de2b459 100644 --- a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs +++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs @@ -1,7 +1,5 @@ using System; using Mongo2Go; -using MongoDB.Driver; -using Volo.Abp.MongoDB; namespace Volo.Abp.MongoDB { @@ -14,10 +12,6 @@ namespace Volo.Abp.MongoDB { MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; - - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 - var client = new MongoClient(MongoDbRunner.ConnectionString); - client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs index 37d43e4ee5..3617d8d243 100644 --- a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs +++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs @@ -1,4 +1,8 @@ using System; +using System.Linq; +using System.Threading; +using MongoDB.Driver; +using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; @@ -22,6 +26,14 @@ namespace Volo.Abp.AuditLogging.MongoDB { options.ConnectionStrings.Default = connectionString; }); + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 + EnsureTransactionIsReady(new MongoClient(connectionString)); + } + + private void EnsureTransactionIsReady(MongoClient client) + { + SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); } } } diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/MongoDbFixture.cs b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/MongoDbFixture.cs index 8d928e9f1e..d4d00736f1 100644 --- a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/MongoDbFixture.cs +++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/MongoDbFixture.cs @@ -1,7 +1,5 @@ using System; using Mongo2Go; -using MongoDB.Driver; -using Volo.Abp.MongoDB; namespace Volo.Abp.AuditLogging.MongoDB { @@ -14,10 +12,6 @@ namespace Volo.Abp.AuditLogging.MongoDB { MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; - - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 - var client = new MongoClient(MongoDbRunner.ConnectionString); - client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs index 17f561c086..16fb856147 100644 --- a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs +++ b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs @@ -1,4 +1,8 @@ using System; +using System.Linq; +using System.Threading; +using MongoDB.Driver; +using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; @@ -22,6 +26,14 @@ namespace Volo.Abp.BackgroundJobs.MongoDB { options.ConnectionStrings.Default = connectionString; }); + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 + EnsureTransactionIsReady(new MongoClient(connectionString)); + } + + private void EnsureTransactionIsReady(MongoClient client) + { + SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); } } } diff --git a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/MongoDbFixture.cs b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/MongoDbFixture.cs index 9e2f4a76a4..21d3e6f351 100644 --- a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/MongoDbFixture.cs +++ b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/MongoDbFixture.cs @@ -1,7 +1,5 @@ using System; using Mongo2Go; -using MongoDB.Driver; -using Volo.Abp.MongoDB; namespace Volo.Abp.BackgroundJobs.MongoDB { @@ -14,10 +12,6 @@ namespace Volo.Abp.BackgroundJobs.MongoDB { MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; - - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 - var client = new MongoClient(MongoDbRunner.ConnectionString); - client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs index fa2e2f2936..015f68c89e 100644 --- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs +++ b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs @@ -1,4 +1,8 @@ using System; +using System.Linq; +using System.Threading; +using MongoDB.Driver; +using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; @@ -7,7 +11,7 @@ namespace Volo.Abp.BlobStoring.Database.MongoDB [DependsOn( typeof(BlobStoringDatabaseTestBaseModule), typeof(BlobStoringDatabaseMongoDbModule) - )] + )] public class BlobStoringDatabaseMongoDbTestModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) @@ -18,10 +22,16 @@ namespace Volo.Abp.BlobStoring.Database.MongoDB "Db_" + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; - Configure(options => - { - options.ConnectionStrings.Default = connectionString; - }); + Configure(options => { options.ConnectionStrings.Default = connectionString; }); + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 + EnsureTransactionIsReady(new MongoClient(connectionString)); + } + + private void EnsureTransactionIsReady(MongoClient client) + { + SpinWait.SpinUntil(() => + client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); } } } diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/MongoDbFixture.cs b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/MongoDbFixture.cs index 82335b13f3..e91ed78aa6 100644 --- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/MongoDbFixture.cs +++ b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/MongoDbFixture.cs @@ -1,7 +1,5 @@ using System; using Mongo2Go; -using MongoDB.Driver; -using Volo.Abp.MongoDB; namespace Volo.Abp.BlobStoring.Database.MongoDB { @@ -14,10 +12,6 @@ namespace Volo.Abp.BlobStoring.Database.MongoDB { MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; - - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 - var client = new MongoClient(MongoDbRunner.ConnectionString); - client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs index cac9cd748e..2c59493c08 100644 --- a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs +++ b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs @@ -1,4 +1,8 @@ using System; +using System.Linq; +using System.Threading; +using MongoDB.Driver; +using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; @@ -18,10 +22,16 @@ namespace Volo.Blogging.MongoDB "Db_" + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; - Configure(options => - { - options.ConnectionStrings.Default = connectionString; - }); + Configure(options => { options.ConnectionStrings.Default = connectionString; }); + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 + EnsureTransactionIsReady(new MongoClient(connectionString)); + } + + private void EnsureTransactionIsReady(MongoClient client) + { + SpinWait.SpinUntil(() => + client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); } } -} \ No newline at end of file +} diff --git a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/MongoDbFixture.cs b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/MongoDbFixture.cs index 5198f4087d..cd53f1a8f5 100644 --- a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/MongoDbFixture.cs +++ b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/MongoDbFixture.cs @@ -1,7 +1,5 @@ using System; using Mongo2Go; -using MongoDB.Driver; -using Volo.Abp.MongoDB; namespace Volo.Blogging.MongoDB { @@ -14,10 +12,6 @@ namespace Volo.Blogging.MongoDB { MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; - - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 - var client = new MongoClient(MongoDbRunner.ConnectionString); - client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs index 38f0179093..3aa2e3bd72 100644 --- a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs +++ b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs @@ -1,4 +1,8 @@ using System; +using System.Linq; +using System.Threading; +using MongoDB.Driver; +using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; @@ -7,7 +11,7 @@ namespace Volo.CmsKit.MongoDB [DependsOn( typeof(CmsKitTestBaseModule), typeof(CmsKitMongoDbModule) - )] + )] public class CmsKitMongoDbTestModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) @@ -18,10 +22,16 @@ namespace Volo.CmsKit.MongoDB "Db_" + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; - Configure(options => - { - options.ConnectionStrings.Default = connectionString; - }); + Configure(options => { options.ConnectionStrings.Default = connectionString; }); + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 + EnsureTransactionIsReady(new MongoClient(connectionString)); + } + + private void EnsureTransactionIsReady(MongoClient client) + { + SpinWait.SpinUntil(() => + client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); } } -} \ No newline at end of file +} diff --git a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/MongoDbFixture.cs b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/MongoDbFixture.cs index e7c60b7d8d..b867199547 100644 --- a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/MongoDbFixture.cs +++ b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/MongoDbFixture.cs @@ -1,7 +1,5 @@ using System; using Mongo2Go; -using MongoDB.Driver; -using Volo.Abp.MongoDB; namespace Volo.CmsKit.MongoDB { @@ -14,10 +12,6 @@ namespace Volo.CmsKit.MongoDB { MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; - - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 - var client = new MongoClient(MongoDbRunner.ConnectionString); - client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs b/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs index 942d19071c..3ecebd228b 100644 --- a/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs +++ b/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs @@ -1,4 +1,8 @@ using System; +using System.Linq; +using System.Threading; +using MongoDB.Driver; +using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; @@ -18,10 +22,16 @@ namespace Volo.Docs.MongoDB "Db_" + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; - Configure(options => - { - options.ConnectionStrings.Default = connectionString; - }); + Configure(options => { options.ConnectionStrings.Default = connectionString; }); + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 + EnsureTransactionIsReady(new MongoClient(connectionString)); + } + + private void EnsureTransactionIsReady(MongoClient client) + { + SpinWait.SpinUntil(() => + client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); } } } diff --git a/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/MongoDbFixture.cs b/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/MongoDbFixture.cs index 90eab2fb2b..ba3debcdc2 100644 --- a/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/MongoDbFixture.cs +++ b/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/MongoDbFixture.cs @@ -1,7 +1,5 @@ using System; using Mongo2Go; -using MongoDB.Driver; -using Volo.Abp.MongoDB; namespace Volo.Docs.MongoDB { @@ -14,10 +12,6 @@ namespace Volo.Docs.MongoDB { MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; - - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 - var client = new MongoClient(MongoDbRunner.ConnectionString); - client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs index a1e24b829e..ae42da1813 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs @@ -1,4 +1,8 @@ using System; +using System.Linq; +using System.Threading; +using MongoDB.Driver; +using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; @@ -22,6 +26,14 @@ namespace Volo.Abp.FeatureManagement.MongoDB { options.ConnectionStrings.Default = connectionString; }); + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 + EnsureTransactionIsReady(new MongoClient(connectionString)); + } + + private void EnsureTransactionIsReady(MongoClient client) + { + SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); } } -} \ No newline at end of file +} diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/MongoDbFixture.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/MongoDbFixture.cs index 32cfd0dc5f..7a0b5ed54f 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/MongoDbFixture.cs +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/MongoDbFixture.cs @@ -1,7 +1,5 @@ using System; using Mongo2Go; -using MongoDB.Driver; -using Volo.Abp.MongoDB; namespace Volo.Abp.FeatureManagement.MongoDB { @@ -14,10 +12,6 @@ namespace Volo.Abp.FeatureManagement.MongoDB { MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; - - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 - var client = new MongoClient(MongoDbRunner.ConnectionString); - client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs index 6cf462ccb9..b87971b00e 100644 --- a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs +++ b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs @@ -1,8 +1,11 @@ using System; +using System.Linq; +using System.Threading; +using MongoDB.Driver; +using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; using Volo.Abp.PermissionManagement.MongoDB; -using Volo.Abp.Uow; namespace Volo.Abp.Identity.MongoDB { @@ -10,7 +13,7 @@ namespace Volo.Abp.Identity.MongoDB typeof(AbpIdentityTestBaseModule), typeof(AbpPermissionManagementMongoDbModule), typeof(AbpIdentityMongoDbModule) - )] + )] public class AbpIdentityMongoDbTestModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) @@ -21,11 +24,16 @@ namespace Volo.Abp.Identity.MongoDB "Db_" + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; - Configure(options => - { - options.ConnectionStrings.Default = connectionString; - }); + Configure(options => { options.ConnectionStrings.Default = connectionString; }); + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 + EnsureTransactionIsReady(new MongoClient(connectionString)); + } + + private void EnsureTransactionIsReady(MongoClient client) + { + SpinWait.SpinUntil(() => + client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); } } } diff --git a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/MongoDbFixture.cs b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/MongoDbFixture.cs index 4c919b6adc..6071001c97 100644 --- a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/MongoDbFixture.cs +++ b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/MongoDbFixture.cs @@ -1,7 +1,5 @@ using System; using Mongo2Go; -using MongoDB.Driver; -using Volo.Abp.MongoDB; namespace Volo.Abp.Identity.MongoDB { @@ -14,10 +12,6 @@ namespace Volo.Abp.Identity.MongoDB { MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; - - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 - var client = new MongoClient(MongoDbRunner.ConnectionString); - client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs index f9762d9d4a..73e18457d2 100644 --- a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs +++ b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs @@ -1,4 +1,8 @@ using System; +using System.Linq; +using System.Threading; +using MongoDB.Driver; +using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Identity.MongoDB; using Volo.Abp.IdentityServer.MongoDB; @@ -26,6 +30,14 @@ namespace Volo.Abp.IdentityServer { options.ConnectionStrings.Default = connectionString; }); + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 + EnsureTransactionIsReady(new MongoClient(connectionString)); + } + + private void EnsureTransactionIsReady(MongoClient client) + { + SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); } } } diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/MongoDbFixture.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/MongoDbFixture.cs index f974990a54..75ce977418 100644 --- a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/MongoDbFixture.cs +++ b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/MongoDbFixture.cs @@ -1,7 +1,5 @@ using System; using Mongo2Go; -using MongoDB.Driver; -using Volo.Abp.MongoDB; namespace Volo.Abp.IdentityServer { @@ -14,10 +12,6 @@ namespace Volo.Abp.IdentityServer { MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; - - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 - var client = new MongoClient(MongoDbRunner.ConnectionString); - client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs index baa579403a..04d5d4aeca 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs @@ -1,4 +1,8 @@ using System; +using System.Linq; +using System.Threading; +using MongoDB.Driver; +using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; @@ -17,10 +21,16 @@ namespace Volo.Abp.PermissionManagement.MongoDB "Db_" + Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; - Configure(options => - { - options.ConnectionStrings.Default = connectionString; - }); + Configure(options => { options.ConnectionStrings.Default = connectionString; }); + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 + EnsureTransactionIsReady(new MongoClient(connectionString)); + } + + private void EnsureTransactionIsReady(MongoClient client) + { + SpinWait.SpinUntil(() => + client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); } } } diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbFixture.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbFixture.cs index 385f9d3321..8ede0f98e4 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbFixture.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbFixture.cs @@ -1,7 +1,5 @@ using System; using Mongo2Go; -using MongoDB.Driver; -using Volo.Abp.MongoDB; namespace Volo.Abp.PermissionManagement.MongoDB { @@ -14,10 +12,6 @@ namespace Volo.Abp.PermissionManagement.MongoDB { MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; - - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 - var client = new MongoClient(MongoDbRunner.ConnectionString); - client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs index 8bc35e2724..b19c6f4201 100644 --- a/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs @@ -1,4 +1,8 @@ using System; +using System.Linq; +using System.Threading; +using MongoDB.Driver; +using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; @@ -22,6 +26,14 @@ namespace Volo.Abp.SettingManagement.MongoDB { options.ConnectionStrings.Default = connectionString; }); + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 + EnsureTransactionIsReady(new MongoClient(connectionString)); + } + + private void EnsureTransactionIsReady(MongoClient client) + { + SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); } } } diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/MongoDbFixture.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/MongoDbFixture.cs index 1212bb90f0..e15891891b 100644 --- a/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/MongoDbFixture.cs +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/MongoDbFixture.cs @@ -1,7 +1,5 @@ using System; using Mongo2Go; -using MongoDB.Driver; -using Volo.Abp.MongoDB; namespace Volo.Abp.SettingManagement.MongoDB { @@ -14,10 +12,6 @@ namespace Volo.Abp.SettingManagement.MongoDB { MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; - - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 - var client = new MongoClient(MongoDbRunner.ConnectionString); - client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs index 29154cc271..2bcf5f89f3 100644 --- a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs @@ -1,4 +1,8 @@ using System; +using System.Linq; +using System.Threading; +using MongoDB.Driver; +using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; @@ -22,6 +26,14 @@ namespace Volo.Abp.TenantManagement.MongoDB { options.ConnectionStrings.Default = connectionString; }); + + //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 + EnsureTransactionIsReady(new MongoClient(connectionString)); + } + + private void EnsureTransactionIsReady(MongoClient client) + { + SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); } } } diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs index 6c95e09086..9eed11fb27 100644 --- a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs @@ -14,10 +14,6 @@ namespace Volo.Abp.TenantManagement.MongoDB { MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; - - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 - var client = new MongoClient(MongoDbRunner.ConnectionString); - client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs index 565bd1f5ff..572788f8bc 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs @@ -1,7 +1,5 @@ using System; using Mongo2Go; -using MongoDB.Driver; -using Volo.Abp.MongoDB; namespace MyCompanyName.MyProjectName.MongoDB { @@ -14,9 +12,6 @@ namespace MyCompanyName.MyProjectName.MongoDB { MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; - - var client = new MongoClient(MongoDbRunner.ConnectionString); - client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs index 386c82d5b9..8c1f5a1b60 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs @@ -1,4 +1,8 @@ using System; +using System.Linq; +using System.Threading; +using MongoDB.Driver; +using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; @@ -22,6 +26,13 @@ namespace MyCompanyName.MyProjectName.MongoDB { options.ConnectionStrings.Default = connectionString; }); + + EnsureTransactionIsReady(new MongoClient(connectionString)); + } + + private void EnsureTransactionIsReady(MongoClient client) + { + SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); } } } diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MongoDbFixture.cs b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MongoDbFixture.cs index 55a7072a9d..3b41ceb151 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MongoDbFixture.cs +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MongoDbFixture.cs @@ -1,7 +1,5 @@ using System; using Mongo2Go; -using MongoDB.Driver; -using Volo.Abp.MongoDB; namespace MyCompanyName.MyProjectName.MongoDB { @@ -14,10 +12,6 @@ namespace MyCompanyName.MyProjectName.MongoDB { MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); ConnectionString = MongoDbRunner.ConnectionString; - - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/89 - var client = new MongoClient(MongoDbRunner.ConnectionString); - client.EnsureReplicationSetReady(); } public void Dispose() diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs index d074fe6b43..ecafd42fec 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs @@ -1,4 +1,8 @@ using System; +using System.Linq; +using System.Threading; +using MongoDB.Driver; +using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; @@ -22,6 +26,13 @@ namespace MyCompanyName.MyProjectName.MongoDB { options.ConnectionStrings.Default = connectionString; }); + + EnsureTransactionIsReady(new MongoClient(connectionString)); + } + + private void EnsureTransactionIsReady(MongoClient client) + { + SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); } } } From 4b2fe6ae4822d882b9c25809ef10c6b450c83601 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 16 Sep 2020 00:35:12 +0800 Subject: [PATCH 8/9] Disable mongodb unit test transaction --- .../Volo/Abp/MongoDB/AbpMongoDbTestModule.cs | 18 ++-- .../Volo/Abp/MongoDB/MongoDbFixture.cs | 2 +- .../MongoDB/Transactions/Transaction_Tests.cs | 96 ------------------- .../AbpAuditLoggingMongoDbTestModule.cs | 22 ++--- .../AuditLogging/MongoDB/MongoDbFixture.cs | 2 +- .../AbpBackgroundJobsMongoDbTestModule.cs | 24 ++--- .../BackgroundJobs/MongoDB/MongoDbFixture.cs | 2 +- .../BlobStoringDatabaseMongoDbTestModule.cs | 28 +++--- .../MongoDB/MongoDbFixture.cs | 2 +- .../MongoDB/BloggingMongoDBTestModule.cs | 28 +++--- .../Volo/Blogging/MongoDB/MongoDbFixture.cs | 2 +- .../MongoDB/CmsKitMongoDbTestModule.cs | 28 +++--- .../MongoDB/MongoDbFixture.cs | 2 +- .../Docs/MongoDB/DocsMongoDBTestModule.cs | 28 +++--- .../Volo/Docs/MongoDB/MongoDbFixture.cs | 2 +- .../AbpFeatureManagementMongoDbTestModule.cs | 22 ++--- .../MongoDB/MongoDbFixture.cs | 2 +- .../MongoDB/AbpIdentityMongoDbTestModule.cs | 28 +++--- .../Abp/Identity/MongoDB/MongoDbFixture.cs | 2 +- .../AbpIdentityServerMongoDbTestModule.cs | 22 ++--- .../Volo/Abp/IdentityServer/MongoDbFixture.cs | 2 +- ...bpPermissionManagementMongoDbTestModule.cs | 28 +++--- .../MongoDb/MongoDbFixture.cs | 2 +- .../AbpSettingManagementMongoDbTestModule.cs | 22 ++--- .../MongoDB/MongoDbFixture.cs | 2 +- .../AbpTenantManagementMongoDbTestModule.cs | 22 ++--- .../MongoDb/MongoDbFixture.cs | 2 +- .../MongoDb/MyProjectNameMongoDbFixture.cs | 2 +- .../MongoDb/MyProjectNameMongoDbTestModule.cs | 21 ++-- .../MongoDB/MongoDbFixture.cs | 2 +- .../MongoDB/MyProjectNameMongoDbTestModule.cs | 21 ++-- 31 files changed, 145 insertions(+), 343 deletions(-) delete mode 100644 framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Transactions/Transaction_Tests.cs diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs index 17c46796f2..8ec0b026cd 100644 --- a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs +++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs @@ -9,6 +9,7 @@ using Volo.Abp.Modularity; using Volo.Abp.TestApp; using Volo.Abp.TestApp.Domain; using Volo.Abp.TestApp.MongoDB; +using Volo.Abp.Uow; namespace Volo.Abp.MongoDB { @@ -20,11 +21,9 @@ namespace Volo.Abp.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var stringArray = MongoDbFixture.ConnectionString.Split('?'); - - var connectionString = stringArray[0].EnsureEndsWith('/') + + var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; + Guid.NewGuid().ToString("N"); Configure(options => { @@ -37,13 +36,10 @@ namespace Volo.Abp.MongoDB options.AddRepository(); }); - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 - EnsureTransactionIsReady(new MongoClient(connectionString)); - } - - private void EnsureTransactionIsReady(MongoClient client) - { - SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } } diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs index ee0de2b459..3fa239ebbb 100644 --- a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs +++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/MongoDbFixture.cs @@ -10,7 +10,7 @@ namespace Volo.Abp.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); + MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString; } diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Transactions/Transaction_Tests.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Transactions/Transaction_Tests.cs deleted file mode 100644 index 3bfcf96cf7..0000000000 --- a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Transactions/Transaction_Tests.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System; -using System.Threading.Tasks; -using Microsoft.Extensions.DependencyInjection; -using Shouldly; -using Volo.Abp.Domain.Repositories; -using Volo.Abp.TestApp.Domain; -using Volo.Abp.TestApp.Testing; -using Volo.Abp.Uow; -using Xunit; - -namespace Volo.Abp.MongoDB.Transactions -{ - [Collection(MongoTestCollection.Name)] - public class Transaction_Tests : TestAppTestBase - { - - private readonly IBasicRepository _personRepository; - private readonly IBasicRepository _cityRepository; - private readonly IUnitOfWorkManager _unitOfWorkManager; - - public Transaction_Tests() - { - _personRepository = ServiceProvider.GetRequiredService>(); - _cityRepository = ServiceProvider.GetRequiredService>(); - _unitOfWorkManager = ServiceProvider.GetRequiredService(); - } - - [Fact] - public async Task Should_Rollback_Transaction_When_An_Exception_Is_Thrown() - { - var personId = Guid.NewGuid(); - const string exceptionMessage = "thrown to rollback the transaction!"; - - try - { - await WithUnitOfWorkAsync(new AbpUnitOfWorkOptions {IsTransactional = true}, async () => - { - await _personRepository.InsertAsync(new Person(personId, "Adam", 42)); - throw new Exception(exceptionMessage); - }); - } - catch (Exception e) when (e.Message == exceptionMessage) - { - - } - - var person = await _personRepository.FindAsync(personId); - person.ShouldBeNull(); - } - - [Fact] - public async Task Should_Rollback_Transaction_Manually() - { - var personId = Guid.NewGuid(); - - await WithUnitOfWorkAsync(new AbpUnitOfWorkOptions {IsTransactional = true}, async () => - { - _unitOfWorkManager.Current.ShouldNotBeNull(); - - await _personRepository.InsertAsync(new Person(personId, "Adam", 42)); - - await _unitOfWorkManager.Current.RollbackAsync(); - }); - - var person = await _personRepository.FindAsync(personId); - person.ShouldBeNull(); - } - - [Fact] - public async Task Should_Rollback_Transaction_Manually_With_Double_DbContext_Transaction() - { - var personId = Guid.NewGuid(); - var cityId = Guid.NewGuid(); - - using (var scope = ServiceProvider.CreateScope()) - { - var uowManager = scope.ServiceProvider.GetRequiredService(); - - using (uowManager.Begin(new AbpUnitOfWorkOptions {IsTransactional = true})) - { - _unitOfWorkManager.Current.ShouldNotBeNull(); - - await _personRepository.InsertAsync(new Person(personId, "Adam", 42)); - await _cityRepository.InsertAsync(new City(cityId, cityId.ToString())); - - await _unitOfWorkManager.Current.SaveChangesAsync(); - - //Will automatically rollback since not called the Complete! - } - } - - (await _personRepository.FindAsync(personId)).ShouldBeNull(); - (await _cityRepository.FindAsync(cityId)).ShouldBeNull(); - } - } -} diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs index 3617d8d243..a8d213a81f 100644 --- a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs +++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs @@ -1,10 +1,7 @@ using System; -using System.Linq; -using System.Threading; -using MongoDB.Driver; -using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; +using Volo.Abp.Uow; namespace Volo.Abp.AuditLogging.MongoDB { @@ -16,24 +13,19 @@ namespace Volo.Abp.AuditLogging.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var stringArray = MongoDbFixture.ConnectionString.Split('?'); - - var connectionString = stringArray[0].EnsureEndsWith('/') + + var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; + Guid.NewGuid().ToString("N"); Configure(options => { options.ConnectionStrings.Default = connectionString; }); - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 - EnsureTransactionIsReady(new MongoClient(connectionString)); - } - - private void EnsureTransactionIsReady(MongoClient client) - { - SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } } diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/MongoDbFixture.cs b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/MongoDbFixture.cs index d4d00736f1..e217faf961 100644 --- a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/MongoDbFixture.cs +++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/MongoDbFixture.cs @@ -10,7 +10,7 @@ namespace Volo.Abp.AuditLogging.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); + MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString; } diff --git a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs index 16fb856147..a7ec1ad65f 100644 --- a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs +++ b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs @@ -1,10 +1,7 @@ using System; -using System.Linq; -using System.Threading; -using MongoDB.Driver; -using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; +using Volo.Abp.Uow; namespace Volo.Abp.BackgroundJobs.MongoDB { @@ -16,24 +13,19 @@ namespace Volo.Abp.BackgroundJobs.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var stringArray = MongoDbFixture.ConnectionString.Split('?'); - - var connectionString = stringArray[0].EnsureEndsWith('/') + - "Db_" + - Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; + var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + + "Db_" + + Guid.NewGuid().ToString("N"); Configure(options => { options.ConnectionStrings.Default = connectionString; }); - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 - EnsureTransactionIsReady(new MongoClient(connectionString)); - } - - private void EnsureTransactionIsReady(MongoClient client) - { - SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } } diff --git a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/MongoDbFixture.cs b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/MongoDbFixture.cs index 21d3e6f351..c358bed276 100644 --- a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/MongoDbFixture.cs +++ b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/MongoDbFixture.cs @@ -10,7 +10,7 @@ namespace Volo.Abp.BackgroundJobs.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); + MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString; } diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs index 015f68c89e..12cb8b0de3 100644 --- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs +++ b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs @@ -1,10 +1,7 @@ using System; -using System.Linq; -using System.Threading; -using MongoDB.Driver; -using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; +using Volo.Abp.Uow; namespace Volo.Abp.BlobStoring.Database.MongoDB { @@ -16,22 +13,19 @@ namespace Volo.Abp.BlobStoring.Database.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var stringArray = MongoDbFixture.ConnectionString.Split('?'); - - var connectionString = stringArray[0].EnsureEndsWith('/') + + var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; - - Configure(options => { options.ConnectionStrings.Default = connectionString; }); + Guid.NewGuid().ToString("N"); - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 - EnsureTransactionIsReady(new MongoClient(connectionString)); - } + Configure(options => + { + options.ConnectionStrings.Default = connectionString; + }); - private void EnsureTransactionIsReady(MongoClient client) - { - SpinWait.SpinUntil(() => - client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } } diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/MongoDbFixture.cs b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/MongoDbFixture.cs index e91ed78aa6..a7cfb4f4b6 100644 --- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/MongoDbFixture.cs +++ b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/MongoDbFixture.cs @@ -10,7 +10,7 @@ namespace Volo.Abp.BlobStoring.Database.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); + MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString; } diff --git a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs index 2c59493c08..f66922cfcd 100644 --- a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs +++ b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs @@ -1,10 +1,7 @@ using System; -using System.Linq; -using System.Threading; -using MongoDB.Driver; -using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; +using Volo.Abp.Uow; namespace Volo.Blogging.MongoDB { @@ -16,22 +13,19 @@ namespace Volo.Blogging.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var stringArray = MongoDbFixture.ConnectionString.Split('?'); - - var connectionString = stringArray[0].EnsureEndsWith('/') + + var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; - - Configure(options => { options.ConnectionStrings.Default = connectionString; }); + Guid.NewGuid().ToString("N"); - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 - EnsureTransactionIsReady(new MongoClient(connectionString)); - } + Configure(options => + { + options.ConnectionStrings.Default = connectionString; + }); - private void EnsureTransactionIsReady(MongoClient client) - { - SpinWait.SpinUntil(() => - client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } } diff --git a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/MongoDbFixture.cs b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/MongoDbFixture.cs index cd53f1a8f5..71824397b4 100644 --- a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/MongoDbFixture.cs +++ b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/MongoDbFixture.cs @@ -10,7 +10,7 @@ namespace Volo.Blogging.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); + MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString; } diff --git a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs index 3aa2e3bd72..521b93cc8c 100644 --- a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs +++ b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs @@ -1,10 +1,7 @@ using System; -using System.Linq; -using System.Threading; -using MongoDB.Driver; -using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; +using Volo.Abp.Uow; namespace Volo.CmsKit.MongoDB { @@ -16,22 +13,19 @@ namespace Volo.CmsKit.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var stringArray = MongoDbFixture.ConnectionString.Split('?'); - - var connectionString = stringArray[0].EnsureEndsWith('/') + + var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; - - Configure(options => { options.ConnectionStrings.Default = connectionString; }); + Guid.NewGuid().ToString("N"); - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 - EnsureTransactionIsReady(new MongoClient(connectionString)); - } + Configure(options => + { + options.ConnectionStrings.Default = connectionString; + }); - private void EnsureTransactionIsReady(MongoClient client) - { - SpinWait.SpinUntil(() => - client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } } diff --git a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/MongoDbFixture.cs b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/MongoDbFixture.cs index b867199547..3898749c10 100644 --- a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/MongoDbFixture.cs +++ b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/MongoDbFixture.cs @@ -10,7 +10,7 @@ namespace Volo.CmsKit.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); + MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString; } diff --git a/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs b/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs index 3ecebd228b..d00f25b533 100644 --- a/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs +++ b/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs @@ -1,10 +1,7 @@ using System; -using System.Linq; -using System.Threading; -using MongoDB.Driver; -using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; +using Volo.Abp.Uow; namespace Volo.Docs.MongoDB { @@ -16,22 +13,19 @@ namespace Volo.Docs.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var stringArray = MongoDbFixture.ConnectionString.Split('?'); - - var connectionString = stringArray[0].EnsureEndsWith('/') + + var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; - - Configure(options => { options.ConnectionStrings.Default = connectionString; }); + Guid.NewGuid().ToString("N"); - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 - EnsureTransactionIsReady(new MongoClient(connectionString)); - } + Configure(options => + { + options.ConnectionStrings.Default = connectionString; + }); - private void EnsureTransactionIsReady(MongoClient client) - { - SpinWait.SpinUntil(() => - client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } } diff --git a/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/MongoDbFixture.cs b/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/MongoDbFixture.cs index ba3debcdc2..9a40d79492 100644 --- a/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/MongoDbFixture.cs +++ b/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/MongoDbFixture.cs @@ -10,7 +10,7 @@ namespace Volo.Docs.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); + MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString; } diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs index ae42da1813..fdafebef51 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs @@ -1,10 +1,7 @@ using System; -using System.Linq; -using System.Threading; -using MongoDB.Driver; -using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; +using Volo.Abp.Uow; namespace Volo.Abp.FeatureManagement.MongoDB { @@ -16,24 +13,19 @@ namespace Volo.Abp.FeatureManagement.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var stringArray = MongoDbFixture.ConnectionString.Split('?'); - - var connectionString = stringArray[0].EnsureEndsWith('/') + + var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; + Guid.NewGuid().ToString("N"); Configure(options => { options.ConnectionStrings.Default = connectionString; }); - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 - EnsureTransactionIsReady(new MongoClient(connectionString)); - } - - private void EnsureTransactionIsReady(MongoClient client) - { - SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } } diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/MongoDbFixture.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/MongoDbFixture.cs index 7a0b5ed54f..bb89a83f76 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/MongoDbFixture.cs +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/MongoDbFixture.cs @@ -10,7 +10,7 @@ namespace Volo.Abp.FeatureManagement.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); + MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString; } diff --git a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs index b87971b00e..101f4836a5 100644 --- a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs +++ b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs @@ -1,10 +1,7 @@ using System; -using System.Linq; -using System.Threading; -using MongoDB.Driver; -using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; +using Volo.Abp.Uow; using Volo.Abp.PermissionManagement.MongoDB; namespace Volo.Abp.Identity.MongoDB @@ -18,22 +15,19 @@ namespace Volo.Abp.Identity.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var stringArray = MongoDbFixture.ConnectionString.Split('?'); - - var connectionString = stringArray[0].EnsureEndsWith('/') + + var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; - - Configure(options => { options.ConnectionStrings.Default = connectionString; }); + Guid.NewGuid().ToString("N"); - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 - EnsureTransactionIsReady(new MongoClient(connectionString)); - } + Configure(options => + { + options.ConnectionStrings.Default = connectionString; + }); - private void EnsureTransactionIsReady(MongoClient client) - { - SpinWait.SpinUntil(() => - client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } } diff --git a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/MongoDbFixture.cs b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/MongoDbFixture.cs index 6071001c97..09581c13d5 100644 --- a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/MongoDbFixture.cs +++ b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/MongoDbFixture.cs @@ -10,7 +10,7 @@ namespace Volo.Abp.Identity.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); + MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString; } diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs index 73e18457d2..ae32aa2d4a 100644 --- a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs +++ b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs @@ -1,12 +1,9 @@ using System; -using System.Linq; -using System.Threading; -using MongoDB.Driver; -using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Identity.MongoDB; using Volo.Abp.IdentityServer.MongoDB; using Volo.Abp.Modularity; +using Volo.Abp.Uow; namespace Volo.Abp.IdentityServer { @@ -20,24 +17,19 @@ namespace Volo.Abp.IdentityServer { public override void ConfigureServices(ServiceConfigurationContext context) { - var stringArray = MongoDbFixture.ConnectionString.Split('?'); - - var connectionString = stringArray[0].EnsureEndsWith('/') + + var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; + Guid.NewGuid().ToString("N"); Configure(options => { options.ConnectionStrings.Default = connectionString; }); - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 - EnsureTransactionIsReady(new MongoClient(connectionString)); - } - - private void EnsureTransactionIsReady(MongoClient client) - { - SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } } diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/MongoDbFixture.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/MongoDbFixture.cs index 75ce977418..2c2f120acd 100644 --- a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/MongoDbFixture.cs +++ b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/MongoDbFixture.cs @@ -10,7 +10,7 @@ namespace Volo.Abp.IdentityServer static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); + MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString; } diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs index 04d5d4aeca..d896cf01dc 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs @@ -1,10 +1,7 @@ using System; -using System.Linq; -using System.Threading; -using MongoDB.Driver; -using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; +using Volo.Abp.Uow; namespace Volo.Abp.PermissionManagement.MongoDB { @@ -15,22 +12,19 @@ namespace Volo.Abp.PermissionManagement.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var stringArray = MongoDbFixture.ConnectionString.Split('?'); - - var connectionString = stringArray[0].EnsureEndsWith('/') + + var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; - - Configure(options => { options.ConnectionStrings.Default = connectionString; }); + Guid.NewGuid().ToString("N"); - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 - EnsureTransactionIsReady(new MongoClient(connectionString)); - } + Configure(options => + { + options.ConnectionStrings.Default = connectionString; + }); - private void EnsureTransactionIsReady(MongoClient client) - { - SpinWait.SpinUntil(() => - client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } } diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbFixture.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbFixture.cs index 8ede0f98e4..97799fc03b 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbFixture.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbFixture.cs @@ -10,7 +10,7 @@ namespace Volo.Abp.PermissionManagement.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); + MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString; } diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs index b19c6f4201..0e456a2df8 100644 --- a/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs @@ -1,10 +1,7 @@ using System; -using System.Linq; -using System.Threading; -using MongoDB.Driver; -using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; +using Volo.Abp.Uow; namespace Volo.Abp.SettingManagement.MongoDB { @@ -16,24 +13,19 @@ namespace Volo.Abp.SettingManagement.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var stringArray = MongoDbFixture.ConnectionString.Split('?'); - - var connectionString = stringArray[0].EnsureEndsWith('/') + + var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; + Guid.NewGuid().ToString("N"); Configure(options => { options.ConnectionStrings.Default = connectionString; }); - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 - EnsureTransactionIsReady(new MongoClient(connectionString)); - } - - private void EnsureTransactionIsReady(MongoClient client) - { - SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } } diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/MongoDbFixture.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/MongoDbFixture.cs index e15891891b..4f9142a829 100644 --- a/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/MongoDbFixture.cs +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/MongoDbFixture.cs @@ -10,7 +10,7 @@ namespace Volo.Abp.SettingManagement.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); + MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString; } diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs index 2bcf5f89f3..3bdcf0ad9c 100644 --- a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs @@ -1,10 +1,7 @@ using System; -using System.Linq; -using System.Threading; -using MongoDB.Driver; -using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; +using Volo.Abp.Uow; namespace Volo.Abp.TenantManagement.MongoDB { @@ -16,24 +13,19 @@ namespace Volo.Abp.TenantManagement.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var stringArray = MongoDbFixture.ConnectionString.Split('?'); - - var connectionString = stringArray[0].EnsureEndsWith('/') + + var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; + Guid.NewGuid().ToString("N"); Configure(options => { options.ConnectionStrings.Default = connectionString; }); - //TODO It can be removed, when Mongo2Go solves this issue : https://github.com/Mongo2Go/Mongo2Go/issues/100 - EnsureTransactionIsReady(new MongoClient(connectionString)); - } - - private void EnsureTransactionIsReady(MongoClient client) - { - SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } } diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs index 9eed11fb27..689f273178 100644 --- a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs @@ -12,7 +12,7 @@ namespace Volo.Abp.TenantManagement.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); + MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString; } diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs index 572788f8bc..d1a863eb2c 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs @@ -10,7 +10,7 @@ namespace MyCompanyName.MyProjectName.MongoDB static MyProjectNameMongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); + MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString; } diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs index 8c1f5a1b60..25db3dbaeb 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs @@ -1,10 +1,7 @@ using System; -using System.Linq; -using System.Threading; -using MongoDB.Driver; -using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; +using Volo.Abp.Uow; namespace MyCompanyName.MyProjectName.MongoDB { @@ -16,23 +13,19 @@ namespace MyCompanyName.MyProjectName.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var stringArray = MyProjectNameMongoDbFixture.ConnectionString.Split('?'); - - var connectionString = stringArray[0].EnsureEndsWith('/') + + var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; + Guid.NewGuid().ToString("N"); Configure(options => { options.ConnectionStrings.Default = connectionString; }); - EnsureTransactionIsReady(new MongoClient(connectionString)); - } - - private void EnsureTransactionIsReady(MongoClient client) - { - SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } } diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MongoDbFixture.cs b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MongoDbFixture.cs index 3b41ceb151..e471590369 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MongoDbFixture.cs +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MongoDbFixture.cs @@ -10,7 +10,7 @@ namespace MyCompanyName.MyProjectName.MongoDB static MongoDbFixture() { - MongoDbRunner = MongoDbRunner.Start(singleNodeReplSet: true, singleNodeReplSetWaitTimeout: 10); + MongoDbRunner = MongoDbRunner.Start(); ConnectionString = MongoDbRunner.ConnectionString; } diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs index ecafd42fec..25db3dbaeb 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs @@ -1,10 +1,7 @@ using System; -using System.Linq; -using System.Threading; -using MongoDB.Driver; -using MongoDB.Driver.Core.Servers; using Volo.Abp.Data; using Volo.Abp.Modularity; +using Volo.Abp.Uow; namespace MyCompanyName.MyProjectName.MongoDB { @@ -16,23 +13,19 @@ namespace MyCompanyName.MyProjectName.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var stringArray = MongoDbFixture.ConnectionString.Split('?'); - - var connectionString = stringArray[0].EnsureEndsWith('/') + + var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + "Db_" + - Guid.NewGuid().ToString("N") + "/?" + stringArray[1]; + Guid.NewGuid().ToString("N"); Configure(options => { options.ConnectionStrings.Default = connectionString; }); - EnsureTransactionIsReady(new MongoClient(connectionString)); - } - - private void EnsureTransactionIsReady(MongoClient client) - { - SpinWait.SpinUntil(() => client.Cluster.Description.Servers.Any(s => s.State == ServerState.Connected && s.IsDataBearing)); + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } } From b23a92474761ab34a4c1b713fce3385c018d171d Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 16 Sep 2020 15:03:03 +0800 Subject: [PATCH 9/9] Update app template --- .../MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs | 3 ++- .../MongoDb/MyProjectNameMongoDbTestModule.cs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs index 6b74376030..395ff28b39 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs @@ -4,11 +4,12 @@ using Microsoft.Extensions.DependencyInjection; using MongoDB.Driver; using MyCompanyName.MyProjectName.Data; using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; using Volo.Abp.MongoDB; namespace MyCompanyName.MyProjectName.MongoDB { - public class MongoDbMyProjectNameDbSchemaMigrator : IMyProjectNameDbSchemaMigrator + public class MongoDbMyProjectNameDbSchemaMigrator : IMyProjectNameDbSchemaMigrator , ITransientDependency { private readonly IServiceProvider _serviceProvider; diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs index 25db3dbaeb..30687dd407 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs @@ -13,7 +13,7 @@ namespace MyCompanyName.MyProjectName.MongoDB { public override void ConfigureServices(ServiceConfigurationContext context) { - var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') + + var connectionString = MyProjectNameMongoDbFixture.ConnectionString.EnsureEndsWith('/') + "Db_" + Guid.NewGuid().ToString("N");