ligo/test/Makefile
2017-01-19 10:21:21 +01:00

286 lines
6.3 KiB
Makefile

TESTS := \
data-encoding \
store context state \
basic basic.sh \
p2p-io-scheduler
all: test
INCLUDES = $(patsubst %, -I %, $(SOURCE_DIRECTORIES) lib)
OCAMLFLAGS = \
-g -safe-string -w -40 \
${INCLUDES} \
$(patsubst %, -package %, $(PACKAGES)) \
${EXTRA_OCAMLFLAGS}
SOURCE_DIRECTORIES := \
lib \
$(addprefix ../src/, \
minutils \
utils \
compiler \
node/db \
node/net \
node/updater \
node/shell \
proto \
)
PACKAGES := \
base64 \
calendar \
cohttp.lwt \
compiler-libs.optcomp \
config-file \
cstruct \
dynlink \
ezjsonm \
git \
irmin.unix \
lwt \
lwt.unix \
mtime.os \
ocplib-endian \
ocplib-ocamlres \
ocplib-json-typed.bson \
ocplib-resto.directory \
sodium \
unix \
kaputt \
ifeq ($(strip ${COVERAGE}),yes)
PACKAGES += bisect_ppx.runtime
endif
############################################################################
## External packages
NODELIB := \
../src/minutils.cmxa ../src/utils.cmxa \
../src/compiler.cmxa ../src/node.cmxa
CLIENTLIB := ../src/client.cmxa \
$(patsubst ../src/client/embedded/%/, \
../src/proto/client_embedded_proto_%.cmxa, \
$(shell ls -d ../src/client/embedded/*/)) \
$(patsubst ../src/client/embedded/%/, \
../src/client/embedded/client_%.cmx, \
$(shell ls -d ../src/client/embedded/*/))
${NODELIB} ${CLIENTLIB}:
${MAKE} -C ../src $@
.PHONY: build-test run-test test
build-test: ${addprefix build-test-,${TESTS}}
run-test:
@$(patsubst %,${MAKE} run-test-% ; , ${TESTS}) \
echo && echo "Success" && echo
test:
@${MAKE} --no-print-directory build-test
@${MAKE} --no-print-directory run-test
############################################################################
## Store test program
.PHONY:build-test-store run-test-store
build-test-store: test-store
run-test-store:
./test-store
TEST_STORE_INTFS =
TEST_STORE_IMPLS = \
lib/assert.ml \
lib/test.ml \
test_store.ml
${TEST_STORE_IMPLS:.ml=.cmx}: ${NODELIB}
test-store: ${NODELIB} ${TEST_STORE_IMPLS:.ml=.cmx}
ocamlfind ocamlopt -linkall -linkpkg ${OCAMLFLAGS} -o $@ $^
clean::
rm -f test-store
############################################################################
## Context test program
.PHONY:build-test-context run-test-context
build-test-context: test-context
run-test-context:
./test-context
TEST_CONTEXT_INTFS =
TEST_CONTEXT_IMPLS = \
lib/assert.ml \
lib/test.ml \
test_context.ml
${TEST_CONTEXT_IMPLS:.ml=.cmx}: ${NODELIB}
test-context: ${NODELIB} ${TEST_CONTEXT_IMPLS:.ml=.cmx}
ocamlfind ocamlopt -linkall -linkpkg ${OCAMLFLAGS} -o $@ $^
clean::
rm -f test-context
############################################################################
## State test program
.PHONY:build-test-state run-test-state
build-test-state: test-state
run-test-state:
./test-state
TEST_STATE_INTFS =
TEST_STATE_IMPLS = \
lib/assert.ml \
lib/test.ml \
test_state.ml
${TEST_STATE_IMPLS:.ml=.cmx}: ${NODELIB}
test-state: ${NODELIB} ../src/proto/embedded_proto_demo.cmxa ${TEST_STATE_IMPLS:.ml=.cmx}
ocamlfind ocamlopt -linkall -linkpkg ${OCAMLFLAGS} -o $@ $^
clean::
rm -f test-state
############################################################################
## Basic-client-functionality test program
.PHONY:build-test-basic.sh run-test-basic.sh
build-test-basic.sh:
run-test-basic.sh:
./test-basic.sh
.PHONY:build-test-basic run-test-basic
build-test-basic: test-basic
run-test-basic:
./test-basic
TEST_BASIC_INTFS =
TEST_BASIC_IMPLS = \
lib/assert.ml \
lib/test.ml \
test_basic.ml
test-basic \
${TEST_BASIC_IMPLS:.ml=.cmx}: \
SOURCE_DIRECTORIES+=../src/client ../src/client/embedded/
${TEST_BASIC_IMPLS:.ml=.cmx}: ${NODELIB} ${CLIENTLIB}
test-basic: ${NODELIB} ${CLIENTLIB} ${TEST_BASIC_IMPLS:.ml=.cmx}
ocamlfind ocamlopt -linkall -linkpkg ${OCAMLFLAGS} -o $@ $^
clean::
rm -f test-basic
############################################################################
## p2p test program
.PHONY:build-test-io_schduler
build-test-p2p-io-scheduler: test-p2p-io-scheduler
run-test-p2p-io-scheduler:
./test-p2p-io-scheduler \
--delay 20 --clients 8 \
--max-upload-speed $$((1 << 18)) \
--max-download-speed $$((1 << 20))
TEST_P2P_IO_SCHEDULER_IMPLS = \
lib/process.ml \
test_p2p_io_scheduler.ml
${TEST_P2P_IO_SCHEDULER_IMPLS:.ml=.cmx}: ${NODELIB}
test-p2p-io-scheduler: ${NODELIB} ${TEST_P2P_IO_SCHEDULER_IMPLS:.ml=.cmx}
ocamlfind ocamlopt -linkall -linkpkg ${OCAMLFLAGS} -o $@ $^
clean::
rm -f test-p2p-io_scheduler
############################################################################
## lwt pipe test program
build-test-lwt-pipe: test-lwt-pipe
TEST_PIPE_IMPLS = \
test_lwt_pipe.ml
${TEST_BASIC_IMPLS:.ml=.cmx}: ${NODELIB}
test-lwt-pipe: ${NODELIB} ${TEST_PIPE_IMPLS:.ml=.cmx}
ocamlfind ocamlopt -linkall -linkpkg ${OCAMLFLAGS} -o $@ $^
clean::
rm -f test-p2p
############################################################################
## data encoding test program
.PHONY:build-test-data-encoding run-test-data-encoding
build-test-data-encoding: test-data-encoding
run-test-data-encoding:
./test-data-encoding
TEST_DATA_ENCODING_INTFS =
TEST_DATA_ENCODING_IMPLS = \
lib/assert.ml \
lib/test.ml \
test_data_encoding.ml
${TEST_DATA_ENCODING_IMPLS:.ml=.cmx}: ${NODELIB}
test-data-encoding: ${NODELIB} ${TEST_DATA_ENCODING_IMPLS:.ml=.cmx}
ocamlfind ocamlopt -linkall -linkpkg ${OCAMLFLAGS} -o $@ $^
clean::
rm -f test-data-encoding
COVERAGESRCDIR= \
-I ../src \
-I ../src/client \
-I ../src/client/embedded \
-I ../src/client/embedded/bootstrap \
-I ../src/client/embedded/bootstrap/mining \
-I ../src/compiler \
-I ../src/node \
-I ../src/node/db \
-I ../src/node/updater \
-I ../src/node/net \
-I ../src/node/shell \
-I ../src/proto \
-I ../src/proto/bootstrap \
-I ../src/proto/demo \
-I ../src/minutils \
-I ../src/utils
bisect:
bisect-ppx-report $(COVERAGESRCDIR) \
-ignore-missing-files -html reports bisect*.out
############################################################################
## Generic rules
test.cmx: test.cmi
%.cmx: %.ml
ocamlfind ocamlopt ${OCAMLFLAGS} -c $<
%.cmo: %.ml
ocamlfind ocamlc ${OCAMLFLAGS} -c $<
%.cmi: %.mli
ocamlfind ocamlc ${OCAMLFLAGS} -c $<
clean::
-rm -f *.cm* lib/*.cm* *.out *.o
-include .depend
.depend: $(wildcard *.ml *.mli lib/*.ml lib/*.mli)
ocamldep -I lib $^ > .depend
clean::
-rm .depend