| # 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. |
| |
| from unittest import mock |
| |
| import testtools |
| |
| from tempest.lib.common import profiler |
| |
| |
| class TestProfiler(testtools.TestCase): |
| |
| def test_serialize(self): |
| key = 'SECRET_KEY' |
| pm = {'key': key, 'uuid': 'ID'} |
| |
| with mock.patch('tempest.lib.common.profiler._profiler', pm): |
| with mock.patch('json.dumps') as jdm: |
| jdm.return_value = '{"base_id": "ID", "parent_id": "ID"}' |
| |
| expected = { |
| 'X-Trace-HMAC': |
| '887292df9f13b8b5ecd6bbbd2e16bfaaa4d914b0', |
| 'X-Trace-Info': |
| b'eyJiYXNlX2lkIjogIklEIiwgInBhcmVudF9pZCI6ICJJRCJ9' |
| } |
| |
| self.assertEqual(expected, |
| profiler.serialize_as_http_headers()) |
| |
| def test_profiler_lifecycle(self): |
| key = 'SECRET_KEY' |
| uuid = 'ID' |
| |
| self.assertEqual({}, profiler._profiler) |
| |
| profiler.enable(key, uuid) |
| self.assertEqual({'key': key, 'uuid': uuid}, profiler._profiler) |
| |
| profiler.disable() |
| self.assertEqual({}, profiler._profiler) |
| |
| @mock.patch('oslo_utils.uuidutils.generate_uuid') |
| def test_profiler_lifecycle_generate_trace_id(self, generate_uuid_mock): |
| key = 'SECRET_KEY' |
| uuid = 'ID' |
| generate_uuid_mock.return_value = uuid |
| |
| self.assertEqual({}, profiler._profiler) |
| |
| profiler.enable(key) |
| self.assertEqual({'key': key, 'uuid': uuid}, profiler._profiler) |
| |
| profiler.disable() |
| self.assertEqual({}, profiler._profiler) |