A.2 OpenAPI generator
generate_server.sh: generate the REST server and the documentation of the SDKs for the clients
The configuration file contains configuration parameter value assignments (
The configuration parameters are the following:
TOOL_NAME: name of the tool (mandatory)
OPENAPI_GENERATOR_VERSION: version of OpenAPI Generator (default:
SERVER_REQUEST_BODY_LIMIT: maximum size of request body (e.g.
SERVER_COMPRESSION_LEVEL: gzip compression level of server responses (1=fast to 9=best, default: 5)
SERVER_API_SPEC: OpenAPI specification file of the server (defaut:
SERVER_API_SCHEMAS: External JSON schema files referenced by the OpenAPI specification file – e.g.
(schema1.json schema2.json schema3.json), default:
const PKM = require('pkm'), default: none)
SERVER_CONFIG: Run-time configuration file of the server (e.g.
'server_config.json', default: none)
SERVER_DIR: relative path to the directory where to generate the full server source code (default:
The paths are all relative to directory containing the configuration file. The actual implementation of each API function shall be in sub-directory
Figure 7 below shows the OpenAPI generation flow:
The inputs (with the directory structure) are in green on the left side of the figure. The inputs are the OpenAPI specification file (
openapi.yaml), the implementation of POST/PUT/GET/DELETE functions for the resources (“API functions”), and the configuration file for the generation flow (
The services that currently use OpenAPI Generator are the followings:
- Frama-C for PKM
- Frama-Clang for PKM
- ASFM for PKM
- UNISIM Excavator for PKM
A.3 Integration & non-regression testing
There is a set of benchmarks for the DECODER project. These benchmarks are tests mostly intended for integration testing and non-regression testing of the DECODER Project tool-chain. There are not only basic tests but also more complex tests with software from the real world and DECODER test cases, such as OpenCV and Linux driver. They have been used extensively to ensure that the server is performing its missions correctly and scaling up in realistic scenarios.
These benchmarks are available at https://gitlab.ow2.org/decoder/integration-tests.
Each test has a bash script (
run.sh) to run the test and a dataset (in directory
The currently available tests are:
project_mngmt: project management (projects, users, …)
vector2: a small C project
opencv-4.5.0: a big C++ project
mythaistar: a small subset of
vmlinux: a Linux kernel
cve: a small benchmark for testing PKM API about CVE lists
git: a test of the PKM built-in support for Git
at91sam9-watchdog: a testbench for the AT91SAM9 Watchdog timer (WDT) Linux driver
e1000e-ethernet: a testbench for the Intel e1000e Ethernet Linux driver
The tests use the popular cURL program to communicate with the PKM and tools through their REST APIs.