Example #1
0
def __target_chart(scenario_name, program_runs):
    chart = report.pygal_bar()
    entries = {}

    # get targets
    for target_name, target_arr in target.get_targets().iteritems():
        target_title = "Target " + target_name
        entries[target_title.upper(
        )] = target_arr[scenario_name]['actions-per-sec']

    program_scenarios_processed = {}

    # for each config in each program try to find a matching scenario
    for program_run_name, program_run in program_runs.iteritems():
        program_scenarios_processed[program_run_name] = {}
        for config_name, config_run in program_run['config_runs'].iteritems():
            if scenario_name in program_scenarios_processed[
                    program_run_name]:  # already checked for this program
                break
            if scenario_name in config_run['config_params']['scenarios']:
                config_params = config_run['config_params']
                scenario_params = config_params['scenarios'][scenario_name]

                # if we have an empty entry here from previous iterations, then remove it, since we have found a valid one
                if program_run_name in entries:
                    entries.pop(program_run_name, None)
                program_run_title = "%s (%d vu's)" % (
                    program_run_name,
                    int(config_params['users'] *
                        (scenario_params["percent-of-users"] / 100.0)))
                entries[
                    program_run_title] = config_report.scenario_peak_core_actions_per_sec_avg(
                        scenario_name, config_run['enriched_metrics'],
                        scenario_params)
                program_scenarios_processed[program_run_name][
                    scenario_name] = True
            else:
                entries[program_run_name] = None

    chart.title = scenario_name + ': action/s - program comparison'
    sorted_keys = sorted(entries)
    sorted_vals = map(lambda key: entries[key], sorted_keys)

    # format x_labels
    shared_prefix = __shared_prefix(sorted_keys)
    chart.x_labels = map(
        lambda key: key.replace(shared_prefix, "", 1)
        if shared_prefix else key, map(__format_set_title, sorted_keys))

    chart.add('Actions/s', sorted_vals)
    chart.render_to_file(
        __report_path(program_runs.keys()) + "/" +
        __scenario_chart_name(scenario_name) + ".svg")
def __target_chart(scenario_name, program_runs):
    chart = report.pygal_bar()
    entries = {}

    # get targets
    for target_name, target_arr in target.get_targets().iteritems():
        target_title = "Target " + target_name
        entries[target_title.upper()] = target_arr[scenario_name]['actions-per-sec']

    program_scenarios_processed = {}

    # for each config in each program try to find a matching scenario
    for program_run_name, program_run in program_runs.iteritems():
        program_scenarios_processed[program_run_name] = {}
        for config_name, config_run in program_run['config_runs'].iteritems():
            if scenario_name in program_scenarios_processed[program_run_name]: # already checked for this program
                break
            if scenario_name in config_run['config_params']['scenarios']:
                config_params = config_run['config_params']
                scenario_params = config_params['scenarios'][scenario_name]

                # if we have an empty entry here from previous iterations, then remove it, since we have found a valid one
                if program_run_name in entries:
                    entries.pop(program_run_name, None)
                program_run_title = "%s (%d vu's)" % (program_run_name, int(config_params['users'] * (scenario_params["percent-of-users"] / 100.0)))
                entries[program_run_title] = config_report.scenario_peak_core_actions_per_sec_avg(scenario_name, config_run['enriched_metrics'], scenario_params)
                program_scenarios_processed[program_run_name][scenario_name] = True
            else:
                entries[program_run_name] = None

    chart.title = scenario_name + ': action/s - program comparison'
    sorted_keys = sorted(entries)
    sorted_vals = map(lambda key: entries[key], sorted_keys)

    # format x_labels
    shared_prefix = __shared_prefix(sorted_keys)
    chart.x_labels = map(lambda key: key.replace(shared_prefix, "", 1) if shared_prefix else key, map(__format_set_title, sorted_keys))

    chart.add('Actions/s', sorted_vals)
    chart.render_to_file(__report_path(program_runs.keys()) + "/" + __scenario_chart_name(scenario_name) + ".svg")
def __combined_target_chart(target_chart_scenarios, program_runs):
    bar_args = {}
    if len(program_runs) > 5:
        bar_args["truncate_legend"] = 30
    chart = report.pygal_bar(**bar_args)

    # chart.x_labels = map(str, range(2002, 2013))
    # chart.add('Firefox', [None, None, 0, 16.6,   25,   31, 36.4, 45.5, 46.3, 42.8, 37.1])
    # chart.add('Chrome',  [None, None, None, None, None, None,    0,  3.9, 10.8, 23.8, 35.3])

    sets = {}
    # collect target sets
    for target_name, target_arr in target.get_targets().iteritems():
        target_title = "Target " + target_name
        sets[target_title] = {}
        for scenario_name in target_chart_scenarios:
            sets[target_title][scenario_name] = target_arr[scenario_name]['actions-per-sec']

    for program_run_name, program_run in program_runs.iteritems():
        sets[program_run_name] = {}
        # collect scenario run  for each program sets
        for config_name, config_run in program_run['config_runs'].iteritems():
            config_params = config_run['config_params']
            for scenario_name in config_run['config_params']['scenarios']:
                scenario_params = config_params['scenarios'][scenario_name]
                sets[program_run_name][scenario_name] = config_report.scenario_peak_core_actions_per_sec_avg(scenario_name, config_run['enriched_metrics'], scenario_params)

    chart.title = 'All scenarios: action/s - program comparison'
    # make entries
    data_sets = {}
    x_labels = []
    for set_name, set in sets.iteritems():
        data_sets[set_name] = {"data":[]}

    shared_prefix = __shared_prefix(sets.keys())

    for set_name in data_sets:
        if shared_prefix:
            shortened_set_name = set_name.replace(shared_prefix, "", 1)
        else:
            shortened_set_name = set_name
        set_title = shortened_set_name
        data_sets[set_name]["title"] = {"title": set_title, "data":[]}

    x_labels = []
    for scenario_name in target_chart_scenarios:
        x_labels.append(scenario_name)
    x_labels = sorted(x_labels)

    # arrange data arrays according to sorted scenario_names
    for scenario_name in x_labels:
        for set_name, _set in sets.iteritems():
            if (scenario_name in sets[program_run_name]) and (scenario_name in _set):
                data_sets[set_name]["data"].append(_set[scenario_name])
            else:
                data_sets[set_name]["data"].append(None)

    chart.x_labels = map(__format_set_title, x_labels)
    # att chart sets for each target and program_run
    sorted_set_names = sorted(data_sets)
    for set_name in sorted_set_names:
        chart.add(data_sets[set_name]["title"], data_sets[set_name]["data"])

    chart.render_to_file(__report_path(program_runs.keys()) + "/all_runs_and_targets.svg")
Example #4
0
def __combined_target_chart(target_chart_scenarios, program_runs):
    bar_args = {}
    if len(program_runs) > 5:
        bar_args["truncate_legend"] = 30
    chart = report.pygal_bar(**bar_args)

    # chart.x_labels = map(str, range(2002, 2013))
    # chart.add('Firefox', [None, None, 0, 16.6,   25,   31, 36.4, 45.5, 46.3, 42.8, 37.1])
    # chart.add('Chrome',  [None, None, None, None, None, None,    0,  3.9, 10.8, 23.8, 35.3])

    sets = {}
    # collect target sets
    for target_name, target_arr in target.get_targets().iteritems():
        target_title = "Target " + target_name
        sets[target_title] = {}
        for scenario_name in target_chart_scenarios:
            sets[target_title][scenario_name] = target_arr[scenario_name][
                'actions-per-sec']

    for program_run_name, program_run in program_runs.iteritems():
        sets[program_run_name] = {}
        # collect scenario run  for each program sets
        for config_name, config_run in program_run['config_runs'].iteritems():
            config_params = config_run['config_params']
            for scenario_name in config_run['config_params']['scenarios']:
                scenario_params = config_params['scenarios'][scenario_name]
                sets[program_run_name][
                    scenario_name] = config_report.scenario_peak_core_actions_per_sec_avg(
                        scenario_name, config_run['enriched_metrics'],
                        scenario_params)

    chart.title = 'All scenarios: action/s - program comparison'
    # make entries
    data_sets = {}
    x_labels = []
    for set_name, set in sets.iteritems():
        data_sets[set_name] = {"data": []}

    shared_prefix = __shared_prefix(sets.keys())

    for set_name in data_sets:
        if shared_prefix:
            shortened_set_name = set_name.replace(shared_prefix, "", 1)
        else:
            shortened_set_name = set_name
        set_title = shortened_set_name
        data_sets[set_name]["title"] = {"title": set_title, "data": []}

    x_labels = []
    for scenario_name in target_chart_scenarios:
        x_labels.append(scenario_name)
    x_labels = sorted(x_labels)

    # arrange data arrays according to sorted scenario_names
    for scenario_name in x_labels:
        for set_name, _set in sets.iteritems():
            if (scenario_name in sets[program_run_name]) and (scenario_name
                                                              in _set):
                data_sets[set_name]["data"].append(_set[scenario_name])
            else:
                data_sets[set_name]["data"].append(None)

    chart.x_labels = map(__format_set_title, x_labels)
    # att chart sets for each target and program_run
    sorted_set_names = sorted(data_sets)
    for set_name in sorted_set_names:
        chart.add(data_sets[set_name]["title"], data_sets[set_name]["data"])

    chart.render_to_file(
        __report_path(program_runs.keys()) + "/all_runs_and_targets.svg")