Невозможно опубликовать sh json сообщение на Kafka topi c с использованием ZeroCode - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь создать тестовый фреймворк, используя ZeroCode для Kafka. Продукт, который я пытаюсь протестировать, основан на микро-сервисах и Kafka. Все, что я пытаюсь сделать, это подключиться к моему topi c и опубликовать sh сообщение для него, в данный момент. Но когда я запускаю тестовый пример, я получаю сообщение об ошибке 'Исключение во время работы: производим

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)

Я использую. Файл свойств для предоставления брокера и учетных данных SSL. Затем отправьте тест JSON. Если публикация прошла успешно, я планирую использовать определенные топи c и утверждать значения, тем самым выполняя интеграционный тест для службы.

Пожалуйста, помогите мне решить эту проблему, так как я не могу найти какую-либо значимую информацию в Интернете о том, как это исправить. Очень признателен!

Мой файл .properties выглядит примерно так:

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

Мой JSON файл (тестовый сценарий, нулевой ключ является допустимым вводом для моей топи c) выглядит примерно так :

{
    "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 голосов
/ 31 марта 2020

Все выглядит хорошо, кроме ниже. Сначала вы должны исправить это, затем он будет работать нормально.

  1. kafka.bootstrap.servers=<myServer> должен go в свойствах 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 {
    }

}

Есть рабочий пример KafkaProduceTest в проекте GitHub Kafka HelloWorld, который вы можете клонировать и запускать локально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...