README.md

    Библиотека тестирования СХД

    «Открытая библиотека для создания приложений тестирования и измерения производительности программных и аппаратных компонентов систем хранения данных».

    Дополнительно с документацией можно ознакомиться в директории docs/

    Установка библиотек и компонентов

    Для корректного выполнения комманд системой, необходимо иметь права суперпользователя (root).

    Создайте отдельную папку для менеджера пакетов yarn, перейдите в нее и выполняйте следующие команды:

    Обновите пакетный менеджер и установите необходимые зависимости:

    Ubuntu:

    sudo apt update
    sudo apt install npm
    sudo apt install -y build-essential
    

    Установка менеджера пакетов yarn

    Внимание! Не устанавливать менеджер пакетов yarn в одну директорию с проектом testlib

    sudo npm install -g corepack
    sudo corepack enable
    sudo yarn init -2
    sudo yarn set version stable
    sudo yarn install
    

    Для сборки открытой библиотеки для создания приложений тестирования и измерения производительности программных и аппаратных компонентов СХД необходимо выполнить следующую последовательность действий:

    Установка и сборка проекта

    Создайте отдельную папку для TestLib, перейдите в нее и выполняйте следующие команды:

    Склонируйте репозиторий, предварительно войдя в свою учетную запись на gitflic.ru и перейдите в его каталог:

    sudo git clone https://gitflic.ru/project/bittech/testlib.git && cd testlib
    

    Для установки зависимостей используйте скрипт:

     sudo ./install_dependencies.sh
    

    Данный скрипт запускает установку библиотеки liburing версии 2.5, на которой проект был протестирован.

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

      sudo make all
    

    Команда make all выполнит следующие шаги:

    1. Проверит корректную работу всех Python-скриптов, запустив тесты в COMPONENTS/jobs с установленным PYTHONPATH.
    2. Перейдет в каталог COMPONENTS/gui и выполнит сборку GUI с помощью yarn, установит нужные версии, проведет линтинг, тестирование, а также упакует зависимости.
    3. Соберет все зависимости, используя npm в COMPONENTS/gui.
    4. Выполнит сборку компонента test-utility с использованием cmake в каталоге COMPONENTS/test-utility.
    5. Упакует проект в .deb и .rpm форматы с помощью nfpm.

    ПРИМЕЧАНИЕ:

    1. Команда make all ожидает, что тесты завершатся без ошибок. В случае наличия ошибок сборка будет прервана.
    2. Если возникнут ошибки, обратитесь к разработчику для проверки и обновления тестов или компонентов.

    Инструкция по установке и настройке программного обеспечения testlib

    Установка собранного пакета

       sudo apt install ./testlib_1.0.2.amd64.deb
    

    Перейдите в папку /opt/testlib/install, сделайте копию файла inventory.yml.example с новым именем inventory.yml, это можно сделать следующей командой:

       sudo cp inventory.yml.example inventory.yml
    

    Настройте файл inventory.yml согласно указаниям, представленным в таблице 1:

    Таблица 1 – Типовая конфигурация настройки файла inventory.yaml

    Параметр Описание Примечание
    pbit_node_index Порядковый номер ноды. Возможные значения 1, 2, 3, …10
    pbit_environment_key Уникальный для всех машин в сети ключ окружения Например, testlib1-1234abc
    pbit_mgmt_addr Адрес хоста в сети управления (ip или DNS). Данный адрес вы можете посмотреть через команду ip -br a Например, 10.20.30.40
    pbit_data_network_addr Адрес хоста в сети передачи данных (ip или DNS). Данный адрес вы можете посмотреть через команду ip -br a Например, 10.0.0.100
    ansible_host

    Параметры подключения, используемые установщиком.

    Более подробно можно ознакомиться здесь:

    https://docs.ansible.com/ansible/latest/inventory_guide/connection_details.html

    https://docs.ansible.com/ansible/latest/inventory_guide/intro_inventory.html

    Оставить по умолчанию
    ansible_connection Оставить по умолчанию

    Перейдите в папку /opt/testlib/install/group_vars/ и сделайте копию файла all.yml.example с новым именем all.yml, это можно сделать следующей командой:

    sudo cp all.yml.example all.yml
    

    Настройте файл all.yml согласно указаниям, представленным в таблице 2.

    Таблица 2 – Типовая конфигурация настройки файла all.yml

    Параметр Описание Примечание
    HAMMER_URL

    URL для скачивания приложения HammerDB.

    Ожидаемый формат архива tar.gz

    Например, https://github.com/TPC-Council/HammerDB/releases/download/v4.12/HammerDB-4.12-Linux.tar.gz
    VDBENCH_URL

    URL для скачивания приложения Vdbench.

    Ожидаемый формат архива .zip

    Например, https://registry.gitflic.ru/project/bittech/testlib/package/-/generic/vdbench/50.40.7/Vdbench50407.zip
    1. Выполнение сценария автоматического развертывания ПО
    sudo /opt/testlib/install/bin/testlib-install
    

    Будут скачаны и установлены следующие зависимости:

    • fio
    • vdbench
    • pgbench
    • hammerdb
    • spdk nvme
    • testlib_io_util
    1. Запуск web-сервиса Запустится web-сервис. Дальнейшая работа с открытой библиотекой для создания приложений тестирования и измерения производительности программных и аппаратных компонентов СХД выполняется через web-интерфейс (доступен по порту : 3001).

    2. Установка инструмента «Сollectd» При необходимости мониторинга нагрузки и локализации выявленных в процессе тестирования, узких мест на устройстве, необходимо установить инструмент «Сollectd» – системный сервис, осуществляющий сбор статистики использования ресурсов системы. Для этого необходимо выполнить следующее:

      1. Установить «Сollectd» на тестируемое оборудование.

      2. Использовать конфигурацию библиотеки тестирования COMPONENTS/install/src/roles/testlib/templates/collectd.conf.j2, либо расширить уже имеющуюся. Обычно конфигурация находится по пути /etc/collectd/collectd.conf

    3. Сообщения пользователю при сборке библиотеки

      1. «warning package.json: No license field»

        Суть сообщения: Предупреждение об отсутствии поля ввода лицензии. Сборка будет продолжаться.

        Действия: Действий пользователя не требуется.

      2. «warning testlib-ui@1.0.0: No license field»

        Суть сообщения: Предупреждение об отсутствии поля ввода лицензии. Сборка будет продолжаться.

        Действия: Действий пользователя не требуется.

      3. «warning " > @tiptap/vue-3@2.0.0-beta.220" has unmet peer dependency “@tiptap/core@^2.0.0-beta.209”»

        Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.

        Действия: Действий пользователя не требуется.

      4. «warning “@tiptap/vue-3 > @tiptap/extension-bubble-menu@2.6.6” has unmet peer dependency “@tiptap/core@^2.6.6”»

        Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.

        Действия: Действий пользователя не требуется.

      5. «warning " > vue-draggable-next@2.2.1" has unmet peer dependency “sortablejs@^1.14.0”»

        Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.

        Действия: Действий пользователя не требуется.

      6. «warning " > sass-loader@10.5.2" has unmet peer dependency “webpack@^4.36.0 || ^5.0.0”»

        Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.

        Действия: Действий пользователя не требуется.

      7. «warning " > vue-cli-plugin-vuetify@2.5.5" has unmet peer dependency “webpack@^4.0.0 || ^5.0.0”»

        Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.

        Действия: Действий пользователя не требуется.

      8. «warning " > vue-cli-plugin-vuetify@2.5.5" has unmet peer dependency “webpack@^4.0.0 || ^5.0.0”»

        Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.

        Действия: Действий пользователя не требуется.

      9. «warning " > vuetify-loader@2.0.0-alpha.9" has unmet peer dependency “@vue/compiler-sfc@^3.2.6”»

        Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.

        Действия: Действий пользователя не требуется.

      10. «warning “vuetify-loader > file-loader@6.2.0” has unmet peer dependency “webpack@^4.0.0 || ^5.0.0”»

      Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.

      Действия: Действий пользователя не требуется.

      1. « DEPRECATION WARNING: Sass's behavior for declarations that appear after nested»

      Суть сообщения: Предупреждение об устаревании: поведение Sass для объявлений, которые появляются после вложенных. Сборка будет продолжаться.

      Действия: Действий пользователя не требуется.

      1. «warning " > vue-cli-plugin-vuetify@2.5.5" has unmet peer dependency “webpack@^4.0.0 || ^5.0.0”»

      Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.

      Действия: Действий пользователя не требуется.

    Минимальные аппаратные и операционные технические требования для запуска и использования открытой библиотеки

    1. Аппаратные средства

    Минимальные технические требования к аппаратным средствам для полнофункциональной работы ПО «TestLib»:

    № п/п Состав оборудования Детали
    1 Системный блок
    Процессор Core 2 duo 6750, 2,66 ГГц
    ОЗУ 4G
    SSD 10 Gb
    Видеокарта 256Mb PCI-E Radeon 3850
    Сетевая карта 1 Gbit
    2 Монитор
    3 Клавиатура
    4 Манипулятор «мышь»
    5 Источник бесперебойного питания
    1. Программные средства

    Для полнофункциональной работы ПО «TestLib» требуются следующие программные средства:

    № п/п Программные средства Детали
    1 Операционная система Linux

    Ubuntu 24.04

    RHEL 7+

    2 Пакетный менеджер npm
    3 Пакеты

    - nfs-utils

    - ansible

    - parted

    - nodejs (>= 18.13.0)

    - fio

    - postgresql-client-common

    - collectd

    - libfuse3-dev

    - pkg-config

    - meson

    - python3-pip

    - libnuma-dev

    - libssl-dev

    - libcunit1

    - libcunit1-doc

    - libcunit1-dev

    - uuid-dev

    - libaio-dev

    - python3-pyelftools

    4 Модули ядра

    - scst

    - scst_disk

    - scst_vdisk

    - iscsi_scst

    - nvme_tcp

    - nvmet

    - nvmet_tcp

    - nvme-rdma

    5 Среда исполнения Python 3
    6 Веб-браузер Firefox версии не ниже 30.0)

    Также необходим доступ в сеть Интернет для загрузки иных программных компонентов, необходимых при сборке.

    1. Общие рекомендации

    Для повышения эффективности использования ПО «Testlib», ниже приведен перечень общих рекомендаций для аппаратных средств:

    • Рекомендуемый объем оперативной памяти 16–32 ГБ или больше, особенно для одновременного запуска нескольких тестов или работы с большими наборами данных (например, при тестах FIO с большими блоками или базами данных с PgBench).
    • Для генерации и анализа тестовых данных рекомендуется выделенное пространство на тестируемом устройстве или подключенном хранилище. Свободное место минимум 50 ГБ для небольших тестов. Для крупных сценариев с большими объемами данных рекомендуемый объем пространства от 500 ГБ до 1 ТБ Сетевой интерфейс.
    • Для тестирования сетевых хранилищ (iSCSI, NFS, NVMe-oF) требуется сетевой адаптер с пропускной способностью не менее 1 Гбит/с рекомендуется использование 10 Гбит/с сетевых адаптеров или выше для высокопроизводительных сценариев.
    • Поддержка NVMe/SCSI - Для тестов NVMe (например, SPDK NVMe Perf) система должна быть оборудована поддерживаемыми NVMe-накопителями и соответствующими драйверами. Для тестов SCSI требуется наличие устройств или эмуляторов SCSI-таргетов.
    Конвейеры
    0 успешных
    2 с ошибкой