Run Scripts: Getting Started
bueno run coordinates container image activation and the execution of bueno
run scripts—a programmatic description of the steps required to conduct a
benchmarking activity. Currently, there are two image activators implemented in
bueno: charliecloud and none. The former uses Charliecloud to activate a given container image and
the latter is a pass-through to the host.
Hello World!
Below is the source code of the simplest bueno run script named hello.py.
Please note that the source code contains helpful comments that aid in
understanding fundamental bueno run script structure.
# bueno provides a collection of public modules containing helpful utilities. At
# a minimum, the experiment module contained within the bueno.public package
# must be imported by a bueno run script.
from bueno.public import experiment
from bueno.public import logger
# main() is the entry point for all bueno run scripts. argv is a list of
# argument strings passed to this program by the bueno run service.
def main(argv):
# Set the experiment's name. This particular experiment is named
# hello-world.
experiment.name('hello-world')
# The logger emits strings to the console. Additionally, the output
# produced by logging actions is recorded and stored in experiment data
# written (by default) after experiment termination.
logger.log('hello world')
In the following example, we execute hello.py using the none (i.e.,
host pass-through) image activator. To execute the script, run the following
command (assumes hello.py is stored in your current working directory):
$ bueno run -a none -p hello.py
This program invocation should produce console output similar to the following:
#
# Starting run at 2020-04-24 08:42:05
#
# $ /home/samuel/.local/bin/bueno run -a none -p hello.py
#
# Looking for container metadata...
#
# Note: the none activator has no metadata
# Begin run Configuration (YAML)
Configuration:
image: null
image_activator: none
output_path: /home/samuel/devel/bueno/examples/hello
Host:
hostname: localhost.localdomain
kernel: Linux
kernel_release: 5.3.7-200.fc30.x86_64
os_release: Fedora 30 (Workstation Edition)
whoami: samuel
# End run Configuration (YAML)
#
# Begin Program Output (hello.py)
#
hello world
#
# End Program Output
#
# run Time 0:00:00.101665
# run Done 2020-04-24 08:42:05
# run Output Target: /home/samuel/devel/bueno/examples/hello/hello-world/2020-04-24/0
# Writing Data Assets at 2020-04-24 08:42:05
# run Output Written to: /home/samuel/devel/bueno/examples/hello/hello-world/2020-04-24/0
More bueno run Help
Additional run service information is provided by the output of bueno run
--help.