Other features
Last updated
Last updated
It may be desirable to make the lab depend on settings that are decided by the user when it is launched. For example, in our running example comparing sorting algorithms, one could wish to have control on the increment step for the size of the array. Our had a hard-coded increment step of 100 elements.
It is possible for a lab to declare command-line arguments, that the lab can then retrieve in its setup
method. To this end, one must implement a method called setupCli
. When called, this method is given an instance of a object, which will be used to parse the command-line arguments. Method setupCli
can add new arguments to this parser. For example, let us add an argument called step
, which will define the increment step to use when creating the experiments:
To retrieve the value of step
when the lab is setup, one can call getCliArguments
:
In the above snippet, the value of step
is set to 100; if a command line argument has been given, then step
is replaced by the value passed at the command line. This can be done when starting the lab:
Once this callback is defined, the lab can register it in setupCallbacks
:
When started, the web console now has a new page, http://localhost:21212/hello
which, when called, returns the "Hello world" page defined in the corresponding callback.
There exist situations, however, where this is not possible, and the lab has requirements with respect to the environment in which it is meant to be executed. For example, your experiments may require the use of an external database, some minimum amount of memory or disk space, or some other program that needs to be installed and called from inside the experiments. If these requirements are not met, the lab cannot run or produce meaningful results.
It is possible to verify these conditions at startup by adding to the lab a method called isEnvironmentOk
. Insert there any code that can check that the conditions for running the lab are met. For example, the following method checks if a program called "foo" is installed by attempting to run it from the command line:
Please refer to the API documentation of for precisions on its usage.
LabPal's web console can be customized to some extent. One needs to add method setupCallbacks
to the lab. This method must return a collection (typically a list or a set) of objects of type . A web callback is an object that is called when a given URL is requested to the server. It has a method called process
, which creates an HTTP response from the request. As an example, here is a simple callback that prints a dummy HTML page:
LabPal and its encourage the production of a single, stand-alone, runnable environment that includes all its necessary libraries and input files. This way, a lab can easily be copied around and run without any setup.
An error is detected by checking that the exit code is different from 0. (See .)
You must return null if everything is OK. As a rule, returning a non-null value (typically an error message) means that something external to the lab must be fixed before running the experiments; hence LabPal will simply quit. If your experiments have they can generate by themselves, don't use this method.
LabPal is implemented as a Java library, and is especially suited for labs and experiments written as Java classes. However, it is also possible to write experiments and labs using Python, thanks to the library.
To this end, you can use our , which contains a Python lab and a Python experiment class. Please refer to that project's README
file for more information on how to create a lab in Python.