summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorWolfgang Hommel <wolfcw@users.noreply.github.com>2021-02-04 21:39:02 +0100
committerGitHub <noreply@github.com>2021-02-04 21:39:02 +0100
commit4359458c7c7a152d79363be8b1c5d9a12f66a137 (patch)
treea41d1d6ea8d841ed40807e1f2b138df4db9c44d2 /test
parent726c4657fc819348f2e8386f65811379e2e2d590 (diff)
parent206ae9ea80656b04e17a2469c26efc9c8bebf45c (diff)
downloadlibfaketime-4359458c7c7a152d79363be8b1c5d9a12f66a137.tar.gz
Merge pull request #289 from dkg/getrandom_test-cleanup
Ease build of getrandom_test
Diffstat (limited to 'test')
-rw-r--r--test/Makefile8
-rw-r--r--test/getrandom_test.c6
-rwxr-xr-xtest/randomtest.sh29
3 files changed, 39 insertions, 4 deletions
diff --git a/test/Makefile b/test/Makefile
index 3dd4517..8ee538c 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -22,8 +22,14 @@ test: timetest functest
functest:
./testframe.sh functests
+getrandom_test: getrandom_test.c
+ ${CC} -o $@ ${CFLAGS} $<
+
+randomtest: getrandom_test
+ ./randomtest.sh
+
clean:
- @rm -f ${OBJ} timetest
+ @rm -f ${OBJ} timetest getrandom_test
distclean: clean
@echo
diff --git a/test/getrandom_test.c b/test/getrandom_test.c
index b47f10d..59e13a5 100644
--- a/test/getrandom_test.c
+++ b/test/getrandom_test.c
@@ -2,13 +2,13 @@
#include <sys/random.h>
#include <stdlib.h>
-int main(int argc, char **argv) {
+int main() {
char *buf = calloc(100, 1);
size_t buflen = 100;
unsigned flags = GRND_NONBLOCK;
fprintf(stdout, "Before getrandom:\n");
- for (int i=0; i < buflen; i++) { fprintf(stdout, "%hhu ", buf[i]); }
+ for (size_t i=0; i < buflen; i++) { fprintf(stdout, "%hhu ", buf[i]); }
fprintf(stdout, "\n");
int result = getrandom(buf, buflen, flags);
@@ -17,7 +17,7 @@ int main(int argc, char **argv) {
fprintf(stdout, "After getrandom:\n");
- for (int i=0; i < buflen; i++) { fprintf(stdout, "%hhu ", buf[i]); }
+ for (size_t i=0; i < buflen; i++) { fprintf(stdout, "%hhu ", buf[i]); }
fprintf(stdout, "\n");
free(buf);
diff --git a/test/randomtest.sh b/test/randomtest.sh
new file mode 100755
index 0000000..0dee353
--- /dev/null
+++ b/test/randomtest.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+error=0
+./getrandom_test > run0
+FAKERANDOM_SEED=0x12345678DEADBEEF LD_PRELOAD=../src/libfaketime.so.1 ./getrandom_test > run1
+FAKERANDOM_SEED=0x12345678DEADBEEF LD_PRELOAD=../src/libfaketime.so.1 ./getrandom_test > run2
+FAKERANDOM_SEED=0x0000000000000000 LD_PRELOAD=../src/libfaketime.so.1 ./getrandom_test > run3
+
+
+if diff -u run0 run1 > /dev/null; then
+ error=1
+ printf >&2 'test run without a seed produced the same data as a run with a seed!\n'
+fi
+if ! diff -u run1 run2; then
+ error=2
+ printf >&2 'test runs with identical seeds differed!\n'
+fi
+if diff -u run2 run3 >/dev/null; then
+ error=3
+ printf >&2 'test runs with different seeds produced the same data!\n'
+fi
+
+rm -f run0 run1 run2 run3
+
+if [ 0 = $error ]; then
+ printf 'getrandom interception test successful.\n'
+fi
+
+exit $error