def list_resources(resource_type=None, query=None, tag=None): """return all resources""" reliability_values = [] first_run = None last_run = None response = { 'total': 0, 'success': { 'number': 0, 'percentage': 0 }, 'fail': { 'number': 0, 'percentage': 0 }, 'first_run': None, 'last_run': None, 'reliability': 0 } if resource_type is not None: response['resources'] = models.Resource.query.filter_by( resource_type=resource_type).all() if query is not None: field, term = get_query_field_term(query) response['resources'] = models.Resource.query.filter( field.ilike(term)).all() if tag is not None: response['resources'] = models.Resource.query.filter( models.Resource.tags.any(models.Tag.name.in_([tag]))).all() if 'resources' not in response: # No query nor resource_type provided: fetch all resources response['resources'] = models.Resource.query.all() response['total'] = len(response['resources']) for resource in response['resources']: if resource.first_run < first_run or first_run is None: first_run = resource.first_run if resource.last_run < last_run or last_run is None: last_run = resource.last_run response['first_run'] = first_run response['last_run'] = last_run if resource.last_run.success: response['success']['number'] += 1 else: response['fail']['number'] += 1 reliability_values.append(resource.reliability) response['success']['percentage'] = util.percentage( response['success']['number'], response['total']) response['fail']['percentage'] = util.percentage( response['fail']['number'], response['total']) response['reliability'] = util.average(reliability_values) return response
def list_resources(resource_type=None): """return all resources""" response = { 'total': 0, 'success': { 'number': 0, 'percentage': 0 }, 'fail': { 'number': 0, 'percentage': 0 } } if resource_type is not None: response['resources'] = models.Resource.query.filter_by( resource_type=resource_type).all() else: response['resources'] = models.Resource.query.all() response['total'] = len(response['resources']) for resource in response['resources']: if resource.last_run.success: response['success']['number'] += 1 else: response['fail']['number'] += 1 response['success']['percentage'] = util.percentage( response['success']['number'], response['total']) response['fail']['percentage'] = util.percentage( response['fail']['number'], response['total']) return response
def list_resources(resource_type=None, query=None): """return all resources""" reliability_values = [] first_run = None last_run = None response = { 'total': 0, 'success': { 'number': 0, 'percentage': 0 }, 'fail': { 'number': 0, 'percentage': 0 }, 'first_run': None, 'last_run': None, 'reliability': 0 } if resource_type is not None: response['resources'] = models.Resource.query.filter_by( resource_type=resource_type).all() if query is not None: field, term = get_query_field_term(query) response['resources'] = models.Resource.query.filter( field.ilike(term)).all() else: response['resources'] = models.Resource.query.all() response['total'] = len(response['resources']) for resource in response['resources']: if resource.first_run < first_run or first_run is None: first_run = resource.first_run if resource.last_run < last_run or last_run is None: last_run = resource.last_run response['first_run'] = first_run response['last_run'] = last_run if resource.last_run.success: response['success']['number'] += 1 else: response['fail']['number'] += 1 reliability_values.append(resource.reliability) response['success']['percentage'] = util.percentage( response['success']['number'], response['total']) response['fail']['percentage'] = util.percentage( response['fail']['number'], response['total']) response['reliability'] = util.average(reliability_values) return response
def reliability(self): result = 0 if self.runs.count() > 0: total_runs = self.runs.count() success_runs = self.runs.filter_by(success=True).count() result = util.percentage(success_runs, total_runs) return result
def test_percentage(): # 分母为 0 的情况 assert percentage(1, 0) == '0.00%' assert percentage(1, 0, with_format=False) == 0.0 assert percentage(1, 0.0) == '0.00%' assert percentage(1, 0.0, with_format=False) == 0.0 assert percentage(10, 100) == '10.00%' assert percentage(10, 100, with_format=False) == 10.0 assert percentage(0.03, 4) == '0.75%' assert percentage(0.03, 4, with_format=False) == 0.75
def get_health_summary(): """return summary of all runs""" # For overall reliability total_runs = models.get_runs_count() failed_runs = models.get_runs_status_count(False) success_runs = total_runs - failed_runs # Resources status derived from last N runs total_resources = models.get_resources_count() last_runs = models.get_last_run_per_resource() failed = 0 failed_resources = [] for run in last_runs: if not run.success: failed_resources.append( get_resource_by_id(run.resource_identifier)) failed += 1 success = total_resources - failed failed_percentage = int(round( util.percentage(failed, total_resources))) success_percentage = 100 - failed_percentage response = { 'total': total_resources, 'success': { 'number': success, 'percentage': success_percentage }, 'fail': { 'number': failed, 'percentage': failed_percentage }, 'first_run': models.get_first_run(), 'last_run': models.get_last_run(), 'reliability': round(util.percentage(success_runs, total_runs), 1), 'failed_resources': failed_resources } return response
def get_health_summary(): """return summary of all runs""" # For overall reliability total_runs = models.get_runs_count() failed_runs = models.get_runs_status_count(False) success_runs = total_runs - failed_runs # Resources status derived from last N runs total_resources = models.get_resources_count() last_runs = models.get_last_run_per_resource() failed = 0 failed_resources = [] for run in last_runs: if not run.success: failed_resources.append(get_resource_by_id( run.resource_identifier)) failed += 1 success = total_resources - failed failed_percentage = int(round(util.percentage(failed, total_resources))) success_percentage = 100 - failed_percentage response = { 'site_url': APP.config['GHC_SITE_URL'], 'total': total_resources, 'success': { 'number': success, 'percentage': success_percentage }, 'fail': { 'number': failed, 'percentage': failed_percentage }, 'first_run': models.get_first_run(), 'last_run': models.get_last_run(), 'reliability': round(util.percentage(success_runs, total_runs), 1), 'failed_resources': failed_resources } return response
def list_resources(resource_type=None): """return all resources""" reliability_values = [] response = { 'total': 0, 'success': { 'number': 0, 'percentage': 0 }, 'fail': { 'number': 0, 'percentage': 0 }, 'reliability': 0 } if resource_type is not None: response['resources'] = models.Resource.query.filter_by( resource_type=resource_type).all() else: response['resources'] = models.Resource.query.all() response['total'] = len(response['resources']) for resource in response['resources']: if resource.last_run.success: response['success']['number'] += 1 else: response['fail']['number'] += 1 reliability_values.append(resource.reliability) response['success']['percentage'] = util.percentage( response['success']['number'], response['total']) response['fail']['percentage'] = util.percentage( response['fail']['number'], response['total']) response['reliability'] = util.average(reliability_values) return response
def percentage_per_year_pie(term_map, term): """ Create a pie chart showing percentage of articles per year """ labels = list(term_map.keys()) sizes = percentage(list(term_map.values())) fig1, ax1 = plt.subplots(figsize=(10, 7.5)) ax1.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90, labeldistance=1.2) ax1.axis( 'equal') # Equal aspect ratio ensures that pie is drawn as a circle. plt.title("Percentage of articles per year for " + term, y=1.08) plt.savefig('output/percentage_per_year_pie_' + term + '.png') plt.show()
def list_resources(resource_type=None, query=None, tag=None): """return all resources""" reliability_values = [] first_run = None last_run = None response = { 'total': 0, 'success': { 'number': 0, 'percentage': 0 }, 'fail': { 'number': 0, 'percentage': 0 }, 'first_run': None, 'last_run': None, 'reliability': 0 } filters = () if resource_type is not None: filters = filters + ("resource_type = '%s'" % resource_type,) if query is not None: field, term = get_query_field_term(query) filters = filters + (field.ilike(term),) if tag is not None: tag_filter = (models.Resource.tags.any(models.Tag.name.in_([tag])),) filters = filters + tag_filter response['resources'] = models.Resource.query.filter(*filters).all() response['total'] = len(response['resources']) response['success']['percentage'] = 0 response['fail']['percentage'] = 0 response['reliability'] = 0 for resource in response['resources']: if resource.runs.count() > 0: # View should work even without Runs if resource.first_run < first_run or first_run is None: first_run = resource.first_run if resource.last_run < last_run or last_run is None: last_run = resource.last_run response['first_run'] = first_run response['last_run'] = last_run if resource.last_run.success: response['success']['number'] += 1 else: response['fail']['number'] += 1 reliability_values.append(resource.reliability) response['success']['percentage'] = int(round(util.percentage( response['success']['number'], response['total']))) response['fail']['percentage'] = 100 - response['success']['percentage'] response['reliability'] = round(util.average(reliability_values), 1) return response
def list_resources(resource_type=None, query=None, tag=None): """return all resources""" reliability_values = [] first_run = None last_run = None response = { 'total': 0, 'success': { 'number': 0, 'percentage': 0 }, 'fail': { 'number': 0, 'percentage': 0 }, 'first_run': None, 'last_run': None, 'reliability': 0 } if resource_type is not None: response['resources'] = models.Resource.query.filter_by( resource_type=resource_type).all() if query is not None: field, term = get_query_field_term(query) response['resources'] = models.Resource.query.filter( field.ilike(term)).all() if tag is not None: response['resources'] = models.Resource.query.filter( models.Resource.tags.any(models.Tag.name.in_([tag]))).all() if 'resources' not in response: # No query nor resource_type provided: fetch all resources response['resources'] = models.Resource.query.all() response['total'] = len(response['resources']) response['success']['percentage'] = 0 response['fail']['percentage'] = 0 response['reliability'] = 0 for resource in response['resources']: if resource.runs.count() > 0: # View should work even without Runs if resource.first_run < first_run or first_run is None: first_run = resource.first_run if resource.last_run < last_run or last_run is None: last_run = resource.last_run response['first_run'] = first_run response['last_run'] = last_run if resource.last_run.success: response['success']['number'] += 1 else: response['fail']['number'] += 1 reliability_values.append(resource.reliability) response['success']['percentage'] = util.percentage( response['success']['number'], response['total']) response['fail']['percentage'] = util.percentage( response['fail']['number'], response['total']) response['reliability'] = util.average(reliability_values) return response
def reliability(self): total_runs = self.runs.count() success_runs = self.runs.filter_by(success=True).count() return util.percentage(success_runs, total_runs)
def test_percentage(self): """ Testing util.py percentage """ testlist = [2, 3, 4, 2, 3] self.assertEqual(percentage(testlist), [14.29, 21.43, 28.57, 14.29, 21.43])
has_proxy, prob = result if has_proxy: proxied.append((site, prob)) print "### Site stats ###" n_sites = n_reachable + len(unreachable) sum_path_hops = sum( n_hops * n_sites for n_hops, n_sites in izip(count(0), path_hops_hist) ) avg_path_hops = float(sum_path_hops) / float(n_reachable) print "Probed sites: {0}.".format(n_sites) print "Reachable sites: {0} ({1} %).".format( n_reachable, percentage(n_reachable, n_sites) ) print "Unreachable sites ({0}): {1}.".format( len(unreachable), ", ".join(unreachable) ) print "Average path hops: {0}.".format(avg_path_hops) print "Path on which MSS changed: {0} ({1} %).".format( n_mss_changed_path, percentage(n_mss_changed_path, n_sites) ) if test_proxy: print "Site running behind a proxy ({0}): {1}.".format( len(proxied),