OpenSSLテストバーで特定のテストを実行するにはどうすればよいですか?

OpenSSLテストバーで特定のテストを実行するにはどうすればよいですか?

OpenSSLテストスイートでさまざまなテストのコードカバレッジを測定したいと思います。

以下の方法を使用して、テストの全適用範囲を首尾よく測定した。

$ make clean
$ export CC="gcc -fprofile-arcs -ftest-coverage"; ./config enable-unit-test
$ make
$ make tests
... then run gcov to create the .gcov files

(その後、OpenSSLサブフォルダのCファイルからgcovを実行できます)

これはコマンドの結果ですmake tests

https://github.com/istvanbohm/OpenSSLUnitTests/blob/master/TestResult

ただし、特定のテストを1つだけ実行することはできません(誰も機能しません)。

$ make clean
$ export CC="gcc -fprofile-arcs -ftest-coverage"; ./config enable-unit-test
$ make
$ make TESTS="bntest" test 

最後のコマンドで次の結果が得られました。

blackcat@ubuntu:~/my_project/projects/openssl-1.0.0$ make TESTS="bntest" test
testing...
make[1]: Entering directory `/home/blackcat/my_project/projects/openssl-1.0.0/test'
make[2]: Entering directory `/home/blackcat/my_project/projects/openssl-1.0.0'
making all in apps...
make[3]: Entering directory `/home/blackcat/my_project/projects/openssl-1.0.0/apps'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/blackcat/my_project/projects/openssl-1.0.0/apps'
make[2]: Leaving directory `/home/blackcat/my_project/projects/openssl-1.0.0'
make[1]: Leaving directory `/home/blackcat/my_project/projects/openssl-1.0.0/test'
OPENSSL_CONF=apps/openssl.cnf util/opensslwrap.sh version -a
OpenSSL 1.0.0 29 Mar 2010
built on: Wed Jul 29 12:40:53 CEST 2015
platform: linux-x86_64
options:  bn(64,64) rc4(1x,char) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: gcc -fprofile-arcs -ftest-coverage -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DWHIRLPOOL_ASM
OPENSSLDIR: "/usr/local/ssl"
blackcat@ubuntu:~/my_project/projects/openssl-1.0.0$

他のテストも試しましたが、結果は同じでした。なぜ?

テストをforループに入れて別のテストで呼び出し続けたいので、これを実行したいと思います(この部分は準備ができています)。

ベストアンサー1

/test/Makefile ファイルを誤解しました。最初にリストがありますが、必要なパラメーター名ではありません。

BNTEST=     bntest
ECTEST=     ectest
ECDSATEST=  ecdsatest
ECDHTEST=   ecdhtest
EXPTEST=    exptest
IDEATEST=   ideatest
SHA1TEST=   sha1test
SHA256TEST= sha256t
SHA512TEST= sha512t
MDC2TEST=   mdc2test
RMDTEST=    rmdtest
MD2TEST=    md2test
MD4TEST=    md4test
MD5TEST=    md5test
HMACTEST=   hmactest
WPTEST=     wp_test
RC2TEST=    rc2test
RC4TEST=    rc4test
RC5TEST=    rc5test
BFTEST=     bftest
CASTTEST=   casttest
DESTEST=    destest
GOST2814789TEST=gost2814789test
RANDTEST=   randtest
DHTEST=     dhtest
DSATEST=    dsatest
SSLTEST=    ssltest
RSATEST=    rsa_test
ENGINETEST= enginetest
EVPTEST=    evp_test
EVPEXTRATEST=evp_extra_test
P5_CRPT2_TEST=  p5_crpt2_test
IGETEST=    igetest
JPAKETEST=  jpaketest
SECMEMTEST= secmemtest
SRPTEST=    srptest
V3NAMETEST= v3nametest
HEARTBEATTEST=  heartbeat_test
CONSTTIMETEST=  constant_time_test
VERIFYEXTRATEST=    verify_extra_test
CLIENTHELLOTEST=    clienthellotest

ファイルをもう少し詳しく確認してみてください。特にalltestsタグ。

alltests: \
    test_des test_idea test_sha test_md4 test_md5 test_hmac \
    test_md2 test_mdc2 test_wp \
    test_rmd test_rc2 test_rc4 test_rc5 test_bf test_cast test_aes \
    test_rand test_bn test_ec test_ecdsa test_ecdh \
    test_enc test_x509 test_rsa test_crl test_sid \
    test_gen test_req test_pkcs7 test_verify test_dh test_dsa \
    test_ss test_ca test_engine test_evp test_ssl test_tsa test_ige \
    test_jpake test_cms

ここでテスト名を見つけることができます。したがって、正しい使用法は次のとおりです。

$ make clean
$ export CC="gcc -fprofile-arcs -ftest-coverage"; ./config enable-unit-test
$ make
$ make TESTS="test_cms" test 

おすすめ記事