#pragma once #include #include #include #include #include #include #include #include // Based on https://github.com/edenhill/librdkafka/issues/2693 namespace details { struct RdKafkaDeleter { void operator()(rd_kafka_t *rd); }; struct RdKafkaMockClusterDeleter { void operator()(rd_kafka_mock_cluster_t *rd); }; } // namespace details using RdKafkaUniquePtr = std::unique_ptr; using RdKafkaMockClusterUniquePtr = std::unique_ptr; class KafkaClusterMock { public: explicit KafkaClusterMock(const std::vector &topics); std::string Bootstraps() const; void SeedTopic(const std::string &topic_name, std::span message); void SeedTopic(const std::string &topic_name, std::string_view message); private: RdKafkaUniquePtr rk_{nullptr}; RdKafkaMockClusterUniquePtr cluster_{nullptr}; };