Jump to: navigation, search

Difference between revisions of "Murano/TestsDocumentation"

(Murano Continious Integration Service)
(Murano Continious Integration Service)
Line 4: Line 4:
 
=== Murano Continious Integration Service ===
 
=== Murano Continious Integration Service ===
 
Murano project has the CI server, which tests all commits for Murano components and allow to verify that new code does not break nothing.
 
Murano project has the CI server, which tests all commits for Murano components and allow to verify that new code does not break nothing.
 
  
 
Murano CI uses OpenStack QA cloud for testing infrastructure.  
 
Murano CI uses OpenStack QA cloud for testing infrastructure.  
 
 
Murano CI url: [https://murano-ci.mirantis.com/ murano-ci.mirantis.com]
 
Murano CI url: [https://murano-ci.mirantis.com/ murano-ci.mirantis.com]
 
  
 
Here you can see several Jenkins jobs with different targets:
 
Here you can see several Jenkins jobs with different targets:

Revision as of 13:49, 21 January 2014

Murano Automated Tests Description

This page describes automated tests for OpenStack Murano project: how you can download and run tests, how understand the root of problems with FAILed tests and detailed description about each test, which executes for per commit.

Murano Continious Integration Service

Murano project has the CI server, which tests all commits for Murano components and allow to verify that new code does not break nothing.

Murano CI uses OpenStack QA cloud for testing infrastructure. Murano CI url: murano-ci.mirantis.com

Here you can see several Jenkins jobs with different targets:

  • Jobs with postfix 'on-commit' allow to verify each commit.
  • Jobs with prefix 'prepare-devbox' allow to prepare VMs in OpenStack testing environment for fast Murano installation before the 'on-commit' jobs.
  • Jobs with postfix 'night-job-0.4' or 'full_run' allow to run long tests per night and validate that all integration tests are PASSED.


Other jobs allow to build and test Murano documentation and perform another usefull work to support Murano CI infrastructure.

Murano Automated Tests: UI Tests

Murano project has a Web User Interface and we have the test suite for Murano Web UI. All UI tests are located in murano-tests repository. Here we have several tests suites for Murano WebUI testing.

All automated tests for Murano Web UI writed with Robot Framework and advanced Selenium library, which allow to find Web elements using captions for fields and other information to find elements without xpath.


Murano Automated Tests: Tempest Tests

All Murano services have tempest-based automated tests, which allow to verify API interfaces and deployment scenarious.

Tempest tests for Murano are located in two different repositories:

  1. Basic Repository with full test suites for different Murano services
  2. Custom Tests with advanced tests for specific cases.


The following Python files are contain basic tests suites for different Murano components:

  • test_murano_envs.py contains test suite with actions on murano's environments(create, delete, get and etc.)
  • test_murano_sessions.py contains test suite with actions on murano's sessions(create, delete, get and etc.)
  • test_murano_services.py contains test suite with actions on murano's services(create, delete, get and etc.)
  • test_murano_deploy.py contains test suite with actions on deploy some basic services
  • test_murano_metadata.py contains test suite with actions on murano's metadata repository


If you want to know, what steps does this test, in code in comments for this test you can see test's scenario. For example:

   @attr(type='smoke')
   def test_get_environment(self):
       """
       Get environment by id
       Test create environment, afterthat test try to get
       environment's info, using environment's id,
       and finally delete this environment
       Target component: Murano
       Scenario:
           1. Send request to create environment.
           2. Send request to get environment
           3. Send request to delete environment
       """
       resp, env = self.create_environment('test')
       self.environments.append(env)
       resp, infa = self.get_environment_by_id(env['id'])
       assert resp['status'] == '200'
       assert infa['name'] == 'test'
       self.delete_environment(env['id'])
       self.environments.pop(self.environments.index(env))