summaryrefslogtreecommitdiff
path: root/Makefile
blob: e1a81fbe8c487929e051b29142192852a4964de2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
build all:
	erl -pa ../lager/ebin -make
clean:
	-rm ebin/*.beam
release: all
	test ! -f rel/db/treesize || \
		test $$(cat rel/db/treesize) = 0 && \
		rm -rf rel
	rm -rf rel
	mkdir rel
	./makerelease.erl
	(cd rel; \
		ln -s ../../plop/test .)
	cp httpd_props.conf rel
	cp catlfish.config rel
	cp storage_node.config rel
	cp storage_node_httpd.conf rel
	mkdir rel/catlfish
	mkdir rel/db
	mkdir rel/mergedb
	mkdir rel/mergedb/chains
	touch rel/mergedb/logorder
	printf "0" > rel/db/treesize
	cp -r webroot rel/catlfish
	test -d rel/catlfish/webroot/log || mkdir rel/catlfish/webroot/log

tests-prepare:
	rm -r rel/known_roots || true
	mkdir rel/known_roots
	cp tools/testcerts/roots/* rel/known_roots

	mkdir -p test/nodes/frontend-1/log
	mkdir -p test/nodes/storage-1/log
	mkdir -p test/nodes/storage-2/log
	mkdir -p test/nodes/signing-1/log
	cp test/config/frontend-1.config rel
	cp test/config/storage-1.config rel
	cp test/config/signing-1.config rel
	cp -r test/config/privatekeys rel
	cp -r test/config/publickeys rel
	rm -r rel/tests || true
	mkdir -p rel/tests/machine/machine-1/db
	printf "0" > rel/tests/machine/machine-1/db/treesize
	mkdir -p rel/tests/machine/machine-2/db
	printf "0" > rel/tests/machine/machine-2/db/treesize
	touch rel/tests/machine/machine-1/db/index
	touch rel/tests/machine/machine-1/db/newentries

NODES=frontend-1 storage-1 signing-1
TESTURLS=https://127.0.0.1:8080/ https://127.0.0.1:8081/ https://127.0.0.1:8082/ https://127.0.0.1:8088/

tests-start:
	@for node in $(NODES); do \
	  (cd rel ; bin/run_erl -daemon ../test/nodes/$$node/ ../test/nodes/$$node/log/ "exec bin/erl -config $$node") \
	done
	@for i in 1 2 3 4 5 6 7 8 9 10; do \
	  echo "waiting for system to start" ; \
	  sleep 0.5 ; \
	  allstarted=1 ; \
	  for testurl in $(TESTURLS); do \
	    if curl -s -k $$testurl > /dev/null ; then : ; else allstarted=0 ; fi ; \
	    : ; \
	  done ; \
	  if [ $$allstarted -eq 1 ]; then break ; fi ; \
	done

tests-run:
	@(cd tools ; python testcase1.py ) || echo "Tests failed"
	@(cd tools ; python fetchallcerts.py https://127.0.0.1:8080/) || echo "Verification failed"
	@(cd tools ; python submitcert.py --store testcerts/cert1.txt --check-sct --sct-file=../rel/submittedcerts https://127.0.0.1:8080/) || echo "Submission failed"
	@(cd tools ; python submitcert.py --store testcerts/cert2.txt --check-sct --sct-file=../rel/submittedcerts https://127.0.0.1:8080/) || echo "Submission failed"
	@(cd tools ; python submitcert.py --store testcerts/cert3.txt --check-sct --sct-file=../rel/submittedcerts https://127.0.0.1:8080/) || echo "Submission failed"
	@(cd tools ; python submitcert.py --store testcerts/cert4.txt --check-sct --sct-file=../rel/submittedcerts https://127.0.0.1:8080/) || echo "Submission failed"
	@(cd tools ; python submitcert.py --store testcerts/cert5.txt --check-sct --sct-file=../rel/submittedcerts https://127.0.0.1:8080/) || echo "Submission failed"
	@(cd tools ; python submitcert.py --store testcerts/pre1.txt --check-sct --sct-file=../rel/submittedcerts https://127.0.0.1:8080/) || echo "Submission failed"
	@(cd tools ; python submitcert.py --store testcerts/pre2.txt --check-sct --sct-file=../rel/submittedcerts https://127.0.0.1:8080/) || echo "Submission failed"
	@(cd tools ; python merge.py --baseurl https://127.0.0.1:8080/ --frontend https://127.0.0.1:8082/ --storage https://127.0.0.1:8081/ --mergedb ../rel/mergedb --signing https://127.0.0.1:8088/ --own-keyname merge-1 --own-keyfile ../rel/privatekeys/merge-1-private.pem) || echo "Merge failed"

tests-run2:
	@(cd tools ; python verifysct.py --sct-file=../rel/submittedcerts --parallel 1 https://127.0.0.1:8080/) || echo "Verification of SCT:s failed"

tests-stop:
	@for node in $(NODES); do \
	  ./tools/halt.py ./rel/bin/to_erl test/nodes/$$node/ ; \
	done

tests-wait:
	sleep 5

tests:
	@make tests-prepare
	@make tests-start
	@make tests-run
	@make tests-wait
	@make tests-stop
	@make tests-wait
	@make tests-start
	@make tests-run2
	@make tests-wait
	@make tests-stop

# Unit testing.
check: all
	test/check.erl