public virtual async Task TestBecomeConsumerSlim(Guid streamIdGuid, string providerName) { InitStream(streamIdGuid, null, providerName); var observer = new MyStreamObserver <int>(logger); //var subsHandle = await State.Stream.SubscribeAsync(observer); IStreamConsumerExtension myExtensionReference; #if USE_CAST myExtensionReference = StreamConsumerExtensionFactory.Cast(this.AsReference()); #else var tup = await this.runtimeClient.BindExtension <StreamConsumerExtension, IStreamConsumerExtension>( () => new StreamConsumerExtension(this.streamProviderRuntime)); StreamConsumerExtension myExtension = tup.Item1; myExtensionReference = tup.Item2; #endif string extKey = providerName + "_" + State.Stream.Namespace; IPubSubRendezvousGrain pubsub = GrainFactory.GetGrain <IPubSubRendezvousGrain>(streamIdGuid, extKey, null); GuidId subscriptionId = GuidId.GetNewGuidId(); await pubsub.RegisterConsumer(subscriptionId, ((StreamImpl <int>)State.Stream).StreamId, myExtensionReference, null); myExtension.SetObserver(subscriptionId, ((StreamImpl <int>)State.Stream), observer, null, null, null); }
public virtual async Task TestBecomeConsumerSlim(Guid streamIdGuid, string providerName) { InitStream(streamIdGuid, null, providerName); var observer = new MyStreamObserver <int>(logger); var(myExtension, myExtensionReference) = this.streamProviderRuntime.BindExtension <StreamConsumerExtension, IStreamConsumerExtension>( () => new StreamConsumerExtension(streamProviderRuntime)); string extKey = providerName + "_" + State.Stream.Namespace; IPubSubRendezvousGrain pubsub = GrainFactory.GetGrain <IPubSubRendezvousGrain>(streamIdGuid, extKey, null); GuidId subscriptionId = GuidId.GetNewGuidId(); await pubsub.RegisterConsumer(subscriptionId, ((StreamImpl <int>)State.Stream).StreamId, myExtensionReference, null); myExtension.SetObserver(subscriptionId, ((StreamImpl <int>)State.Stream), observer, null, null, null); }
public virtual async Task TestBecomeConsumerSlim(StreamId streamId, string providerName) { InitStream(streamId, providerName); var observer = new MyStreamObserver <int>(logger); //var subsHandle = await State.Stream.SubscribeAsync(observer); var(myExtension, myExtensionReference) = this.streamProviderRuntime.BindExtension <StreamConsumerExtension, IStreamConsumerExtension>( () => new StreamConsumerExtension(streamProviderRuntime)); string extKey = providerName + "_" + Encoding.UTF8.GetString(State.Stream.StreamId.Namespace.ToArray()); var id = new InternalStreamId(providerName, streamId); IPubSubRendezvousGrain pubsub = GrainFactory.GetGrain <IPubSubRendezvousGrain>(id.ToString()); GuidId subscriptionId = GuidId.GetNewGuidId(); await pubsub.RegisterConsumer(subscriptionId, ((StreamImpl <int>)State.Stream).InternalStreamId, myExtensionReference, null); myExtension.SetObserver(subscriptionId, ((StreamImpl <int>)State.Stream), observer, null, null, null); }
//private async Task Test_Stream_Churn_TimePeriod( // string streamProviderName, // int pipelineSize, // TimeSpan duration, // int numConsumers = 9, // int numProducers = 1) //{ // output.WriteLine("Testing Subscription churn for duration {0} with {1} Consumers and {2} Producers per Stream", // duration, numConsumers, numProducers); // AsyncPipeline pipeline = new AsyncPipeline(pipelineSize); // var promises = new List<Task>(); // Stopwatch sw = Stopwatch.StartNew(); // for (int i = 0; sw.Elapsed <= duration; i++) // { // Guid streamId = Guid.NewGuid(); // Task promise = SetupOneStream(streamId, streamProviderName, pipeline, numConsumers, numProducers); // promises.Add(promise); // } // await Task.WhenAll(promises); // sw.Stop(); // TimeSpan elapsed = sw.Elapsed; // int totalSubscription = numSt* numConsumers); // double rps = totalSubscription/elapsed.TotalSeconds; // output.WriteLine("Subscriptions-per-second = {0} during period {1}", rps, elapsed); // Assert.NotEqual(0.0, rps, "RPS greater than zero"); //} private void WarmUpPubSub(string streamProviderName, Guid[] streamIds, AsyncPipeline pipeline) { int numStreams = streamIds.Length; // Warm up PubSub for the appropriate streams for (int i = 0; i < numStreams; i++) { Guid streamId = streamIds[i]; string extKey = streamProviderName + "_" + this.StreamNamespace; IPubSubRendezvousGrain pubsub = this.GrainFactory.GetGrain <IPubSubRendezvousGrain>(streamId, extKey, null); Task promise = pubsub.Validate(); pipeline.Add(promise); } pipeline.Wait(); }
//private async Task Test_Stream_Churn_TimePeriod( // string streamProviderName, // int pipelineSize, // TimeSpan duration, // int numConsumers = 9, // int numProducers = 1) //{ // output.WriteLine("Testing Subscription churn for duration {0} with {1} Consumers and {2} Producers per Stream", // duration, numConsumers, numProducers); // AsyncPipeline pipeline = new AsyncPipeline(pipelineSize); // var promises = new List<Task>(); // Stopwatch sw = Stopwatch.StartNew(); // for (int i = 0; sw.Elapsed <= duration; i++) // { // Guid streamId = Guid.NewGuid(); // Task promise = SetupOneStream(streamId, streamProviderName, pipeline, numConsumers, numProducers); // promises.Add(promise); // } // await Task.WhenAll(promises); // sw.Stop(); // TimeSpan elapsed = sw.Elapsed; // int totalSubscription = numSt* numConsumers); // double rps = totalSubscription/elapsed.TotalSeconds; // output.WriteLine("Subscriptions-per-second = {0} during period {1}", rps, elapsed); // Assert.NotEqual(0.0, rps, "RPS greater than zero"); //} private void WarmUpPubSub(string streamProviderName, StreamId[] streamIds, AsyncPipeline pipeline) { int numStreams = streamIds.Length; // Warm up PubSub for the appropriate streams for (int i = 0; i < numStreams; i++) { var streamId = new InternalStreamId(streamProviderName, streamIds[i]); _ = streamProviderName + "_" + this.StreamNamespace; IPubSubRendezvousGrain pubsub = this.GrainFactory.GetGrain <IPubSubRendezvousGrain>(streamId.ToString()); Task promise = pubsub.Validate(); pipeline.Add(promise); } pipeline.Wait(); }
public virtual async Task TestBecomeConsumerSlim(Guid streamIdGuid, string providerName) { // TODO NOT SURE THIS FUNCTION MAKESE ANY SENSE var streamId = StreamId.Create(null, streamIdGuid); InitStream(streamId, providerName); var observer = new MyStreamObserver <int>(logger); var(myExtension, myExtensionReference) = this.streamProviderRuntime.BindExtension <StreamConsumerExtension, IStreamConsumerExtension>( () => new StreamConsumerExtension(streamProviderRuntime)); var id = new InternalStreamId(providerName, streamId); IPubSubRendezvousGrain pubsub = GrainFactory.GetGrain <IPubSubRendezvousGrain>(id.ToString()); GuidId subscriptionId = GuidId.GetNewGuidId(); await pubsub.RegisterConsumer(subscriptionId, ((StreamImpl <int>)State.Stream).InternalStreamId, myExtensionReference, null); myExtension.SetObserver(subscriptionId, ((StreamImpl <int>)State.Stream), observer, null, null, null); }