Использование утилиты тестирования#
Назначение#
Утилита предназначена для проверки конфигурации потокового обработчика на персональном АРМ оператора.
Запуск утилиты#
Для запуска утилиты необходимо:
Распаковка архива: Откройте архив
EVTP-clients-[версия дистрибутива]-distrib.zip, где [версия дистрибутива] — версия компонента EVTP. Замените[версия дистрибутива]на номер версии установленного компонента EVTP.Настройка прав: Для операционных систем Linux или macOS необходимо выдать права доступа для файла
bin/event-process-flow-cli, выполнив команду:
chmod +x bin/event-process-flow-cli
Запуск скрипта: Откройте терминал и запустите скрипт, используя необходимые аргументы:
для Linux и macOS:
bin/event-process-flow-cli;для Windows:
bin/event-process-flow-cli.bat.
Аргументы запуска:
–f / –flow — путь до файла конфигурации универсального потокового обработчика.
-rf / –result_file — путь до файла, куда будет выведен результат из точки назначения с типом list.
–cp — путь до файла, в котором указана конфигурация для запуска утилиты тестирования.
–scp — путь до файла с конфигурацией, переопределяющей source/destination.
Примеры запуска#
Для Linux и macOS:
$ ./bin/event-process-flow-cli --f example/passthrough.conf --rf example/report
Для Windows:
$ .bin/event-process-flow-cli.bat --cp example/test_flows.conf
Использование консольной утилиты#
Необходимо убедиться, что для запуска используется в качестве рабочей директорию - директория с файлами из архива.
Проверка файла трансформации (.tr)#
./bin/event-process-flow-cli --check example/dsl/passthrough.tr
Результатом проверки будет либо Success, либо сообщение об ошибке parsing(s) в логе.
Описание файла конфигурации универсального потокового обработчика#
Конфигурация потока трансформации задается в соответствии с правилами конфигурации из раздела Построение потока обработки. Источники и точки назначения событий могут загружаться из файлов на АРМ оператора.
Пример источника со списком событий#
input: {
type: "list"
events: [
{
topic: "FirstTopic"
body: {
path: "example/input/first.json"
}
},
{
topic: "SecondTopic"
body: {
path: "example/input/second.json"
}
}
]
}
В данном примере поток будет сформирован из двух топиков FirstTopic и SecondTopic. В каждом из которых будет свой набор событий, содержащейся в переданном JSON файле.
Пример точки назначения со списком событий#
output: {
type: "list"
name: "output"
}
В данный выходной поток будут направлены все события из топиков FirstTopic и SecondTopic.
Описание файла конфигурации для запуска утилиты тестирования#
parallelism— значение параллелизма. Обязательный параметр.taskSlots— значение числа task slots. Обязательный параметр.resultFilePath— путь до файла, куда будет выведен результат выполнения потоков, указанных во flows. Обязательный параметр.flows— пути до файлов конфигураций потоков. Обязательный параметр.stubConfig— путь до файла с конфигурацией, переопределяющей source/destination. Обязательный параметр.
Пример конфигурации#
{
parallelism: 2,
taskSlots: 2,
resultFilePath: "example/report.txt",
flows: [${simpleTest_1}, ${simpleTest_2}],
simpleTest_1: "example/passthrough.conf",
simpleTest_2: "example/passthrough_2.conf"
}
где:
simpleTest_1,simpleTest_2— пути до конфигурации потока.
Переопределение source/destination в конфигурации обработчика#
С помощью аргумента --scp при запуске cli или параметра stubConfig в конфигурации cli можно передать конфигурацию заглушки транспорта событий,
которая заменит source-транспорт на список событий из файлов, а destination-транспорт на output файл. Замена происходит по имени шага в source/destination.
Пример конфигурации заглушки транспорта событий#
Заглушка необходима в тех случаях, когда необходимо протестировать обработку событий без поднятия брокера Kafka.
Конфигурация потока для переопределения source kafka-input и destination kafka-output:
{
kafka: {
type: "kafka"
"bootstrap.servers":"localhost:9092"
...
}
flow : {
name: "Passthrough config"
source: [
{
name: "kafka-input"
topic: "input"
type: "source"
config: ${kafka}
destination: ${dslStep}
}
]
}
dslStep: {
...
destination: ${output}
}
output: {
name: "kafka-output"
type: "destination"
topic: "output"
config: ${kafka}
}
}
Конфигурация заглушки транспорта событий:
{
kafka-input: [
{
topic: "ThirdTopic"
body: {
path: "/input/first.json"
}
},
{
topic: "FourthTopic"
body: {
path: "/input/second.json",
}
},
{
topic: "SomeTopic"
body: {
path: "/input/third.json"
}
}
],
kafka-output: {}
}
Параметры для переопределения source#
События задаются списком, для каждого можно указать:
topic— имя входящего топика.key— ключ события.body.path— путь до файла с телом события.body.avroSchema— путь до AVRO-схемы (см. Ввод/вывод AVRO-событий в формате JSON).headers— заголовки события в формате{key: "value"}.
Параметры для переопределения destination#
outputFilePath— файл, в который будут записаны исходящие события. По умолчанию используется файл по умолчанию из аргумента--rfили параметраresultFilePath.avroSchemaPaths— список путей до файлов с AVRO-схемами (см. подраздел «Ввод/вывод AVRO-событий в формате JSON»).bodyOnly— вывод в output файл только тело события («true»/»false»).
Ввод/вывод AVRO-событий в формате JSON#
При использовании транспорта list или в stub-конфигурации AVRO-события можно передавать в формате JSON, указав AVRO-схему.
body: {
path: "/input/first.json",
avroSchemaPath: "/input/avroSchema.avsc"
}
Для вывода AVRO-события в формате json в конфигурации транспорта list или stub-конфигурации можно указать список схем.
"kafka-output": {
"avroSchemaPaths": [
"/input/avroSchema_out.avsc"
]
}