Beta testing

The new Runox version is coming ! The language support is still narrow but the depth, stability and performance is already better. You can now test it running code natively or in containers, for C, C++, Java, Python and Scala. In addition, CMake and GoogleTest are supported. GoogleTest tests are accelerated compared to standard execution.

You can help make it better by giving it a try, here a few guidelines to test it and give useful feedback.

RFF - Request For Feedbacks

First, make sure you have a working installation of Runox, by following the Setup page under section Runox rewrite in Rust. This page use the alias ru, but the real program behind is runox.

Warning: the watch mode is not implement even if the help page shows it.

Warning: Some edge cases with files selection are not fully managed yet...

Containers management

Runox is not able to stop containers for now. Here a simple way to stop all Runox containers. You'll need that later.

For Fish

set ids (docker ps -a -q  --filter name=runox)
if test -n "$ids"
    docker rm --force $ids
end

For Bash

ids=$(docker ps -a -q  --filter name=runox)
if test -n "$ids"; then
    docker rm --force $ids
fi

Read the help

ru --help

Give feedback about clarity, wording or the names of the options.

Note confusing messages and bugs

With the following steps, please note why you find things confusing or where you think there are bugs. Is there other options you would expect ? Did you expect another behavior in a given situation ?

If you have any panics, it's a bug, so please include it in your feedback. Here is an example of a crash caused by a panic, you can see the 2 keywords thread panicked.

thread 'main' (510375) panicked at src/main.rs:4:32:
called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Test at least 3 languages

Test natively

  1. List supported engines ru --list-engines
  2. Pick 3 languages among the list including Scala.
  3. Use scr and pick the language or reuse an existing project
  4. Try running it natively with ru
  5. Do a change in the code and run it again to make sure it works.
  6. Inspect the executed commands with ru -d
  7. Do you feel it is slower than running without Runox ?
  8. For Scala, do you have the expected error of Failed to run engine Scala because some required binaries were not found: ... ?
  9. For Python, keep the previous main.py but create a second file test.py and try running it directly.
  10. Fill it with this simple code showing the program arguments
    import sys
    print(sys.argv)
    
  11. Figure out how to pass down the arguments --user john the program. You know you'll be done when the program prints ['test.py', '--user', 'john']

Test in containers

  1. time ru -c. Building the image can take a few minutes depending on your Internet connection.
  2. Copy paste the time in your feedback.
  3. Once the container is started (after the first execution), do you feel like it is slower than the native execution ?
  4. For Scala, run time ru -c and report it in your feedbacks.

Test CMake

  1. Test is with C++
    scr cpp-cmake
    
  2. Introduce a build error and look at the build output. Do you see the experience difference with Runox ? Note it in your feedback.
  3. Look at the second build command via ru -d, run it and look at the difference.
  4. Test is with C
    scr c-cmake
    

Test in containers

  • ru -c
  • ru -c again, do you feel the small difference of time ?
  • Stop containers (see above) and retry it. You should see a small gain caused by the containers that keeps running after first start. Build is also cached.

Debugging

  • Without typing any docker commands, how could you determine the version of CMake installed in this container ? (see ru -h)
  • Same idea: What is the current folder in the container ?

Test GoogleTest

scr cpp-cmake-gtest
  1. ru, you'll see two binaries, try running both of them.
  2. Is the binary selection clear ? Did you managed to manage to change ru to something else that will automatically select a binary ?
  3. Run the tests, fix the function (two missing if) and run it again.
  4. Do you see the experience difference with Runox ? Note it in your feedback.
  5. Look at the execution command via ru -d, run it and look at the difference. Is there a way to continue improving the test display ?
  6. Test in container ru -c

Test performance

  1. Get the code of the heavy test suite.
    cd /tmp
    git clone https://codeberg.org/samuelroland/runox.git
    cd runox/core/exos/gtest/heavy-calculation-single-thread-test-suite
    
  2. Measure time without Runox, should be around 17s.
    cmake . -Bbuild && cmake --build build/ -j 8
    time ./build/tests
    
  3. time ru, should be around 2.6s if you have 12 CPU cores.
  4. time ru -c, should be just bit more...
  5. Note the timing in your feedbacks.

Global experience

How was the global experience ? Do you see yourself using this new Runox version ? Something clear ?

Send your feedbacks

Thanks a lot for your tests, this means a lot ! I hope you enjoyed discovering this first beta version.

By Telegram, email (samuel.roland -- master.hes-so.ch) or via Teams (just search "Samuel Roland") !