Цель: на языке JavaScript реализовать приложение для тестирования эффективности работы с различными форматами сериализации данных. В процессе тестирования форматов сериализации необходимо учитывать следующие характеристики:
- Размер сериализованной структуры данных;
- Время сериализации/десериализации.
В сериализуемой структуре желательно представить несколько различных видов данных, включая:
- строковые данные,
- массивы данных,
- словари,
- целочисленные данные,
- данные с плавающей запятой.
Приложение должно обеспечивать:
- выполнение операций сериализации/десериализаци набора данных, во все форматы:
- XML
- JSON (он же нативный сериализатор)
- Google Protocol Buffers
- Apache Avro
- YAML
- MessagePack
- представление в наглядном виде результатов выполнения сериализации/десериализации.
Необходимо предоставить отчет в формате таблицы Excel о форматах сериализации данных.
Необходимо наличие
Node
, версии не менее15.14.0
(совместимость пакетов с более новыми версиями не проверялась)
Запуск приложения:
cd your/project/directory
npm install
node src/index.js
По ходу работы приложения сообщается о ходе выполнения сериализаторов / десериализаторов, в конце выводится статистика по каждому из форматов для ряда файлов (сэмплов).
-------------- JSON STATS --------------
## SAMPLE 1:
- initial size(bytes): 284
- serialised size(bytes): 178
- mean serialisation time(ns): 19481.310099363327
- mean deserialisation time(ns): 452444.1924691201
...
В проекте имеется конфигурационный файл (config.js
), в котором можно выбрать тестируемые форматы, количество прогонов тестов, а также виды сериализуемых структур (описаны в файле /constants/sampleStructs.js
). Для форматов без схемы можно добавлять свои описания структур,
тестировщик сам сгенерирует нужные файлы. Также стоит заметить, что во время работы приложения создается папка с временными файлами (по умолчанию test_data
в корне проекта). Каждому экземпляру класса-тестировщика можно передать отдельный путь.
Требуемый отчет доступен по ссылке
Ссылка на образ в репозитории
docker pull alucardik/soa-images:serialisation-test
docker run --name your-container-name alucardik/soa-images:serialisation-test
Все рабочие файлы внутри докера хранятся в /serialization-test
.