Adds boundary scenario tests for "Project limits" values

1) test_max_zone_name_length
   Get project's "max_zone_name" value and try to create
   a zones with the name lengths of:
   1. "max_zone_name" -->  Expected: PASS
   2. "max_zone_name +1" -->  Expected: FAILED

2) test_max_recordset_name_length
   Get project's "max_recordset_name_length" value and
   try to create a recordsets with the name lengths of:
   1. "max_zone_name_length" --> Expected: PASS
   2. "max_zone_name_length +1" --> Expected: FAILED

Change-Id: I7e54759c50551fc09f468f874a16054c15316560
Signed-off-by: Arkady Shtempler <ashtempl@redhat.com>
diff --git a/designate_tempest_plugin/data_utils.py b/designate_tempest_plugin/data_utils.py
index 4b5d24d..8389cfd 100644
--- a/designate_tempest_plugin/data_utils.py
+++ b/designate_tempest_plugin/data_utils.py
@@ -47,6 +47,27 @@
     return name + suffix
 
 
+def rand_dns_name_by_size(name_size, label_size=63):
+    """Generates label based DNS name, by given characters size
+    :param name_size: size in characters
+    :param label_size: the max number of characters to be used
+                       for label. Max value according the RFC is 63
+                       https://datatracker.ietf.org/doc/html/rfc1035#
+                       section-2.3.4in
+    :return: DNS name
+    """
+    template = ''
+    while len(template) < name_size:
+        remaining_length = name_size - len(template)
+        template += '{}.'.format(rand_string(
+            min(remaining_length - 1, label_size)))
+    if template.endswith('..'):
+        raise Exception("There is no way to generate a valid DNS name "
+                        "using provided set of values:{},{}, consider "
+                        "changing those values".format(name_size, label_size))
+    return template
+
+
 def rand_email(domain=None):
     """Generate a random zone name
     :return: a random zone name e.g. example.org.