public void Sagas_With_Locks_Are_Correctly_Started_And_10_Non_Parallel_Messages_Are_Correlated() { var sagaId = Guid.NewGuid(); var container = new HandlersContainer(SERVICENAME, true); Assert.IsTrue(container.messageToSagaDictionary[typeof(SimpleSagaStartingMessage)].Count == 1); container.HandleAsync(new SimpleSagaStartingMessage() { Id = sagaId }, null).Wait(); for (int i = 0; i < 10; i++) { container.HandleAsync(new SimpleSagaIntermediateMessage() { Id = sagaId }, null).Wait(); } var lockSaga = false; var sagaPersistence = new SagaAzureStoragePersistence(new SagaAzureStorageLocker(), lockSaga); var sagaData = sagaPersistence.GetSagaDataAsync <SimpleTestSagaData>("SimpleTestSaga", sagaId.ToString()).Result as SimpleTestSagaData; Assert.IsTrue(sagaData.Counter == 11); container.HandleAsync(new SimpleSagaTerminatingMessage() { Id = sagaId }, null).Wait(); }
public void Sagas_With_Events_Multiple_Saga_Can_Receive_An_Event() { InvocationCounter.Instance.Reset(); var sagaId1 = Guid.NewGuid(); var sagaId2 = Guid.NewGuid(); var container = new HandlersContainer(SERVICENAME, true); Assert.IsTrue(container.messageToSagaDictionary[typeof(EventSagaStartingMessage)].Count == 1); container.HandleAsync(new EventSagaStartingMessage() { Id = sagaId1 }, null).Wait(); container.HandleAsync(new EventSagaStartingMessage() { Id = sagaId2 }, null).Wait(); container.HandleAsync(new EventSagaIntermediateMessage() { }, null).Wait(); Assert.IsTrue(InvocationCounter.Instance.Counter == 2); container.HandleAsync(new EventSagaTerminatingMessage() { Id = sagaId1 }, null).Wait(); container.HandleAsync(new EventSagaTerminatingMessage() { Id = sagaId2 }, null).Wait(); }
public void Sagas_With_Locks_Lock_is_freed_in_exception() { var sagaId = Guid.NewGuid(); var container = new HandlersContainer(SERVICENAME, true); Assert.IsTrue(container.messageToSagaDictionary[typeof(ErrorSagaStartingMessage)].Count == 1); container.HandleAsync(new ErrorSagaStartingMessage() { Id = sagaId }, null).Wait(); try { container.HandleAsync(new ErrorSagaIntermediateMessage() { Id = sagaId }, null).Wait(); } catch { } var locker = new SagaAzureStorageLocker(); var lease = locker.CreateLock(ErrorTestSaga.PARTITION_KEY + sagaId.ToString()).Result; locker.DeleteLock(ErrorTestSaga.PARTITION_KEY + sagaId.ToString(), lease).Wait(); container.HandleAsync(new ErrorSagaTerminatingMessage() { Id = sagaId }, null).Wait(); }
public void Sagas_With_Locks_Can_Be_Singletons() { var sagaId = Guid.NewGuid(); var container = new HandlersContainer(SERVICENAME, true); Assert.IsTrue(container.messageToSagaDictionary[typeof(SingletonSagaStartingMessage)].Count == 1); container.HandleAsync(new SingletonSagaStartingMessage() { Id = sagaId }, null).Wait(); container.HandleAsync(new SingletonSagaStartingMessage() { Id = sagaId }, null).Wait(); var lockSaga = false; var sagaPersistence = new SagaAzureStoragePersistence(new SagaAzureStorageLocker(), lockSaga); var sagaData = sagaPersistence.GetSagaDataAsync <SingletonTestSagaData>("SingletonTestSaga", sagaId.ToString()).Result as SingletonTestSagaData; Assert.IsTrue(sagaData.Counter == 1); }
public void HandlersContainer_HandlerNotFoundForThisMessage() { var container = new HandlersContainer(); Assert.IsTrue(container.messageHandlersDictionary[typeof(TestMessage)].Count == 2); container.HandleAsync(new TestMessageHandler2(), null).Wait(); }
public void HandlersContainer_IHandle2HandlersInOneClass() { InvocationCounter.Instance.Reset(); var container = new HandlersContainer(SERVICENAME); container.HandleAsync(new ClassWithTwoHandlersMessage1(), null).Wait(); container.HandleAsync(new ClassWithTwoHandlersMessage2(), null).Wait(); Assert.IsTrue(InvocationCounter.Instance.Counter == 2); }
public void DI_Nominal() { var container = new HandlersContainer(); HandlersContainer.AddDependency <IUoWTest, UoWTest>(); Assert.IsTrue(container.messageHandlersDictionary[typeof(DIMessage)].Count == 1); container.HandleAsync(new DIMessage(), null).Wait(); }
public void HandlersContainer_IHandleTypesAreCorrectlyInvoked() { InvocationCounter.Instance.Reset(); var container = new HandlersContainer(); Assert.IsTrue(container.messageHandlersDictionary[typeof(TestMessage)].Count == 2); container.HandleAsync(new TestMessage(), null).Wait(); Assert.IsTrue(InvocationCounter.Instance.Counter == 2); }
public static HttpResponseMessage RunGetPaymentsByUser([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestMessage req, ILogger log) { log.LogInformation("GetPaymentsByUser received a request."); var repository = HandlersContainer.SolveDependency <IPaymentsRepository>(); var payments = repository.GetOrdersPayed(); return(payments == null ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body") : req.CreateResponse(HttpStatusCode.OK, payments)); }
public void HandlersContainer_HandleAsync_Sends_To_Delay_If_Some_Delay_Is_Left_2() { InvocationCounter.Instance.Reset(); var container = new HandlersContainer(); HandlersContainer.AddDependencyWithInstance <ISendMessages>(new AzureStorageQueueSendTransportShortMaxDelay(HandlersContainer.SolveDependency <ISerializeMessages>())); var message = new TestMessage() { SomeData = "delayed" }; var serializer = HandlersContainer.SolveDependency <ISerializeMessages>(); SendOnlyBus.SendAsync(message, SERVICENAME, TimeSpan.FromSeconds(15), serializer, new AzureStorageQueueSendTransportShortMaxDelay(serializer)).Wait(); string stringMessage = null; do { stringMessage = QueueReader.ReadOneMessageFromQueueAsync(SERVICENAME).Result; }while (string.IsNullOrEmpty(stringMessage)); container.HandleAsync(stringMessage, null).Wait(); Assert.IsTrue(InvocationCounter.Instance.Counter == 0, "message not delayed"); do { stringMessage = QueueReader.ReadOneMessageFromQueueAsync(SERVICENAME).Result; }while (string.IsNullOrEmpty(stringMessage)); container.HandleAsync(stringMessage, null).Wait(); Assert.IsTrue(InvocationCounter.Instance.Counter == 0, "message not delayed 2"); do { stringMessage = QueueReader.ReadOneMessageFromQueueAsync(SERVICENAME).Result; }while (string.IsNullOrEmpty(stringMessage)); container.HandleAsync(stringMessage, null).Wait(); Assert.IsTrue(InvocationCounter.Instance.Counter == 2, "message delayed more than once"); }
public void Sagas_With_Locks_Are_Correctly_Started_And_10_Parallel_Messages_Are_Correlated() { InvocationCounter.Instance.Reset(); var sagaId = Guid.NewGuid(); var container = new HandlersContainer(SERVICENAME, true); Assert.IsTrue(container.messageToSagaDictionary[typeof(SimpleSagaStartingMessage)].Count == 1); container.HandleAsync(new SimpleSagaStartingMessage() { Id = sagaId }, null).Wait(); Parallel.For(0, 10, i => { bool retry = true; while (retry) { try { container.HandleAsync(new SimpleSagaIntermediateMessage() { Id = sagaId }, null).Wait(); retry = false; } catch (Exception) { } } }); var lockSaga = false; var sagaPersistence = new SagaAzureStoragePersistence(new SagaAzureStorageLocker(), lockSaga); var sagaData = sagaPersistence.GetSagaDataAsync <SimpleTestSagaData>("SimpleTestSaga", sagaId.ToString()).Result as SimpleTestSagaData; Assert.IsTrue(sagaData.Counter == 11); Assert.IsTrue(InvocationCounter.Instance.Counter == 11); container.HandleAsync(new SimpleSagaTerminatingMessage() { Id = sagaId }, null).Wait(); }
public void Sagas_With_Locks_Are_Correctly_Started_And_A_Message_Is_Not_Correlated() { var sagaId = Guid.NewGuid(); var container = new HandlersContainer(SERVICENAME, true); Assert.IsTrue(container.messageToSagaDictionary[typeof(SimpleSagaStartingMessage)].Count == 1); container.HandleAsync(new SimpleSagaStartingMessage() { Id = sagaId }, null).Wait(); //non correlating message container.HandleAsync(new SimpleSagaIntermediateMessage() { Id = Guid.NewGuid() }, null).Wait(); }
public void DI_Dependency_not_found() { var container = new HandlersContainer(); HandlersContainer.ClearDependencies(); Assert.IsTrue(container.messageHandlersDictionary[typeof(DIMessage)].Count == 1); try { container.HandleAsync(new DIMessage(), null).Wait(); } catch (Exception ex) { Assert.IsTrue(ex.InnerException.Message.Contains("No depedency can be solved")); throw ex; } }
public void BigMessage_Bug_Small_After_Big_Mixes_Message_In_File_Flag() { BlobReader.DeleteFilesAsync().Wait(); QueueReader.CleanQueueAsync(SERVICENAME).Wait(); InvocationCounter.Instance.Reset(); var container = new HandlersContainer(SERVICENAME); var message = new BigMessage2(); message.Data = new string('*', 66000); SendOnlyBus.SendAsync(message, SERVICENAME).Wait(); var stringMessage = QueueReader.ReadOneMessageFromQueueAsync(SERVICENAME).Result; container.HandleAsync(stringMessage, null).Wait(); Assert.IsTrue(BlobReader.ListFilesAsync().Result.Count() == 0); }
public void BigMessage_Going_To_File_In_Send() { BlobReader.DeleteFilesAsync().Wait(); QueueReader.CleanQueueAsync(SERVICENAME).Wait(); InvocationCounter.Instance.Reset(); var container = new HandlersContainer(SERVICENAME); var message = new BigMessage(); message.Data = new string('*', 66000); SendOnlyBus.SendAsync(message, SERVICENAME).Wait(); var stringMessage = QueueReader.ReadOneMessageFromQueueAsync(SERVICENAME).Result; container.HandleAsync(stringMessage, null).Wait(); Assert.IsTrue(InvocationCounter.Instance.Counter == 1); }
static void Main(string[] args) { HandlersContainer.Config(); luisClient = new LuisClient(AppId, SubscriptionKey); crisClient = new CrisReactiveClient("fd63977286fb4fe5bb91b63502dfbad3", "https://08c41aa65fce4d7e93b55bdbfa28066e.api.cris.ai/ws/cris/speech/recognize/continuous", "https://westus.api.cognitive.microsoft.com/sts/v1.0/issueToken"); crisClient.MicStatus.Subscribe(recording => Console.WriteLine($"Recording {recording}")); crisClient.ConversationError.Subscribe(error => Console.WriteLine(error)); Console.WriteLine("Let me know"); var userInput = ConsoleInput(); userInput.FlatMap(ActLuisReactive) .Subscribe(Console.WriteLine); crisClient.StartMicAndRecognition() .FlatMap(result => { var textResult = result.Results.Select(crisResult => crisResult.DisplayText); var fullText = string.Join(" ", textResult); return(fullText); }).Buffer(new TimeSpan(0, 0, 0, 10)) .FlatMap(text => ActLuisReactive(text.ToString())) .Subscribe(chars => Console.WriteLine(String.Join("", chars))); while (true) { ; } }
public void Sagas_With_Locks_Are_Correctly_Scanned() { var container = new HandlersContainer(SERVICENAME, true); Assert.IsTrue(container.messageToSagaDictionary[typeof(SimpleSagaStartingMessage)].Count == 1); }
public Options() { Handlers = new HandlersContainer(); }
static CommandsReceiverFunction() { HandlersContainer.AddDependency <IPaymentsRepository, InMemoryPaymentsRepository>(); }
static ShippingService() { HandlersContainer.AddDependency <IShippingRepository, InMemoryShippingRepository>(); }
public void HandlersContainer_IHandleTypesAreCorrectlyScanned() { var container = new HandlersContainer(); Assert.IsTrue(container.messageHandlersDictionary[typeof(TestMessage)].Count == 2); }
public AFBusService(IHubContext <Events> hubcontext) { this.hubcontext = hubcontext; HandlersContainer.AddDependencyWithInstance <IHubContext <Events> >(hubcontext); }