def generate_series(): session = api.get_session() if CONF.start_date: start_date = datetime.datetime.strptime(CONF.start_date, '%Y-%m-%d') else: start_date = None if CONF.stop_date: stop_date = datetime.datetime.strptime(CONF.stop_date, '%Y-%m-%d') else: stop_date = None run_times = api.get_run_times_grouped_by_run_metadata_key( CONF.command.metadata_key, start_date=start_date, stop_date=stop_date, session=session) df = pd.DataFrame(dict( [(k, pd.Series(v)) for k, v in run_times.iteritems()])) if not CONF.title: title = "Run aggregate run time grouped by metadata" else: title = CONF.title # NOTE(mtreinish): Decrease label font size for the worst case where we # have tons of groups matplotlib.rcParams['xtick.labelsize'] = '3' plt.figure() plt.title(title) df.plot(kind='box', rot=90) plt.ylabel('Time (sec.)') plt.tight_layout() plt.savefig(CONF.output, dpi=900)
def generate_series(): session = api.get_session() if CONF.start_date: start_date = datetime.datetime.strptime(CONF.start_date, '%Y-%m-%d') else: start_date = None if CONF.stop_date: stop_date = datetime.datetime.strptime(CONF.stop_date, '%Y-%m-%d') else: stop_date = None run_times = api.get_run_times_grouped_by_run_metadata_key( CONF.command.metadata_key, start_date=start_date, stop_date=stop_date, session=session) df = pd.DataFrame( dict([(k, pd.Series(v)) for k, v in run_times.iteritems()])) if not CONF.title: title = "Run aggregate run time grouped by metadata" else: title = CONF.title # NOTE(mtreinish): Decrease label font size for the worst case where we # have tons of groups matplotlib.rcParams['xtick.labelsize'] = '3' plt.figure() plt.title(title) df.plot(kind='box', rot=90) plt.ylabel('Time (sec.)') plt.tight_layout() plt.savefig(CONF.output, dpi=900)
def generate_series(): session = api.get_session() start_date = None stop_date = None if CONF.start_date: start_date = date_parser.parse(CONF.start_date) if CONF.stop_date: stop_date = date_parser.parse(CONF.stop_date) ci_time = {} ci_time_temp = {} project_run_times = api.get_run_times_grouped_by_run_metadata_key( CONF.command.key, start_date=start_date, stop_date=stop_date, session=session) for project in project_run_times: ci_time_temp[project] = numpy.sum(project_run_times[project]) sorted_times = sorted(ci_time_temp.items(), key=operator.itemgetter(1), reverse=True) if CONF.command.num: sorted_times = sorted_times[:CONF.command.num] for project, time in sorted_times: ci_time[project] = time title = CONF.title or 'Aggregate Run Time grouped by %s' % CONF.command.key session.close() plt.bar(range(len(ci_time)), ci_time.values(), align='center', width=.1) plt.xticks(range(len(ci_time)), ci_time.keys(), rotation=90, fontsize=8) plt.title(title) plt.tight_layout() plt.savefig(CONF.output, dpi=CONF.dpi)
def test_get_run_times_grouped_by_run_metadata_key(self): run_a = api.create_run(run_time=2.2, passes=2) run_b = api.create_run(run_time=3.5, passes=3) api.add_run_metadata({'key': 'value_a'}, run_a.id) api.add_run_metadata({'key': 'value_b'}, run_b.id) res = api.get_run_times_grouped_by_run_metadata_key('key') expected_res = {'value_a': [2.2], 'value_b': [3.5]} self.assertEqual(expected_res, res)