示例#1
0
def test_total_time_elapsed(_mock1):
    """Check Total Time Elapsed Method."""
    timedelta = total_time_elapsed(
        sa_audit_data=response["result"]["_audit"],
        external_request_id=response["external_request_id"],
    )
    assert timedelta is not None
def _stack_aggregator(handler):
    external_request_id = 'None'
    stack_aggregator_started_at = time.time()

    assert handler
    s = {'stack_aggregator': 'failure', 'external_request_id': None}
    input_json = request.get_json()
    # (fixme) Create decorator for metrics handling.
    metrics_payload = {
        'pid': os.getpid(),
        'hostname': os.environ.get("HOSTNAME"),
        'endpoint': request.endpoint,
        'request_method': request.method,
        'status_code': 200
    }

    if input_json and 'external_request_id' in input_json \
            and input_json['external_request_id']:
        external_request_id = input_json['external_request_id']
        logger.info('%s stack_aggregator/ request with payload: %s',
                    external_request_id, input_json)

        try:
            persist = request.args.get('persist', 'true') == 'true'
            s = handler.execute(input_json, persist=persist)
            if s is not None and s.get('result') and s.get('result').get(
                    '_audit'):
                # Creating and Pushing Total Metrics Data to Accumulator
                metrics_payload['value'] = total_time_elapsed(
                    sa_audit_data=s['result']['_audit'],
                    external_request_id=input_json['external_request_id'])
                push_data(metrics_payload)

        except Exception as e:
            s = {
                'stack_aggregator': 'unexpected error',
                'external_request_id': input_json.get('external_request_id'),
                'message': '%s' % e
            }
            metrics_payload['status_code'] = 400
            logger.error('%s failed %s', external_request_id, s)

        try:
            # Pushing Individual Metrics Data to Accumulator
            metrics_payload['value'] = get_time_delta(
                audit_data=s['result']['_audit'])
            metrics_payload['endpoint'] = request.endpoint
            push_data(metrics_payload)
        except KeyError:
            pass

    logger.info('%s took %0.2f seconds for _stack_aggregators',
                external_request_id,
                time.time() - stack_aggregator_started_at)

    return flask.jsonify(s)
示例#3
0
def stack_aggregator(payload: ServiceInput,
                     request: Request,
                     persist: bool = True):
    """Handle POST requests that are sent to /api/v1/stack_aggregator REST API endpoint."""
    s = {'stack_aggregator': 'failure', 'external_request_id': None}

    request_dict = dict(request)
    metrics_payload = {
        'pid': os.getpid(),
        'hostname': os.environ.get("HOSTNAME"),
        'endpoint': request_dict['path'],
        'request_method': request_dict['method'],
        'status_code': 200
    }

    input_json = json.loads(payload.json())
    if input_json and 'external_request_id' in input_json \
            and input_json['external_request_id']:
        try:
            s = StackAggregator().execute(input_json, persist=persist)
            if s is not None and s.get('result') and s.get('result').get(
                    '_audit'):
                # Creating and Pushing Total Metrics Data to Accumulator
                metrics_payload['value'] = total_time_elapsed(
                    sa_audit_data=s['result']['_audit'],
                    external_request_id=input_json['external_request_id'])
                push_data(metrics_payload)

        except Exception as e:
            s = {
                'stack_aggregator': 'unexpected error',
                'external_request_id': input_json.get('external_request_id'),
                'message': '%s' % e
            }
            metrics_payload['status_code'] = 400

        try:
            # Pushing Individual Metrics Data to Accumulator
            metrics_payload['value'] = get_time_delta(
                audit_data=s['result']['_audit'])
            metrics_payload['endpoint'] = request_dict['path']
            if os.getenv('ACCUMULATE_MATRICS', False):
                push_data(metrics_payload)
        except KeyError:
            pass

    return s
示例#4
0
def stack_aggregator():
    """Handle POST requests that are sent to /api/v1/stack_aggregator REST API endpoint."""
    s = {'stack_aggregator': 'failure', 'external_request_id': None}
    input_json = request.get_json()
    metrics_payload = {
        'pid': os.getpid(),
        'hostname': os.environ.get("HOSTNAME"),
        'endpoint': 'api_v1.get_stack_analyses',
        'request_method': request.method,
        'status_code': 200
    }

    if input_json and 'external_request_id' in input_json \
            and input_json['external_request_id']:

        try:
            persist = request.args.get('persist', 'true') == 'true'
            s = StackAggregator().execute(input_json, persist=persist)
            if s is not None and s.get('result') and s.get('result').get(
                    '_audit'):
                # Creating and Pushing Total Metrics Data to Accumulator
                metrics_payload['value'] = total_time_elapsed(
                    sa_audit_data=s['result']['_audit'],
                    external_request_id=input_json['external_request_id'])
                push_data(metrics_payload)

        except Exception as e:
            s = {
                'stack_aggregator': 'unexpected error',
                'external_request_id': input_json.get('external_request_id'),
                'message': '%s' % e
            }
            metrics_payload['status_code'] = 400

        try:
            # Pushing Individual Metrics Data to Accumulator
            metrics_payload['value'] = get_time_delta(
                audit_data=s['result']['_audit'])
            metrics_payload['endpoint'] = request.endpoint
            push_data(metrics_payload)
        except KeyError:
            pass

    return flask.jsonify(s)
示例#5
0
def test_total_time_elapsed_no_param(_mock1):
    """Test Select from DB."""
    sf_db = total_time_elapsed(sa_audit_data={}, external_request_id="req-id")
    assert sf_db is None