ocaml-multicore / eio

Effects-based direct-style IO for multicore OCaml
Other
561 stars 71 forks source link

Skip network tests when network is unavailable #275

Open talex5 opened 2 years ago

talex5 commented 2 years ago

The network tests can't be run in some cases:

This is probably best done by extending MDX. We could perhaps have an exception Mdx_skip_block to indicate that the current block's output should be ignored, or a skip-if=TEST label at the top of the block.

From #274.

create2000 commented 1 month ago

Hello, @talex5 @patricoferris -- Is this issue still open?

talex5 commented 1 month ago

Yes. This would be a good first step: https://github.com/realworldocaml/mdx/issues/393

create2000 commented 1 month ago

Thank you @talex5 -- I'll have to wait for @patricoferris to assign me the issue.

patricoferris commented 1 month ago

Assigned :))

create2000 commented 1 month ago

Hello @talex5 and @patricoferris -- A couple of clarifications are needed. I have been trying understand where to begin from. Since it talks of network tests and extending the MDX, I want to be sure if it's the network.md file i am to work with. Also, I would appreciate directions to any link where i can read more on MDX and to know how best to impement the skip network logic. Thanks

talex5 commented 1 month ago

To get started, you can try running the tests under Docker, using the Dockerfile in the repository. e.g.

docker build . -t eio
docker run -it --rm eio
opam install --deps-only -t eio_main eio_linux eio_posix eio
make

I just tried this, and it seems that Docker does provide IPv6 now (at least on the loopback interface). However, it now blocks uring:

$ dune runtest ./lib_eio_linux/tests/
...
@@ -133,6 +129,5 @@ Signalling an exited child does nothing:
   in
   ignore (Promise.await (Process.exit_status child) : Unix.process_status);
   Process.signal child Sys.sigkill;;
-FOO=bar
-- : unit = ()
+Exception: Failure "io_uring is not available (permission denied)".

So probably the tests will need changing to Eio_linux.run ~fallback:skip, where skip raises some Mdx_skip exception.

Note: this is marked "good first issue" as it doesn't require much knowledge of Eio and the changes needed here are simple. However, adding the skip feature to MDX might be more difficult!

create2000 commented 1 month ago

Hello @patricoferris -- I am making my Outreachy final application and I am asked to create a project timeline. Following the Project details, I came up with a timeline. I want to share it with you so if there's any correction before I submit, or something you want me to insert or remove. Here's the link: https://docs.google.com/document/d/108a5nU0J9Z2tFIUR09lwPmwww4796qpFVx3nZNSKilc/edit?usp=drivesdk