ligo/test/Makefile
2017-02-25 18:14:05 +01:00

331 lines
7.9 KiB
Makefile

TESTS := \
data-encoding \
store context state \
basic basic.sh \
p2p-io-scheduler \
p2p-connection \
p2p-connection-pool
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 \
ipv6-multicast \
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-p2p-io-scheduler run-test-p2p-io-scheduler
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))
.PHONY:build-test-p2p-connection run-test-p2p-connection
build-test-p2p-connection: test-p2p-connection
run-test-p2p-connection:
./test-p2p-connection
.PHONY:build-test-p2p-connection-pool run-test-p2p-connection-pool
build-test-p2p-connection-pool: test-p2p-connection-pool
run-test-p2p-connection-pool:
./test-p2p-connection-pool --clients 10 --repeat 5
TEST_P2P_IO_SCHEDULER_IMPLS = \
lib/process.ml \
test_p2p_io_scheduler.ml
TEST_P2P_CONNECTION_IMPLS = \
lib/process.ml \
test_p2p_connection.ml
TEST_P2P_CONNECTION_POOL_IMPLS = \
lib/process.ml \
test_p2p_connection_pool.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 $@ $^
${TEST_P2P_CONNECTION_IMPLS:.ml=.cmx}: ${NODELIB}
test-p2p-connection: ${NODELIB} ${TEST_P2P_CONNECTION_IMPLS:.ml=.cmx}
ocamlfind ocamlopt -linkall -linkpkg ${OCAMLFLAGS} -o $@ $^
${TEST_P2P_CONNECTION_POOL_IMPLS:.ml=.cmx}: ${NODELIB}
test-p2p-connection-pool: ${NODELIB} ${TEST_P2P_CONNECTION_POOL_IMPLS:.ml=.cmx}
ocamlfind ocamlopt -linkall -linkpkg ${OCAMLFLAGS} -o $@ $^
clean::
-rm -f test-p2p-io_scheduler
-rm -f test-p2p-connection
-rm -f test-p2p-connection-pool
############################################################################
## 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/alpha \
-I ../src/client/embedded/alpha/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/alpha \
-I ../src/proto/demo \
-I ../src/minutils \
-I ../src/utils
bisect:
bisect-ppx-report $(COVERAGESRCDIR) \
-ignore-missing-files -html reports bisect*.out
#####
generate_hash: ../src/minutils/utils.cmx ../src/minutils/compare.cmx ../src/minutils/mBytes.cmx ../src/utils/base58.cmx ../src/minutils/hex_encode.cmx ../src/minutils/data_encoding.cmx ../src/utils/cli_entries.cmx ../src/utils/hash.cmx generate_hash.ml
ocamlfind ocamlopt -o $@ -linkpkg -package cstruct -package zarith -package ezjsonm -package sodium -package ocplib-json-typed.bson -package lwt.unix -package nocrypto -I ../src/utils/ -I ../src/minutils $^
#####
lib/assert.cmx: lib/assert.cmi
lib/assert.cmi: ../src/node/db/persist.cmi
lib/process.cmx: lib/process.cmi
lib/test.cmx: lib/test.cmi
############################################################################
## 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