+The OPNFV testing group created a test collection database to collect the test
+results from CI.
+Any test project running on any lab integrated in CI can push the results to
+this database.
+This databse can be used afterwards to see the evolution of the tests and
+compare the results versus the installers, the scenario or the labs.
+
+You can find more information about the dashboard from Testing Dashboard wiki
+page `[6]`_.
+
+
+Overall Architecture
+--------------------
+
+The Test result management in Brahmaputra can be summarized as follow::
+
+ +-------------+ +-------------+ +-------------+
+ | | | | | |
+ | Test | | Test | | Test |
+ | Project #1 | | Project #2 | | Project #N |
+ | | | | | |
+ +-------------+ +-------------+ +-------------+
+ | | |
+ ▼ ▼ ▼
+ +-----------------------------------------+
+ | |
+ | Test Rest API front end |
+ | http://testresults.opnfv.org/testapi |
+ | |
+ +-----------------------------------------+
+ ▲ |
+ | ▼
+ | +-------------------------+
+ | | |
+ | | Test Results DB |
+ | | Mongo DB |
+ | | |
+ | +-------------------------+
+ |
+ |
+ +----------------------+
+ | |
+ | test Dashboard |
+ | |
+ +----------------------+
+
+The Test dashboard URL is: TODO LF
+A proto Test dashboard has been realized: http://testresults.opnfv.org/proto/
+
+Test API description
+--------------------
+
+The Test API is used to declare pods, projects, test cases and test results.
+An additional method dashboard has been added to post-process the raw results.
+The data model is very basic, 4 objects are created:
+ * Pods
+ * Test projects
+ * Test cases
+ * Test results
+
+Pods::
+
+ {
+ "id": <ID>,
+ "details": <URL description of the POD>,
+ "creation_date": YYYY-MM-DD HH:MM:SS ,
+ "name": <The POD Name>,
+ "mode": <metal or virtual>
+ },
+
+Test project::
+
+ {
+ "id": <ID>,
+ "name": <Name of the Project>,
+ "creation_date": "YYYY-MM-DD HH:MM:SS",
+ "description": <Short description>
+ },
+
+Test case::
+
+ {
+ "id": <ID>,
+ "name":<Name of the test case>,
+ "creation_date": "YYYY-MM-DD HH:MM:SS",
+ "description": <short description>,
+ "url":<URL for longer description>
+ },
+
+Test results::
+
+ {
+ "_id": <ID,
+ "project_name": <Reference to project>,
+ "pod_name": <Reference to POD where the test was executed>,
+ "version": <Scenario on which the test was executed>,
+ "installer": <Installer Apex or Compass or Fuel or Joid>,
+ "description": <Short description>,
+ "creation_date": "YYYY-MM-DD HH:MM:SS",
+ "case_name": <Reference to the test case>
+ "details":{
+ <- the results to be put here ->
+ }
+
+
+For Brahmaputra, we got:
+
+ * 16 pods
+ * 18 projects
+ * 101 test cases
+
+The projects and the test cases have been frozen in December.
+But all were not ready for Brahmaputra.
+
+
+
+The API can described as follow::
+
+**Version:**
+
++--------+--------------------------+------------------------------------------+
+| Method | Path | Description |
++========+==========================+==========================================+
+| GET | /version | Get API version |
++--------+--------------------------+------------------------------------------+
+
+
+**Pods:**
+
++--------+--------------------------+------------------------------------------+
+| Method | Path | Description |
++========+==========================+==========================================+
+| GET | /pods | Get the list of declared Labs (PODs) |
++--------+--------------------------+------------------------------------------+
+| POST | /pods | Declare a new POD |
+| | | Content-Type: application/json |
+| | | { |
+| | | "name": "pod_foo", |
+| | | "creation_date": "YYYY-MM-DD HH:MM:SS"|
+| | | } |
++--------+--------------------------+------------------------------------------+
+
+**Projects:**
+
++--------+--------------------------+------------------------------------------+
+| Method | Path | Description |
++========+==========================+==========================================+
+| GET | /test_projects | Get the list of test projects |
++--------+--------------------------+------------------------------------------+
+| GET |/test_projects/{project} | Get details on {project} |
+| | | |
++--------+--------------------------+------------------------------------------+
+| POST | /test_projects | Add a new test project |
+| | | Content-Type: application/json |
+| | | { |
+| | | "name": "project_foo", |
+| | | "description": "whatever you want" |
+| | | } |
++--------+--------------------------+------------------------------------------+
+| PUT | /test_projects/{project} | Update a test project |
+| | | |
+| | | Content-Type: application/json |
+| | | { |
+| | | <the field(s) you want to modify> |
+| | | } |
++--------+--------------------------+------------------------------------------+
+| DELETE | /test_projects/{project} | Delete a test project |
++--------+--------------------------+------------------------------------------+
+
+
+**Test cases:**
+
++--------+--------------------------+------------------------------------------+
+| Method | Path | Description |
++========+==========================+==========================================+
+| GET | /test_projects/{project}/| Get the list of test cases of {project} |
+| | cases | |
++--------+--------------------------+------------------------------------------+
+| POST | /test_projects/{project}/| Add a new test case to {project} |
+| | cases | Content-Type: application/json |
+| | | { |
+| | | "name": "case_foo", |
+| | | "description": "whatever you want" |
+| | | "creation_date": "YYYY-MM-DD HH:MM:SS"|
+| | | "url": "whatever you want" |
+| | | } |
++--------+--------------------------+------------------------------------------+
+| PUT | /test_projects/{project}?| Modify a test case of {project} |
+| | case_name={case} | |
+| | | Content-Type: application/json |
+| | | { |
+| | | <the field(s) you want to modify> |
+| | | } |
++--------+--------------------------+------------------------------------------+
+| DELETE | /test_projects/{project}/| Delete a test case |
+| | case_name={case} | |
++----------------+----------------+--------------------------------------------+
+
+**Test Results:**
+
++--------+--------------------------+------------------------------------------+
+| Method | Path | Description |
++========+==========================+==========================================+
+| GET |/results/project={project}| Get the test results of {project} |
++--------+--------------------------+------------------------------------------+
+| GET |/results/case={case} | Get the test results of {case} |
++--------+--------------------------+------------------------------------------+
+| GET |/results?pod={pod} | get the results on pod {pod} |
++--------+--------------------------+------------------------------------------+
+| GET |/results?installer={inst} | Get the test results of installer {inst} |
++--------+--------------------------+------------------------------------------+
+| GET |/results?version={version}| Get the test results of scenario |
+| | | {version}. Initially the version param |
+| | | was reflecting git version, in Functest |
+| | | it was decided to move to scenario |
++--------+--------------------------+------------------------------------------+
+| GET |/results?project={project}| Get all the results of the test case |
+| |&case={case} | {case} of the project {project} with |
+| |&version={scenario} | version {scenario} installed by installer|
+| |&installer={installer} | {installer} on POD {pod} stored since |
+| |&pod={pod} | {days} days |
+| | | {project_name} and {case_name} are |
+| |&period={days} | mandatory, the other parameters are |
+| | | optional. |
++--------+--------------------------+------------------------------------------+
+| POST | /results | Add a new test results |
+| | | Content-Type: application/json |
+| | | { |
+| | | "project_name": "project_foo", |
+| | | "case_name": "case_foo", |
+| | | "pod_name": "pod_foo", |
+| | | "installer": "installer_foo", |
+| | | "version": "scenario_foo", |
+| | | "details": <your results> |
+| | | } |
++--------+--------------------------+------------------------------------------+
+
+
+**Dashboard:**
+
++--------+--------------------------+------------------------------------------+
+| Method | Path | Description |
++========+==========================+==========================================+
+| GET |/dashboard? | Get all the dashboard ready results of |
+| |&project={project} | {case} of the project {project} |
+| |&case={case} | version {scenario} installed by installer|
+| |&version={scenario} | {installer} on POD {pod} stored since |
+| |&installer={installer} | {days} days |
+| |&pod={pod} | |
+| |&period={days} | {project_name} and {case_name} are |
+| | | mandatory, the other parameters are |
+| | | optional. |
++--------+--------------------------+------------------------------------------+
+
+
+The results with dashboard method are post-processed from raw results.
+Please note that dashboard results are not stored. Only raw results are stored.
+
+
+
+Test Dashboard
+--------------
+
+Based on dashboard post-porcessed results, a Test dashboard is automatically
+generated.
+
+TODO LF
+or http://testresults.opnfv.org/proto/
+
+===============
+Troubleshooting
+===============
+
+VIM
+===
+
+vPing
+-----