Libelektra: تتصرف الاختبارات بشكل غريب في بيئات معينة (حزم دبيان)

تم إنشاؤها على ١١ مايو ٢٠١٨  ·  35تعليقات  ·  مصدر: ElektraInitiative/libelektra

قبل bc804c207df391c339d880d3487ea3c16eb4ee4e ، فشلت الاختبارات التالية في بعض البيئات عند إنشاء حزم دبيان:

  • testmod_blockresolver
  • testmod_crypto_openssl
  • testmod_crypto_gcrypt
  • testmod_crypto_botan
  • testmod_fcrypt

تحرير علامة: يمكنك أيضًا إعادة إنتاج مشاكل blockresolver و fcrypt عن طريق معالجة HOME و TMPDIR. ليست هناك حاجة لبناء الحزمة.

سجلات الأخطاء

blockresolver

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

نقاش

في # 1965 ، كان لدينا بعض المناقشات حول اكتشاف الأخطاء التي تشير في النهاية إلى https://github.com/ElektraInitiative/libelektra/commit/356317a6ab811f524ebaa1dbf40f19477b966fc1 باعتباره الالتزام الذي أدى إلى ظهور الأخطاء. ومع ذلك ، لا ينبغي أن يكون لتنظيف البيئة الآثار الجانبية لإجراء الاختبارات.
إذا احتاجت الاختبارات إلى إعدادات بيئية معينة ، فيجب عليهم ضبطها.

bug

التعليق الأكثر فائدة

@ petermax2 the 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 أثناء تشغيل مجموعة اختبار واحدة أم يتم إعادة نشرها لكل مجموعة اختبار؟

@ 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. ولا يمكنك إعادة إنتاجه لأنك دائمًا ما أنشأت الدليل قبل إجراء الاختبارات: ابتسم:

لكن بالنسبة لي ، فإن 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$

بعض الأشياء الأكثر إثارة للاهتمام:

  • لماذا تفشل مكدتمب؟
  • clean_temp_home يبدو أنه تمت كتابته لتنظيف أشياء gnupg بالفعل. لماذا لا تعمل؟

    • يبدو أن الأسماء تغيرت

  • حتى عندما يكون dir في TMPDIR موجودًا ، فقد فشل fcrypt (اجتازت الاختبارات الأخرى)

    • عند عدم تحديد تمريرات TMPDIR fcrypt

حسنًا ... تحقق من التحذيرات الخاصة بالاختبارات. c وسيصبح كل شيء أكثر وضوحًا ...

أنا أستعد للعلاقات العامة لذلك على الرغم من أنه يجب أن يحل بعض المشكلات.

إذا تمكن شخص ما من معرفة ما إذا كان لدى fcrypt بعض المسارات الصعبة المحددة في مكان ما والتي قد تؤدي إلى فشل الاختبارات ، فسيكون ذلك رائعًا.

Ìn # 2056 أقوم بتنظيف TMPDIR الذي تم إنشاؤه بشكل صحيح. هذا يحل مشكلة وكيل gpg العالقة.
يعمل أيضًا على إصلاح مشكلة في إصدارات 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 in fcrypt.c لا يتحقق من البيئة. لذلك إذا لم يتم تحديد tmpdir في تكوين المكون الإضافي ، فإنه يستخدم /tmp كبديل افتراضي.

أفترض أن تحديد الأولويات الصحيح هو:

  1. أسيوط المساعد
  2. البيئة $TMPDIR
  3. الاحتياطي الافتراضي /tmp

هل توافق؟

ISO / IEC 9945 (POSIX): المسار الموفر بواسطة متغير البيئة الأول الموجود في القائمة TMPDIR و TMP و TEMP و TEMPDIR. إذا لم يتم العثور على أي من هذه ، "/ tmp".

نظرًا لأننا نستخدم mkdtemp (POSIX 2008) على أي حال ، يمكنك على الأرجح استخدام ذلك أيضًا والتخلص من بعض التعليمات البرمجية.

شكرا لك على المعلومات! هل تمكنت من التحقق من أن الإصلاح المقترح في # 2090 يعمل على إصلاح مشكلة الاختبار fcrypt على خادم الإنشاء؟

إذا كان يعمل على نظامك باستخدام TMPDIR = dir / that / موجود 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 عبر العلاقات العامة إذا كان ذلك يساعد في إعادة إنتاج الأخطاء.

شكرا على الإبلاغ! هل يمكنك إخبارنا بـ 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 the Vagrantfile & خطوات إعادة الإنتاج موجودة في # 2211. آمل أن يساعد هذا في تصحيح المشكلة بسهولة أكبر. ربما هي في الحقيقة مجرد مشكلة ENV.

لم يتم حذف $HOMEDIR بعد انتهاء حالة الاختبار ، وبالتالي فإن gpg-agent يحافظ على التشغيل ، مما يسبب المشكلة. إذا تم تعيين GNUPGHOME إلى دليل مختلف ، تنجح حالة الاختبار مرة أخرى.

تحرير: يتم حذف $HOMEDIR بشكل صحيح ، ولكن لا يتم إنهاء gpgagent كما هو متوقع.

تحرير الإصدار 2:

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. حاولت مرة حفظ PIDs لوكلاء Startetd 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 التي لا تنظف نفسها بعد إزالة ملفاتها؟

إصدار Ubuntu Artful (17.10) من gpg هو الإصدار الوحيد حتى الآن حيث لا ينتهي الوكيل بعد حذف 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 .

ATM أنا أختبر حلاً آخر. يؤدي تنفيذ gpg-connect-agent KILLAGENT إلى إيقاف تشغيل الوكيل في إصدار gpg 2.2.4. إذا كان الأمر execv هذا الأمر بعد اكتمال اختبار الوحدة ، فيجب إيقاف تشغيل gpg-agent . سأختبر هذا الحل في نظام Linux و FreeBSD. يرجى انتظار تعليق أو نأمل في العلاقات العامة!

الرجاء إعادة فتح هذه المشكلة إذا حدثت المشكلة مرة أخرى.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

markus2330 picture markus2330  ·  3تعليقات

markus2330 picture markus2330  ·  3تعليقات

mpranj picture mpranj  ·  3تعليقات

sanssecours picture sanssecours  ·  4تعليقات

mpranj picture mpranj  ·  3تعليقات