tree c1a77979a9ab30fc78223dafb90b46c39b8a7478
parent a3a4b1c6a51912c4a89679e495565bd66f1613cf
author Ken'ichi Ohmichi <ken-oomichi@wx.jp.nec.com> 1446705153 +0000
committer ghanshyam <ghanshyam.mann@nectechnologies.in> 1448612847 +0900

Add the base microversions test part

This is base part of microversions tests.
This patch adds the mechanism for selecting the microversion tests based
on new configration options like the following:

TestClass A: min_microversion = None,  max_microversion = 'latest'
TestClass B: min_microversion = None,  max_microversion = '2.2'
TestClass C: min_microversion = '2.3', max_microversion = 'latest'
TestClass D: min_microversion = '2.5', max_microversion = '2.10'

  +--------------------+-----------------------------------------------------+
  | Configration       | Test classes                                        |
  | (min,    max)      | (Passed microversion)                               |
  +====================+=====================================================+
  | None,     None     | A(Not passed), B(Not passed), C & D - Skipped       |
  +--------------------+-----------------------------------------------------+
  | None,     '2.3'    | A(Not passed), B(Not passed), C('2.3'), D - Skipped |
  +--------------------+-----------------------------------------------------+
  | '2.2',    'latest' | A('2.2'), B('2.2'), C('2.3'), D('2.5')              |
  +--------------------+-----------------------------------------------------+
  | '2.2',    '2.3'    | A('2.2'), B('2.2'), C('2.3'), D - Skipped           |
  +--------------------+-----------------------------------------------------+
  | '2.10',   '2.10'   | A('2.10'), B - Skipped, C('2.10'), D('2.10')        |
  +--------------------+-----------------------------------------------------+
  | None,     'latest' | A(Not passed), B(Not passed), C('2.3'), D('2.5')    |
  +--------------------+-----------------------------------------------------+
  | 'latest', 'latest' | A('latest'), B - Skipped, C('latest'), D - Skipped  |
  +--------------------+-----------------------------------------------------+

After this patch, we need to add tests for each microversion and
these test classes need to contain the range of microversions.

Partially implements blueprint api-microversions-testing-support

Change-Id: I57b78b4c0543b6fb0533b556886a19a03297555e
