コード例 #1
0
ファイル: views.py プロジェクト: archaeogeek/GeoHealthCheck
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
コード例 #2
0
ファイル: views.py プロジェクト: ragnvald/GeoHealthCheck
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
コード例 #3
0
ファイル: views.py プロジェクト: gitter-badger/GeoHealthCheck
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
コード例 #4
0
 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
コード例 #5
0
ファイル: models.py プロジェクト: geopython/GeoHealthCheck
 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
コード例 #6
0
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
コード例 #7
0
ファイル: views.py プロジェクト: geopython/GeoHealthCheck
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
コード例 #8
0
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
コード例 #9
0
ファイル: views.py プロジェクト: fujuca510/GeoHealthCheck
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
コード例 #10
0
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()
コード例 #11
0
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
コード例 #12
0
ファイル: views.py プロジェクト: josegar74/GeoHealthCheck
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
コード例 #13
0
ファイル: models.py プロジェクト: fujuca510/GeoHealthCheck
 def reliability(self):
     total_runs = self.runs.count()
     success_runs = self.runs.filter_by(success=True).count()
     return util.percentage(success_runs, total_runs)
コード例 #14
0
 def reliability(self):
     total_runs = self.runs.count()
     success_runs = self.runs.filter_by(success=True).count()
     return util.percentage(success_runs, total_runs)
コード例 #15
0
 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])
コード例 #16
0
ファイル: main.py プロジェクト: RaphaelJ/cours-master-1
                    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),