Esempio n. 1
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
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,
    )
Esempio n. 5
0
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:
Esempio n. 6
0
"""
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!'
Esempio n. 7
0
"""
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'])
Esempio n. 9
0
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()
Esempio n. 10
0
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!
Esempio n. 11
0
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"}
Esempio n. 12
0
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()
Esempio n. 13
0
"""
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