diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 142 |
1 files changed, 92 insertions, 50 deletions
@@ -1,82 +1,124 @@ +PREFIX=rel + build all: - erl -pa ../lager/ebin -make + ./make.erl 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 + rm -rf $(PREFIX) + mkdir $(PREFIX) ./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 $(PREFIX)/catlfish - 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 +-include test/test.mk -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-prepare: + rm -r $(PREFIX)/tests || true + mkdir $(PREFIX)/tests + make tests-createca + make tests-createcert + mkdir $(PREFIX)/tests/keys + (cd $(PREFIX)/tests/keys ; ../../../tools/create-key.sh logkey) + mkdir $(PREFIX)/tests/mergedb + mkdir $(PREFIX)/tests/mergedb/chains + touch $(PREFIX)/tests/mergedb/logorder + mkdir $(PREFIX)/tests/known_roots + cp tools/testcerts/roots/* $(PREFIX)/tests/known_roots + @for machine in $(MACHINES); do \ + (cd $(PREFIX); ../tools/compileconfig.py --config=../test/catlfish-test.cfg --localconfig ../test/catlfish-test-local-$$machine.cfg) ; \ + mkdir -p $(PREFIX)/tests/machine/machine-$$machine/db ; \ + touch $(PREFIX)/tests/machine/machine-$$machine/db/index ; \ + touch $(PREFIX)/tests/machine/machine-$$machine/db/newentries ; \ + done + (cd $(PREFIX); ../tools/compileconfig.py --config=../test/catlfish-test.cfg --localconfig ../test/catlfish-test-local-signing.cfg) + mkdir $(PREFIX)/tests/privatekeys + mkdir $(PREFIX)/tests/publickeys + @for node in $(NODES); do \ + (cd $(PREFIX)/tests/privatekeys ; ../../../tools/create-key.sh $$node) ; \ + mv $(PREFIX)/tests/privatekeys/$$node.pem $(PREFIX)/tests/publickeys/ ; \ + mkdir -p test/nodes/$$node/log ; \ + done + (cd $(PREFIX)/tests/privatekeys ; ../../../tools/create-key.sh merge-1) + mv $(PREFIX)/tests/privatekeys/merge-1.pem $(PREFIX)/tests/publickeys/ 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") \ + (cd $(PREFIX) ; 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 $$testurl > /dev/null ; then : ; else allstarted=0 ; fi ; \ + if curl -s -k -4 https://$$testurl > /dev/null ; then : ; else allstarted=0 ; notstarted="$$testurl $$notstarted" ; fi ; \ : ; \ done ; \ - if [ $$allstarted -eq 1 ]; then break ; fi ; \ + if [ $$allstarted -eq 1 ]; then break ; \ + elif [ $$i -eq 10 ]; then echo Not started: $$notstarted ; 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 $(PREFIX) && python ../tools/testcase1.py https://localhost:8080/ tests/keys/logkey.pem) || (echo "Tests failed" ; false) + @(cd $(PREFIX) && python ../tools/fetchallcerts.py $(BASEURL) --publickey=tests/keys/logkey.pem) || (echo "Verification failed" ; false) + @(cd $(PREFIX) && rm -f submittedcerts) + @(cd $(PREFIX) && 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 $(PREFIX) && 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 $(PREFIX) && 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 $(PREFIX) && 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 $(PREFIX) && 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 $(PREFIX) && 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 $(PREFIX) && 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 $(PREFIX) && python ../tools/merge.py --config ../test/catlfish-test.cfg --localconfig ../test/catlfish-test-local-merge.cfg) || (echo "Merge failed" ; false) + +tests-run2: + @(cd $(PREFIX) ; 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 ./rel/bin/to_erl test/nodes/$$node/ ; \ + ./tools/halt.py to_erl test/nodes/$$node/ ; \ done tests-wait: sleep 5 -tests: tests-prepare tests-start tests-run tests-wait tests-stop +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 + +tests-createca: + mkdir $(PREFIX)/tests/httpsca + ( cd $(PREFIX)/tests/httpsca ; \ + mkdir -p demoCA/newcerts ; \ + touch demoCA/index.txt ; \ + echo 00 > demoCA/serial ; \ + echo '[ req ]' > caconfig.txt ; \ + echo 'distinguished_name = req_distinguished_name' >> caconfig.txt ; \ + echo 'x509_extensions = v3_ca' >> caconfig.txt ; \ + echo '[ req_distinguished_name ]' >> caconfig.txt ; \ + echo '[ v3_ca ]' >> caconfig.txt ; \ + echo 'basicConstraints=CA:true' >> caconfig.txt ; \ + openssl req -newkey rsa:2048 -keyout key.pem -out req.csr -nodes -subj '/countryName=SE/stateOrProvinceName=Stockholm/organizationName=Test/commonName=ca/O=ca' -config caconfig.txt ; \ + openssl ca -in req.csr -selfsign -keyfile key.pem -out demoCA/cacert.pem -batch \ + ) + +tests-createcert: + mkdir $(PREFIX)/tests/httpscert + openssl req -new -newkey rsa:2048 -keyout $(PREFIX)/tests/httpscert/httpskey-1.pem -out $(PREFIX)/tests/httpsca/httpscert-1.csr -nodes -subj '/countryName=SE/stateOrProvinceName=Stockholm/organizationName=Test/CN=localhost' + ( cd $(PREFIX)/tests/httpsca ; \ + openssl ca -in httpscert-1.csr -keyfile key.pem -out httpscert-1.pem -batch \ + ) + cp $(PREFIX)/tests/httpsca/httpscert-1.pem $(PREFIX)/tests/httpscert/ + # Unit testing. check: all |