aliansys / interview

test

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Небольшое тестовое задание для собеседования.

В описании задачи не сказано какие ошибки насколько критичны. Данная реализация в угоду скорости заточена под конкретный вид поступающих данных. Код полагается на то, что формат данных обговорен заранее - речь про парсинг строк из "сломаного" JSON. В данной реализации ошибки лишь логируются в консоль.

Как потестить

В директории config есть пример конфигурационного файла. Но его создавать необязательно. В коде предусмотрены дефолт-значения. Более того последующие команды Makefile полагаются именно на дефолты (для упрощения).

Есть несколько команд Makefile. Все команды проверялись на MacOS.

Для начала можно потестировать производительность с помощью написанных Benchmark:

  • make bench - запустит бенчи на самые важные элементы, а именно:
    • Parse - парсинг из строки в структуру (входящие строковые JSON с разделителем)
    • Process - полный процессинг одного запроса (то есть парсинг + передача на сохранение)
  • make test - тест только важных мест;

Если docker не установлен, можно запустить код без базы данных:

  • make run_fake - эта команда запустит приложение с fake-репозиторием. будет только логировать количество сохраненных событий

Для запуска приложения команды подразумевают, что локально установлен docker:

  1. make dep - разберется с зависимостями
  2. make docker_prepare - стянет image'ы, создаст контейнер с нестандартными для CH портами (9001 / 8124) и прогонит в нем миграции;
    • имя базы данных - interview;
    • имя таблицы - events;
  3. make docker_start, make docker_stop - для старта и остановки контейнера
  4. make run - запустит приложение
  5. make request - сделает запрос на сервер с помощью curl
  6. make events_count - выведет количество записей в таблице events

Для чистки докера:

  1. make docker_cleanup - удалит созданный контейнер
  2. make docker_rmi - удалит скачанные image'ы

Если есть свой хост с clickhouse сервером - миграции хранятся в storage/clickhouse/migrations;

About

test


Languages

Language:Go 88.6%Language:Makefile 11.4%