From c1333a85df41c3f636e069a8490c15484b3bd646 Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Fri, 10 Jul 2026 16:17:32 +0200 Subject: [PATCH 1/3] Add neg_tests for eio packages --- src/neg_tests/dune | 44 +++++++++++++++++++++++++ src/neg_tests/lin_internal_tests_eio.ml | 22 +++++++++++++ src/neg_tests/lin_tests_eio.ml | 22 +++++++++++++ src/neg_tests/stm_tests_clist_eio.ml | 15 +++++++++ src/neg_tests/stm_tests_ref_eio.ml | 15 +++++++++ 5 files changed, 118 insertions(+) create mode 100644 src/neg_tests/lin_internal_tests_eio.ml create mode 100644 src/neg_tests/lin_tests_eio.ml create mode 100644 src/neg_tests/stm_tests_clist_eio.ml create mode 100644 src/neg_tests/stm_tests_ref_eio.ml diff --git a/src/neg_tests/dune b/src/neg_tests/dune index fa89d9fe..885e2780 100644 --- a/src/neg_tests/dune +++ b/src/neg_tests/dune @@ -39,6 +39,17 @@ (action (run %{test} --verbose)) ) +(test + (name stm_tests_ref_eio) + (modules stm_tests_ref_eio) + (package qcheck-stm-eio) + (libraries stm_tests_ref_spec qcheck-stm-eio.domain eio eio_main) + ; Hangs with the linux backend + (action + (setenv EIO_BACKEND posix + (run %{test} --verbose))) +) + (library (name CList) (modules CList) @@ -69,6 +80,17 @@ (action (run %{test} --verbose)) ) +(test + (name stm_tests_clist_eio) + (modules stm_tests_clist_spec stm_tests_clist_eio) + (package qcheck-stm-eio) + (libraries CList qcheck-stm-eio.domain eio eio_main) + ; Hangs with the linux backend + (action + (setenv EIO_BACKEND posix + (run %{test} --verbose))) +) + ;; Linearization tests of ref and Clist with Lin (library @@ -112,6 +134,18 @@ (action (run %{test} --verbose)) ) +(test + (name lin_tests_eio) + (modules lin_tests_eio) + (package qcheck-lin-eio) + (flags (:standard -w -27)) + (libraries lin_tests_common qcheck-lin-eio.domain eio eio_main) + ; Hangs with the linux backend + (action + (setenv EIO_BACKEND posix + (run %{test} --verbose))) +) + ;; Linearization tests of ref and Clist with Lin.Internal (test @@ -143,3 +177,13 @@ ; (action (run ./%{deps} --verbose)) (action (progn)) ) + +(test + (name lin_internal_tests_eio) + (modules lin_internal_tests_eio) + (package qcheck-lin-eio) + (flags (:standard -w -27)) + (libraries lin_internal_tests_common qcheck-lin-eio.domain eio eio_main) + ; (setenv EIO_BACKEND posix (run %{test} --verbose)) + (action (progn)) +) diff --git a/src/neg_tests/lin_internal_tests_eio.ml b/src/neg_tests/lin_internal_tests_eio.ml new file mode 100644 index 00000000..983e8261 --- /dev/null +++ b/src/neg_tests/lin_internal_tests_eio.ml @@ -0,0 +1,22 @@ +open Lin_internal_tests_common + +module RT_int_domain = Lin_domain_eio.Make_internal(RConf_int) [@alert "-internal"] +module RT_int64_domain = Lin_domain_eio.Make_internal(RConf_int64) [@alert "-internal"] +module CLT_int_domain = Lin_domain_eio.Make_internal(CLConf(CList)(Int)) [@alert "-internal"] +module CLT_int64_domain = Lin_domain_eio.Make_internal(CLConf(CList)(Int64)) [@alert "-internal"] + +let () = + Eio_main.run @@ fun env -> + let domain_mgr = Eio.Stdenv.domain_mgr env in + let count = 15000 in + QCheck_base_runner.run_tests_main + [ + RT_int_domain.neg_lin_test ~domain_mgr ~count + ~name:"Lin.Internal ref int test with Eio"; + RT_int64_domain.neg_lin_test ~domain_mgr ~count + ~name:"Lin.Internal ref int64 test with Eio"; + CLT_int_domain.neg_lin_test ~domain_mgr ~count + ~name:"Lin.Internal CList int test with Eio"; + CLT_int64_domain.neg_lin_test ~domain_mgr ~count + ~name:"Lin.Internal CList int64 test with Eio"; + ] diff --git a/src/neg_tests/lin_tests_eio.ml b/src/neg_tests/lin_tests_eio.ml new file mode 100644 index 00000000..13c84654 --- /dev/null +++ b/src/neg_tests/lin_tests_eio.ml @@ -0,0 +1,22 @@ +open Lin_tests_common + +module RT_int_domain = Lin_domain_eio.Make(Ref_int_spec) +module RT_int64_domain = Lin_domain_eio.Make(Ref_int64_spec) +module CLT_int_domain = Lin_domain_eio.Make(CList_spec_int(CList)) +module CLT_int64_domain = Lin_domain_eio.Make(CList_spec_int64(CList)) + +let () = + Eio_main.run @@ fun env -> + let domain_mgr = Eio.Stdenv.domain_mgr env in + let count = 10000 in + QCheck_base_runner.run_tests_main + [ + RT_int_domain.neg_lin_test ~domain_mgr ~count + ~name:"Lin ref int test with Eio"; + RT_int64_domain.neg_lin_test ~domain_mgr ~count + ~name:"Lin ref int64 test with Eio"; + CLT_int_domain.neg_lin_test ~domain_mgr ~count + ~name:"Lin CList int test with Eio"; + CLT_int64_domain.neg_lin_test ~domain_mgr ~count + ~name:"Lin CList int64 test with Eio"; + ] diff --git a/src/neg_tests/stm_tests_clist_eio.ml b/src/neg_tests/stm_tests_clist_eio.ml new file mode 100644 index 00000000..6065af11 --- /dev/null +++ b/src/neg_tests/stm_tests_clist_eio.ml @@ -0,0 +1,15 @@ +open Stm_tests_clist_spec +module CLT_int_dom = STM_domain_eio.Make (CLConf (CList) (Int)) +module CLT_int64_dom = STM_domain_eio.Make (CLConf (CList) (Int64)) + +let () = + Eio_main.run @@ fun env -> + let domain_mgr = Eio.Stdenv.domain_mgr env in + let count = 1000 in + QCheck_base_runner.run_tests_main + [ + CLT_int_dom.neg_agree_test_par ~domain_mgr ~count + ~name:"STM int CList test parallel"; + CLT_int64_dom.neg_agree_test_par ~domain_mgr ~count + ~name:"STM int64 CList test parallel"; + ] diff --git a/src/neg_tests/stm_tests_ref_eio.ml b/src/neg_tests/stm_tests_ref_eio.ml new file mode 100644 index 00000000..5da44622 --- /dev/null +++ b/src/neg_tests/stm_tests_ref_eio.ml @@ -0,0 +1,15 @@ +open Stm_tests_ref_spec + +module RT_int = STM_domain_eio.Make(RConf_int) +module RT_int64 = STM_domain_eio.Make(RConf_int64) + +let () = + Eio_main.run @@ fun env -> + let domain_mgr = Eio.Stdenv.domain_mgr env in + QCheck_base_runner.run_tests_main + [ + RT_int.neg_agree_test_par ~domain_mgr ~count:1000 + ~name:"STM int ref test parallel"; + RT_int64.neg_agree_test_par ~domain_mgr ~count:1000 + ~name:"STM int64 ref test parallel"; + ] From 109da8f68c14e49a1efae42902a23871115889a6 Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Fri, 10 Jul 2026 16:40:04 +0200 Subject: [PATCH 2/3] Remove multicoretests dependency on Eio packages --- dune-project | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dune-project b/dune-project index 0eb22ee2..8f04ae8c 100644 --- a/dune-project +++ b/dune-project @@ -20,9 +20,7 @@ the multicore run-time of OCaml 5.0.") base-domains (qcheck-core (>= "0.90")) (qcheck-lin (= :version)) - (qcheck-stm (= :version)) - (qcheck-stm-eio (= :version)) - (qcheck-lin-eio (= :version)))) + (qcheck-stm (= :version)))) (package (name qcheck-stm) From ffc941b0dec64326912c0fb202e36a523c98c39b Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Fri, 10 Jul 2026 18:05:54 +0200 Subject: [PATCH 3/3] CI: Add new packages in the opam workflow --- .github/workflows/opam.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/opam.yml b/.github/workflows/opam.yml index 8a7b29de..a7e041f5 100644 --- a/.github/workflows/opam.yml +++ b/.github/workflows/opam.yml @@ -29,6 +29,12 @@ jobs: - 5.3.0 - 5.4.0 - ocaml-variants.5.5.0+trunk + include: + # Testing upper and lower bounds for the Eio packages + - ocaml-compiler: 5.2.0 + test-eio: true + - ocaml-compiler: ocaml-variants.5.5.0+trunk + test-eio: true runs-on: ubuntu-latest @@ -45,6 +51,11 @@ jobs: run: | opam install --with-test ./qcheck-multicoretests-util.opam ./qcheck-lin.opam ./qcheck-stm.opam + - name: + if: matrix.test-eio == true + run: | + opam install --with-test ./qcheck-stm-eio.opam ./qcheck-lin-eio.opam + - name: Show configuration run: | opam exec -- ocamlc -config