Ejemplo n.º 1
0
 def _get_scenario_group_info(self, query):
     try:
         scenario_group = scenario_base.Scenario.get_by_name(query)
         info = ("%s (benchmark scenario group).\n\n" %
                 scenario_group.__name__)
         info += utils.format_docstring(scenario_group.__doc__)
         info += "\nBenchmark scenarios:\n"
         scenarios = scenario_group.list_benchmark_scenarios()
         first_column_len = max(map(len, scenarios)) + cliutils.MARGIN
         second_column_len = len("Description") + cliutils.MARGIN
         table = ""
         for scenario_name in scenarios:
             cls, method_name = scenario_name.split(".")
             if hasattr(scenario_group, method_name):
                 scenario = getattr(scenario_group, method_name)
                 doc = utils.parse_docstring(scenario.__doc__)
                 descr = doc["short_description"] or ""
                 second_column_len = max(second_column_len,
                                         len(descr) + cliutils.MARGIN)
                 table += " " + scenario_name
                 table += " " * (first_column_len - len(scenario_name))
                 table += descr + "\n"
         info += "-" * (first_column_len + second_column_len + 1) + "\n"
         info += (" Name" + " " * (first_column_len - len("Name")) +
                  "Description\n")
         info += "-" * (first_column_len + second_column_len + 1) + "\n"
         info += table
         return info
     except exceptions.NoSuchScenario:
         return None
Ejemplo n.º 2
0
Archivo: info.py Proyecto: slashk/rally
    def find(self, query):
        """Search for an entity that matches the query and print info about it.

        :param query: search query.
        """
        scenario_group = searchutils.find_benchmark_scenario_group(query)
        if scenario_group:
            print("%s (benchmark scenario group).\n" % scenario_group.__name__)
            # TODO(msdubov): Provide all scenario classes with docstrings.
            doc = utils.format_docstring(scenario_group.__doc__)
            print(doc)
            return

        scenario = searchutils.find_benchmark_scenario(query)
        if scenario:
            print("%(scenario_group)s.%(scenario_name)s "
                  "(benchmark scenario).\n" %
                  {"scenario_group": utils.get_method_class(scenario).__name__,
                   "scenario_name": scenario.__name__})
            doc = utils.parse_docstring(scenario.__doc__)
            print(doc["short_description"] + "\n")
            if doc["long_description"]:
                print(doc["long_description"] + "\n")
            if doc["params"]:
                print("Parameters:")
                for param in doc["params"]:
                    print("    - %(name)s: %(doc)s" % param)
            if doc["returns"]:
                print("Returns: %s" % doc["returns"])
            return

        print("Failed to find any docs for query: '%s'" % query)
        return 1
Ejemplo n.º 3
0
 def _get_scenario_info(self, query):
     try:
         scenario = scenario_base.Scenario.get_scenario_by_name(query)
         scenario_group_name = utils.get_method_class(scenario).__name__
         header = ("%(scenario_group)s.%(scenario_name)s "
                   "(benchmark scenario)" %
                   {"scenario_group": scenario_group_name,
                    "scenario_name": scenario.__name__})
         info = self._make_header(header)
         info += "\n\n"
         doc = utils.parse_docstring(scenario.__doc__)
         if not doc["short_description"]:
             return None
         info += doc["short_description"] + "\n\n"
         if doc["long_description"]:
             info += doc["long_description"] + "\n\n"
         if doc["params"]:
             info += "Parameters:\n"
             for param in doc["params"]:
                 info += "    - %(name)s: %(doc)s" % param + "\n"
         if doc["returns"]:
             info += "Returns: %s" % doc["returns"]
         return info
     except exceptions.NoSuchScenario:
         return None
Ejemplo n.º 4
0
 def _get_scenario_group_info(self, query):
     try:
         scenario_group = scenario_base.Scenario.get_by_name(query)
         info = ("%s (benchmark scenario group).\n\n" %
                 scenario_group.__name__)
         info += utils.format_docstring(scenario_group.__doc__)
         info += "\nBenchmark scenarios:\n"
         scenarios = scenario_group.list_benchmark_scenarios()
         first_column_len = max(map(len, scenarios)) + cliutils.MARGIN
         second_column_len = len("Description") + cliutils.MARGIN
         table = ""
         for scenario_name in scenarios:
             cls, method_name = scenario_name.split(".")
             if hasattr(scenario_group, method_name):
                 scenario = getattr(scenario_group, method_name)
                 doc = utils.parse_docstring(scenario.__doc__)
                 descr = doc["short_description"] or ""
                 second_column_len = max(second_column_len,
                                         len(descr) + cliutils.MARGIN)
                 table += " " + scenario_name
                 table += " " * (first_column_len - len(scenario_name))
                 table += descr + "\n"
         info += "-" * (first_column_len + second_column_len + 1) + "\n"
         info += (" Name" + " " * (first_column_len - len("Name")) +
                  "Description\n")
         info += "-" * (first_column_len + second_column_len + 1) + "\n"
         info += table
         return info
     except exceptions.NoSuchScenario:
         return None
Ejemplo n.º 5
0
 def _get_descriptions(self, base_cls):
     descriptions = []
     for entity in utils.itersubclasses(base_cls):
         name = entity.__name__
         doc = utils.parse_docstring(entity.__doc__)
         description = doc["short_description"] or ""
         descriptions.append((name, description))
     return descriptions
Ejemplo n.º 6
0
 def _get_descriptions(self, base_cls):
     descriptions = []
     for entity in utils.itersubclasses(base_cls):
         name = entity.__name__
         doc = utils.parse_docstring(entity.__doc__)
         description = doc["short_description"] or ""
         descriptions.append((name, description))
     return descriptions
Ejemplo n.º 7
0
def _compose_action_description(action_fn):
    description = ""
    if action_fn.__doc__:
        parsed_doc = utils.parse_docstring(action_fn.__doc__)
        short = parsed_doc.get("short_description")
        long = parsed_doc.get("long_description")

        description = "%s\n\n%s" % (short, long) if long else short

    return description
Ejemplo n.º 8
0
def _compose_action_description(action_fn):
    description = ""
    if action_fn.__doc__:
        parsed_doc = utils.parse_docstring(action_fn.__doc__)
        short = parsed_doc.get("short_description")
        long = parsed_doc.get("long_description")

        description = "%s\n\n%s" % (short, long) if long else short

    return description
Ejemplo n.º 9
0
 def _get_descriptions(self, base_cls, subclass_filter=None):
     descriptions = []
     subclasses = utils.itersubclasses(base_cls)
     if subclass_filter:
         subclasses = filter(subclass_filter, subclasses)
     for entity in subclasses:
         name = entity.__name__
         doc = utils.parse_docstring(entity.__doc__)
         description = doc["short_description"] or ""
         descriptions.append((name, description))
     descriptions.sort(key=lambda d: d[0])
     return descriptions
Ejemplo n.º 10
0
    def test_parse_incomplete_docstring(self):
        docstring = """One-line description.

:param p1: Param 1 description.
:param p2: Param 2 description.
"""

        dct = utils.parse_docstring(docstring)
        expected = {
            "short_description": "One-line description.",
            "long_description": None,
            "params": [{"name": "p1", "doc": "Param 1 description."},
                       {"name": "p2", "doc": "Param 2 description."}],
            "returns": None
        }
        self.assertEqual(dct, expected)
Ejemplo n.º 11
0
    def test_parse_docstring_with_no_params(self):
        docstring = """One-line description.

Multi-
line-
description.

:returns: Return value description.
"""

        dct = utils.parse_docstring(docstring)
        expected = {
            "short_description": "One-line description.",
            "long_description": "Multi-\nline-\ndescription.",
            "params": [],
            "returns": "Return value description."
        }
        self.assertEqual(dct, expected)
Ejemplo n.º 12
0
 def _get_scenario_group_info(self, query):
     try:
         scenario_group = scenario_base.Scenario.get_by_name(query)
         if not any(scenario_base.Scenario.is_scenario(scenario_group, m)
                    for m in dir(scenario_group)):
             return None
         info = self._make_header("%s (benchmark scenario group)" %
                                  scenario_group.__name__)
         info += "\n\n"
         info += utils.format_docstring(scenario_group.__doc__)
         scenarios = scenario_group.list_benchmark_scenarios()
         descriptions = []
         for scenario_name in scenarios:
             cls, method_name = scenario_name.split(".")
             if hasattr(scenario_group, method_name):
                 scenario = getattr(scenario_group, method_name)
                 doc = utils.parse_docstring(scenario.__doc__)
                 descr = doc["short_description"] or ""
                 descriptions.append((scenario_name, descr))
         info += self._compose_table("Benchmark scenarios", descriptions)
         return info
     except exceptions.NoSuchScenario:
         return None
Ejemplo n.º 13
0
def _compose_category_description(category):

    descr_pairs = _methods_of(category)

    description = ""
    doc = category.__doc__
    if doc:
        description = doc.strip()
    if descr_pairs:
        description += "\n\nCommands:\n"
        sublen = lambda item: len(item[0])
        first_column_len = max(map(sublen, descr_pairs)) + MARGIN
        for item in descr_pairs:
            name = item[0]
            if item[1].__doc__:
                doc = utils.parse_docstring(
                    item[1].__doc__)["short_description"]
            else:
                doc = ""
            name += " " * (first_column_len - len(name))
            description += "   %s%s\n" % (name, doc)

    return description
Ejemplo n.º 14
0
def _compose_category_description(category):

    descr_pairs = _methods_of(category)

    description = ""
    doc = category.__doc__
    if doc:
        description = doc.strip()
    if descr_pairs:
        description += "\n\nCommands:\n"
        sublen = lambda item: len(item[0])
        first_column_len = max(map(sublen, descr_pairs)) + MARGIN
        for item in descr_pairs:
            name = item[0]
            if item[1].__doc__:
                doc = utils.parse_docstring(
                    item[1].__doc__)["short_description"]
            else:
                doc = ""
            name += " " * (first_column_len - len(name))
            description += "   %s%s\n" % (name, doc)

    return description
Ejemplo n.º 15
0
 def _get_scenario_info(self, query):
     try:
         scenario = scenario_base.Scenario.get_scenario_by_name(query)
         scenario_group_name = utils.get_method_class(scenario).__name__
         info = ("%(scenario_group)s.%(scenario_name)s "
                 "(benchmark scenario).\n\n" % {
                     "scenario_group": scenario_group_name,
                     "scenario_name": scenario.__name__
                 })
         doc = utils.parse_docstring(scenario.__doc__)
         if not doc["short_description"]:
             return None
         info += doc["short_description"] + "\n\n"
         if doc["long_description"]:
             info += doc["long_description"] + "\n\n"
         if doc["params"]:
             info += "Parameters:\n"
             for param in doc["params"]:
                 info += "    - %(name)s: %(doc)s" % param + "\n"
         if doc["returns"]:
             info += "Returns: %s" % doc["returns"]
         return info
     except exceptions.NoSuchScenario:
         return None