]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
tests: mock gnutls_dh_params_generate2
authorJán Tomko <jtomko@redhat.com>
Thu, 16 Jun 2016 06:54:27 +0000 (08:54 +0200)
committerJán Tomko <jtomko@redhat.com>
Mon, 20 Jun 2016 16:12:53 +0000 (18:12 +0200)
This function generates some big random numbers.

Cache the result and supply it to any subsequent generate2 calls.

tests/virnettlscontexttest.c
tests/virnettlssessiontest.c
tests/virrandommock.c

index b062be6d9d35ca66cf00ad61184c7ec271c86726..9f62413eed503db4f495864b75dbcefc55125ec0 100644 (file)
@@ -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
 
index 47fbec608fb9fb5e6030d13ce76000643503d510..0d2e106e84cb32138c582b9601e6411538173016 100644 (file)
@@ -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
 
index 6df5e20e8fdbcfb5b39705475fe5f20ac97874f6..1f2434e248e66212fe838b2d91aaf2ee67e86afa 100644 (file)
@@ -37,3 +37,43 @@ virRandomBytes(unsigned char *buf,
 
     return 0;
 }
+
+
+#ifdef WITH_GNUTLS
+# include <stdio.h>
+# include <gnutls/gnutls.h>
+
+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(&params_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