From 49199114f016312555ec5c7ee7ee80dc354f55e6 Mon Sep 17 00:00:00 2001 From: Michael Wellman Date: Fri, 22 Nov 2024 12:42:23 -0600 Subject: [PATCH] #2079 SMS Content Length StatsD Metric (#2139) --- .talismanrc | 86 ++++++++++++++++----------------- app/notifications/validators.py | 7 +++ poetry.lock | 4 +- 3 files changed, 52 insertions(+), 45 deletions(-) diff --git a/.talismanrc b/.talismanrc index bfc9f0de4e..35ae2fc75f 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,86 +1,86 @@ fileignoreconfig: - filename: README.md checksum: b2cbbb8508af49abccae8b35b317f7ce09215f3508430ed31440add78f450e5a -- filename: tests/README.md - checksum: 4de2edc5ca36f266118231611036c7ccc6d9328bcceefafd8ca5ca92021f8aed - filename: app/callback/webhook_callback_strategy.py checksum: 47846ab651c27512d3ac7864c08cb25d647f63bb84321953f907551fd9d2e85f - filename: app/celery/contact_information_tasks.py checksum: 80d0acf88bafb1358583016b9e143f4523ef1160d6eacdc9754ca68859b90eae +- filename: app/celery/nightly_tasks.py + checksum: b5b4999f778361603fdc7d710772968461e79a016f66badfbafd590bf70c5a11 - filename: app/celery/service_callback_tasks.py checksum: 83b61b21668c1b1a0ea33a4c3130e82c9b14edbd6542079f1dd3d7493f3e9a79 +- filename: app/commands.py + checksum: 79d914948e4e28dabc9c074956a11a9ceec27e7ae57b8eb8fb483f4a6217f07d +- filename: app/constants.py + checksum: 44390d0a1258b184cf84dc9b6e97bd0768af84a9aa346ba963aa7735fc8bcb36 - filename: app/dao/api_key_dao.py checksum: ab93313f306c8a3f6576141e8f32d9fc99b0de7da8d44a1ddbe6ea55d167dcdb +- filename: app/letters/utils.py + checksum: 5e6071b9cab380f9f3ee172f8c731061241200f53453a9863f22bb5eaa05e6af - filename: app/notifications/process_notifications.py checksum: ae4e31c6eb56d91ec80ae09d13baf4558cf461c65f08893b93fee43f036a17a7 +- filename: app/notifications/send_notifications.py + checksum: 12ed8e1334772c0d65cc13be03b6d5197ebbf4d35460aee2fac1fc2a9644e9e1 +- filename: app/service/rest.py + checksum: 7f8a30dd84b3ceb0d08bae949b5b127fd408ee2fd8097eb7d4b291ede61f8d0f +- filename: app/service/utils.py + checksum: c1e34f85b5b0fc32eb6a3afcc16c7099b74294e578487004dc6ba3bc46832010 - filename: app/template/rest.py checksum: 1e5bdac8bc694d50f8f656dec127dd036b7b1b5b6156e3282d3411956c71ba0b +- filename: app/user/rest.py + checksum: e867ef2c802c8a3fd187fd0df76533e62cccb1721582c4fc4d2a920eb11c1e3b +- filename: app/v3/notifications/rest.py + checksum: aea8f32b796f324e4b57e1be6703b31c0550447011550d944cdb461489203f7d +- filename: app/va/va_profile/va_profile_client.py + checksum: fe634f26f7dc3874f4afcfd1ba3f03bae380b53befe973a752c7347097a88701 +- filename: cd/application-deployment/dev/dev.env + checksum: 2ecdf2787dd15a7971471b5b6b799adf478a8021552e690de76b682f5e7344a3 - filename: cd/application-deployment/dev/vaec-api-task-definition.json checksum: f328ff821339b802eb1d82559e624d5b719857c813d427da5aaa39b240331ddd +- filename: cd/application-deployment/perf/perf.env + checksum: 06912f9617483c19b076d92f0036c125f0a2f80e10a1665e5ddc5ce31a354a5c +- filename: cd/application-deployment/prod/prod.env + checksum: 64f46f118e9f652c663bc53225ddf39f1ef85040ea3e24fceb71ea752984d46c +- filename: cd/application-deployment/staging/staging.env + checksum: ce893a6a8405ad66d7b8efa8e1b1991c9ae6bebb245d500e93d148e1142b714d +- filename: ci/.local.env + checksum: 2c4024d4e94ffa39ff73e6039d65f0b1d19557067ddf6d97ef14aea86cfb58ad - filename: ci/docker-compose-test.yml checksum: e3efec2749e8c19e60f5bfc68eafabe24eba647530a482ceccfc4e0e62cff424 - filename: lambda_functions/pinpoint_callback/pinpoint_callback_lambda.py checksum: 7bd4900e14b1fa789bbb2568b8a8d7a400e3c8350ba32fb44cc0b5b66a2df037 - filename: lambda_functions/ses_callback/ses_callback_lambda.py checksum: b20c36921290a9609f158784e2a3278c36190887e6054ea548004a67675fd79b +- filename: lambda_functions/va_profile/va_profile_opt_in_out_lambda.py + checksum: a05165537ffbfac90000c5d04d8628251d771f6d1334c91c3aed28bf6c32368c - filename: poetry.lock - checksum: 43385fa41efb2fe8e3ed2ea07d70a5cfcce4597a2aa8357d3b9282e577c47c3e + checksum: 375493d3f6a4c5d0530b40cc06c15f68cd87f1e929f3b73ec456f414a1fc2d57 - filename: scripts/trigger_task.py checksum: 0e9d244dbe285de23fc84bb643407963dacf7d25a3358373f01f6272fb217778 +- filename: tests/README.md + checksum: 4de2edc5ca36f266118231611036c7ccc6d9328bcceefafd8ca5ca92021f8aed - filename: tests/app/callback/test_webhook_callback_strategy.py checksum: 288841d3209dc3ca885cd0bb08591221f7f15e5b3406fb7140505096db212554 +- filename: tests/app/celery/test_process_delivery_status_result_tasks.py + checksum: 62fa6216b62971d62c2e53f6b31aeeb659d7a1e404665362ee89cb3ec04793a6 - filename: tests/app/celery/test_process_ga4_measurement_task.py checksum: 6ffb8742a19c5b834c608826fd459cc1b6ea35ebfffd2d929a3a0f269c74183d - filename: tests/app/celery/test_service_callback_tasks.py checksum: 70575434f7a4fedd43d4c9164bc899a606768526d432c364db372524eec26542 -- filename: lambda_functions/va_profile/va_profile_opt_in_out_lambda.py - checksum: a05165537ffbfac90000c5d04d8628251d771f6d1334c91c3aed28bf6c32368c - filename: tests/app/conftest.py checksum: a80aa727586db82ed1b50bdb81ddfe1379e649a9dfc1ece2c36047486b41b83d +- filename: tests/app/dao/test_api_key_dao.py + checksum: ef306fcc1dc512b74abeb5dde5f20977cf95e67a2fa049df6289a7b5500339a9 - filename: tests/app/notifications/test_process_notifications_for_profile_v3.py checksum: 4e15e63d349635131173ffdd7aebcd547621db08de877ef926d3a41fde72d065 +- filename: tests/app/notifications/test_send_notifications.py + checksum: 69304e1edd6993acd9a842a87dba8ee16854befc643863e1589b15c303a71464 - filename: tests/app/v2/notifications/test_post_notifications.py checksum: 3181930a13e3679bb2f17eaa3f383512eb9caf4ed5d5e14496ca4193c6083965 +- filename: tests/app/v3/notifications/test_rest.py + checksum: 25aeb31ce5974f0a414ff43a9a75f787a6cf41c783f7eacf2415ce1fedf54c1d - filename: tests/lambda_functions/va_profile/test_va_profile_integration.py checksum: 4f0f4d7a4113762219e45a51f7b26a7c0cb83f1d8f10c5598533f6cdcf0e0ada -- filename: app/va/va_profile/va_profile_client.py - checksum: fe634f26f7dc3874f4afcfd1ba3f03bae380b53befe973a752c7347097a88701 - filename: tests/lambda_functions/vetext_incoming_forwarder_lambda/test_vetext_incoming_forwarder_lambda.py checksum: 7494eb4321fd2fbc3ff3915d8753d8fec7a936a69dc6ab78f0b532a701f032eb -- filename: app/celery/nightly_tasks.py - checksum: b5b4999f778361603fdc7d710772968461e79a016f66badfbafd590bf70c5a11 -- filename: tests/app/dao/test_api_key_dao.py - checksum: ef306fcc1dc512b74abeb5dde5f20977cf95e67a2fa049df6289a7b5500339a9 -- filename: tests/app/notifications/test_send_notifications.py - checksum: 69304e1edd6993acd9a842a87dba8ee16854befc643863e1589b15c303a71464 -- filename: tests/app/v3/notifications/test_rest.py - checksum: 25aeb31ce5974f0a414ff43a9a75f787a6cf41c783f7eacf2415ce1fedf54c1d -- filename: app/commands.py - checksum: 79d914948e4e28dabc9c074956a11a9ceec27e7ae57b8eb8fb483f4a6217f07d -- filename: app/constants.py - checksum: 44390d0a1258b184cf84dc9b6e97bd0768af84a9aa346ba963aa7735fc8bcb36 -- filename: app/letters/utils.py - checksum: 5e6071b9cab380f9f3ee172f8c731061241200f53453a9863f22bb5eaa05e6af -- filename: app/service/utils.py - checksum: c1e34f85b5b0fc32eb6a3afcc16c7099b74294e578487004dc6ba3bc46832010 -- filename: app/v3/notifications/rest.py - checksum: aea8f32b796f324e4b57e1be6703b31c0550447011550d944cdb461489203f7d -- filename: app/user/rest.py - checksum: e867ef2c802c8a3fd187fd0df76533e62cccb1721582c4fc4d2a920eb11c1e3b -- filename: app/notifications/send_notifications.py - checksum: 12ed8e1334772c0d65cc13be03b6d5197ebbf4d35460aee2fac1fc2a9644e9e1 -- filename: app/service/rest.py - checksum: 7f8a30dd84b3ceb0d08bae949b5b127fd408ee2fd8097eb7d4b291ede61f8d0f -- filename: tests/app/celery/test_process_delivery_status_result_tasks.py - checksum: 62fa6216b62971d62c2e53f6b31aeeb659d7a1e404665362ee89cb3ec04793a6 -- filename: cd/application-deployment/dev/dev.env - checksum: 2ecdf2787dd15a7971471b5b6b799adf478a8021552e690de76b682f5e7344a3 -- filename: cd/application-deployment/perf/perf.env - checksum: 06912f9617483c19b076d92f0036c125f0a2f80e10a1665e5ddc5ce31a354a5c -- filename: cd/application-deployment/prod/prod.env - checksum: 64f46f118e9f652c663bc53225ddf39f1ef85040ea3e24fceb71ea752984d46c -- filename: cd/application-deployment/staging/staging.env - checksum: ce893a6a8405ad66d7b8efa8e1b1991c9ae6bebb245d500e93d148e1142b714d -- filename: ci/.local.env - checksum: 2c4024d4e94ffa39ff73e6039d65f0b1d19557067ddf6d97ef14aea86cfb58ad version: "1.0" diff --git a/app/notifications/validators.py b/app/notifications/validators.py index d9b92076d6..f4a0dd507b 100644 --- a/app/notifications/validators.py +++ b/app/notifications/validators.py @@ -192,6 +192,13 @@ def validate_template( check_template_is_for_notification_type(notification_type, template.template_type) check_template_is_active(template) template_with_content = create_content_for_notification(template, personalisation) + + if template.template_type == SMS_TYPE: + # We are trying both metric types to see which one works best for us + current_app.statsd_client.gauge('sms.content_length', template_with_content.content_count) + # Histogram is a DataDog specific method, which sends a histogram value to statsd. + current_app.statsd_client.histogram('sms.content_length.histogram', template_with_content.content_count) + if template.template_type == SMS_TYPE and template_with_content.content_count > SMS_CHAR_COUNT_LIMIT: current_app.logger.warning( 'The personalized message length is %s, which exceeds the 4 segments length of %s.', diff --git a/poetry.lock b/poetry.lock index 9efa4b3607..c37bf29d20 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2224,7 +2224,7 @@ files = [ [[package]] name = "notification-utils" -version = "2.2.3" +version = "2.2.5" description = "Shared python code for VA Notify. Forked from https://github.com/cds-snc/notification-utils" optional = false python-versions = "*" @@ -2254,7 +2254,7 @@ statsd = ">=3.3.0" type = "git" url = "https://github.com/department-of-veterans-affairs/notification-utils.git" reference = "HEAD" -resolved_reference = "979cbb61dcd6f67a04f64d1b01c40acafb162b1a" +resolved_reference = "5ab78d95ba2350be1834fd7b4bee7aca5d9c94ae" [[package]] name = "notifications-python-client"