private async Task ValidateControllableGeneratedStreams() { try { var generatorConfig = new SimpleGeneratorOptions { StreamNamespace = Fixture.StreamNamespace, EventsInStream = 100 }; var mgmt = this.fixture.GrainFactory.GetGrain <IManagementGrain>(0); object[] results = await mgmt.SendControlCommandToProvider(Fixture.StreamProviderTypeName, Fixture.StreamProviderName, (int)StreamGeneratorCommand.Configure, generatorConfig); Assert.Equal(2, results.Length); bool[] bResults = results.Cast <bool>().ToArray(); foreach (var controlCommandResult in bResults) { Assert.True(controlCommandResult); } await TestingUtils.WaitUntilAsync(assertIsTrue => CheckCounters(generatorConfig, assertIsTrue), Timeout); } finally { var reporter = this.fixture.GrainFactory.GetGrain <IGeneratedEventReporterGrain>(GeneratedStreamTestConstants.ReporterId); reporter.Reset().Ignore(); } }
public void Configure(IServiceProvider serviceProvider, IStreamGeneratorConfig generatorConfig) { var cfg = generatorConfig as SimpleGeneratorOptions; if (cfg == null) { throw new ArgumentOutOfRangeException(nameof(generatorConfig)); } options = cfg; sequenceId = 0; streamId = StreamId.Create(options.StreamNamespace, Guid.NewGuid()); }
private async Task GenerateEvents(string streamNamespace, int streamCount, int eventsInStream) { var generatorConfig = new SimpleGeneratorOptions { StreamNamespace = streamNamespace, EventsInStream = eventsInStream }; var mgmt = this.fixture.GrainFactory.GetGrain <IManagementGrain>(0); object[] results = await mgmt.SendControlCommandToProvider(StreamProviderTypeName, Fixture.StreamProviderName, (int)StreamGeneratorCommand.Configure, generatorConfig); Assert.Equal(2, results.Length); bool[] bResults = results.Cast <bool>().ToArray(); foreach (var result in bResults) { Assert.True(result, "Control command result"); } }
private async Task <bool> CheckCounters(SimpleGeneratorOptions generatorConfig, bool assertIsTrue) { var reporter = this.fixture.GrainFactory.GetGrain <IGeneratedEventReporterGrain>(GeneratedStreamTestConstants.ReporterId); var report = await reporter.GetReport(GeneratedStreamTestConstants.StreamProviderName, GeneratedEventCollectorGrain.StreamNamespace); if (assertIsTrue) { // one stream per queue Assert.Equal(TotalQueueCount, report.Count); // stream count foreach (int eventsPerStream in report.Values) { Assert.Equal(generatorConfig.EventsInStream, eventsPerStream); } } else if (TotalQueueCount != report.Count || report.Values.Any(count => count != generatorConfig.EventsInStream)) { return(false); } return(true); }