summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile142
1 files changed, 92 insertions, 50 deletions
diff --git a/Makefile b/Makefile
index d124325..51fd786 100644
--- a/Makefile
+++ b/Makefile
@@ -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