rally/tests/objects/test_verification.py
Andrey Kurilin 7b26c8dbdb Adds saver for results from rally verify
Better integration with tempest can be achieved by analyzing output
of testr. This patch provides parsing testr output and saves results
into database.

Blueprint tempest-verification
Closes-Bug: #1302475

Change-Id: I110bc115bd597df54499ac295d836a87411c4c80
2014-04-08 00:34:45 +03:00

91 lines
3.9 KiB
Python

# Copyright 2014: Mirantis Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import mock
from rally import objects
from tests import test
from tests.verification.verifiers import fakes
class VerificationTestCase(test.TestCase):
def setUp(self):
super(VerificationTestCase, self).setUp()
self.db_obj = {
'id': 777,
'uuid': 'test_uuid',
'failures': 0, 'tests': 2, 'errors': 0, 'time': '0.54',
'details': {
'failures': 0, 'tests': 2, 'errors': 0, 'time': '0.54',
'test_cases': [
{'classname': 'foo.Test',
'name': 'foo_test[gate,negative]',
'time': '0.25'},
{'classname': 'bar.Test',
'name': 'bar_test[gate,negative]',
'time': '0.29'}]}}
@mock.patch('rally.objects.verification.db.verification_create')
def test_init_with_create(self, mock_create):
objects.Verification(deployment_uuid='some_deployment_uuid')
mock_create.assert_called_once_with('some_deployment_uuid')
@mock.patch('rally.objects.verification.db.verification_create')
def test_init_without_create(self, mock_create):
verification = objects.Verification(db_object=self.db_obj)
self.assertEqual(0, mock_create.call_count)
self.assertEqual(self.db_obj['failures'], verification.failures)
self.assertEqual(self.db_obj['tests'], verification.tests)
self.assertEqual(self.db_obj['errors'], verification.errors)
self.assertEqual(self.db_obj['time'], verification.time)
@mock.patch('rally.objects.verification.db.verification_get')
def test_get(self, mock_get):
objects.Verification.get(self.db_obj['id'])
mock_get.assert_called_once_with(self.db_obj['id'])
@mock.patch('rally.objects.verification.db.verification_delete')
@mock.patch('rally.objects.verification.db.verification_create')
def test_create_and_delete(self, mock_create, mock_delete):
verification = objects.Verification(db_object=self.db_obj)
verification.delete()
mock_delete.assert_called_once_with(self.db_obj['uuid'])
@mock.patch('rally.objects.verification.db.verification_update')
def test_set_failed(self, mock_update):
mock_update.return_value = self.db_obj
verification = objects.Verification(db_object=self.db_obj)
verification.set_failed()
mock_update.assert_called_once_with(self.db_obj['uuid'],
{'status': 'failed'})
@mock.patch('rally.objects.verification.db.verification_result_create')
@mock.patch('rally.objects.verification.db.verification_update')
def test_finish_verification(self, mock_update, mock_create):
verification = objects.Verification(db_object=self.db_obj)
fake_results = fakes.get_fake_test_case()
verification.finish_verification(
fake_results['total'],
fake_results['test_cases'])
expected_values = {'status': 'finished'}
expected_values.update(fake_results['total'])
mock_update.assert_called_with(self.db_obj['uuid'], expected_values)
expected_data = fake_results['total'].copy()
expected_data['test_cases'] = fake_results['test_cases']
mock_create.assert_called_once_with(verification.uuid, expected_data)