mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
tools/ocaml: Gitlab CI test for bindings
... as building and interpreting Ocaml objects in C is rather fragile. For C producing objects for Ocaml to consume, one trick to check validity is Gc.compact() which forces a major sweep, walking all objects. If this doesn't segfault, then we at least got the pointer <-> integer aspects right. For now, start with a very simple version call. (Re)introduce tools/ocaml/tests and add test-ocaml-bindings which is installed into $(DESTDIR)$(LIBEXEC)/tests to be picked up automatically with the other dom0 tests. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Andrii Sultanov <andriy.sultanov@vates.tech>
This commit is contained in:
1 parent
7f18907452
commit
d97847e858
5 files changed
+63
No files matched your search
@@ -3,6 +3,7 @@ include $(XEN_ROOT)/tools/Rules.mk
|
|||||||
|
|
||||||
SUBDIRS := libs
|
SUBDIRS := libs
|
||||||
SUBDIRS += xenstored
|
SUBDIRS += xenstored
|
||||||
|
SUBDIRS += tests
|
||||||
|
|
||||||
.NOTPARALLEL:
|
.NOTPARALLEL:
|
||||||
# targets here must be run in order, otherwise we can try
|
# targets here must be run in order, otherwise we can try
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
XEN_ROOT = $(CURDIR)/../../..
|
||||||
|
include $(XEN_ROOT)/tools/Rules.mk
|
||||||
|
|
||||||
|
SUBDIRS-y :=
|
||||||
|
SUBDIRS-y += bindings
|
||||||
|
|
||||||
|
.PHONY: all clean install distclean uninstall
|
||||||
|
all clean distclean install uninstall: %: subdirs-%
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
test-ocaml-bindings
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
XEN_ROOT = $(CURDIR)/../../../..
|
||||||
|
OCAML_TOPLEVEL = $(CURDIR)/../..
|
||||||
|
include $(OCAML_TOPLEVEL)/common.make
|
||||||
|
|
||||||
|
OBJS = main
|
||||||
|
|
||||||
|
OCAMLINCLUDE += \
|
||||||
|
-I $(OCAML_TOPLEVEL)/libs/xb \
|
||||||
|
-I $(OCAML_TOPLEVEL)/libs/mmap \
|
||||||
|
-I $(OCAML_TOPLEVEL)/libs/xc \
|
||||||
|
-I $(OCAML_TOPLEVEL)/libs/eventchn
|
||||||
|
|
||||||
|
LIBS = \
|
||||||
|
unix.cmxa \
|
||||||
|
-ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/mmap $(OCAML_TOPLEVEL)/libs/mmap/xenmmap.cmxa \
|
||||||
|
-ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/eventchn $(OCAML_TOPLEVEL)/libs/eventchn/xeneventchn.cmxa \
|
||||||
|
-ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/xc $(OCAML_TOPLEVEL)/libs/xc/xenctrl.cmxa \
|
||||||
|
-ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/xb $(OCAML_TOPLEVEL)/libs/xb/xenbus.cmxa \
|
||||||
|
-ccopt -L -ccopt $(XEN_ROOT)/tools/libs/ctrl
|
||||||
|
|
||||||
|
PROGRAMS = test-ocaml-bindings
|
||||||
|
OCAML_PROGRAM = test-ocaml-bindings
|
||||||
|
|
||||||
|
test-ocaml-bindings_LIBS = $(LIBS)
|
||||||
|
test-ocaml-bindings_MLSORTED = $(shell $(OCAMLDEP) -sort $(OBJS:=.ml))
|
||||||
|
test-ocaml-bindings_OBJS = $(test-ocaml-bindings_MLSORTED:.ml=)
|
||||||
|
|
||||||
|
all: test-ocaml-bindings
|
||||||
|
|
||||||
|
install: all
|
||||||
|
$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC)/tests
|
||||||
|
$(INSTALL_PROG) test-ocaml-bindings $(DESTDIR)$(LIBEXEC)/tests
|
||||||
|
|
||||||
|
include $(OCAML_TOPLEVEL)/Makefile.rules
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
open Printf
|
||||||
|
|
||||||
|
let xch = Xenctrl.interface_open ()
|
||||||
|
|
||||||
|
let test_xenversion () =
|
||||||
|
let ver = Xenctrl.version xch in
|
||||||
|
printf "Xen version: %d.%d%s\n" ver.major ver.minor ver.extra
|
||||||
|
|
||||||
|
|
||||||
|
let () =
|
||||||
|
printf "Test Ocaml Bindings\n%!";
|
||||||
|
|
||||||
|
test_xenversion ();
|
||||||
|
|
||||||
|
printf "Starting GC.compact()\n%!";
|
||||||
|
Gc.compact ();
|
||||||
|
printf "GC done\n";
|
||||||
|
|
||||||
|
()
|
||||||