Purpose of Project Winston is to create a centralised test system that will allow the Apache CloudStack community to contribute to testing. This system can be split into separate functions:
This document covers item 4 - submission of tests
Elasticsearch has been chosen as the storage repository for the combined data, due to the fact that it is designed to handle text documents and it's general popularity which means a large number of people will be able to work with it.
Elasticsearch stores data as JSON documents, the data ingestion is therefore designed to be natively in JSON to avoid the need for additional processing/complexity - ie no need for logstash.
Along with the individual test results, various pieces of metadata are required to form a full picture of the test results.
These are collected in the following files from a Marvin test run:
File names are unimportant, as they are simply containers for the data which is then uploaded to the Elasticsearch DB
testrun_uuid ties all of the data together.
{
"testrun_uuid": "fa000763-24bd-44fc-a5c6-feb82c892ca",
"base_cloudstack_version": "4.10",
"pr_id": "null",
"rc_num": "null",
"marvin_tags": "advanced",
"marvin_hypervisor": "kvm",
"hypervisor_version": "CentOS 6",
"hypervisor_minor_version": "",
"mgmt_server_os": "CentOS 7",
"mgmt_server_os_ver": "7.3",
"testrun_date": ""
}
test_data.py is stored (currently) simply for completeness. As there are more than 1000 elements, it cannot be stored as a json object. The contents of the file is therefore URL encoded and stored in a single element
{
"test_data.py_contents": "%23+Licensed+to+the+Apache+Software+Foundation+%28ASF%29+under+on......"
"testrun_uuid": "fa000763-24bd-44fc-a5c6-feb82c892caa"
}