无法使用ZeroCode在Kafka主题上发布JSON消息

时间:2020-03-27 22:07:15

标签: java testing apache-kafka nullpointerexception

我正在尝试使用ZeroCode for Kafka创建一个测试框架。我要测试的产品基于微服务和Kafka。目前,我要做的就是连接到我的主题并向其发布消息。但是,当我运行测试用例时,出现一条错误消息,提示'操作过程中的异常:产生

Stacktrace

-------------------------- BDD: Scenario:Produce a message to kafka topic - vanilla -------------------------

27 Mar 2020 10:43:21,531 INFO  [main] runner.ZeroCodeMultiStepsScenarioRunnerImpl | 
### Executing Scenario -->> Count No: 0
27 Mar 2020 10:43:21,531 INFO  [main] runner.ZeroCodeMultiStepsScenarioRunnerImpl | 
### Executing Step -->> Count No: 0
---------------------------------------------------------
kafka.bootstrap.servers - <myKafkaBootstrapServer>
---------------------------------------------------------
27 Mar 2020 10:43:21,681 INFO  [main] client.BasicKafkaClient | <myKafkaBootstrapServer>, topicName:executions.enriched, operation:produce, requestJson:{"recordType":"JSON","records":[{"value":"EquityExecution"}]}
27 Mar 2020 10:43:21,683 ERROR [main] client.BasicKafkaClient | Exception during operation:produce, topicName:executions.enriched, error:null
java.lang.RuntimeException: java.lang.NullPointerException
    at org.jsmart.zerocode.core.kafka.client.BasicKafkaClient.execute(BasicKafkaClient.java:50)
    at org.jsmart.zerocode.core.engine.executor.JsonServiceExecutorImpl.executeKafkaService(JsonServiceExecutorImpl.java:102)
    at org.jsmart.zerocode.core.runner.ZeroCodeMultiStepsScenarioRunnerImpl.runScenario(ZeroCodeMultiStepsScenarioRunnerImpl.java:190)
    at org.jsmart.zerocode.core.runner.ZeroCodeUnitRunner.runLeafJsonTest(ZeroCodeUnitRunner.java:198)

我正在使用.properties文件提供代理和SSL凭据。然后发送测试JSON。如果发布成功,那么我计划从某个主题开始使用,并对值进行断言-从而对服务进行集成测试。

请帮助我解决此问题,因为我无法在线找到有关如何解决此问题的任何有意义的信息。非常感激!

我的.properties文件如下所示:

security.properties=SSL
ssl.keystore.password=<myPassword>
ssl.keystore.location=<myLocation>
kafka.bootstrap.servers=<myServer>

我的JSON文件(测试方案,空键是我的主题的有效输入),看起来像这样:

{
    "scenarioName": "Produce a message to kafka topic - vanilla",
    "steps": [
        {
            "name": "produce_step",
            "url": "kafka-topic:my.topic",
            "operation": "produce",
            "request": {
                "records":[
                    {
                        "value": "My test value"
                    }
                ]
            },
            "assertions": {
                "status" : "Ok",
             }
        }
    ]
}

1 个答案:

答案 0 :(得分:0)

除以下内容外,其他一切正常。您应该先修复这些问题,然后才能正常工作。

  1. kafka.bootstrap.servers=<myServer>应该进入Kafka broker指向的@TargetEnv("kafka_servers/kafka_test_server.properties")属性。

  2. producer.properties不应具有kafka.bootstrap.servers=...冗余条目。

和属性文件如下:

                          kafka_test_server.properties

# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# kafka bootstrap servers comma separated
# e.g. localhost:9092,host2:9093
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
kafka.bootstrap.servers=localhost:9092
kafka.producer.properties=producer.properties
kafka.consumer.properties=consumer.properties

就是这样。

@TargetEnv("kafka_servers/kafka_test_server.properties")
@RunWith(ZeroCodeUnitRunner.class)
public class KafkaProduceTest {

    @Test
    @JsonTestCase("kafka/produce/test_kafka_produce.json")
    public void testProduce() throws Exception {
    }

}

在GitHub Kafka HelloWorld项目中有一个有效的示例KafkaProduceTest,您可以克隆并在本地运行。