Skip to content
  • astra@s1-tests:~$ history | grep install
       55  sudo apt-get install python3-docutils
      106  sudo apt-get install binutils
      117  sudo apt-get install libc6-dev
      146  sudo apt-get install rhash
      XXX  sudo apt-get install time

    Позже добавили ещё time для perftest: там проверяется which time.

  • jq -r < sbom-tests.json  '.tests[] | select (.code == "FAIL") ' 

    После переноса потребовалось очистить testsuite-f4b6ad6/testsuite/tests/sbom/Output/.

  • astra@s1-tests:~$ /opt/safec8-115-cconly/x86_64-pc-linux-gnu/bin/gcc --version
    gcc (ISP RAS SAFEC 20240604 b642f3502ce1) 8.5.0 20210514 (experimental)
    Copyright (C) 2018 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    astra@s1-tests:~/safec$ ls
    installation-test
    README-safec8.pdf
    safec-test-job.sh
    testsuite-2024-07-24-f4b6ad6.tar.gz
    testsuite-f4b6ad6
    astra@s1-tests:~/safec$ ./safec-test-job.sh
    ...
    + retcode=0
    + exit 0
    astra@s1-tests:~/safec$ ls -1
    installation-test
    lit-results-raw
    README-safec8.pdf
    safec-test-job.sh
    test_result.txt
    testsuite-2024-07-24-f4b6ad6.tar.gz
    testsuite-f4b6ad6
  • Неформальная инструкция, которую передал в чат разработчиков УС на основе того, что записал выше

    Поставил компилятор и тесты на s1-tests.

    Компилятор — в /opt/safec8-115-cconly (дополнительно есть ещё /opt/safec, — это вариант с патченным линкером и загрузчиком для поддержки динамической рандомизации).

    Тесты в директории safec в хомаре пользователя astra. Там же пускач safec-test-job.sh. Чтобы тестировать другой компилятор, нужно в нём поменять переменные arch, compiler, compiler_dir, compiler_exe. Скрипт маленький, там всё довольно очевидно. Он вызывает следующий скрипт, testrunner.sh по одному разу для каждого из классов компилятора (3, 2, 1 + отдельно "sbom"). В свою очередь, он использует наш питоновский модуль requirements для выбора тестов согласно спецификации класса (testsuite/doc/testsuite.rst) и дополнительным фильтрам и вызывает LIT. Сами тесты (включая копию LIT) распакованы в поддиректорию testsuite-f4b6ad6. Исходный архив лежит рядом, если потребуется чистая копия.

    Тесты написаны подобно тестам в LLVM — с использованием LIT и Filecheck. При модификации тестового набора можно руководствоваться официальной документацией на эти утилиты.

    astra@s1-tests:~$ /opt/safec8-115-cconly/x86_64-pc-linux-gnu/bin/gcc --version
    gcc (ISP RAS SAFEC 20240604 b642f3502ce1) 8.5.0 20210514 (experimental)
    Copyright (C) 2018 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    astra@s1-tests:~/safec$ ls -1
    installation-test
    README-safec8.pdf
    safec-test-job.sh
    testsuite-2024-07-24-f4b6ad6.tar.gz
    testsuite-f4b6ad6

    Нужны некоторые зависимости. Установил их

    sudo apt-get install python3-docutils binutils libc6-dev rhash

    Запуск тестирования БК на тестовом наборе через пускач:

    astra@s1-tests:~/safec$ ./safec-test-job.sh
    ...
    + retcode=0
    + exit 0

    Код завершения 0 означает, что все тесты прошли.

    В результате запуска скрипта помимо вывода на стандартные потоки появляется директория lit-results-raw и файлик test_result.txt с резюме итогов тестирования.

    astra@s1-tests:~/safec$ ls -1
    installation-test
    lit-results-raw
    README-safec8.pdf
    safec-test-job.sh
    test_result.txt
    testsuite-2024-07-24-f4b6ad6.tar.gz
    testsuite-f4b6ad6

    Анализ падающих тестов удобно начинать с подобных запросов (jq тоже установил):

    jq -r < lit-results-raw/level-3.json  '.tests[] | select (.code == "FAIL") '
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment