You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am excited about using kafka flow for event processing in our organization. However, I am trying to write tests for middleware pipelines and facing enormous difficulty in doing so. To illustrate the kind of test I am trying to write, I have a consumer that sets up a middleware pipeline like this:
// in consumer setup:
consumer.Topic( ...)// more stuff.AddMiddlewares(SetupPipeline);publicstaticvoidSetupPipeline(IConsumerMiddlewareConfigurationBuildermiddlewares)=> middlewares.AddEventNameFilter([PatientFlagCreatedEvent, PatientFlagRemovedEvent]).AddSingleTypeProtobufDeserializer<PatientFlagEventP>().AddValidationAndLogErrors((PatientFlagEventPevt)=> evt.Validate()).RetryForever(retry => retry.HandleAnyException().WithExponentialBackoff()).AddTypedHandlers(h => h.AddHandler<PatientFlagEventHandler>()).AddSuccessLogging<PatientFlagEventHandler>();
And then I am trying to write a test where I call SetupPipeline and get something that I can invoke the middleware pipeline by passing IMessageContext values.
I tried building this myself, but there are so many interfaces involved (maybe all of them) where the implementation is internal to KafkaFlow, even IMessageContext itself and IConsumerContext, etc. I see no feasible way of achieving this without abusing reflection to instantiate the internal types.
Alternatively, a simple in-memory consumer implementation that I could pass raw kafka messages to might also be desirable.
Besides this, the only way I see to test a middleware pipeline is to write a full integration test with an instance of Kafka, schema registry, etc. This seems really heavy-handed. I wish I could write simple, fast tests to verify that a combination of middlewares work as expected without getting the entire stack involved.
Are you able to help bring it to life and contribute with a Pull Request?
Yes
Additional context
No response
The text was updated successfully, but these errors were encountered:
Is your request related to a problem you have?
I am excited about using kafka flow for event processing in our organization. However, I am trying to write tests for middleware pipelines and facing enormous difficulty in doing so. To illustrate the kind of test I am trying to write, I have a consumer that sets up a middleware pipeline like this:
And then I am trying to write a test where I call SetupPipeline and get something that I can invoke the middleware pipeline by passing IMessageContext values.
Describe the solution you'd like
I would like to have a utility similar to this:
...where
MiddlewareRunner
is something like this:I tried building this myself, but there are so many interfaces involved (maybe all of them) where the implementation is internal to KafkaFlow, even IMessageContext itself and IConsumerContext, etc. I see no feasible way of achieving this without abusing reflection to instantiate the internal types.
Alternatively, a simple in-memory consumer implementation that I could pass raw kafka messages to might also be desirable.
Besides this, the only way I see to test a middleware pipeline is to write a full integration test with an instance of Kafka, schema registry, etc. This seems really heavy-handed. I wish I could write simple, fast tests to verify that a combination of middlewares work as expected without getting the entire stack involved.
Are you able to help bring it to life and contribute with a Pull Request?
Yes
Additional context
No response
The text was updated successfully, but these errors were encountered: