Libelektra: В определенных средах тесты ведут себя странно (пакеты debian)

Созданный на 11 мая 2018  ·  35Комментарии  ·  Источник: ElektraInitiative/libelektra

До bc804c207df391c339d880d3487ea3c16eb4ee4e следующие тесты не выполнялись в некоторых средах при сборке пакетов debian:

  • testmod_blockresolver
  • testmod_crypto_openssl
  • testmod_crypto_gcrypt
  • testmod_crypto_botan
  • testmod_fcrypt

ИЗМЕНИТЬ markus: Вы также можете воспроизвести проблемы blockresolver и fcrypt, манипулируя HOME и TMPDIR. Сборка пакета не требуется.

журналы ошибок

блок-резолвер

[package/stretch]  42/118 Test  #48: testmod_blockresolver ............***Failed    0.00 sec
[package/stretch] BLOCKRESOLVER     TESTS
[package/stretch] ==================
[package/stretch] 
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/blockresolver/testmod_blockresolver.c:70: error in test_BlockresolverWrite: blockresolver->kdbSet failed
[package/stretch] Compare <key = only the inside has changed
[package/stretch] >, with <key = inside block
[package/stretch] >
[package/stretch] in file /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/blockresolver/blockresolver/compare.block, line 5.
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/tests/cframework/tests.c:157: error in compare_line_files: comparing lines failed
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/blockresolver/testmod_blockresolver.c:72: error in test_BlockresolverWrite: files do not match as expected
[package/stretch] 
[package/stretch] testmod_blockresolver Results: 15 Tests done — 3 errors.

crypto_openssl

[package/stretch]  48/118 Test  #60: testmod_crypto_openssl ...........***Failed    5.32 sec
[package/stretch] CYPTO        TESTS
[package/stretch] ==================
[package/stretch] 
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/crypto/test_internals.h:263: error in test_gpg: failed to install the GPG test key
[package/stretch] 
[package/stretch] crypto_openssl Results: 65 Tests done — 1 error.

crypto_gcrypt

[package/stretch]  49/118 Test  #61: testmod_crypto_gcrypt ............***Failed    5.18 sec
[package/stretch] CYPTO        TESTS
[package/stretch] ==================
[package/stretch] 
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/crypto/test_internals.h:263: error in test_gpg: failed to install the GPG test key

крипто_ботан

[package/stretch]  50/118 Test  #62: testmod_crypto_botan .............***Failed    5.41 sec
[package/stretch] CYPTO        TESTS
[package/stretch] ==================
[package/stretch] 
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/crypto/test_internals.h:263: error in test_gpg: failed to install the GPG test key

fcrypt

[package/stretch]  57/118 Test  #73: testmod_fcrypt ...................***Failed   15.03 sec
[package/stretch] FCRYPT       TESTS
[package/stretch] ==================
[package/stretch] 
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:159: error in test_gpg: failed to install the GPG test key
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:187: error in test_file_crypto_operations: kdb set failed
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:188: error in test_file_crypto_operations: file content did not change during encryption
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:191: error in test_file_crypto_operations: kdb get (pregetstorage) failed
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:195: error in test_file_crypto_operations: kdb get (postgetstorage) failed
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:196: error in test_file_crypto_operations: postgetstorage did not encrypt the file again
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:231: error in test_file_signature_operations: kdb set failed
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:232: error in test_file_signature_operations: file content did not change during encryption
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:235: error in test_file_signature_operations: kdb get failed
[package/stretch] 

обсуждение

В # 1965 у нас было несколько обсуждений по поиску ошибок, в конечном итоге указывающих на https://github.com/ElektraInitiative/libelektra/commit/356317a6ab811f524ebaa1dbf40f19477b966fc1 как на фиксацию, которая вызвала ошибку. Однако очистка окружающей среды не должна иметь побочного эффекта в виде прохождения тестов.
Если тестам требуются определенные настройки среды, они должны их установить.

Самый полезный комментарий

@ petermax2 Vagrantfile и шаги по воспроизведению находятся в # 2211. Надеюсь, это поможет упростить отладку проблемы. Может, это действительно проблема ENV.

Все 35 Комментарий

Спасибо, что сообщили об этом отдельно!

В качестве побочного эффекта https://build.libelektra.org/jenkins/job/elektra-git-buildpackage-jessie/, похоже, снова работает со вчерашнего дня ...

У GPG есть проблема с очищенной средой. Я буду экспериментировать с установкой переменной GNUPGHOME на /tmp . GPG использует этот каталог (по умолчанию ~/.gnupg/ ) для поиска своей цепочки ключей. Я думаю, что информация gpg-agent также хранится в этом каталоге. Установка его в один и тот же каталог для всех тестов может также исправить ошибку появления нескольких gpg-agents при каждом запуске теста (см. # 1928).

Да, я также думал, что неудачные криптографические тесты связаны с # 1928. Кажется, что gpg использует .gnupg ниже TMPDIR. (По крайней мере, вы видите остаток .gnupg после запуска TMPDIR=`pwd`/x ctest --output-on-failure -R fcrypt ).

Неудачные тестовые примеры fcrypt могут показывать ошибку при обработке временных файлов, также связанную с TMPDIR.

похоже, что gpg использует .gnupg ниже TMPDIR

это ошибочное предположение. gpg по умолчанию использует ~ / .gnupg, поэтому он связан не с TMPDIR, а с HOME.

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

это неправильное предположение

Какое предположение вы имеете в виду? Я только имел в виду, что у меня есть папка .gnupg в TMPDIR.

mkdir x && env TMPDIR=`pwd`/x ctest --output-on-failure -R fcrypt; find x
Test project /home/markus/Projekte/Elektra/build
    Start 64: testmod_fcrypt
1/1 Test #64: testmod_fcrypt ...................***Failed    0.02 sec
FCRYPT       TESTS
==================

/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:187: error in test_file_crypto_operations: kdb set failed
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:188: error in test_file_crypto_operations: file content did not change during encryption
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:191: error in test_file_crypto_operations: kdb get (pregetstorage) failed
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:195: error in test_file_crypto_operations: kdb get (postgetstorage) failed
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:196: error in test_file_crypto_operations: postgetstorage did not encrypt the file again
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:231: error in test_file_signature_operations: kdb set failed
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:232: error in test_file_signature_operations: file content did not change during encryption
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:235: error in test_file_signature_operations: kdb get failed

fcrypt Results: 39 Tests done — 8 errors.


0% tests passed, 1 tests failed out of 1

Total Test time (real) =   0.03 sec

The following tests FAILED:
         64 - testmod_fcrypt (Failed)
Errors while running CTest
x
x/elektra-test.qPoz5P
x/elektra-test.qPoz5P/.gnupg
x/elektra-test.qPoz5P/.gnupg/random_seed
x/elektra-test.qPoz5P/.gnupg/trustdb.gpg
x/elektra-test.qPoz5P/.gnupg/pubring.kbx~
x/elektra-test.qPoz5P/.gnupg/pubring.kbx

это потому, что что-то в тестах (ctest?) устанавливает домашний каталог для каждого набора тестов в tmpdir в TMPDIR.
GPG создает файлы в HOME, но набор тестов HOME установлен на TMPDIR / randomdir /.
Следовательно, я хочу сказать, что это не единственная ошибка tmpdir, и усилия по отладке не должны ограничиваться им.

Я думаю, что было бы неплохо иметь отдельные домашние каталоги для каждого теста, чтобы они не влияли друг на друга (распараллеливание), и, следовательно, не думаю, что переопределение каталогов gpg для совместного использования одного каталога - хорошая идея.

Да, я согласен.

Имеет ли смысл №1977? Или это нужно делать после того, как ctest полностью завершит?

Или спросить по-другому: выживает ли gpg-agent прогон одного набора тестов или они возрождаются для каждого набора тестов?

@ markus2330 Как упоминалось в # 2040. Я следовал инструкциям по созданию образов Docker. Внутри контейнера докеров я запустил:

# cmake -DBUILD_DOCUMENTATION=OFF -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
# make -j16
# mkdir x
# TMPDIR=`pwd`/x ctest -R crypt .
Test project /elektra/build
    Start 46: testmod_crypto_openssl
1/3 Test #46: testmod_crypto_openssl ...........   Passed    1.32 sec
    Start 47: testmod_crypto_gcrypt
2/3 Test #47: testmod_crypto_gcrypt ............   Passed    1.16 sec
    Start 48: testmod_crypto_botan
3/3 Test #48: testmod_crypto_botan .............   Passed    1.52 sec

100% tests passed, 0 tests failed out of 3

Label Time Summary:
memleak    =   1.16 sec (1 test)

Total Test time (real) =   4.01 sec

Итак (часть) проблема в том, что тестовые примеры предполагают наличие TMPDIR. И вы не могли воспроизвести это, потому что вы всегда создавали каталог перед запуском тестов: smile:

Но для меня fcrypt, тем не менее, не работает, даже если присутствует x (вы не запускали fcrypt). Но с другими сообщениями:

64: FCRYPT       TESTS
64: ==================
64: 
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:187: error in test_file_crypto_operations: kdb set failed
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:188: error in test_file_crypto_operations: file content did not change during encryption
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:191: error in test_file_crypto_operations: kdb get (pregetstorage) failed
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:195: error in test_file_crypto_operations: kdb get (postgetstorage) failed
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:196: error in test_file_crypto_operations: postgetstorage did not encrypt the file again
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:231: error in test_file_signature_operations: kdb set failed
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:232: error in test_file_signature_operations: file content did not change during encryption
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:235: error in test_file_signature_operations: kdb get failed
64: 
64: fcrypt Results: 39 Tests done — 8 errors.
1/1 Test #64: testmod_fcrypt ...................***Failed    0.02 sec

Но это работает в моем контейнере (я долго ждал, чтобы сбросить эту строчку: смеется:) ...

jenkins<strong i="6">@924c627f07b8</strong>:/elektra/build$ ctest --output-on-failure -R fcrypt
Test project /elektra/build
    Start 59: testmod_fcrypt
1/1 Test #59: testmod_fcrypt ...................   Passed    1.07 sec

100% tests passed, 0 tests failed out of 1

Total Test time (real) =   1.08 sec
jenkins<strong i="7">@924c627f07b8</strong>:/elektra/build$ TMPDIR=`pwd`/x ctest --output-on-failure -R fcrypt
Test project /elektra/build
    Start 59: testmod_fcrypt
1/1 Test #59: testmod_fcrypt ...................***Failed    0.01 sec
FCRYPT       TESTS
==================

/elektra/tests/cframework/tests.c:80: error in init: mkdtemp failed
/elektra/tests/cframework/tests.c:90: error in init: mkstemp failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:159: error in test_gpg: failed to install the GPG test key
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:71: error in writeTestFile: can not write to temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:187: error in test_file_crypto_operations: kdb set failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:99: error in isTestFileCorrect: can not read from temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:191: error in test_file_crypto_operations: kdb get (pregetstorage) failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:99: error in isTestFileCorrect: can not read from temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:192: error in test_file_crypto_operations: file content could not be restored during decryption
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:195: error in test_file_crypto_operations: kdb get (postgetstorage) failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:99: error in isTestFileCorrect: can not read from temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:71: error in writeTestFile: can not write to temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:231: error in test_file_signature_operations: kdb set failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:99: error in isTestFileCorrect: can not read from temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:235: error in test_file_signature_operations: kdb get failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:80: error in writeFaultySignatureFile: can not write to temporary file

fcrypt Results: 32 Tests done — 16 errors.


0% tests passed, 1 tests failed out of 1

Total Test time (real) =   0.02 sec

The following tests FAILED:
        59 - testmod_fcrypt (Failed)
Errors while running CTest
jenkins<strong i="8">@924c627f07b8</strong>:/elektra/build$ mkdir x
jenkins<strong i="9">@924c627f07b8</strong>:/elektra/build$ TMPDIR=`pwd`/x ctest --output-on-failure -R fcrypt
Test project /elektra/build
    Start 59: testmod_fcrypt
1/1 Test #59: testmod_fcrypt ...................   Passed    1.06 sec

100% tests passed, 0 tests failed out of 1

Total Test time (real) =   1.07 sec
jenkins<strong i="10">@924c627f07b8</strong>:/elektra/build$

еще кое-что интересное:

  • почему mkdtemp не работает?
  • По-видимому, clean_temp_home уже был написан для очистки материала gnupg. Почему не работает?

    • похоже, что имена изменились

  • даже если каталог в TMPDIR существует, у меня fcrypt не работает (другие тесты проходят)

    • если не указан TMPDIR, fcrypt передает

ну ... проверьте предупреждения на tests.c и все станет намного понятнее ...

Я готовлю для этого PR, который должен решить некоторые проблемы.

Если бы кто-нибудь мог узнать, есть ли где-то в fcrypt какие-то жесткие пути, которые могут привести к сбою тестов, это было бы прекрасно.

Ìn # 2056 Я правильно очищаю сгенерированный файл TMPDIR. Это решает сохраняющуюся проблему с gpg-agent.
Он также устраняет проблему с более новыми версиями glibc, которые не активировали mkdtemp.

Однако тест fcrypt по-прежнему не работает, как только TMPDIR устанавливается вручную, и я думаю, что где-то в коде может быть настоящая ошибка.

jenkins<strong i="8">@0585a86e6f5f</strong>:~/workspace/build$ pidof gpg-agent
jenkins<strong i="9">@0585a86e6f5f</strong>:~/workspace/build$ TMPDIR=`pwd`/tmp ctest --output-on-failure -R crypt
Test project /home/jenkins/workspace/build
    Start 51: testmod_crypto_openssl
1/4 Test #51: testmod_crypto_openssl ...........   Passed    1.58 sec
    Start 52: testmod_crypto_gcrypt
2/4 Test #52: testmod_crypto_gcrypt ............   Passed    1.34 sec
    Start 53: testmod_crypto_botan
3/4 Test #53: testmod_crypto_botan .............   Passed    1.83 sec
    Start 64: testmod_fcrypt
4/4 Test #64: testmod_fcrypt ...................***Failed    1.17 sec
FCRYPT       TESTS
==================

/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:187: error in test_file_crypto_operations: kdb set failed
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:188: error in test_file_crypto_operations: file content did not change during encryption
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:191: error in test_file_crypto_operations: kdb get (pregetstorage) failed
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:195: error in test_file_crypto_operations: kdb get (postgetstorage) failed
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:196: error in test_file_crypto_operations: postgetstorage did not encrypt the file again
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:231: error in test_file_signature_operations: kdb set failed
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:232: error in test_file_signature_operations: file content did not change during encryption
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:235: error in test_file_signature_operations: kdb get failed

fcrypt Results: 39 Tests done — 8 errors.


75% tests passed, 1 tests failed out of 4

Label Time Summary:
memleak    =   1.34 sec (1 test)

Total Test time (real) =   5.98 sec

The following tests FAILED:
     64 - testmod_fcrypt (Failed)
Errors while running CTest
jenkins<strong i="10">@0585a86e6f5f</strong>:~/workspace/build$ pidof gpg-agent
jenkins<strong i="11">@0585a86e6f5f</strong>:~/workspace/build$ ls -l tmp
total 0

Однако тест fcrypt по-прежнему не работает, как только TMPDIR устанавливается вручную, и я думаю, что где-то в коде может быть настоящая ошибка.

Ты прав!

getTemporaryFileName в fcrypt.c не проверяет среду. Поэтому, если в конфигурации плагина не указано tmpdir , он использует /tmp качестве запасного варианта по умолчанию.

Я полагаю, что правильная расстановка приоритетов будет:

  1. plugin conf
  2. среда $TMPDIR
  3. резерв по умолчанию /tmp

Ты согласен?

ISO / IEC 9945 (POSIX): путь, предоставленный первой переменной среды, найденной в списке TMPDIR, TMP, TEMP, TEMPDIR. Если ничего из этого не найдено, "/ tmp".

Поскольку мы в любом случае используем mkdtemp (POSIX 2008), вы, вероятно, могли бы использовать и его и избавиться от некоторого кода.

Благодарю вас за информацию! Удалось ли вам убедиться, что предлагаемое исправление в # 2090 устраняет проблему fcrypt test на сервере сборки?

если он работает в вашей системе с TMPDIR = dir / that / exists ctest -R fcrypt, он также должен работать на сервере сборки.

Проблема должна быть исправлена ​​сейчас.

я согласен

С тестами все-таки есть какая-то странность. Я запускаю некоторые сборки мастера в основном для точной настройки исполнителя и параллельных настроек, поскольку мы больше не выполняем гиперпоточность. И в одном случае тесты внезапно провалились с той же проблемой «не удалось установить ключ» снова:
https://build.libelektra.org/jenkins/blue/organizations/jenkins/libelektra/detail/master/122/pipeline/410

Извините, что скопил здесь, но я тоже столкнулся с ошибкой failed to install the GPG test key . Я использую vagrant artful32 vm и могу постоянно воспроизводить эти ошибки (основная ветка):

 55/198 Test  #55: testmod_crypto_gcrypt ....................***Failed    0.60 sec
CYPTO        TESTS
==================

/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/crypto/test_internals.h:273: error in test_gpg: failed to install the GPG test key

crypto_gcrypt Results: 65 Tests done — 1 error.
 66/198 Test  #66: testmod_fcrypt ...........................***Failed    0.03 sec
FCRYPT       TESTS
==================

/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:160: error in test_gpg: failed to install the GPG test key
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:188: error in test_file_crypto_operations: kdb set failed
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:189: error in test_file_crypto_operations: file content did not change during encryption
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:192: error in test_file_crypto_operations: kdb get (pregetstorage) failed
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:196: error in test_file_crypto_operations: kdb get (postgetstorage) failed
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:197: error in test_file_crypto_operations: postgetstorage did not encrypt the file again
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:232: error in test_file_signature_operations: kdb set failed
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:233: error in test_file_signature_operations: file content did not change during encryption
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:236: error in test_file_signature_operations: kdb get failed

fcrypt Results: 39 Tests done — 9 errors.

Я могу предоставить vagrantfile через PR, если это поможет воспроизвести ошибки.

Спасибо за сообщение! Можете ли вы сообщить нам свой TMPDIR и HOME? Попробуйте воспроизвести это с помощью env -i .

@ petermax2 У тебя есть время посмотреть?

Для ошибок выше:
TMPDIR: пусто
ГЛАВНАЯ: /home/jenkins/workspace/elektra-master-full-artful32/user

Что касается env -i , тогда еще один тест не проходит:

 54/198 Test  #54: testmod_crypto_openssl ...................***Failed    0.31 sec
CYPTO        TESTS
==================

/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/crypto/test_internals.h:273: error in test_gpg: failed to install the GPG test key

crypto_openssl Results: 65 Tests done — 1 error.

Не уверен, что это совпадение, но это был первый раз, когда этот тест не удался.

Я могу разобраться в этом на выходных. @mpranj, пожалуйста , пришлите мне бродячий файл?

@ petermax2 Vagrantfile и шаги по воспроизведению находятся в # 2211. Надеюсь, это поможет упростить отладку проблемы. Может, это действительно проблема ENV.

$HOMEDIR не удаляется после завершения тестового примера, поэтому gpg-agent продолжает работать, что вызывает проблему. Если GNUPGHOME установлен в другой каталог, тестовый пример снова завершится успешно.

РЕДАКТИРОВАТЬ: $HOMEDIR удаляется правильно, но gpgagent не закрывается должным образом.

ИЗМЕНИТЬ v2:

vagrant@ubuntu-artful:~/libelektra/build$ gpg --list-key
gpg: directory '/home/vagrant/.gnupg' created
gpg: new configuration file '/home/vagrant/.gnupg/dirmngr.conf' created
gpg: new configuration file '/home/vagrant/.gnupg/gpg.conf' created
gpg: keybox '/home/vagrant/.gnupg/pubring.kbx' created
gpg: /home/vagrant/.gnupg/trustdb.gpg: trustdb created
vagrant@ubuntu-artful:~/libelektra/build$ pgrep agent
3630
vagrant@ubuntu-artful:~/libelektra/build$ rm -rf /home/vagrant/.gnupg
vagrant@ubuntu-artful:~/libelektra/build$ pgrep agent
3630
vagrant@ubuntu-artful:~/libelektra/build$

Спасибо за расследование!

Есть ли какой-то обзор, в какой версии какие env vars что делают и с каких пор агент gpg закрывается при удалении файлов?

Как лучше всего это исправить?

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

Есть ли какой-то обзор, в какой версии какие env vars что делают и с каких пор агент gpg закрывается при удалении файлов?

Вся документация, которую я смог найти, была

_ (GNUPGHOME) Если задан каталог, используемый вместо "~ / .gnupg" ._ [1]

Как лучше всего это исправить?

Я не уверен. Не похоже, что есть какое-то одно решение, которое решает все проблемы, с которыми мы сталкиваемся при использовании GnuPG. Однажды я попытался сохранить PID стартовых агентов GnuPG, но у меня ничего не вышло.

У тебя есть идеи?

Источники

  • [1] [https://www.gnupg.org/documentation/manuals/gnupg/GPG-Configuration.html] (https://www.gnupg.org/documentation/manuals/gnupg/GPG-Configuration.html)

Может быть, не стоит пытаться решать все возможные проблемы и поддерживать только некоторые версии gnupg?

Какие версии gnupg не очищаются после удаления файлов? Достаточно ли они актуальны, чтобы поддерживать их? Может, просто отключим для них тесты?

Какие версии gnupg не очищаются после удаления файлов?

Версия gpg в Ubuntu Artful (17.10) пока что является единственной версией, в которой агент не завершает свою работу после удаления GNUPGHOME . Я не видел такого поведения в других версиях gpg.

GPG в Ubuntu Artful - 2.1.15. В Ubuntu 18.04.1 используется gpg версии 2.2.4. Последняя версия - 2.2.10.

Мы могли бы добавить примечание о зависимости, что требуется версия gpg> = 2.2.

Если вы правильно поняли примечания к выпуску, завершение работы будет реализовано в gpg версии 2.1.16. См. Примечания к выпуску .

РЕДАКТИРОВАТЬ: в примечании к выпуску указано, что прерывание реализовано только для Linux. Это означает, что в другой ОС мы должны получить ту же проблему. Тестирую на FreeBSD.

Тестирую на FreeBSD.

Да, gpg-agent все еще работает после удаления GNUPGHOME .

Банкомат Тестирую другое решение. Выполнение gpg-connect-agent KILLAGENT завершает работу агента в gpg версии 2.2.4. Если мы execv эту команду после завершения модульного теста, gpg-agent должен отключиться. Я протестирую это решение под Linux и FreeBSD. Пожалуйста, дождитесь комментария или, надеюсь, PR!

Пожалуйста, повторно откройте эту проблему, если проблема возникнет снова.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

mpranj picture mpranj  ·  3Комментарии

sanssecours picture sanssecours  ·  3Комментарии

markus2330 picture markus2330  ·  3Комментарии

mpranj picture mpranj  ·  3Комментарии

markus2330 picture markus2330  ·  4Комментарии