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
Last revision Both sides next revision
collection_of_test_results [2015/07/09 14:09]
Guy Rodrigue Koffi
collection_of_test_results [2015/10/17 16:41]
Morgan Richomme
Line 2: Line 2:
 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 33:
 [ [
   {   {
-    "​id": ​1+    "​id": ​""​
-    "​name":​ "functest", ​   ​+    "​name":​ "", 
 +    "​creation_date":​ "​YYYY-MM-DD HH:MM:SS", ​   ​
     "​description":""​     "​description":""​
   },   },
Line 55: Line 45:
 <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 62:
 [ [
   {   {
-    "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.txt · Last modified: 2016/01/08 13:57 by Nauman Ahad