def get_product_ttm(prid, **kwargs): try: context, passed = app.request_metric('sum-passed-product-executions', prid=prid, **kwargs) _, activity = app.request_metric('sum-product-activity', prid=prid, **kwargs) kwargs['max'] = context['size'] kwargs['begin'] = context['begin'] kwargs['end'] = context['end'] _, total = app.request_metric('sum-passed-executions', **kwargs) res = [(a + (p / float(t))) / 2.0 if t else 0 for p, a, t in zip(passed, activity, total)] return context, res except (EnvironmentError, AttributeError) as e: raise APIError(e.message)
def get_product_cost(prid, **kwargs): try: kwargs['max'] = 0 context, devs = app.request_metric('sum-product-developers', prid=prid, **kwargs) kwargs['max'] = context['size'] kwargs['begin'] = context['begin'] kwargs['end'] = context['end'] context, commits = app.request_metric('sum-product-commits', prid=prid, **kwargs) pairs = list(dropwhile(lambda x: x[1] == 0, zip(devs, commits))) pairs = list(dropwhile(lambda x: x[1] == 0, reversed(pairs))) res = [cost(nd, nc) for nd, nc in pairs] return context, [sum(res)] except (EnvironmentError, AttributeError) as e: raise APIError(e.message)
def get_product_health(prid, **kwargs): try: context, buildtime = app.request_metric('sum-product-buildtime', prid=prid, **kwargs) _, brokentime = app.request_metric('sum-product-brokentime', prid=prid, **kwargs) _, timetofix = app.request_metric('avg-product-timetofix', prid=prid, **kwargs) health = 0 if buildtime and brokentime and timetofix: base_health = (timetofix[0] + brokentime[0]) / buildtime[0] if buildtime[0] else 10000.0 base_health = min(10000.0, base_health) base_health = max(0.0, base_health / 10000.0) health = 1.0 - base_health return context, [health] except (EnvironmentError, AttributeError) as e: raise APIError(e.message)
def calculate_member_quality(uid, **kwargs): def __process_row(): return [__calc_quality(s, rm) for s, rm in zip(sr, rm_activity)] try: repo_ctx, repositories = app.request_view('member-repositories', uid=uid, **kwargs) repositories = map(lambda x: x['id'], repositories) repo_success_rate = map(lambda x: app.request_metric('sum-repository-success-rate', rid=x, **kwargs), repositories) context = repo_success_rate[0][0] repo_success_rate = map(lambda x: x[1], repo_success_rate) repo_member_activity = map( lambda x: app.request_metric('sum-member-activity-in-repository', uid=uid, rid=x, **kwargs)[1], repositories) res = [__process_row() for sr, rm_activity in zip(repo_success_rate, repo_member_activity)] res = [sum(t) / len(t) for t in zip(*res)] return context, res except (EnvironmentError, AttributeError) as e: raise APIError(e.message)