diff --git a/app/config.py b/app/config.py index 3199fbe93..22d9fdd10 100644 --- a/app/config.py +++ b/app/config.py @@ -388,6 +388,7 @@ class Staging(Config): FROM_NUMBER = 'stage' API_RATE_LIMIT_ENABLED = True CHECK_PROXY_HEADER = True + REDIS_ENABLED = False API_KEY_LIMITS = { KEY_TYPE_TEAM: { diff --git a/app/notifications/process_notifications.py b/app/notifications/process_notifications.py index df46b0f02..1277d9921 100644 --- a/app/notifications/process_notifications.py +++ b/app/notifications/process_notifications.py @@ -13,6 +13,7 @@ from notifications_utils.recipients import ( from app import redis_store from app.celery import provider_tasks from app.config import QueueNames + from app.models import ( EMAIL_TYPE, KEY_TYPE_TEST, @@ -26,6 +27,8 @@ from app.dao.notifications_dao import ( dao_delete_notifications_and_history_by_id, dao_created_scheduled_notification ) + +from app.statsd_decorators import statsd from app.v2.errors import BadRequestError from app.utils import get_template_instance, cache_key_for_service_template_counter, convert_bst_to_utc @@ -43,6 +46,7 @@ def check_placeholders(template_object): raise BadRequestError(fields=[{'template': message}], message=message) +@statsd(namespace="performance-testing") def persist_notification( *, template_id, @@ -112,6 +116,7 @@ def persist_notification( return notification +@statsd(namespace="performance-testing") def send_notification_to_queue(notification, research_mode, queue=None): if research_mode or notification.key_type == KEY_TYPE_TEST: queue = QueueNames.RESEARCH_MODE diff --git a/app/notifications/validators.py b/app/notifications/validators.py index 344f05ebe..2fc01b64f 100644 --- a/app/notifications/validators.py +++ b/app/notifications/validators.py @@ -14,6 +14,7 @@ from app.models import ( KEY_TYPE_TEST, KEY_TYPE_TEAM, SCHEDULE_NOTIFICATIONS ) from app.service.utils import service_allowed_to_send_to +from app.statsd_decorators import statsd from app.v2.errors import TooManyRequestsError, BadRequestError, RateLimitError from app import redis_store from app.notifications.process_notifications import create_content_for_notification @@ -46,6 +47,7 @@ def check_service_over_daily_message_limit(key_type, service): raise TooManyRequestsError(service.message_limit) +@statsd(namespace="performance-testing") def check_rate_limiting(service, api_key): check_service_over_api_rate_limit(service, api_key) check_service_over_daily_message_limit(api_key.key_type, service) @@ -80,12 +82,14 @@ def service_has_permission(notify_type, permissions): return notify_type in [p.permission for p in permissions] +@statsd(namespace="performance-testing") def check_service_has_permission(notify_type, permissions): if not service_has_permission(notify_type, permissions): raise BadRequestError(message="Cannot send {}".format( get_public_notify_type_text(notify_type, plural=True))) +@statsd(namespace="performance-testing") def check_service_can_schedule_notification(permissions, scheduled_for): if scheduled_for: if not service_has_permission(SCHEDULE_NOTIFICATIONS, permissions): @@ -117,6 +121,7 @@ def check_sms_content_char_count(content_count): raise BadRequestError(message=message) +@statsd(namespace="performance-testing") def validate_template(template_id, personalisation, service, notification_type): try: template = templates_dao.dao_get_template_by_id_and_service_id( diff --git a/app/v2/notifications/create_response.py b/app/v2/notifications/create_response.py index 7eecfb1b9..a2e44001c 100644 --- a/app/v2/notifications/create_response.py +++ b/app/v2/notifications/create_response.py @@ -1,3 +1,5 @@ +from app.statsd_decorators import statsd + def create_post_sms_response_from_notification(notification, content, from_number, url_root, scheduled_for): noti = __create_notification_response(notification, url_root, scheduled_for) @@ -8,6 +10,7 @@ def create_post_sms_response_from_notification(notification, content, from_numbe return noti +@statsd(namespace="performance-testing") def create_post_email_response_from_notification(notification, content, subject, email_from, url_root, scheduled_for): noti = __create_notification_response(notification, url_root, scheduled_for) noti['content'] = { diff --git a/app/v2/notifications/post_notifications.py b/app/v2/notifications/post_notifications.py index be35f30b4..1026331a5 100644 --- a/app/v2/notifications/post_notifications.py +++ b/app/v2/notifications/post_notifications.py @@ -34,6 +34,7 @@ from app.notifications.validators import ( check_service_sms_sender_id ) from app.schema_validation import validate +from app.statsd_decorators import statsd from app.v2.errors import BadRequestError from app.v2.notifications import v2_notification_blueprint from app.v2.notifications.notification_schemas import ( @@ -118,6 +119,7 @@ def post_notification(notification_type): return jsonify(resp), 201 +@statsd(namespace="performance-testing") def process_sms_or_email_notification(*, form, notification_type, api_key, template, service, reply_to_text=None): form_send_to = form['email_address'] if notification_type == EMAIL_TYPE else form['phone_number'] @@ -160,6 +162,7 @@ def process_sms_or_email_notification(*, form, notification_type, api_key, templ return notification +@statsd(namespace="performance-testing") def process_letter_notification(*, letter_data, api_key, template): if api_key.key_type == KEY_TYPE_TEAM: raise BadRequestError(message='Cannot send letters with a team api key', status_code=403) @@ -187,6 +190,7 @@ def process_letter_notification(*, letter_data, api_key, template): return notification +@statsd(namespace="performance-testing") def get_reply_to_text(notification_type, form): reply_to = None if notification_type == EMAIL_TYPE: