def test_epsagon_wrapper_env_init(wrapped_get): reload(epsagon) epsagon.init() wrapped_get.assert_has_calls([ mock.call('EPSAGON_HANDLER'), mock.call('EPSAGON_SSL'), mock.call('EPSAGON_URLS_TO_IGNORE'), mock.call('EPSAGON_ENDPOINTS_TO_IGNORE'), mock.call('EPSAGON_IGNORED_KEYS'), mock.call('EPSAGON_ALLOWED_KEYS'), mock.call('EPSAGON_TOKEN'), mock.call('EPSAGON_APP_NAME'), mock.call('EPSAGON_COLLECTOR_URL'), mock.call('EPSAGON_METADATA'), mock.call('EPSAGON_DISABLE_ON_TIMEOUT'), mock.call('EPSAGON_DEBUG'), mock.call('EPSAGON_SEND_TRACE_ON_ERROR'), mock.call('EPSAGON_HANDLER'), mock.call('DISABLE_EPSAGON'), mock.call('DISABLE_EPSAGON_PATCH'), mock.call('EPSAGON_SSL'), mock.call('EPSAGON_URLS_TO_IGNORE'), mock.call('EPSAGON_ENDPOINTS_TO_IGNORE'), mock.call('EPSAGON_IGNORED_KEYS'), mock.call('EPSAGON_ALLOWED_KEYS'), mock.call('EPSAGON_STEPS_OUTPUT_PATH'), mock.call('EPSAGON_TOKEN'), mock.call('EPSAGON_APP_NAME'), mock.call('EPSAGON_COLLECTOR_URL'), mock.call('EPSAGON_METADATA'), mock.call('EPSAGON_DISABLE_ON_TIMEOUT'), mock.call('EPSAGON_DEBUG'), mock.call('EPSAGON_SEND_TRACE_ON_ERROR'), mock.call('EPSAGON_PROPAGATE_LAMBDA_ID') ])
def test_epsagon_wrapper_env_init(_wrapped_get, wrapped_init, _create): reload(epsagon) epsagon.init() wrapped_init.assert_called_with(app_name='test', token='1234', collector_url='epsagon', metadata_only=True, disable_timeout_send=False, debug=False, send_trace_only_on_error=False, url_patterns_to_ignore=None, keys_to_ignore=None, transport=default_http, split_on_send=False)
def init_epsagon(**kwargs): """ Call `epsagon.init` with default test args :param kwargs: Optional args to pass """ default_kwargs = { 'token': TEST_TOKEN, 'app_name': TEST_APP, 'metadata_only': False, 'collector_url': TEST_COLLECTOR, } default_kwargs.update(kwargs) epsagon.init(**default_kwargs)
def test_epsagon_wrapper_env_init(_wrapped_get, wrapped_init, _create): reload(epsagon) epsagon.init() wrapped_init.assert_called_with( app_name='test', token='1234', collector_url='epsagon', metadata_only=True, disable_timeout_send=False, debug=False, send_trace_only_on_error=False, url_patterns_to_ignore=None, keys_to_ignore=None, keys_to_allow=None, transport=default_http, split_on_send=False, propagate_lambda_id=False, logging_tracing_enabled=True, step_dict_output_path=None, sample_rate=0.5, )
import epsagon import json import logging import requests import stripe import watchtower from flask import Flask, request, abort logs_session = boto3.Session( region_name=os.environ.get('AWS_REGION'), aws_access_key_id=os.environ.get('AWS_ACCESS_KEY'), aws_secret_access_key=os.environ.get('AWS_SECRET_ACCESS_KEY')) epsagon.init(token=os.environ.get('EPSAGON_KEY'), app_name='order_app', metadata_only=False) app = Flask(__name__) epsagon.flask_wrapper(app) logging.basicConfig(level=logging.INFO) handler = watchtower.CloudWatchLogHandler(boto3_session=logs_session) app.logger.addHandler(handler) logging.getLogger("werkzeug").addHandler(handler) @app.route('/process_order', methods=['POST']) def process_order(): order_payload = None try:
""" Simple example for Epsagon usage in AWS Lambda function. """ import epsagon epsagon.init( token='my-secret-token', app_name='my-app-name', metadata_only=False # Optional ) @epsagon.lambda_wrapper def handle(event, context): return 'It worked!'
""" Epsagon Acceptance Tests """ import platform import json import logging import epsagon logging.getLogger().setLevel(logging.INFO) epsagon.init( token='acceptance-test', app_name='acceptance', ) @epsagon.lambda_wrapper def sanity(event, _): """ Basic test, using the Epsagon lambda-wrapper :param event: events args :param _: context, unused :return: Success indication """ body = { 'message': 'Epsagon: General Acceptance Test (py {})'.format( platform.python_version()), 'input': event }
def test_epsagon_wrapper_env_endpoints(_wrapped_get, wrapped_http): reload(epsagon) epsagon.init() wrapped_http.assert_called_with(['/health', '/test'])
import epsagon epsagon.init( token='EPSAGON_API_KEY', app_name='kubecontest.py', metadata_only=False, # Optional, send more trace data ) @epsagon.python_wrapper def main(): return 'It worked!' main()
Generated by 'django-admin startproject' using Django 3.0.8. For more information on this file, see https://docs.djangoproject.com/en/3.0/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/3.0/ref/settings/ """ import os import epsagon epsagon.init( token='test-token', app_name='django-test', metadata_only=False, ) # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = '*21q4t60y)@x)mh8b*rs-33d@ot#v*vz=d1yh_naq-yxb)5dco' # SECURITY WARNING: don't run with debug turned on in production!
from fastapi import FastAPI import epsagon epsagon.init( token='', metadata_only=False, ignored_endpoints=['/ignored'], ) app = FastAPI() @app.get("/") def root(): return {"message": "Fast API in Python"} @app.get("/ignored") def ignored(): return {"message": "This Is Ignored"}
import os from flask import Flask import epsagon token = os.getenv('EPSAGON_TOKEN', default="") epsagon.init(token=token, app_name='Python Hello Flask', metadata_only=False) app = Flask(__name__) epsagon.flask_wrapper(app) @app.route('/') def hello(): return "Hello World!" if __name__ == "__main__": app.run()
""" A simple Lambda wrapped with Epsagon """ import os import epsagon EPSAGON_APP_NAME = (os.environ['EPSAGON_APP_NAME'] if os.environ['EPSAGON_APP_NAME'] != '' else 'Default App') epsagon.init(token=os.environ['EPSAGON_TOKEN'], app_name=EPSAGON_APP_NAME) @epsagon.lambda_wrapper def handler(event, context): # Your code goes here! return 'Hello World!'
import pytest import mock from flask import Flask, request import epsagon from epsagon import trace_factory from epsagon.wrappers.flask import FlaskWrapper # Setting demo Flask app epsagon.init(token='test', app_name='FlaskApp') RETURN_VALUE = 'a' app_test = Flask('test') FlaskWrapper(app_test) @app_test.route('/') def test(): return RETURN_VALUE @app_test.route('/error') def error(): raise Exception('test') @pytest.fixture def client(): """ A test client that has the Authorization header """ app_test.testing = True app = app_test.test_client() return app