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.
The goal is to have three main collections in a Mongo DB:
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"
 
}
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 ->
    }
  },
]
The temp Mongo DB + API is hosted in an Orange public VM (http://213.77.62.197).
| Method | Path | Description | 
|---|---|---|
| GET | /version | API version | 
| 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" } | 
| 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 { } | 
| 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 | 
| 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> } } | 
| 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 |