User Tools

Site Tools


collection_of_test_results

Test Result Collection Api

Description

The mission of this project is to provide a common way for gathering all the results of OPNFV tests projects into a single place. It should expose a REST API for the collect of results and push them into a MongoDB database.

Database

The goal is to have three main collections in a Mongo DB:

  • tests projects
  • test cases
  • test results

The test result are stored in json format in the test results collection. The json format include a details field. This field shall be used to provide the details on the results. These details may be used later for the dashboard.

"details": {
 
    "timestart": 1444395967.9822,
    "duration": 40.9,
    "status": "OK"
 
}

Data model

Test projects

[
  {
    "id": "",
    "name": "",
    "creation_date": "YYYY-MM-DD HH:MM:SS",    
    "description":""
  },
  {...}      
]

Test cases

[
 
  {
    "id": "",
    "name":"",
    "creation_date": "YYYY-MM-DD HH:MM:SS",
    "description": "",
    "url":""
  },
  {...}
]

Test results

[
  {
    "_id": "",
    "project_name": "",
    "pod_name": "",
    "version": "",
    "installer": "",
    "description": "",
    "creation_date": "YYYY-MM-DD HH:MM:SS",
    "case_name": ""
    "details":{
       <- the results to be put here ->
    }
  },
]

REST API

The temp Mongo DB + API is hosted in an Orange public VM (http://213.77.62.197).

Version

Method Path Description
GET /version API version

Pods

Method Path Description
GET /pods Get the list of declared PODs
POST /pods Create a new POD
Content-Type: application/json
{
"name": "pod-foo",
"creation_date": "YYYY-MM-DD HH:MM:SS"
}

Test projects

Method Path Description
GET /test_projects Give the list of test projects
GET /test_projects/{project_name} Give details on the selected project
POST /test_projects Add a Test project
Content-Type: application/json
{
"name": "project-foo",
"description": "Example with project foo"
}
PUT /test_projects/{project_name} Update project
{
<the field(s) you want to modify>
}
DELETE /test_projects/{project_name} Delete project
Content-Type: application/json
{
}

Test cases

Method Path Description
GET /test_projects/{project_name}/cases Give details on the testcases of the foo project
POST /test_projects/{project_name}/cases Add test cases
Content-Type: application/json
{
"url": "<the url detailing the testcase>",
"creation_date": "YYYY-MM-DD HH:MM:SS",
"name": "vFoo",
"description": "vFoo use case"
}
PUT /test_projects/{project_name}?case_name={case_name} Modify a test case
Content-Type: application/json
{
< the field(s) to be modified >
}
DELETE Remove a test case
Content-Type: application/json

test results

Method Path Description
GET /results Get all the test results
GET /results/project={test_project_name} Get all the results of the test project {test_project_name}
GET /results/case={test_case_name} Get all the results of the test case {test_case_name}
GET /results?pod={pod_name} Get all the results executed on pod {pod_name}
GET /results?installer={installer_name} Get all the results done with installer {installer_name}
GET /results?version={version_name} Get all the results done with version {version_name}
GET /results?period={days} Get all the results stored since {Days} days
GET /results?project={test_project_name}&case={case_name}[&installer={installer_name}&version={version_name}&pod={pod_name}&period={days}] Get all the results of the test case {case_name} of the project {project_name} with version {version_name} installed by installer {installer_name} on POD {pod_name} stored since {days} days
{project_name} and {case_name} are mandatory, the other parameters are optional
POST /results Add test result in the Database
Content-Type: application/json
{
"project_name": {project_name},
"case_name": {case_name},
"pod_name": {pod_name},
"installer": {installer_name},
"version":{version_name},
"details": { <your results> }
}

test results

Method Path Description
GET /dashboard Get all the test projects providing dashboard ready results
GET dashboard?project={project_name}&case={case_name}[&pod={pod_name}&installer={installer_name}&version={version_name}&period={days}] Get all the results (in dashboard ready format) of the test case {case_name} of the project {project_name} with version {version_name} installed by installer {installer_name} on POD [pod_name} stored since {days} days
{project_name} and {case_name} are mandatory, the other parameters are optional
collection_of_test_results.txt · Last modified: 2016/01/08 13:57 by Nauman Ahad