UnitTests.StreamingTests.SubscriptionMultiplicityTestRunner.MultipleSubscriptionTest C# (CSharp) Method

MultipleSubscriptionTest() public method

public MultipleSubscriptionTest ( System.Guid streamGuid, string streamNamespace ) : System.Threading.Tasks.Task
streamGuid System.Guid
streamNamespace string
return System.Threading.Tasks.Task
        public async Task MultipleSubscriptionTest(Guid streamGuid, string streamNamespace)
        {
            // get producer and consumer
            var producer = GrainClient.GrainFactory.GetGrain<ISampleStreaming_ProducerGrain>(Guid.NewGuid());
            var consumer = GrainClient.GrainFactory.GetGrain<IMultipleSubscriptionConsumerGrain>(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();
            await Task.Delay(TimeSpan.FromMilliseconds(1000));
            await producer.StopPeriodicProducing();

            // check
            await TestingUtils.WaitUntilAsync(lastTry => CheckCounters(producer, consumer, 2, lastTry), Timeout);

            // unsubscribe
            await consumer.StopConsuming(firstSubscriptionHandle);
            await consumer.StopConsuming(secondSubscriptionHandle);
        }

Usage Example

Example #1
0
 public async Task AQMultipleSubscriptionTest()
 {
     logger.Info("************************ AQMultipleSubscriptionTest *********************************");
     await runner.MultipleSubscriptionTest(Guid.NewGuid(), StreamNamespace);
 }