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