public async ValueTask <IActionResult> Index( [FromServices] IRepository <WebEntity> repository, [FromServices] IRepository <WebEntity, int> repositoryWithKey, [FromServices] IAsyncRepository <WebEntity> asyncRepository, [FromServices] IAsyncRepository <WebEntity, int> asyncRepositoryWithKey, [FromServices] IMessageBus messageBus, [FromServices] IMessageConverter messageConverter) { var repositoryStatus = "OK"; var messageBusStatus = "OK"; var messageConverterStatus = "OK"; try { var hashSet = new HashSet <DbContext> { repository.GetDbContext(), repositoryWithKey.GetDbContext(), asyncRepository.GetDbContext(), asyncRepositoryWithKey.GetDbContext() }; hashSet.Single(); } catch (Exception) { repositoryStatus = "Error"; } try { var message = new WebTestMessage(); var descriptor = new RichMessageDescriptor("", nameof(WebTestMessage).ToLowerInvariant()); await messageBus.OnMessageReceivedAsync(message, descriptor); } catch (Exception) { messageBusStatus = "Error"; } var testMessage = new WebTestMessage { TestMessage = "debug" }; var serializedMessageString = messageConverter.SerializeString(testMessage); if (serializedMessageString == "{}") { messageConverterStatus = "Error"; } return(Json(new { RepositoryStatus = repositoryStatus, MessageBusStatus = messageBusStatus, MessageConverterStatus = messageConverterStatus, })); }
public async Task DuplicateMessageReceiveTest() { var testMessage = new TestMessage() { TestTitle = "test" }; var descriptor = new RichMessageDescriptor("", "TestMessage"); for (int i = 0; i < 10; i++) { await MessageBus.OnMessageReceivedAsync(testMessage, descriptor); } FakeConsumedMessageStorageProvider.SaveAsyncParameters.Count.ShouldBe(1); }
public async Task DuplicateMessageReceiveTest2() { var testMessage = new TestMessage() { TestTitle = "test" }; var descriptor = new RichMessageDescriptor(null, "", "TestMessage", false, null, null, Guid.NewGuid().ToString(), true, null); for (int i = 0; i < 10; i++) { await MessageBus.OnMessageReceivedAsync(testMessage, descriptor); } FakeConsumedMessageStorageProvider.SaveAsyncParameters.Count.ShouldBe(1); }
public async Task DuplicateMessageReceiveTest3() { var testMessage = new TestMessage() { TestTitle = "test" }; var raw = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(testMessage)); var descriptor = new RichMessageDescriptor(raw, "", "TestMessage", false, null, null, null, true, null); for (int i = 0; i < 10; i++) { await MessageBus.OnMessageReceivedAsync(testMessage, descriptor); } FakeConsumedMessageStorageProvider.SaveAsyncParameters.Count.ShouldBe(1); }
public async Task EFDuplicateMessageConsumeTest() { var testMessage = new TestMessage() { Name = "test" }; var descriptor = new RichMessageDescriptor("", nameof(TestMessage)); for (int i = 0; i < 10; i++) { await MessageBus.OnMessageReceivedAsync(testMessage, descriptor); } UsingDbContext(context => { context.TestConsumedMessageLogs.ShouldHaveSingleItem(); }); }
public async ValueTask <IActionResult> Index( [FromServices] IRepository <WebEntity> repository, [FromServices] IRepository <WebEntity, int> repositoryWithKey, [FromServices] IAsyncRepository <WebEntity> asyncRepository, [FromServices] IAsyncRepository <WebEntity, int> asyncRepositoryWithKey, [FromServices] IMessageBus messageBus) { var repositoryStatus = "OK"; var messageBusStatus = "OK"; try { var hashSet = new HashSet <DbContext> { repository.GetDbContext(), repositoryWithKey.GetDbContext(), asyncRepository.GetDbContext(), asyncRepositoryWithKey.GetDbContext() }; Debug.Assert(hashSet.Single() != null); } catch (Exception) { repositoryStatus = "Error"; } try { var message = new WebTestMessage(); var descriptor = new RichMessageDescriptor("", nameof(WebTestMessage).ToLowerInvariant()); await messageBus.OnMessageReceivedAsync(message, descriptor); } catch (Exception) { messageBusStatus = "Error"; } return(Json(new { RepositoryStatus = repositoryStatus, MessageBusStatus = messageBusStatus })); }
public async Task MessageHasherTest() { var hasher = Resolve <IMessageHasher>(); var testMessage = new TestMessage() { TestTitle = "test" }; var descriptor = new RichMessageDescriptor("", "TestMessage"); var hashes = new List <string>(); for (int i = 0; i < 10; i++) { var hash = await hasher.HashAsync(descriptor, testMessage); hashes.Add(hash); } hashes.Distinct().ShouldHaveSingleItem(); hashes.Clear(); for (int i = 0; i < 10; i++) { var hash = await hasher.HashAsync(descriptor, testMessage, HashAlgorithmName.MD5); hashes.Add(hash); } hashes.Distinct().ShouldHaveSingleItem(); hashes.Clear(); for (int i = 0; i < 10; i++) { var hash = await hasher.HashAsync(descriptor, testMessage, HashAlgorithmName.SHA512); hashes.Add(hash); } hashes.Distinct().ShouldHaveSingleItem(); hashes.Clear(); }
public void MessageScopeTest() { //Arrange var message = new TestMessage { TestTitle = "TEST" }; var descriptor = new RichMessageDescriptor("", nameof(TestMessage).ToLowerInvariant()); descriptor.Headers.Add(SessionConsts.CityId, TestConsts.CITY_ID); descriptor.Headers.Add(SessionConsts.CompanyId, TestConsts.COMPANY_ID); descriptor.Headers.Add(SessionConsts.CompanyName, UrlEncode(TestConsts.COMPANY_NAME)); descriptor.Headers.Add(SessionConsts.StoreId, TestConsts.STORE_ID); descriptor.Headers.Add(SessionConsts.StoreName, UrlEncode(TestConsts.STORE_NAME)); descriptor.Headers.Add(SessionConsts.BrokerId, TestConsts.BROKER_ID); descriptor.Headers.Add(SessionConsts.BrokerName, UrlEncode(TestConsts.BROKER_NAME)); descriptor.Headers.Add(SessionConsts.OrganizationId, TestConsts.ORGANIZATION_ID); descriptor.Headers.Add(SessionConsts.OrganizationName, UrlEncode(TestConsts.ORGANIZATION_NAME)); descriptor.Headers.Add(SessionConsts.CurrentUserId, TestConsts.CURRENT_USER_ID); descriptor.Headers.Add(SessionConsts.CurrentUserName, UrlEncode(TestConsts.CURRENT_USER_NAME)); //Action var scope = _messageScopeCreator.CreateScope(message, descriptor); var coreSessionProvider = (ICoreSessionProvider)scope.Resolve(typeof(ICoreSessionProvider)); //Assert coreSessionProvider.ShouldNotBeNull(); Resolve <ICoreSessionProvider>().ShouldNotBeOfType <MessageCoreSessionProvider>(); coreSessionProvider.ShouldBeOfType <MessageCoreSessionProvider>(); (coreSessionProvider as MessageCoreSessionProvider).MessageDescriptor.ShouldBe(descriptor); var session = coreSessionProvider.Session; session.City.ShouldNotBeNull(); session.City.Id.ShouldBe(TestConsts.CITY_ID); session.Company.ShouldNotBeNull(); session.Company.Id.ShouldNotBeNull(); session.Company.Id.Value.ShouldBe(Guid.Parse(TestConsts.COMPANY_ID)); session.Company.Name.ShouldNotBeNullOrWhiteSpace(); session.Company.Name.ShouldBe(TestConsts.COMPANY_NAME); session.Store.ShouldNotBeNull(); session.Store.Id.ShouldNotBeNull(); session.Store.Id.Value.ShouldBe(Guid.Parse(TestConsts.STORE_ID)); session.Store.Name.ShouldNotBeNullOrWhiteSpace(); session.Store.Name.ShouldBe(TestConsts.STORE_NAME); session.Broker.ShouldNotBeNull(); session.Broker.Id.ShouldNotBeNullOrWhiteSpace(); session.Broker.Id.ShouldBe(TestConsts.BROKER_ID); session.Broker.Name.ShouldNotBeNullOrWhiteSpace(); session.Broker.Name.ShouldBe(TestConsts.BROKER_NAME); session.Organization.ShouldNotBeNull(); session.Organization.Id.ShouldNotBeNullOrWhiteSpace(); session.Organization.Id.ShouldBe(TestConsts.ORGANIZATION_ID); session.Organization.Name.ShouldNotBeNullOrWhiteSpace(); session.Organization.Name.ShouldBe(TestConsts.ORGANIZATION_NAME); session.User.ShouldNotBeNull(); session.User.Id.ShouldNotBeNullOrWhiteSpace(); session.User.Id.ShouldBe(TestConsts.CURRENT_USER_ID); session.User.Name.ShouldNotBeNullOrWhiteSpace(); session.User.Name.ShouldBe(TestConsts.CURRENT_USER_NAME); scope.Dispose(); Resolve <ICoreSessionProvider>().ShouldNotBeOfType <MessageCoreSessionProvider>(); try { scope.Resolve(typeof(ICoreSessionProvider)); } catch (ObjectDisposedException) { return; } throw new InvalidOperationException("Code must not reach here"); }