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)
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
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)
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