Exemple #1
0
 def _validate_and_load(self, query_name_filters):
     """Validates that the Workload is legal."""
     query_name_filters = map(
         str.strip, query_name_filters) if query_name_filters else []
     self._base_dir = os.path.join(Workload.WORKLOAD_DIR, self._name,
                                   'queries')
     # Check whether the workload name corresponds to an existing directory.
     if not os.path.isdir(self._base_dir):
         raise ValueError("Workload %s not found in %s" %
                          (self._name, self._base_dir))
     sections = list()
     # Parse all queries files for the given workload.
     for file_name in self._list_query_files():
         sections.extend(parse_query_test_file(file_name))
     # If the user has specified query names, check whether all the user specified queries
     # exist in the query files.
     all_query_names = [
         s['QUERY_NAME'] for s in sections if s['QUERY_NAME'].strip()
     ]
     regex = re.compile(r'|'.join(['^%s$' % n for n in query_name_filters]),
                        re.I)
     matched_query_names = filter(lambda x: re.match(regex, x),
                                  all_query_names)
     assert len(matched_query_names
                ) > 0, "No matching queries found for %s" % self._name
     # Filter the sections based on the queries the user wants.
     sections = filter(lambda x: x['QUERY_NAME'] in matched_query_names,
                       sections)
     # Add the filtered queries to the query map
     for section in sections:
         self._query_map[section['QUERY_NAME']] = section['QUERY']
 def load_query_test_file(self, workload, file_name, valid_section_names=None,
     encoding=None):
   """
   Loads/Reads the specified query test file. Accepts the given section names as valid.
   Uses a default list of valid section names if valid_section_names is None.
   """
   test_file_path = os.path.join(WORKLOAD_DIR, workload, 'queries', file_name + '.test')
   if not os.path.isfile(test_file_path):
     assert False, 'Test file not found: %s' % file_name
   return parse_query_test_file(test_file_path, valid_section_names, encoding=encoding)
 def load_query_test_file(self, workload, file_name, valid_section_names=None,
     encoding=None):
   """
   Loads/Reads the specified query test file. Accepts the given section names as valid.
   Uses a default list of valid section names if valid_section_names is None.
   """
   test_file_path = os.path.join(WORKLOAD_DIR, workload, 'queries', file_name + '.test')
   if not os.path.isfile(test_file_path):
     assert False, 'Test file not found: %s' % file_name
   return parse_query_test_file(test_file_path, valid_section_names, encoding=encoding)
Exemple #4
0
def load_queries_from_test_file(file_path, db_name=None):
    LOG.debug("Loading queries from %s", file_path)
    test_cases = test_file_parser.parse_query_test_file(file_path)
    queries = list()
    for test_case in test_cases:
        query = Query()
        query.sql = test_file_parser.remove_comments(test_case["QUERY"])
        query.db_name = db_name
        queries.append(query)
    return queries
Exemple #5
0
def load_queries_from_test_file(file_path, db_name=None):
  LOG.debug("Loading queries from %s", file_path)
  test_cases = test_file_parser.parse_query_test_file(file_path)
  queries = list()
  for test_case in test_cases:
    query = Query()
    query.sql = test_file_parser.remove_comments(test_case["QUERY"])
    query.db_name = db_name
    queries.append(query)
  return queries
def load_tpc_queries(workload):
  """Returns a list of tpc queries. 'workload' should either be 'tpch' or 'tpcds'."""
  queries = list()
  query_dir = os.path.join(os.path.dirname(__file__), "..", "..",
      "testdata", "workloads", workload, "queries")
  for query_file in os.listdir(query_dir):
    if workload + "-q" not in query_file:
      continue
    test_cases = test_file_parser.parse_query_test_file(
        os.path.join(query_dir, query_file))
    for test_case in test_cases:
      query = Query()
      query.sql = test_file_parser.remove_comments(test_case["QUERY"])
      queries.append(query)
  return queries
Exemple #7
0
 def _validate_and_load(self, query_name_filters):
   """Validates that the Workload is legal."""
   query_name_filters = map(str.strip, query_name_filters) if query_name_filters else []
   self._base_dir = os.path.join(Workload.WORKLOAD_DIR, self._name, 'queries')
   # Check whether the workload name corresponds to an existing directory.
   if not os.path.isdir(self._base_dir):
     raise ValueError("Workload %s not found in %s" % (self._name, self._base_dir))
   sections = list()
   # Parse all queries files for the given workload.
   for file_name in self._list_query_files():
     sections.extend(parse_query_test_file(file_name))
   # If the user has specified query names, check whether all the user specified queries
   # exist in the query files.
   all_query_names = [s['QUERY_NAME'] for s in sections if s['QUERY_NAME'].strip()]
   regex = re.compile(r'|'.join(['^%s$' % n for n in query_name_filters]), re.I)
   matched_query_names = filter(lambda x: re.match(regex, x), all_query_names)
   assert len(matched_query_names) > 0, "No matching queries found for %s" % self._name
   # Filter the sections based on the queries the user wants.
   sections = filter(lambda x: x['QUERY_NAME'] in matched_query_names, sections)
   # Add the filtered queries to the query map
   for section in sections:
     self._query_map[section['QUERY_NAME']] = section['QUERY']