[openstack-dev] [Murano] Discuss simulated-execution-mode-murano-engine blueprint

Alexander Tivelkov ativelkov at mirantis.com
Tue Jul 7 07:59:18 UTC 2015


Hi Gosha,

In my understanding, the base test class (io.murano.tests.TestFixture)
should have something like assertRaises method, similar to the one in python

--
Regards,
Alexander Tivelkov

On Mon, Jul 6, 2015 at 9:47 PM, Georgy Okrokvertskhov <
gokrokvertskhov at mirantis.com> wrote:

> Hi Kate,
>
> MuraPL has a concept of exceptions. Unit testing will be important to make
> sure that workflows behaves correctly in exceptions situations. How will be
> this addressed int he testing framework? Will you have some specific
> assertions like python unit testing framework?
>
> Thanks
> Gosha
>
> On Mon, Jul 6, 2015 at 9:02 AM, Ekaterina Chernova <efedorova at mirantis.com
> > wrote:
>
>> Folks,
>>
>> I have specific topic to discuss: how murano test-fixture will look like
>> and how it can be run.
>>
>> The idea is to implement a unit-testing framework, similar to regular
>> frameworks for python or other languages,
>> which will allow to define test fixtures in MuranoPL.
>> A Test fixture is a regular muranoPL class definition, which methods are
>> the test cases.
>> When such fixture is included into Murano application package the
>> deployment of application may be tested  without running actual VM's.
>>
>> Here is how the test fixture may look like:
>>
>> Namespaces:
>>     =: io.murano.apps.foo.tests
>>     sys: io.murano.system
>>     pckg: io.murano.apps.foo
>>
>> Extends: io.murano.tests.TestFixture
>>
>> Name: FooTest
>>
>> Methods:
>>     initialize:
>>         Body:
>>             *# Object model can be loaded from json file, or provided
>> directly in murano-pl code as a yaml insertion.*
>> *            # - $.appJson:
>> new(sys:Resources).json('foo-test-object-model.json')*
>>             - $.appJson:
>>                 - ?:
>>                     type: io.murano.apps.foo.FooApp
>>                   name: my-foo-obj
>>                   instance:
>>                       ?:
>>                           type: io.murano.resources.Instance
>>                       ...
>>
>>     setUp:
>>         Body:
>>             - $.env: $.createEnvironment($.appJson)   # creates an
>> instance of std:Environment
>>             - $.myApp:
>> $.env.applications.where($.name='my-foo-obj').first()
>>             *# mock instance spawning*
>>             - mock($.myApp.instance, "deploy", "mockInstanceDeploy",
>> $this)
>>             - mock(res:Instance, deploy, "mockInstanceDeploy", $this)
>>
>>
>>     testFooApp:
>>         Body:
>>             - $.env.deploy()
>>             - $.assertEqual(true, $.myApp.getAttr('deployed'))
>>
>>     mockInstanceDeploy:
>>         Arguments:
>>             - mockContext
>>         Body:
>>             - Return:
>>                * # heat template*
>>
>>
>> io.murano.tests.TestFixture - is a base class, that contains set of
>> methods, needed in all the test-cases which inherit it, such as assertEqual
>> and other similar assertions.
>> All it contains a $.createEnvironment method which may be called at the
>> setUp phase (a method being run before each test case) to construct the
>> object model to run the test against.
>>
>> Test developer will be able to mock some of the functions or method which
>> are out of the scope of the current test
>> (for example, interaction with other applications or classes from the
>> standard murano library, such as instance.deploy etc).
>> The mock will allow to override the actual method execution and provide
>> the expected output of the method.
>> The actual implementation of  mocking requires more thoughtful design,
>>  so I'll create a separate spec for it.
>>
>> What do you think about the overall idea and the test syntax proposed
>> above?
>>
>>
>> On Wed, Jun 3, 2015 at 5:15 PM, Ekaterina Chernova <
>> efedorova at mirantis.com> wrote:
>>
>>> Hi all!
>>>
>>> I'd like to discuss first implementation thoughts about this [1]
>>> blueprint, that we want to implement in Liberty.
>>> This feature is supposed to increase the speed of application
>>> development.
>>>
>>> Now engine interacts with API to get input task and packages.
>>>
>>> Items, planned to implement first would enable loading local task and
>>> new package, without API and Rabbit involved.
>>>
>>> After that simple testing machinery will be added to MuranoPL: mock
>>> support and simple test-runner.
>>>
>>> So user can test application methods as he wants by creating simple
>>> tests.
>>> Deployment parameters, such as heat stack and murano execution
>>> plan outputs
>>> may be set as returned value in tests.
>>>
>>> Finally, tests may be placed into a murano package for easier package
>>> verification and later modification.
>>>
>>> I'm going to write specification soon. But before, we need to prepare
>>> list of functions, that are needed to
>>> implement simple mocking machinery in MuranoPL.
>>>
>>> Please, leave your thoughts here or directly in the blueprint.
>>>
>>> Regards, Kate.
>>>
>>>
>>> [1] -
>>> https://blueprints.launchpad.net/murano/+spec/simulated-execution-mode-murano-engine
>>>
>>
>>
>> __________________________________________________________________________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe:
>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>
>
> --
> Georgy Okrokvertskhov
> Architect,
> OpenStack Platform Products,
> Mirantis
> http://www.mirantis.com
> Tel. +1 650 963 9828
> Mob. +1 650 996 3284
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20150707/58724de7/attachment.html>


More information about the OpenStack-dev mailing list