User Tools

Site Tools


collection_of_test_results

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
collection_of_test_results [2015/07/09 14:09]
Guy Rodrigue Koffi
collection_of_test_results [2016/01/08 13:57] (current)
Nauman Ahad
Line 1: Line 1:
 +====== Test Result Collection Api ======
 +
 +
 ====== Description ====== ====== 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. 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.
  
-{{:​collection_of_results_api.png|}}+{{:​collection_of_results_api.png?800|}}
  
-====== REST API ====== 
  
-Here are the key functions :+====== Database ======
  
-**Test projects** +The goal is to have three main collections in a Mongo DB:  
-  * List all test projects  +  * tests projects 
-  * Details on a specific ​test project +  * test cases 
-  * Create a test project +  * test results ​ 
-  * Update a test project+  
 +{{:​results_collection_structure.png?​800|}}
  
-**Test cases** +The test result are stored in json format in the test results collection. 
-Specifiying a test project : +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.
-  * List all test cases +
-  * Details ​on a test case +
-  * Create a test case +
-  * Update a test case+
  
-**Test results** +<code json> 
-Specfiying both test project and test case : +"​details"​{
-  * List all test results +
-  * Details on a test result +
-  * Push a test result +
-  * Remove a test result+
  
-This API will rely on JSON to represent states of REST resources+    "​timestart":​ 1444395967.9822, 
-See the full API specification [[collection_api|here]].+    "​duration":​ 40.9, 
 +    "​status":​ "​OK"​
  
 +}
 +</​code> ​
  
-====== ​Database ​====== +====== ​Data model ======
- +
- +
-The goal is to have three main collections : tests projects, test cases and test results related to each other by a numbering system.  +
-The test result would be stored either as plain text or json structure in the test results collection on details field  +
- +
-{{:​results_collection_structure.png|}}+
  
 **Test projects** **Test projects**
Line 44: Line 36:
 [ [
   {   {
-    "​id": ​1+    "​id": ​""​
-    "​name":​ "functest", ​   ​+    "​name":​ "", 
 +    "​creation_date":​ "​YYYY-MM-DD HH:MM:SS", ​   ​
     "​description":""​     "​description":""​
   },   },
Line 55: Line 48:
 <code json> <code json>
 [ [
 +
   {   {
-    "​id":​1.1,+    "​id": ​""​,
     "​name":"",​     "​name":"",​
-    "testproject": "1", +    "creation_date": "YYYY-MM-DD HH:MM:SS", 
-    "test": "",​ +    "description": "",​ 
-    "description": ""​+    "url":""​
   },   },
   {...}   {...}
Line 71: Line 65:
 [ [
   {   {
-    "id": "1.1.1", +    "_id": "",​ 
-    "testcase": "1.1", +    "project_name": "",​ 
-    "date": "",​ +    "pod_name": "",​ 
-    "platform":"",​ +    "version": "",​ 
-    "global_status":"",​ +    "installer": "",​ 
-    "hardware_details":"",​ +    "description": "",​ 
-    "installer_type":"",​ +    "creation_date": "YYYY-MM-DD HH:MM:SS", 
-    "​details":​{}+    "​case_name":​ ""​ 
 +    "​details":​{ 
 +       <- the results to be put here -> 
 +    ​}
   },   },
-  {...} 
 ] ]
 </​code>​ </​code>​
 +
 +====== 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.1436450954.txt.gz · Last modified: 2015/07/09 14:09 by Guy Rodrigue Koffi