def test_ranged_dictionaries(started_cluster, fold): if node.is_built_with_thread_sanitizer(): remove_mysql_dicts() fields = FIELDS["ranged"] values = VALUES["ranged"] data = [Row(fields, vals) for vals in values] all_ranged_dicts = [ d for d in DICTIONARIES if d.structure.layout.layout_type == "ranged" ] ranged_dicts = get_dictionaries(fold, 10, all_ranged_dicts) for dct in ranged_dicts: dct.load_data(data) node.query("system reload dictionaries") queries_with_answers = [] for dct in ranged_dicts: for row in data: for field in fields: if not field.is_key and not field.is_range: for query in dct.get_select_get_queries(field, row): queries_with_answers.append( (query, row.get_value_by_name(field.name))) for query, answer in queries_with_answers: print query assert node.query(query) == str(answer) + '\n'
def __init__(self, test_name): self.fields = KEY_FIELDS["ranged"] + START_FIELDS[ "ranged"] + MIDDLE_FIELDS + END_FIELDS["ranged"] self.values = VALUES["ranged"] self.data = [Row(self.fields, vals) for vals in self.values] self.layout_to_dictionary = dict() self.test_name = test_name self.layouts = LAYOUTS_RANGED
def test_simple_dictionaries(started_cluster, fold): if node.is_built_with_thread_sanitizer(): remove_mysql_dicts() fields = FIELDS["simple"] values = VALUES["simple"] data = [Row(fields, vals) for vals in values] all_simple_dicts = [ d for d in DICTIONARIES if d.structure.layout.layout_type == "simple" ] simple_dicts = get_dictionaries(fold, 10, all_simple_dicts) print "Length of dicts:", len(simple_dicts) for dct in simple_dicts: dct.load_data(data) node.query("system reload dictionaries") queries_with_answers = [] for dct in simple_dicts: for row in data: for field in fields: if not field.is_key: for query in dct.get_select_get_queries(field, row): queries_with_answers.append( (query, row.get_value_by_name(field.name))) for query in dct.get_select_has_queries(field, row): queries_with_answers.append((query, 1)) for query in dct.get_select_get_or_default_queries( field, row): queries_with_answers.append( (query, field.default_value_for_get)) for query in dct.get_hierarchical_queries(data[0]): queries_with_answers.append((query, [1])) for query in dct.get_hierarchical_queries(data[1]): queries_with_answers.append((query, [2, 1])) for query in dct.get_is_in_queries(data[0], data[1]): queries_with_answers.append((query, 0)) for query in dct.get_is_in_queries(data[1], data[0]): queries_with_answers.append((query, 1)) for query, answer in queries_with_answers: print query if isinstance(answer, list): answer = str(answer).replace(' ', '') assert node.query(query) == str(answer) + '\n'
def test_redis_dictionaries(started_cluster, id): print('id:', id) dicts = DICTIONARIES[id] values = VALUES[id] field = FIELDS[id] node.query("system reload dictionaries") for dct in dicts: data = [] dict_type = dct.structure.layout.layout_type key_fields = KEY_FIELDS[dict_type] key_values = KEY_VALUES[dict_type] for key_value, value in zip(key_values, values): data.append(Row(key_fields + [field], key_value + [value])) dct.load_data(data) queries_with_answers = [] for row in data: for query in dct.get_select_get_queries(field, row): queries_with_answers.append( (query, row.get_value_by_name(field.name))) for query in dct.get_select_has_queries(field, row): queries_with_answers.append((query, 1)) for query in dct.get_select_get_or_default_queries(field, row): queries_with_answers.append( (query, field.default_value_for_get)) node.query("system reload dictionary {}".format(dct.name)) for query, answer in queries_with_answers: print(query) assert node.query(query) == str(answer) + '\n' # Checks, that dictionaries can be reloaded. node.query("system reload dictionaries")
def __init__(self): self.fields = KEY_FIELDS["ranged"] + START_FIELDS[ "ranged"] + MIDDLE_FIELDS + END_FIELDS["ranged"] self.values = VALUES["ranged"] self.data = [Row(self.fields, vals) for vals in self.values] self.layout_to_dictionary = dict()