diff --git a/.gitreview b/.gitreview
index 372a4e0..3298388 100644
--- a/.gitreview
+++ b/.gitreview
@@ -1,4 +1,5 @@
 [gerrit]
-host=review.openstack.org
+host=gerrit.mcp.mirantis.net
 port=29418
-project=openstack/telemetry-tempest-plugin.git
+project=packaging/sources/telemetry-tempest-plugin.git
+defaultbranch=mcp/queens
diff --git a/telemetry_tempest_plugin/scenario/test_telemetry_integration.py b/telemetry_tempest_plugin/scenario/test_telemetry_integration.py
index b908185..72b0633 100644
--- a/telemetry_tempest_plugin/scenario/test_telemetry_integration.py
+++ b/telemetry_tempest_plugin/scenario/test_telemetry_integration.py
@@ -11,6 +11,7 @@
 #    under the License.
 
 import os
+import six
 import unittest
 
 from gabbi import runner
@@ -97,10 +98,11 @@
         })
 
         with open(os.path.join(TEST_DIR, filename)) as f:
+            suite_dict = self.deunicode(utils.load_yaml(f))
             test_suite = suitemaker.test_suite_from_dict(
                 loader=unittest.defaultTestLoader,
                 test_base_name="gabbi",
-                suite_dict=utils.load_yaml(f),
+                suite_dict=suite_dict,
                 test_directory=TEST_DIR,
                 host="example.com", port=None,
                 fixture_module=None,
@@ -126,6 +128,17 @@
 
             self.assertTrue(result.wasSuccessful())
 
+    def deunicode(self, val):
+        if isinstance(val, six.string_types) and not isinstance(val, str):
+            return val.encode('utf-8')
+        if isinstance(val, dict):
+            dictionary = {self.deunicode(key): self.deunicode(val[key])
+                          for key in val}
+            return dictionary
+        if isinstance(val, list):
+            return [self.deunicode(x) for x in val]
+        return val
+
 
 def test_maker(name, filename):
     def test(self):
