Libelektra: Les tests se comportent bizarrement dans certains environnements (paquets Debian)

Créé le 11 mai 2018  ·  35Commentaires  ·  Source: ElektraInitiative/libelektra

Avant bc804c207df391c339d880d3487ea3c16eb4ee4e, les tests suivants échouaient dans certains environnements lors de la construction de packages Debian:

  • testmod_blockresolver
  • testmod_crypto_openssl
  • testmod_crypto_gcrypt
  • testmod_crypto_botan
  • testmod_fcrypt

EDIT markus: Vous pouvez également reproduire les problèmes de résolution de bloc et de fcrypt en manipulant HOME et TMPDIR. Aucune création de package n'est nécessaire.

journaux d'erreurs

résolution de blocage

[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

crypto_botan

[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] 

discussion

En 1965, nous avons eu des discussions sur la recherche de bogues pointant finalement vers https://github.com/ElektraInitiative/libelektra/commit/356317a6ab811f524ebaa1dbf40f19477b966fc1 comme le commit qui faisait apparaître les erreurs. Cependant, le nettoyage de l'environnement ne devrait pas avoir pour effet secondaire de faire passer les tests.
Si les tests nécessitent certains paramètres environnementaux, ils doivent les définir.

bug

Commentaire le plus utile

@ petermax2 le fichier Vagrant et les étapes à suivre pour se reproduire se trouvent dans # 2211. J'espère que cela aide à déboguer le problème plus facilement. C'est peut-être juste un problème ENV.

Tous les 35 commentaires

Merci de le signaler séparément!

En guise d'effet secondaire, https://build.libelektra.org/jenkins/job/elektra-git-buildpackage-jessie/ semble fonctionner à nouveau depuis hier ...

GPG semble avoir un problème avec l'environnement dégagé. Je vais essayer de définir la variable GNUPGHOME sur /tmp . GPG s'appuie sur ce répertoire (la valeur par défaut est ~/.gnupg/ ) pour rechercher son porte-clés. Je pense que les informations gpg-agent sont également stockées dans ce répertoire. Le définir dans le même répertoire pour tous les tests peut également corriger l'erreur de plusieurs gpg-agents apparaissant pour chaque test (voir # 1928).

Oui, je pensais aussi que les cas de test cryptographiques défaillants étaient liés à # 1928. Il semble que gpg utilise .gnupg sous le TMPDIR. (Au moins, vous voyez un .gnupg restant après avoir exécuté TMPDIR=`pwd`/x ctest --output-on-failure -R fcrypt ).

Les cas de test fcrypt qui échouent peuvent montrer un bogue dans la gestion des fichiers temporaires, également liés à TMPDIR.

il semble que gpg utilise .gnupg sous le TMPDIR

c'est une fausse hypothèse. gpg utilise ~ / .gnupg par défaut donc il n'est pas lié à TMPDIR mais à HOME.

Veuillez également noter que définir GNUPGHOME dans le même répertoire pour tous les tests peut influencer l'exécution des tests parallèles.

c'est une fausse hypothèse

De quelle hypothèse parlez-vous? Je faisais simplement référence au fait que j'obtiens un dossier .gnupg dans 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

c'est parce que quelque chose dans les tests (ctest?) définit le répertoire personnel de chaque suite de tests sur un tmpdir dans TMPDIR.
GPG crée les fichiers dans HOME, mais HOME est défini sur TMPDIR / randomdir / par la suite de tests.
D'où mon point est que ce n'est pas la seule faute de tmpdir et l'effort de débogage ne devrait pas être limité à lui.

Je pense que c'est une bonne idée d'avoir des répertoires personnels séparés pour chaque test afin qu'ils ne s'influencent pas les uns les autres (parallélisation) et ne pense donc pas que remplacer les répertoires gpg pour partager un seul répertoire est une bonne idée.

Oui je suis d'accord.

Est-ce que # 1977 a du sens? Ou devrait-il être fait après que ctest complètement terminé?

Ou demandé différemment: le gpg-agent survit-il à une exécution d'une seule suite de tests ou est-il réapparu pour chaque suite de tests?

@ markus2330 Comme mentionné dans # 2040. J'ai suivi les instructions pour créer les images Docker. À l'intérieur du conteneur Docker, j'ai couru:

# 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

Donc (une partie du) problème est que les cas de test supposent que le TMPDIR est présent. Et vous n'avez pas pu le reproduire car vous avez toujours créé le répertoire avant d'exécuter les tests: smile:

Mais, pour moi, fcrypt échoue néanmoins, même lorsque x est présent (vous n'avez pas exécuté fcrypt). Mais avec d'autres messages:

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

Mais ça marche dans mon container (j'attendais depuis longtemps pour laisser tomber cette ligne: rire:) ...

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$

des trucs plus intéressants:

  • pourquoi mkdtemp échoue-t-il?
  • clean_temp_home a apparemment déjà été écrit pour nettoyer des trucs gnupg. Pourquoi ça ne marche pas?

    • semble que les noms ont changé

  • même lorsque le répertoire dans TMPDIR existe, fcrypt échoue (les autres tests réussissent)

    • lorsque vous ne spécifiez pas de passes TMPDIR fcrypt

eh bien ... vérifiez les avertissements pour tests.c et tout devient beaucoup plus clair ...

Je prépare un PR pour cela, ce qui devrait résoudre certains des problèmes.

Si quelqu'un pouvait découvrir si fcrypt a des chemins durs spécifiés quelque part qui pourraient conduire à l'échec des tests, ce serait bien.

Ìn # 2056 Je nettoie correctement le TMPDIR généré. Cela résout le problème persistant de gpg-agent.
Il corrige également un problème avec les nouvelles versions de la glibc qui n'activaient pas mkdtemp.

Cependant, le test fcrypt échoue toujours dès que TMPDIR est défini manuellement et je pense qu'il pourrait y avoir un vrai bug dans le code quelque part.

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

Cependant, le test fcrypt échoue toujours dès que TMPDIR est défini manuellement et je pense qu'il pourrait y avoir un vrai bug dans le code quelque part.

Tu as raison!

getTemporaryFileName in fcrypt.c ne vérifie pas l'environnement. Donc, si aucun tmpdir n'est spécifié dans la configuration du plugin, il utilise /tmp comme solution de secours par défaut.

Je suppose que la bonne hiérarchisation serait:

  1. plugin conf
  2. environnement $TMPDIR
  3. remplacement par défaut /tmp

Êtes-vous d'accord?

ISO / CEI 9945 (POSIX): Le chemin fourni par la première variable d'environnement trouvée dans la liste TMPDIR, TMP, TEMP, TEMPDIR. Si aucun de ceux-ci n'est trouvé, "/ tmp".

Puisque nous utilisons de toute façon mkdtemp (POSIX 2008), vous pourriez probablement l'utiliser également et vous débarrasser d'un peu de code.

Merci pour l'info! Avez-vous pu vérifier que le correctif proposé dans # 2090 corrige le problème de test fcrypt sur le serveur de compilation?

s'il fonctionne sur votre système avec TMPDIR = dir / qui / existe ctest -R fcrypt, il devrait également fonctionner sur le serveur de construction.

Le problème devrait être résolu maintenant.

Je suis d'accord

Il semble encore y avoir une sorte de bizarrerie avec les tests. Je lance certaines versions de master principalement pour affiner l'exécuteur et les paramètres parallèles puisque nous ne faisons plus d'hyperthreading. Et dans un cas, les tests ont soudainement échoué avec le même problème `` Impossible d'installer la clé '' à nouveau:
https://build.libelektra.org/jenkins/blue/organizations/jenkins/libelektra/detail/master/122/pipeline/410

Désolé de m'empiler ici, mais j'ai aussi rencontré l'erreur failed to install the GPG test key . J'utilise une vm artful32 vagrant et je peux reproduire systématiquement ces erreurs (branche principale):

 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.

Je peux fournir le fichier vagrant via PR si cela aide à reproduire les erreurs.

Merci d'avoir signalé! Pouvez-vous nous dire votre TMPDIR et HOME? Essayez de le reproduire avec env -i .

@ petermax2 Avez-vous le temps de l'examiner?

Pour les erreurs ci-dessus:
TMPDIR: vide
MAISON: /home/jenkins/workspace/elektra-master-full-artful32/user

Comme pour env -i , un autre test échoue alors:

 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.

Je ne sais pas s'il s'agit d'une coïncidence, mais c'était la première fois que ce test échouait.

Je peux enquêter pendant le week-end. @mpranj pouvez-vous m'envoyer le fichier vagrant s'il vous plaît?

@ petermax2 le fichier Vagrant et les étapes à suivre pour se reproduire se trouvent dans # 2211. J'espère que cela aide à déboguer le problème plus facilement. C'est peut-être juste un problème ENV.

$HOMEDIR n'est pas supprimé une fois le cas de test terminé, donc le gpg-agent continue de fonctionner, ce qui cause le problème. Si GNUPGHOME est défini sur un répertoire différent, le scénario de test réussit à nouveau.

EDIT: $HOMEDIR est supprimé correctement, mais gpgagent ne se ferme pas comme prévu.

MODIFIER 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$

Merci pour l'enquête!

Existe-t-il une vue d'ensemble dans quelle version des variables d'environnement font quoi et depuis quand l'agent gpg se ferme lorsque les fichiers sont supprimés?

Quelle est la meilleure façon de résoudre ce problème?

Désolé pour le retard, je n'ai pas eu le temps d'enquêter plus avant jusqu'à présent.

Existe-t-il une vue d'ensemble dans quelle version des variables d'environnement font quoi et depuis quand l'agent gpg se ferme lorsque les fichiers sont supprimés?

Toute la documentation que j'ai pu trouver était

_ (GNUPGHOME) Si le répertoire défini est utilisé à la place de "~ / .gnupg" ._ [1]

Quelle est la meilleure façon de résoudre ce problème?

Je ne suis pas sûr. Il ne semble pas qu'il existe une solution unique qui résout tous les problèmes auxquels nous sommes confrontés avec GnuPG. Une fois, j'ai essayé de sauvegarder les PID des agents GnuPG startetd mais cela ne s'est pas bien passé.

Avez-vous des idées?

Sources

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

Peut-être ne devrions-nous pas essayer de résoudre tous les problèmes possibles et ne prendre en charge que certaines versions de gnupg?

Quelles versions de gnupg ne se nettoient pas après avoir supprimé leurs fichiers? Sont-ils suffisamment pertinents pour continuer à les soutenir? Peut-être que nous désactivons simplement les tests pour eux?

Quelles versions de gnupg ne se nettoient pas après avoir supprimé leurs fichiers?

La version de gpg d'Ubuntu Artful (17.10) est la seule version à ce jour où l'agent ne s'arrête pas après avoir supprimé le GNUPGHOME . Je n'ai pas vu ce comportement dans d'autres versions de gpg.

Le GPG dans Ubuntu Artful est 2.1.15. Dans Ubuntu 18.04.1 gpg, la version 2.2.4 est utilisée. La dernière version est la 2.2.10.

Nous pourrions ajouter une note de dépendance indiquant que la version gpg> = 2.2 est requise.

Si vous comprenez correctement les notes de publication, la terminaison est implémentée dans la version gpg 2.1.16. Voir les notes de version .

EDIT: la note de publication indique que la terminaison n'est implémentée que pour Linux. Cela signifie que sur d'autres OS, nous devrions avoir le même problème. Je vais le tester sur FreeBSD.

Je vais le tester sur FreeBSD.

Oui, gpg-agent est toujours en cours d'exécution après la suppression de GNUPGHOME .

ATM Je teste une autre solution. L'exécution de gpg-connect-agent KILLAGENT arrête l'agent dans la version gpg 2.2.4. Si nous execv cette commande une fois le test unitaire terminé, le gpg-agent devrait s'arrêter. Je vais tester cette solution sous Linux et FreeBSD. Veuillez attendre un commentaire ou, espérons-le, un PR!

Veuillez rouvrir ce problème si le problème se reproduit.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

markus2330 picture markus2330  ·  4Commentaires

sanssecours picture sanssecours  ·  3Commentaires

sanssecours picture sanssecours  ·  3Commentaires

dmoisej picture dmoisej  ·  3Commentaires

mpranj picture mpranj  ·  3Commentaires