public async Task ResubscriptionTest(Guid streamGuid, string streamNamespace) { // get producer and consumer ISampleStreaming_ProducerGrain producer = SampleStreaming_ProducerGrainFactory.GetGrain(Guid.NewGuid()); IMultipleSubscriptionConsumerGrain consumer = MultipleSubscriptionConsumerGrainFactory.GetGrain(Guid.NewGuid()); await producer.BecomeProducer(streamGuid, streamNamespace, streamProviderName); // setup one subscription and send messsages StreamSubscriptionHandle <int> firstSubscriptionHandle = await consumer.BecomeConsumer(streamGuid, streamNamespace, streamProviderName); await producer.StartPeriodicProducing(); Thread.Sleep(1000); await producer.StopPeriodicProducing(); await UnitTestUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, 1, lastTry), Timeout); // Resume StreamSubscriptionHandle <int> resumeHandle = await consumer.Resume(firstSubscriptionHandle); Assert.AreEqual(firstSubscriptionHandle, resumeHandle, "Handle matches"); await producer.StartPeriodicProducing(); Thread.Sleep(1000); await producer.StopPeriodicProducing(); await UnitTestUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, 1, lastTry), Timeout); // remove subscription await consumer.StopConsuming(resumeHandle); }
public async Task AddAndRemoveSubscriptionTest(Guid streamGuid, string streamNamespace) { // get producer and consumer ISampleStreaming_ProducerGrain producer = SampleStreaming_ProducerGrainFactory.GetGrain(Guid.NewGuid()); IMultipleSubscriptionConsumerGrain consumer = MultipleSubscriptionConsumerGrainFactory.GetGrain(Guid.NewGuid()); await producer.BecomeProducer(streamGuid, streamNamespace, streamProviderName); // setup one subscription and send messsages StreamSubscriptionHandle <int> firstSubscriptionHandle = await consumer.BecomeConsumer(streamGuid, streamNamespace, streamProviderName); await producer.StartPeriodicProducing(); await Task.Delay(TimeSpan.FromMilliseconds(1000)); await producer.StopPeriodicProducing(); await TestingUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, 1, lastTry), Timeout); // clear counts await consumer.ClearNumberConsumed(); await producer.ClearNumberProduced(); // setup second subscription and send messages StreamSubscriptionHandle <int> secondSubscriptionHandle = await consumer.BecomeConsumer(streamGuid, streamNamespace, streamProviderName); await producer.StartPeriodicProducing(); await Task.Delay(TimeSpan.FromMilliseconds(1000)); await producer.StopPeriodicProducing(); await TestingUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, 2, lastTry), Timeout); // clear counts await consumer.ClearNumberConsumed(); await producer.ClearNumberProduced(); // remove first subscription and send messages await consumer.StopConsuming(firstSubscriptionHandle); await producer.StartPeriodicProducing(); await Task.Delay(TimeSpan.FromMilliseconds(1000)); await producer.StopPeriodicProducing(); await TestingUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, 1, lastTry), Timeout); // remove second subscription await consumer.StopConsuming(secondSubscriptionHandle); }
public async Task MultipleSubscriptionTest(Guid streamGuid, string streamNamespace) { // get producer and consumer ISampleStreaming_ProducerGrain producer = SampleStreaming_ProducerGrainFactory.GetGrain(Guid.NewGuid()); IMultipleSubscriptionConsumerGrain consumer = MultipleSubscriptionConsumerGrainFactory.GetGrain(Guid.NewGuid()); // setup two subscriptions StreamSubscriptionHandle <int> firstSubscriptionHandle = await consumer.BecomeConsumer(streamGuid, streamNamespace, streamProviderName); StreamSubscriptionHandle <int> secondSubscriptionHandle = await consumer.BecomeConsumer(streamGuid, streamNamespace, streamProviderName); // produce some messages await producer.BecomeProducer(streamGuid, streamNamespace, streamProviderName); await producer.StartPeriodicProducing(); Thread.Sleep(1000); await producer.StopPeriodicProducing(); // check await UnitTestUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, 2, lastTry), Timeout); // unsubscribe await consumer.StopConsuming(firstSubscriptionHandle); await consumer.StopConsuming(secondSubscriptionHandle); }
public async Task ResubscriptionAfterDeactivationTest(Guid streamGuid, string streamNamespace) { // get producer and consumer ISampleStreaming_ProducerGrain producer = SampleStreaming_ProducerGrainFactory.GetGrain(Guid.NewGuid()); IMultipleSubscriptionConsumerGrain consumer = MultipleSubscriptionConsumerGrainFactory.GetGrain(Guid.NewGuid()); await producer.BecomeProducer(streamGuid, streamNamespace, streamProviderName); // setup one subscription and send messsages StreamSubscriptionHandle <int> firstSubscriptionHandle = await consumer.BecomeConsumer(streamGuid, streamNamespace, streamProviderName); await producer.StartPeriodicProducing(); await Task.Delay(TimeSpan.FromMilliseconds(1000)); await producer.StopPeriodicProducing(); await TestingUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, 1, lastTry), Timeout); // Deactivate grain await consumer.Deactivate(); // make sure grain has time to deactivate. await Task.Delay(TimeSpan.FromMilliseconds(100)); // clear producer counts await producer.ClearNumberProduced(); // Resume StreamSubscriptionHandle <int> resumeHandle = await consumer.Resume(firstSubscriptionHandle); Assert.AreEqual(firstSubscriptionHandle, resumeHandle, "Handle matches"); await producer.StartPeriodicProducing(); await Task.Delay(TimeSpan.FromMilliseconds(1000)); await producer.StopPeriodicProducing(); await TestingUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, 1, lastTry), Timeout); // remove subscription await consumer.StopConsuming(resumeHandle); }
private async Task StreamingTests_Consumer_Producer(Guid streamId, string streamProvider) { // consumer joins first, producer later ISampleStreaming_ConsumerGrain consumer = SampleStreaming_ConsumerGrainFactory.GetGrain(Guid.NewGuid()); await consumer.BecomeConsumer(streamId, StreamNamespace, streamProvider); ISampleStreaming_ProducerGrain producer = SampleStreaming_ProducerGrainFactory.GetGrain(Guid.NewGuid()); await producer.BecomeProducer(streamId, StreamNamespace, streamProvider); await producer.StartPeriodicProducing(); Thread.Sleep(1000); await producer.StopPeriodicProducing(); await TestingUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, lastTry), _timeout); await consumer.StopConsuming(); }
private async Task StreamingTests_Producer_InlineConsumer(Guid streamId, string streamProvider) { // producer joins first, consumer later ISampleStreaming_ProducerGrain producer = SampleStreaming_ProducerGrainFactory.GetGrain(Guid.NewGuid()); await producer.BecomeProducer(streamId, StreamNamespace, streamProvider); ISampleStreaming_InlineConsumerGrain consumer = SampleStreaming_InlineConsumerGrainFactory.GetGrain(Guid.NewGuid()); await consumer.BecomeConsumer(streamId, StreamNamespace, streamProvider); await producer.StartPeriodicProducing(); await Task.Delay(TimeSpan.FromMilliseconds(1000)); await producer.StopPeriodicProducing(); //int numProduced = await producer.NumberProduced; await TestingUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, lastTry), _timeout); await consumer.StopConsuming(); }
private async Task StreamingTests_Producer_InlineConsumer(Guid streamId, string streamProvider) { // producer joins first, consumer later ISampleStreaming_ProducerGrain producer = SampleStreaming_ProducerGrainFactory.GetGrain(Guid.NewGuid()); await producer.BecomeProducer(streamId, streamProvider); ISampleStreaming_InlineConsumerGrain consumer = SampleStreaming_InlineConsumerGrainFactory.GetGrain(Guid.NewGuid()); await consumer.BecomeConsumer(streamId, streamProvider); await producer.StartPeriodicProducing(); Thread.Sleep(1000); await producer.StopPeriodicProducing(); //int numProduced = producer.NumberProduced.Result; await UnitTestUtils.WaitUntilAsync(() => CheckCounters( producer, consumer, assertAreEqual : false ), _timeout); await CheckCounters(producer, consumer); await consumer.StopConsuming(); }