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

Назначение#

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

Запуск утилиты#

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

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

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

chmod +x bin/event-process-flow-cli
  1. Запуск скрипта: Откройте терминал и запустите скрипт, используя необходимые аргументы:

    • для Linux и macOS: bin/event-process-flow-cli;

    • для Windows: bin/event-process-flow-cli.bat.

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

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

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

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

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

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

  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"
}

где:

  • 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#

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

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