Использование утилиты тестирования#

Назначение#

Тестовая утилита предназначена для проверки конфигурации потокового обработчика на персональном АРМ оператора.

Запуск консольной утилиты#

Для запуска приложения необходимо:

  1. Разархивируйте архив EVTP-clients-[версия дистрибутива]-distrib.zip, где [версия дистрибутива] — версия компонента EVTP

  2. Для операционных систем Linux и macOS необходимо выдать права на исполнение для файла bin/event-process-flow-cli командой chmod +x bin/event-process-flow-cli

  3. Запустить в терминале скрипт bin/event-process-flow-cli для Linux и macOS или bin/event-process-flow-cli.bat для Windows с необходимыми аргументами запуска.

Аргументы запуска:

  1. –f / --flow — путь до файла конфигурации универсального потокового обработчика

  2. -rf / --result_file — путь до файла, куда будет выведен результат из точки назначения с типом list

  3. –cp — путь до файла, в котором указана конфигурация для запуска утилиты тестирования

  4. –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"
}

Описание файла конфигурации для запуска утилиты тестирования#

  1. parallelism — значение параллелизма

  2. taskSlots — значение числа task slots

  3. resultFilePath — путь до файла, куда будет выведен результат выполнения потоков, указанных во flows

  4. flows — пути до файлов конфигураций потоков

  5. 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#

События задаются списком, для каждого можно указать:

  1. topic — имя входящего топика

  2. key — ключ события

  3. body.path — путь до файла с телом события

  4. body.avroSchema — путь до avro-схемы (см. Ввод/вывод AVRO-событий в формате json)

  5. headers — заголовки события в формате {key: "value"}

Параметры для переопределения destination#

  1. outputFilePath — файл, в который будут записаны исходящие события. Если не указан — используется файл по умолчанию из аргумента --rf или параметра resultFilePath

  2. avroSchemaPaths — список путей до файлов с AVRO-схемами (см. Ввод/вывод AVRO-событий в формате json)

  3. 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"
  ]
}