diff --git a/tests/virnettlscontexttest.c b/tests/virnettlscontexttest.c index b062be6d9d..9f62413eed 100644 --- a/tests/virnettlscontexttest.c +++ b/tests/virnettlscontexttest.c @@ -633,7 +633,7 @@ mymain(void) return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE; } -VIRT_TEST_MAIN(mymain) +VIRT_TEST_MAIN_PRELOAD(mymain, abs_builddir "/.libs/virrandommock.so") #else diff --git a/tests/virnettlssessiontest.c b/tests/virnettlssessiontest.c index 47fbec608f..0d2e106e84 100644 --- a/tests/virnettlssessiontest.c +++ b/tests/virnettlssessiontest.c @@ -487,7 +487,7 @@ mymain(void) return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE; } -VIRT_TEST_MAIN(mymain) +VIRT_TEST_MAIN_PRELOAD(mymain, abs_builddir "/.libs/virrandommock.so") #else diff --git a/tests/virrandommock.c b/tests/virrandommock.c index 6df5e20e8f..1f2434e248 100644 --- a/tests/virrandommock.c +++ b/tests/virrandommock.c @@ -37,3 +37,43 @@ virRandomBytes(unsigned char *buf, return 0; } + + +#ifdef WITH_GNUTLS +# include +# include + +static int (*real_gnutls_dh_params_generate2)(gnutls_dh_params_t dparams, + unsigned int bits); + +static gnutls_dh_params_t params_cache; +static unsigned int cachebits; + +int +gnutls_dh_params_generate2(gnutls_dh_params_t dparams, + unsigned int bits) +{ + int rc = 0; + + VIR_MOCK_REAL_INIT(gnutls_dh_params_generate2); + + if (!params_cache) { + if (gnutls_dh_params_init(¶ms_cache) < 0) { + fprintf(stderr, "Error initializing params cache"); + abort(); + } + rc = real_gnutls_dh_params_generate2(params_cache, bits); + + if (rc < 0) + return rc; + cachebits = bits; + } + + if (cachebits != bits) { + fprintf(stderr, "Requested bits do not match the cached value"); + abort(); + } + + return gnutls_dh_params_cpy(dparams, params_cache); +} +#endif