Использование утилиты тестирования#
Назначение#
Тестовая утилита предназначена для проверки конфигурации потокового обработчика на персональном АРМ оператора.
Запуск консольной утилиты#
Для запуска приложения необходимо:
Разархивируйте архив EVTP-clients-[версия дистрибутива]-distrib.zip, где [версия дистрибутива] — версия компонента EVTP
Для операционных систем Linux и macOS необходимо выдать права на исполнение для файла
bin/event-process-flow-cliкомандойchmod +x bin/event-process-flow-cliЗапустить в терминале скрипт
bin/event-process-flow-cliдля Linux и macOS илиbin/event-process-flow-cli.batдля Windows с необходимыми аргументами запуска.
Аргументы запуска:
–f / --flow — путь до файла конфигурации универсального потокового обработчика
-rf / --result_file — путь до файла, куда будет выведен результат из точки назначения с типом list
–cp — путь до файла, в котором указана конфигурация для запуска утилиты тестирования
–scp — путь до файла с конфигурацией, переопределяющей source/destination
Пример запуска#
$ ./bin/event-process-flow-cli --f example/passthrough.conf --rf example/report
$ ./bin/event-process-flow-cli --cp example/test_flows.conf
Использование консольной утилиты#
Все примеры запуска используют в качестве рабочей директорию с содержимым архива после разархивирования.
Проверка файла трансформации (.tr)#
./bin/event-process-flow-cli --check example/dsl/passthrough.tr
Результатом проверки будет либо Success, либо сообщение об ошибке парсинга в логе.
Описание файла конфигурации универсального потокового обработчика#
Конфигурация потока трансформации задается в соответствии с правилами конфигурации из раздела Построение потока обработки Источники и точки назначения событий расширяются возможностью загрузки событий из файлов на АРМ оператора.
Пример источника со списком событий#
input: {
type: "list"
events: [
{
topic: "FirstTopic"
body: {
path: "example/input/first.json"
}
},
{
topic: "SecondTopic"
body: {
path: "example/input/second.json"
}
}
]
}
Пример точки назначения со списком событий#
output: {
type: "list"
name: "output"
}
Описание файла конфигурации для запуска утилиты тестирования#
parallelism— значение параллелизмаtaskSlots— значение числа task slotsresultFilePath— путь до файла, куда будет выведен результат выполнения потоков, указанных во flowsflows— пути до файлов конфигураций потоков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"
}
Переопределение source/destination в конфигурации обработчика#
С помощью аргумента --scp при запуске cli или параметра stubConfig в конфигурации cli можно передать конфигурацию заглушки транспорта событий,
которая заменит source-транспорт на список событий из файлов, а destination-транспорт на output файл. Замена происходит по имени шага в source/destination.
Пример конфигурации заглушки транспорта событий#
Например, для переопределения 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или параметраresultFilePathavroSchemaPaths— список путей до файлов с 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"
]
}