Libelektra: gopts、quickdump、specloadテストは倱敗したす

䜜成日 2019幎08月04日  Â·  28コメント  Â·  ゜ヌス: ElektraInitiative/libelektra

問題を再珟する手順

Elektraをコンパむルしおむンストヌルし、source / buildディレクトリを削陀たたは名前倉曎したす。 次に、 kdb run_allを実行したす

期埅される結果

すべおのテストケヌスが正垞に実行されるはずです。

実結果

Running testmod_gopts

GOPTS     TESTS
==================

test empty
GOPTS     TESTS
==================

test empty
/home/jenkins/workspace/libelektra_master-Q2SIBK3KE2NBEMJ4WVGJXAXCSCB77DUBUULVLZDKHQEV3WNDXBMA/libelektra/src/plugins/gopts/testmod_gopts.c:78: error in run_test: child process test failed
test singleopt
/home/jenkins/workspace/libelektra_master-Q2SIBK3KE2NBEMJ4WVGJXAXCSCB77DUBUULVLZDKHQEV3WNDXBMA/libelektra/tests/cframework/tests.c:523: error in clean_temp_home: Could not delete TMPHOME via nftw
GOPTS     TESTS
==================
Running testmod_quickdump
QUICKDUMP     TESTS
==================

test varint
test basics
/home/jenkins/workspace/libelektra_master-Q2SIBK3KE2NBEMJ4WVGJXAXCSCB77DUBUULVLZDKHQEV3WNDXBMA/libelektra/src/plugins/quickdump/testmod_quickdump.c:111: error in test_basics: call to kdbSet was not successful

Program received signal SIGSEGV, Segmentation fault.
_IO_getc (fp=0x0) at getc.c:37
37      getc.c: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0  _IO_getc (fp=0x0) at getc.c:37
#1  0x0000555555556bb7 in compare_binary_files (filename1=<optimized out>, filename2=<optimized out>) at ./src/plugins/quickdump/testmod_quickdump.c:31
#2  0x0000555555556f9a in test_basics () at ./src/plugins/quickdump/testmod_quickdump.c:113
#3  0x0000555555556807 in main (argc=1, argv=0x7fffffffe278) at ./src/plugins/quickdump/testmod_quickdump.c:332
Running testmod_specload

SPECLOAD     TESTS
==================

test basics
/home/jenkins/workspace/libelektra_master-Q2SIBK3KE2NBEMJ4WVGJXAXCSCB77DUBUULVLZDKHQEV3WNDXBMA/libelektra/src/plugins/specload/testmod_specload.c:63: error in test_basics: call to checkConfig was not successful
There are 1 warnings
buffer is: warnings/#00
number: C01330
description: Plugin Misbehavior
module: kdb
file: /home/jenkins/workspace/libelektra_master-Q2SIBK3KE2NBEMJ4WVGJXAXCSCB77DUBUULVLZDKHQEV3WNDXBMA/libelektra/src/libs/elektra/plugin.c
line: 302
reason: Open of plugin returned unsuccessfully: specload. Reason contains plugin, see other warnings for details
reason: 
reason: 
/home/jenkins/workspace/libelektra_master-Q2SIBK3KE2NBEMJ4WVGJXAXCSCB77DUBUULVLZDKHQEV3WNDXBMA/libelektra/src/plugins/specload/testmod_specload.c:65: error in test_basics: warnings in kdbOpen for plugin specload
number: C01100
description: : Resource
module: : specload
at: /home/jenkins/workspace/libelektra_master-Q2SIBK3KE2NBEMJ4WVGJXAXCSCB77DUBUULVLZDKHQEV3WNDXBMA/libelektra/src/plugins/specload/specload.c:372
reason: : App '/home/jenkins/workspace/libelektra_master-Q2SIBK3KE2NBEMJ4WVGJXAXCSCB77DUBUULVLZDKHQEV3WNDXBMA/libelektra/obj-x86_64-linux-gnu/bin/elektra-specload-testapp' doesn't exist or is not executable
mountpoint: : 
configfile: : 
/home/jenkins/workspace/libelektra_master-Q2SIBK3KE2NBEMJ4WVGJXAXCSCB77DUBUULVLZDKHQEV3WNDXBMA/libelektra/src/plugins/specload/testmod_specload.c:65: error in test_basics: error in kdbOpen for plugin specload
/home/jenkins/workspace/libelektra_master-Q2SIBK3KE2NBEMJ4WVGJXAXCSCB77DUBUULVLZDKHQEV3WNDXBMA/libelektra/src/plugins/specload/testmod_specload.c:65: fatal in test_basics: could not open specload plugin
error: testmod_specload

システムむンフォメヌション

  • ゚レクトラバヌゞョンマスタヌ

さらに詳しい情報

゜ヌス/ビルドディレクトリが削陀された埌にテストを実行するビルドサヌバヌにもテストを远加しおください。

党おのコメント28件

specloadテストの倱敗は非垞に明癜です。

reason: : App '/home/jenkins/workspace/libelektra_master-Q2SIBK3KE2NBEMJ4WVGJXAXCSCB77DUBUULVLZDKHQEV3WNDXBMA/libelektra/obj-x86_64-linux-gnu/bin/elektra-specload-testapp' doesn't exist or is not executable

quickdumpの堎合、䜕が悪いのか正確には蚀えたせんが、 elektraQuickdumpSetのどこかで倱敗したす。 setKeyに゚ラヌが蚭定されおいるはずですが、ログに蚘録されおいないず思いたすおそらく倉曎する必芁がありたす。

わからない、なぜgoptsが倱敗するのか。 ゚ラヌメッセヌゞが出力されなかったため、testapp elektra-gopts-testappを実行できなかったず思われたす゚ラヌメッセヌゞが出力されない唯䞀のケヌスです。 たた、 specload゚ラヌず䞀臎したす。

スペックロヌドテストの倱敗は非垞に明癜です。

はい。ただし、アプリケヌションのむンストヌル埌にビルドディレクトリにバむナリを期埅するのは誀りです。 バむナリは、ビルドディレクトリたたはむンストヌルディレクトリのいずれかにむンストヌルしお怜玢する必芁がありたす。

スペックロヌドテストの倱敗は非垞に明癜です。

はい。ただし、アプリケヌションのむンストヌル埌にビルドディレクトリにバむナリを期埅するのは誀りです。 バむナリは、ビルドディレクトリたたはむンストヌルディレクトリのいずれかにむンストヌルしお怜玢する必芁がありたす。

ああ、あなたが゚レクトラをむンストヌルしたのを芋逃したした。 ただし、それはquickdumpの倱敗を説明するものではなく、そのテストデヌタは正しくむンストヌルされおいたす。

たた、この問題を解決する方法もわかりたせん。 もちろん、テストアプリの実行可胜ファむルをむンストヌルするこずもできたすが、実際のテスト実行可胜ファむルは、むンストヌル時にテストアプリを探す堎所を倉曎するために倉曎する必芁がありたす。

ビルドたたはむンストヌルされたディレクトリのいずれかでバむナリを怜玢するのは倧倉な䜜業です。テストをむンストヌルから陀倖するこずもできたす。

盞察パスを䜿甚しお、むンストヌル䞭に同じパスを維持するこずもできたす。たずえば、䞡方のバむナリを同じディレクトリに配眮したす。

はい、良い考えですね。

より䞀般的な解決策は、ビルドディレクトリでもkdb <command>䜿甚できる堎合です珟圚、Elektraがむンストヌルされおいる堎合にのみ機胜したす。 KDB_EXEC_PATHは1぀のパスしかサポヌトしおいたせんが、バむナリはビルドディレクトリのさたざたな郚分に散圚しおいるため、かなりの䜜業になりたす。

kdbがありたすビルドディレクトリでも利甚可胜

テストはctestおよび/たたはmakeを介しお簡単に実行できたす。 他のコマンドに関しおは、それらのほずんどはずにかくむンストヌルされたバヌゞョンのElektraに察しおのみ意味がありたす。

盞察パスを䜿甚しお、むンストヌル䞭に同じパスを維持するこずもできたす。たずえば、䞡方のバむナリを同じディレクトリに配眮したす。

これは予想よりも難しいこずがわかりたした。 stdlibは、盞察パスを珟圚の䜜業ディレクトリからの盞察パスずしお扱いたすが、これは圹に立ちたせん。たた、珟圚の実行可胜ファむルのパスからの盞察パスをプラットフォヌムに䟝存しない方法で解決するこずはできたせん。

したがっお、 kdb <command>の方法は非垞に魅力的です。

むンストヌルの堎合は、TARGET_TOOL_EXEC_FOLDERにむンストヌルするだけで十分です。

ビルド時にのみ、build_dir / bin build_dir / scripts source_dir / scriptsず珟圚のディレクトリおそらく䞡方ずもbuild + sourceを組み合わせる方法が必芁です。

@kodebachこれはただ開いおいたすか 倚くの人がこの状況を怜出し、この状況でテストを実行しないようにするこずができたすか

たたは、修正したす。KDB_EXEC_PATHで耇数のパスが蚱可されるようになったため、ビルド/゜ヌスディレクトリから必芁なフォルダを远加できたす。 次に、 kdbに実行可胜ファむルを芋぀ける䜜業を任せたす。

AFAIKこれはただ開いおいたす、はい。

テスト甚の関数srcdir_fileはすでにありたす。 同様のbindir_fileを導入するこずもできたす。 bindirはデフォルトで${CMAKE_INSTALL_PREFIX}/${TARGET_TOOL_EXEC_FOLDER}になりたすが、それをオヌバヌラむドする方法がありたす。 CTestは、 ctestを䜿甚するずきにbindirが${CMAKE_BINARY_DIR}/binに蚭定されるようにCMakeのadd_testを介しお蚭定されたす。

そしお、単にbindirをKDB_EXEC_PATHに远加し、 kdb <bin>を䜿甚しおも機胜したせんか

いいえ、いく぀かの理由で

  1. これらはtestmod_テストであり、 kdbに䟝存するべきではありたせん。
  2. では、どうやっおkdbを芋぀けるのでしょうか make run_allでテストを実行するには、むンストヌルされおいるkdbではなく、 ${CMAKE_BINARY_DIR}/binにあるものを䜿甚する必芁がありたす。
  3. $ kdbをむンストヌルした埌も、 KDB_EXEC_PATHには${CMAKE_BINARY_DIR}/binフォルダヌが含たれおいるため、さたざたな問題が発生する可胜性がありたす。

これらはtestmod_テストであり、kdbに䟝存するべきではありたせん。

はい私は同意する。 スタンドアロンで動䜜するのは良いこずです。

では、どのようにしおkdbを芋぀けたすか make run_allを䜿甚しおテストを実行するには、むンストヌルされおいるkdbを䜿甚するのではなく、$ {CMAKE_BINARY_DIR} / binにあるkdbを䜿甚する必芁がありたす。

Shellrecorderテストはすでにkdbを䜿甚しおおり、むンストヌルされおいるElektraずビルドディレクトリElektraがむンストヌルされおいる堎合でもの䞡方で機胜したす。

kdbをむンストヌルした埌も、KDB_EXEC_PATHには$ {CMAKE_BINARY_DIR} / binフォルダヌが含たれおいるため、さたざたな問題が発生する可胜性がありたす。

いいえ、KDB_EXEC_PATHはむンストヌルされたkdbに蚭定されおいたせんナヌザヌが蚭定しない限り

Shellrecorderテストはすでにkdbを䜿甚しおおり、むンストヌルされおいるElektraずビルドディレクトリElektraがむンストヌルされおいる堎合でもの䞡方で機胜したす。

シェルテストは垞に"$KDB"を実行し、$$ kdb $$を実行しないため、これは機胜したす。 たた、 make run_allずctestはたずえばtestscr_check_meta.shスクリプトを䜿甚し、 kdbはたずえばcheck_meta.shを䜿甚するためです。 最初の䟋では$KDBを${CMAKE_BINARY_DIR}/bin/kdbに蚭定し、2番目の䟋では単にkdbに蚭定したすしたがっお、 $PATHを介しお解決したす。

いいえ、KDB_EXEC_PATHはむンストヌルされたkdbに蚭定されおいたせんナヌザヌが蚭定しない限り

Elektraのマスタヌバヌゞョンを取埗しおむンストヌルしたした。 ファむル/usr/local/lib/elektra/tool_exec/check_metaには、次の行が含たれおいたす。

export KDB_EXEC_PATH="/home/klemens/libelektra/build/bin:$KDB_EXEC_PATH"

もちろん、これはtestmod_*テストには圱響したせんが、それでも間違っおいたす。 新しい号を䜜成したす。

@ petermax2 @kodebachこの問題の状況はどうなっおいたすか 3246は珟圚3409経由で修正されおいたすが、この問題の残りの郚分はパッケヌゞングの問題のみですか、それずも実装する必芁があるものが残っおいたすか

specloadの元の問題はただ存圚しおいたす。 TBH testmod_テストをむンストヌルするオプションが必芁な理由がわかりたせん。 意味がない。 これらは、単䞀のプラグむンを個別にテストするスタンドアロンテストです。 実際に実行した堎合、ビルドディレクトリたたはむンストヌルディレクトリのどちらで実行しおも、結果は同じになりたす。

TBHなぜtestmod_testsをむンストヌルするオプションが必芁なのかわかりたせん。

珟時点では、テストのむンストヌルを無効にするオプションはありたせんが、ロヌカルオヌバヌラむドを䜜成しお、 add_plugintestがテストをむンストヌルしないようにするこずができたすINSTALL_TESTINGのように、個々のadd_plugintest 。

意味がない。 これらは、単䞀のプラグむンを個別にテストするスタンドアロンテストです。 実際に実行した堎合、ビルドディレクトリたたはむンストヌルディレクトリのどちらで実行しおも、結果は同じになりたす。

wink 、たくさんの違いがありたすが、それらのほずんどはプラグむンシステム自䜓に関連しおいたしたうたくいけば、今ではすべお修正されおいたす。 ただし、それでも、䟝存関係の問題やむンストヌルの問題はさたざたに発生する可胜性があるため、䜕も実行しないよりも、むンストヌル枈みの状態でtestmodテストを実行する方がはるかに優れおいたす。 しかし、shellrecorderテストがある堎合、testmodテストは圹に立たないずいうのは正しいこずです。

  • [X]したがっお、クむックダンプの堎合は明らかですが、testmodテストをむンストヌルする必芁はありたせん。
  • []スペックロヌドに぀いおはテストがありたすが、それは非垞に最小限のようです。おそらく倧䞈倫ですが、もう䞀床確認するこずをお勧めしたす。
  • [] goptsの堎合、サンプルプログラムをdoc / tutorials / command-line-options.mdで実行させるこずができたすか

@kodebachこれらのテストを安党に陀倖できるかどうかを確認できたすか

@robaerd CI PRの1぀でそれらを陀倖できたすか パッケヌゞのテストを远加する前たたは远加する堎所。

@ markus2330クむックダンプの問題は匕き続き発生したすか AFAIK私たちはそこで䜕が悪いのか理解できたせんでした。 私も再珟できたせんでした。

goptsずspecloadに぀いおは、3618を参照しおください。

はい、ただ発生したす

kdb testmod_quickdump                                                                                                                                                                                                                    
QUICKDUMP     TESTS
==================

test varint
test basics
/home/jenkins/workspace/libelektra_master/libelektra/src/plugins/quickdump/testmod_quickdump.c:111: error in test_basics: call to kdbSet was not successful
zsh: segmentation fault (core dumped)  noglob kdb testmod_quickdump

たたは私が゜ヌスからそれを呌び出すずき

`` `クむックダンプテスト

テストバリント
テストの基本
/home/markus/Projekte/Elektra/current/src/plugins/quickdump/testmod_quickdump.c:92test_basicsの゚ラヌkdbGetの呌び出しが成功したせんでした
/home/markus/Projekte/Elektra/current/src/plugins/quickdump/testmod_quickdump.c:93test_basicsの゚ラヌmmks2の実際のサむズは0でした
/home/markus/Projekte/Elektra/current/src/plugins/quickdump/testmod_quickdump.c:93test_basicsの゚ラヌキヌセットの比范に倱敗したした。キヌセットのサむズがsizemmks18、sizemmks2ず等しくありたせん 0
mmks1
0x55a9efd438d0キヌdir/ tests / branch / __ 112、文字列gQHLlzB36CqIFlf、meta/ meta / _35O6xNya6srhNhMFC、meta/ meta / _39ublVuvyh1DgfOKU、meta/ meta / _585Nyde2MH ZK2xlaRMfobquxp、meta/ meta / _900kCcc1pK7hOgY3F
0x55a9efd44250キヌdir/ tests / branch / __ 114、string、meta/ binary
0x55a9efd441a0キヌdir/ tests / branch / __ 333、文字列SxTUAjM6OIpUV6s
0x55a9efd440f0キヌdir/ tests / branch / __ 506、文字列cGqEvmXxUayNCf8
0x55a9efd44040キヌdir/ tests / branch / __ 859、stringrOI5aVFGlnjPLYJ
0x55a9efd43f90キヌdir/ tests / branch / __ 863、string8IBjbd5pzYBehrs
0x55a9efd43f20キヌdir/ tests / branch / __ 868、文字列UVM0OPTf68yNXij
0x55a9efd43d90キヌdir/ tests / branch / __ 911、文字列PgNbwPxfeqD30pH、meta/ meta / _35O6xNya6srhNhMFC
mmks2
/home/markus/Projekte/Elektra/current/src/plugins/quickdump/testmod_quickdump.c:111test_basicsの゚ラヌkdbSetの呌び出しが成功したせんでした
zshセグメンテヌション違反コアダンプLD_LIBRARY_PATH = lib bin / testmod_quickdump

Stacktrace:

0 0x00007fa7c770ed74 in _IO_getcfp = 0x0at getc.c37

1 0x000055a9ede54c58 in compare_binary_filesfilename2 = 0x55a9efd42a30 "/usr/local/share/elektra/test_data/quickdump/test.quickdump.out"、filename1 = 0x55a9efd429e0" / usr / local / share / elektra / test_data / quickdump / test 。

at /home/markus/Projekte/Elektra/current/src/plugins/quickdump/testmod_quickdump.c:31

2 test_basics/ home / markus / Projekte / Elektra / current / src / plugins / quickdump / testmod_quickdump.c113

3 0x000055a9ede545d7 in mainargc = 1、argv = 0x7ffff28085f8at /home/markus/Projekte/Elektra/current/src/plugins/quickdump/testmod_quickdump.c:278


0 0x00007fa7c770ed74 in _IO_getcfp = 0x0at getc.c37

37 getc.cDatei oder Verzeichnis nichtgefunden。
gdbbt

0 0x00007fa7c770ed74 in _IO_getcfp = 0x0at getc.c37

1 0x000055a9ede54c58 in compare_binary_filesfilename2 = 0x55a9efd42a30 "/usr/local/share/elektra/test_data/quickdump/test.quickdump.out"、filename1 = 0x55a9efd429e0" / usr / local / share / elektra / test_data / quickdump / test 。

at /home/markus/Projekte/Elektra/current/src/plugins/quickdump/testmod_quickdump.c:31

2 test_basics/ home / markus / Projekte / Elektra / current / src / plugins / quickdump / testmod_quickdump.c113

3 0x000055a9ede545d7 in mainargc = 1、argv = 0x7ffff28085f8at /home/markus/Projekte/Elektra/current/src/plugins/quickdump/testmod_quickdump.c:278

gdbbt full

0 0x00007fa7c770ed74 in _IO_getcfp = 0x0at getc.c37

    result = <optimized out>

1 0x000055a9ede54c58 in compare_binary_filesfilename2 = 0x55a9efd42a30 "/usr/local/share/elektra/test_data/quickdump/test.quickdump.out"、filename1 = 0x55a9efd429e0" / usr / local / share / elektra / test_data / quickdump / test 。

at /home/markus/Projekte/Elektra/current/src/plugins/quickdump/testmod_quickdump.c:31
    f2 = 0x0
    c1 = <optimized out>
    f1 = 0x0
    result = 0
    c2 = <optimized out>
    f1 = <optimized out>
    f2 = <optimized out>
    result = <optimized out>
    c1 = <optimized out>
    c2 = <optimized out>
    end1 = <optimized out>
    end2 = <optimized out>

2 test_basics/ home / markus / Projekte / Elektra / current / src / plugins / quickdump / testmod_quickdump.c113

    conf = <optimized out>
    modules = 0x55a9efd43a00
    setKey = 0x55a9efd42bb0
    errorKey = <optimized out>
    plugin = 0x55a9efd43b00
    ks = <optimized out>
    infile = 0x55a9efd429e0 "/usr/local/share/elektra/test_data/quickdump/test.quickdump"
    outfile = 0x55a9efd42a30 "/usr/local/share/elektra/test_data/quickdump/test.quickdump.out"
    __func__ = "test_basics"

3 0x000055a9ede545d7 in mainargc = 1、argv = 0x7ffff28085f8at /home/markus/Projekte/Elektra/current/src/plugins/quickdump/testmod_quickdump.c:27

`` `

たたは私が゜ヌスからそれを呌び出すずき

テストを盎接実行する堎合は、 ctest 䟋 ctest -R testmod_quickdump --ouptut-on-failure を䜿甚しお、環境、匕数などが正しく蚭定されおいるこずを確認しおください。

この堎合、 LD_LIBRARY_PATH=lib bin/testmod_quickdump ../src/plugins/quickdumpが必芁だず思いたすたずえばgdbでデバッグしたい堎合。


/usr/local/share/elektra/test_data/quickdump/test.quickdumpはシステムに存圚し、プロセスには/usr/local/share/elektra/test_data/quickdump/test.quickdump.outに曞き蟌む暩限がありたすか 倚分あなたはsudo kdb testmod_quickdumpが必芁です

もしそうなら、远加しおください

output_error (setKey);
output_warnings (setKey);

testmod_quickdump.c:112に入れお、出力を投皿したす。

elektraQuickdumpSetが倱敗したため、 compare_binary_filesが倱敗するずいう事実は完党に予想されたす。 もちろん、゚ラヌメッセヌゞの方が優れおいお、セグメンテヌション違反を回避できたすが、これは_倱敗した_テストであるため、それほど重芁ではありたせん

はい、問題は、テストケヌスがそれに適さないフォルダに䞀時ファむルを䜜成しようずするこずです。 sudo kdb testmod_quickdumpは問題なく実行されたす。 したがっお、「test_data / quickdump / test.quickdump.out」を䜿甚する代わりに、関数を䜿甚しお䞀時ファむルを䜜成するだけで十分です。

はい、倉曎できたすが、ずにかく倚くのテストはsudoなしでは実行されないため、これを問題ずは芋なしたせん。

どのテストに぀いお話しおいるのですか 私は垞にsudoなしでスむヌト党䜓を実行したすただし、Elektraのパスぞの曞き蟌み暩限はありたす。 testmod_quickdumpは、その問題を抱える唯䞀のテストです。

ただし、Elektraのパスぞの曞き蟌み暩限がありたす

それも機胜したすが、暙準システムでは、これらのパスはルヌトアクセスのみです。

むンストヌルされたバヌゞョンのElektraで単䜓テストを実行するずいう抂念党䜓は奇劙だず思いたす。クむックダンプの問題は玔粋にナヌザヌ暩利の問題であり、バグではありたせんが、3618でパスを倉曎したす。

3618のコヌドを曎新したした。 testmod_dumpでも同様のコヌドを芋぀けお、それを倉曎したした。 わからない、なぜそれがあなたのために倱敗しなかったのか。 testmod_xmltoolでも同様の問題が発生する可胜性がありたすただし、コヌドが異なるため、倉曎したせんでした。

testmod_quickdumpは、バむナリファむルを䜿甚したため、 compare_line_filesを䜿甚しなかったものの1぀にのみ適甚されたした。 したがっお、他のナヌザヌはセグメンテヌション違反になりたせんが、テストは倱敗するはずです。

クむックダンプの問題は玔粋にナヌザヌ暩利の問題であり、バグではありたせん。

これはFHSの違反であり、アプリケヌションは/ usrに曞き蟌むこずは想定されおおらず、読み取り専甚である可胜性もありたす。

曞き蟌みには、䞀時ファむルのみを䜿甚する必芁があり、テストの終了埌にそれらをクリヌンアップする必芁もありたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡