[openstack-dev] [qa][all][Heat] Packaging of functional tests
David Kranz
dkranz at redhat.com
Tue Aug 26 15:18:51 UTC 2014
On 08/26/2014 10:14 AM, Zane Bitter wrote:
> Steve Baker has started the process of moving Heat tests out of the
> Tempest repository and into the Heat repository, and we're looking for
> some guidance on how they should be packaged in a consistent way.
> Apparently there are a few projects already packaging functional tests
> in the package <projectname>.tests.functional (alongside
> <projectname>.tests.unit for the unit tests).
>
> That strikes me as odd in our context, because while the unit tests
> run against the code in the package in which they are embedded, the
> functional tests run against some entirely different code - whatever
> OpenStack cloud you give it the auth URL and credentials for. So these
> tests run from the outside, just like their ancestors in Tempest do.
>
> There's all kinds of potential confusion here for users and packagers.
> None of it is fatal and all of it can be worked around, but if we
> refrain from doing the thing that makes zero conceptual sense then
> there will be no problem to work around :)
Thanks, Zane. The point of moving functional tests to projects is to be
able to run more of them
in gate jobs for those projects, and allow tempest to survive being
stretched-to-breaking horizontally as we scale to more projects. At the
same time, there are benefits to the
tempest-as-all-in-one-functional-and-integration-suite that we should
try not to lose:
1. Strong integration testing without thinking too hard about the actual
dependencies
2. Protection from mistaken or unwise api changes (tempest two-step
required)
3. Exportability as a complete blackbox functional test suite that can
be used by Rally, RefStack, deployment validation, etc.
I think (1) may be the most challenging because tests that are moved out
of tempest might be testing some integration that is not being covered
by a scenario. We will need to make sure that tempest actually has a
complete enough set of tests to validate integration. Even if this is
all implemented in a way where tempest can see in-project tests as
"plugins", there will still not be time to run them all as part of
tempest on every commit to every project, so a selection will have to be
made.
(2) is quite difficult. In Atlanta we talked about taking a copy of
functional tests into tempest for stable apis. I don't know how workable
that is but don't see any other real options except vigilance in reviews
of patches that change functional tests.
(3) is what Zane was addressing. The in-project functional tests need to
be written in a way that they can, at least in some configuration, run
against a real cloud.
>
> I suspect from reading the previous thread about "In-tree functional
> test vision" that we may actually be dealing with three categories of
> test here rather than two:
>
> * Unit tests that run against the package they are embedded in
> * Functional tests that run against the package they are embedded in
> * Integration tests that run against a specified cloud
>
> i.e. the tests we are now trying to add to Heat might be qualitatively
> different from the <projectname>.tests.functional suites that already
> exist in a few projects. Perhaps someone from Neutron and/or Swift can
> confirm?
That seems right, except that I would call the third "functional tests"
and not "integration tests", because the purpose is not really
integration but deep testing of a particular service. Tempest would
continue to focus on integration testing. Is there some controversy
about that?
The second category could include whitebox tests.
I don't know about swift, but in neutron the intent was to have these
tests be configurable to run against a real cloud, or not. Maru Newby
would have details.
>
> I'd like to propose that tests of the third type get their own
> top-level package with a name of the form
> <projectname>-integrationtests (second choice: <projectname>-tempest
> on the principle that they're essentially plugins for Tempest). How
> would people feel about standardising that across OpenStack?
+1 But I would not call it "integrationtests" for the reason given above.
-David
>
> thanks,
> Zane.
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
More information about the OpenStack-dev
mailing list