summaryrefslogtreecommitdiff
path: root/Makefile
blob: 261def19b69fcabb4a3a1b57dbd3233394daf5b9 (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
RELDIR=rel

build all:
	./make.erl
clean:
	-rm ebin/*.beam
release: all
	rm -rf $(RELDIR)
	mkdir $(RELDIR)
	./makerelease.erl
	mkdir $(RELDIR)/catlfish
	cp -r webroot $(RELDIR)/catlfish

-include test/test.mk

tests-prepare:
	rm -r $(RELDIR)/tests || true
	mkdir $(RELDIR)/tests
	mkdir $(RELDIR)/tests/keys
	(cd $(RELDIR)/tests/keys ; ../../../tools/create-key.sh logkey)
	mkdir $(RELDIR)/tests/mergedb
	mkdir $(RELDIR)/tests/mergedb/chains
	touch $(RELDIR)/tests/mergedb/logorder
	mkdir $(RELDIR)/tests/known_roots
	cp tools/testcerts/roots/* $(RELDIR)/tests/known_roots
	cp -r test/config/privatekeys $(RELDIR)/tests
	cp -r test/config/publickeys $(RELDIR)/tests
	@for machine in $(MACHINES); do \
	  (cd $(RELDIR); ../tools/compileconfig.py --config=../test/catlfish-test.cfg --localconfig ../test/catlfish-test-local-$$machine.cfg) ; \
	  mkdir -p $(RELDIR)/tests/machine/machine-$$machine/db ; \
	  touch $(RELDIR)/tests/machine/machine-$$machine/db/index ; \
	  touch $(RELDIR)/tests/machine/machine-$$machine/db/newentries ; \
	done
	(cd $(RELDIR); ../tools/compileconfig.py --config=../test/catlfish-test.cfg --localconfig ../test/catlfish-test-local-signing.cfg)
	@for node in $(NODES); do \
	  mkdir -p test/nodes/$$node/log ; \
	done

tests-start:
	@for node in $(NODES); do \
	  (cd $(RELDIR) ; 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 ; \
	  notstarted= ; \
	  for testurl in $(TESTURLS); do \
	    if curl -s -k -4 https://$$testurl > /dev/null ; then : ; else allstarted=0 ; notstarted="$$testurl $$notstarted" ; fi ; \
	    : ; \
	  done ; \
	  if [ $$allstarted -eq 1 ]; then break ; \
	  elif [ $$i -eq 10 ]; then echo Not started: $$notstarted ; fi ; \
	done

tests-run:
	@(cd $(RELDIR) && python ../tools/testcase1.py https://localhost:8080/ tests/keys/logkey.pem) || (echo "Tests failed" ; false)
	@(cd $(RELDIR) && python ../tools/fetchallcerts.py $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Verification failed" ; false)
	@(cd $(RELDIR) && rm -f submittedcerts)
	@(cd $(RELDIR) && python ../tools/submitcert.py --parallel=1 --store ../tools/testcerts/cert1.txt --check-sct --sct-file=submittedcerts $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Submission failed" ; false)
	@(cd $(RELDIR) && python ../tools/submitcert.py --parallel=1 --store ../tools/testcerts/cert2.txt --check-sct --sct-file=submittedcerts $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Submission failed" ; false)
	@(cd $(RELDIR) && python ../tools/submitcert.py --parallel=1 --store ../tools/testcerts/cert3.txt --check-sct --sct-file=submittedcerts $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Submission failed" ; false)
	@(cd $(RELDIR) && python ../tools/submitcert.py --parallel=1 --store ../tools/testcerts/cert4.txt --check-sct --sct-file=submittedcerts $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Submission failed" ; false)
	@(cd $(RELDIR) && python ../tools/submitcert.py --parallel=1 --store ../tools/testcerts/cert5.txt --check-sct --sct-file=submittedcerts $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Submission failed" ; false)
	@(cd $(RELDIR) && python ../tools/submitcert.py --parallel=1 --store ../tools/testcerts/pre1.txt --check-sct --sct-file=submittedcerts $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Submission failed" ; false)
	@(cd $(RELDIR) && python ../tools/submitcert.py --parallel=1 --store ../tools/testcerts/pre2.txt --check-sct --sct-file=submittedcerts $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Submission failed" ; false)
	@(cd $(RELDIR) && python ../tools/merge.py --config ../test/catlfish-test.cfg --localconfig ../test/catlfish-test-local-merge.cfg) || (echo "Merge failed" ; false)

tests-run2:
	@(cd $(RELDIR) ; python ../tools/verifysct.py --sct-file=submittedcerts --parallel 1 $(BASEURL) --publickey=tests/keys/logkey.pem) || echo "Verification of SCT:s failed"

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

tests-wait:
	sleep 5

tests:
	tools/compileconfig.py --config=test/catlfish-test.cfg --testmakefile=test/test.mk --machines 1
	@make tests-prepare
	@make tests-start
	@make tests-run || (make tests-stop ; false)
	@make tests-wait
	@make tests-stop
	@make tests-wait
	@make tests-start
	@make tests-run2 || (make tests-stop ; false)
	@make tests-wait
	@make tests-stop

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