public async Task TestItemTransfer()
        {
            var processorNodeGuid = Guid.NewGuid();
            var processor         = GrainClient.GrainFactory.GetGrain <IStreamProcessorSelectNodeGrain <int, int> >(processorNodeGuid);
            await processor.SetFunction(_ => _);

            var itemsToSend = new List <int> {
                -1, 5, 30
            };


            var provider     = GrainClient.GetStreamProvider(StreamProvider);
            var testProvider = new SingleStreamProvider <int>(provider);

            await SubscribeConsumer(testProvider, processor);

            var testConsumer = new MultiStreamListConsumer <int>(provider);

            await SubscribeConsumer(processor, testConsumer);

            var waitForTransaction = testConsumer.TransactionComplete(1);
            await testProvider.SendItems(itemsToSend, true, 1);

            await waitForTransaction;

            CollectionAssert.AreEquivalent(itemsToSend, testConsumer.Items);

            await testProvider.TearDown();
        }
        public async Task TestTransactionNoItems()
        {
            var processorNodeGuid = Guid.NewGuid();

            var processor = GrainClient.GrainFactory.GetGrain <IStreamProcessorSelectNodeGrain <int, int> >(processorNodeGuid);

            await processor.SetFunction(_ => _);

            var provider     = GrainClient.GetStreamProvider(StreamProvider);
            var testProvider = new SingleStreamProvider <int>(provider);

            await SubscribeConsumer(testProvider, processor);

            var testConsumer = new MultiStreamListConsumer <int>(provider);

            await SubscribeConsumer(processor, testConsumer);

            Task waitForTransaction = testConsumer.TransactionComplete(1);
            await testProvider.SendItems(new List <int>(), true, 1);

            await waitForTransaction;

            await testProvider.TearDown();
        }
Esempio n. 3
0
        public async Task <int> EnumerateToStream(int?transactionId = null)
        {
            var hostedItems = Collection.Select((value, index) => new ContainerHostedElement <T>(GetReferenceForItem(index), value)).ToList();

            return(await StreamProvider.SendItems(hostedItems, true, transactionId));
        }