示例#1
0
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'
示例#2
0
 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
示例#3
0
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'
示例#4
0
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")
示例#5
0
 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()