<div dir="ltr">FWIW the Ironic microversion test patch mentioned on gerrit is only targeted at Tempest because thats where the API tests currenty live and from which our infra is setup to run. The eventual goal is to move all of tempest.api.baremetal.* to the Ironic tree, there's no reason why those proposed new tests wouldn't either.  <div><br></div><div>Those tests were designed to allow running against all available microversions or some configured subset, and to ensure tests for previous microversions run against newer.  I think its perfectly feasible to test many microversions in tree or out, provided test coverage is kept sufficiently up to date as the APIs evolve.</div><div><br></div><div>Adam</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Apr 8, 2015 at 7:45 AM, Jay Pipes <span dir="ltr"><<a href="mailto:jaypipes@gmail.com" target="_blank">jaypipes@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 04/08/2015 05:24 AM, Sean Dague wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 04/08/2015 07:38 AM, Dmitry Tantsur wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 04/08/2015 12:53 PM, Sean Dague wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 04/08/2015 03:58 AM, Dmitry Tantsur wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 04/08/2015 06:23 AM, Ken'ichi Ohmichi wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
Now Nova and Ironic have implemented API microversions in Kilo.<br>
Nova's microversions are v2.1 - v2.3.<br>
Ironic's microversions are v1.1 - v1.6.<br>
<br>
Now Tempest is testing the lowest microversion on the gate, and<br>
Ironic's microversions test patch[1] is on the gerrit.<br>
Before merging the patch, I'd like to propose consistent test way for<br>
microversions of Nova and Ironic.<br>
<br>
My suggestion is the test target microversions are:<br>
* the lowest microversion<br>
* the biggest microversion, but don't use the keyword "latest" on a<br>
header and these microversions tests are operated on different gate<br>
jobs.<br>
<br>
The lowest microversion is already tested on check-tempest-dsvm-full<br>
or something, so this proposes just to add the biggest microversion<br>
job like check-tempest-dsvm-full-big-<u></u>microversion.<br>
<br>
[background]<br>
In long-term, these microversions continue increasing and it is<br>
difficult to run Tempest for all microversions on the gate because of<br>
test workload. So I feel we need to select microversions which are<br>
tested on the gate for efficient testing.<br>
<br>
[the lowest microversion]<br>
On microversion mechanism, if a client *doesn't* specify favorite<br>
microversion in its request header, a Nova/Ironic server considers the<br>
request as the lowest microversion. So the lowest microversion is<br>
default behavior and important. I think we need to test it at least.<br>
<br>
[the biggest microversion]<br>
On microversion mechanism, if a client specify the keyword "latest" in<br>
its request header instead of microversion, a Nova/Ironic server works<br>
on the biggest microversion behavior.<br>
During the development, there is time lag between each project dev and<br>
Tempest dev. After adding a new API on a project, corresponding tests<br>
are added to Tempest in most cases. So if specifying the keyword<br>
"latest", Tempest would not handle the request/response and fail,<br>
because Tempest can not catch the latest API changes until<br>
corresponding Tempest patch is merged.<br>
So it is necessary to have the target microversion config option in<br>
Tempest and pass specific biggest microversion to Tempest with<br>
openstack-infra/project-<u></u>config.<br>
<br>
Any thoughts?<br>
</blockquote>
<br>
Hi! I've already stated this point in #openstack-ironic and I'd like to<br>
reiterate: if we test only the lowest and the highest microversions<br>
essentially means (or at least might mean) that the other are broken. At<br>
least in Ironic only some unit tests actually touch code paths for<br>
versions 1.2-1.5. As we really can't test too many versions, I suggest<br>
we stop producing a microversion for every API feature feature change in<br>
L. No idea what to do with 1.2-1.5 now except for politely asking people<br>
not to use them :D<br>
</blockquote>
<br>
Tempest shouldn't be the *only* test for a project API. The projects<br>
themselves need to take some ownership for their API getting full<br>
coverage with in tree testing, including whatever microversion strategy<br>
they are employing.<br>
</blockquote>
<br>
Agreed, but in-tree testing is also not feasible with too many version.<br>
Even now we have 7 (1.0-1.6), if it continues, we'll have not less than<br>
12 after L, 18 after M, etc. And we have to test every one of them for<br>
regressions at least occasionally, provided that we don't start to<br>
aggressively deprecated microversions. If we do start, then we'll start<br>
breaking people even more often, than we should. E.g. if someone writes<br>
a tool targeted at 1.1, and we deprecated 1.1 in M cycle, the tool will<br>
break, though maybe it can actually work with new API.<br>
</blockquote>
<br>
I do not understand how in tree testing is not feasible. In tree you<br>
have insights into all the branching that occurs within code so can very<br>
clearly understand what paths aren't possible. It should be a lot more<br>
straight forward than external black box testing where that can't be assume.<br>
</blockquote>
<br></div></div>
Exactly.<br>
<br>
The whole *point* of microversions was to allow the APIs to evolve in a backwards-compatible, structured and advertised way. The evolution of the APIs response and request payloads should be tested fully for each microversion added to the codebase -- in tree.<span class="HOEnZb"><font color="#888888"><br>
<br>
-jay</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
______________________________<u></u>______________________________<u></u>______________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">OpenStack-dev-request@lists.<u></u>openstack.org?subject:<u></u>unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-dev</a><br>
</div></div></blockquote></div><br></div>