diff --git a/analytics/management/commands/update_analytics_counts.py b/analytics/management/commands/update_analytics_counts.py index 412bad57d6..287aaec450 100644 --- a/analytics/management/commands/update_analytics_counts.py +++ b/analytics/management/commands/update_analytics_counts.py @@ -13,7 +13,7 @@ from typing_extensions import override from analytics.lib.counts import ALL_COUNT_STATS, logger, process_count_stat from scripts.lib.zulip_tools import ENDC, WARNING -from zerver.lib.remote_server import send_analytics_to_push_bouncer +from zerver.lib.remote_server import send_server_data_to_push_bouncer from zerver.lib.timestamp import floor_to_hour from zerver.models import Realm @@ -106,4 +106,4 @@ class Command(BaseCommand): logger.info("Sleeping %d seconds before reporting...", delay) time.sleep(delay) - send_analytics_to_push_bouncer(consider_usage_statistics=True) + send_server_data_to_push_bouncer(consider_usage_statistics=True) diff --git a/corporate/tests/test_remote_billing.py b/corporate/tests/test_remote_billing.py index 08c36bfbe7..51da8b795f 100644 --- a/corporate/tests/test_remote_billing.py +++ b/corporate/tests/test_remote_billing.py @@ -15,7 +15,7 @@ from corporate.lib.remote_billing_util import ( RemoteBillingIdentityDict, RemoteBillingUserDict, ) -from zerver.lib.remote_server import send_analytics_to_push_bouncer +from zerver.lib.remote_server import send_server_data_to_push_bouncer from zerver.lib.test_classes import BouncerTestCase from zerver.lib.timestamp import datetime_to_timestamp from zerver.models import UserProfile @@ -163,7 +163,7 @@ class RemoteBillingAuthenticationTest(BouncerTestCase): realm = desdemona.realm self.add_mock_response() - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) result = self.execute_remote_billing_authentication_flow(desdemona) @@ -193,14 +193,14 @@ class RemoteBillingAuthenticationTest(BouncerTestCase): # and successfully completing the flow - transparently to the user. self.assertFalse(RemoteRealm.objects.filter(uuid=realm.uuid).exists()) - # send_analytics_to_push_bouncer will be called within the endpoint's + # send_server_data_to_push_bouncer will be called within the endpoint's # error handling to register realms with the bouncer. We mock.patch it # to be able to assert that it was called - but also use side_effect # to maintain the original behavior of the function, instead of # replacing it with a Mock. with mock.patch( - "zerver.views.push_notifications.send_analytics_to_push_bouncer", - side_effect=send_analytics_to_push_bouncer, + "zerver.views.push_notifications.send_server_data_to_push_bouncer", + side_effect=send_server_data_to_push_bouncer, ) as m: result = self.execute_remote_billing_authentication_flow(desdemona) @@ -219,7 +219,7 @@ class RemoteBillingAuthenticationTest(BouncerTestCase): desdemona = self.example_user("desdemona") self.add_mock_response() - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) result = self.execute_remote_billing_authentication_flow( desdemona, @@ -235,7 +235,7 @@ class RemoteBillingAuthenticationTest(BouncerTestCase): desdemona = self.example_user("desdemona") self.add_mock_response() - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) with self.settings(TERMS_OF_SERVICE_VERSION="1.0"): result = self.execute_remote_billing_authentication_flow( @@ -280,7 +280,7 @@ class RemoteBillingAuthenticationTest(BouncerTestCase): realm = desdemona.realm self.add_mock_response() - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) with time_machine.travel(now, tick=False): result = self.execute_remote_billing_authentication_flow(desdemona) @@ -336,7 +336,7 @@ class RemoteBillingAuthenticationTest(BouncerTestCase): realm = desdemona.realm self.add_mock_response() - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) # Straight-up access without authing at all: result = self.client_get(f"/realm/{realm.uuid!s}/plans/", subdomain="selfhosting") @@ -388,7 +388,7 @@ class RemoteBillingAuthenticationTest(BouncerTestCase): realm = desdemona.realm self.add_mock_response() - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) result = self.execute_remote_billing_authentication_flow(desdemona, "sponsorship") @@ -408,7 +408,7 @@ class RemoteBillingAuthenticationTest(BouncerTestCase): realm = desdemona.realm self.add_mock_response() - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) result = self.execute_remote_billing_authentication_flow(desdemona, "upgrade") diff --git a/zerver/lib/push_notifications.py b/zerver/lib/push_notifications.py index 625d7843d0..bab40d6497 100644 --- a/zerver/lib/push_notifications.py +++ b/zerver/lib/push_notifications.py @@ -44,8 +44,8 @@ from zerver.lib.exceptions import ErrorCode, JsonableError from zerver.lib.message import access_message, huddle_users from zerver.lib.outgoing_http import OutgoingSession from zerver.lib.remote_server import ( - send_analytics_to_push_bouncer, send_json_to_push_bouncer, + send_server_data_to_push_bouncer, send_to_push_bouncer, ) from zerver.lib.soft_deactivation import soft_reactivate_if_personal_notification @@ -784,7 +784,7 @@ def initialize_push_notifications() -> None: # If we're using the notification bouncer, check if we can # actually send push notifications, and update our # understanding of that state for each realm accordingly. - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) return logger.warning( # nocoverage diff --git a/zerver/lib/remote_server.py b/zerver/lib/remote_server.py index 32e57f526f..e29f2950a3 100644 --- a/zerver/lib/remote_server.py +++ b/zerver/lib/remote_server.py @@ -314,7 +314,7 @@ def get_realms_info_for_push_bouncer(realm_id: Optional[int] = None) -> List[Rea return realm_info_list -def send_analytics_to_push_bouncer(consider_usage_statistics: bool = True) -> None: +def send_server_data_to_push_bouncer(consider_usage_statistics: bool = True) -> None: logger = logging.getLogger("zulip.analytics") # first, check what's latest try: diff --git a/zerver/models.py b/zerver/models.py index 9fccfbca1f..1e7d227520 100644 --- a/zerver/models.py +++ b/zerver/models.py @@ -4856,7 +4856,7 @@ class AbstractRealmAuditLog(models.Model): # This value is for RemoteRealmAuditLog entries tracking changes to the # RemoteRealm model resulting from modified realm information sent to us - # via send_analytics_to_push_bouncer. + # via send_server_data_to_push_bouncer. REMOTE_REALM_VALUE_UPDATED = 20001 REMOTE_PLAN_TRANSFERRED_SERVER_TO_REALM = 20002 diff --git a/zerver/tests/test_push_notifications.py b/zerver/tests/test_push_notifications.py index f447bf2e9f..9e9e759b4d 100644 --- a/zerver/tests/test_push_notifications.py +++ b/zerver/tests/test_push_notifications.py @@ -66,7 +66,7 @@ from zerver.lib.remote_server import ( PushNotificationBouncerServerError, build_analytics_data, get_realms_info_for_push_bouncer, - send_analytics_to_push_bouncer, + send_server_data_to_push_bouncer, send_to_push_bouncer, ) from zerver.lib.response import json_response_from_error @@ -1033,7 +1033,7 @@ class AnalyticsBouncerTest(BouncerTestCase): "zulip.analytics", level="WARNING" ) as mock_warning: resp.add(responses.GET, ANALYTICS_STATUS_URL, body=ConnectionError()) - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() self.assertIn( "WARNING:zulip.analytics:ConnectionError while trying to connect to push notification bouncer\nTraceback ", mock_warning.output[0], @@ -1046,7 +1046,7 @@ class AnalyticsBouncerTest(BouncerTestCase): assert remote_server is not None assert remote_server.last_version is None - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() self.assertTrue(responses.assert_call_count(ANALYTICS_STATUS_URL, 1)) audit_log = RealmAuditLog.objects.all().order_by("id").last() @@ -1121,16 +1121,16 @@ class AnalyticsBouncerTest(BouncerTestCase): with self.settings(SUBMIT_USAGE_STATISTICS=False): # With this setting off, we don't send RealmCounts and InstallationCounts. - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() check_counts(2, 2, 0, 0, 1) with self.settings(SUBMIT_USAGE_STATISTICS=True): # With 'SUBMIT_USAGE_STATISTICS=True' but 'consider_usage_statistics=False', # we don't send RealmCount and InstallationCounts. - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) check_counts(3, 3, 0, 0, 1) - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() check_counts(4, 4, 1, 1, 1) self.assertEqual( @@ -1207,7 +1207,7 @@ class AnalyticsBouncerTest(BouncerTestCase): # Deactivation is synced. do_deactivate_realm(zephyr_realm, acting_user=None) - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() check_counts(5, 5, 1, 1, 7) zephyr_remote_realm = RemoteRealm.objects.get(uuid=zephyr_realm.uuid) @@ -1285,7 +1285,7 @@ class AnalyticsBouncerTest(BouncerTestCase): ) # Test having no new rows - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() check_counts(6, 6, 1, 1, 7) # Test only having new RealmCount rows @@ -1301,14 +1301,14 @@ class AnalyticsBouncerTest(BouncerTestCase): end_time=end_time + timedelta(days=2), value=9, ) - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() check_counts(7, 7, 3, 1, 7) # Test only having new InstallationCount rows InstallationCount.objects.create( property=realm_stat.property, end_time=end_time + timedelta(days=1), value=6 ) - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() check_counts(8, 8, 3, 2, 7) # Test only having new RealmAuditLog rows @@ -1320,7 +1320,7 @@ class AnalyticsBouncerTest(BouncerTestCase): event_time=end_time, extra_data={"data": "foo"}, ) - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() check_counts(9, 9, 3, 2, 7) # Synced event RealmAuditLog.objects.create( @@ -1332,7 +1332,7 @@ class AnalyticsBouncerTest(BouncerTestCase): RealmAuditLog.ROLE_COUNT: realm_user_count_by_role(user.realm), }, ) - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() check_counts(10, 10, 3, 2, 8) # Now create an InstallationCount with a property that's not supposed @@ -1346,7 +1346,7 @@ class AnalyticsBouncerTest(BouncerTestCase): value=5, ) with self.assertLogs("zulip.analytics", level="WARNING") as warn_log: - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() self.assertEqual( warn_log.output, ["WARNING:zulip.analytics:Invalid property mobile_pushes_received::day"], @@ -1382,7 +1382,7 @@ class AnalyticsBouncerTest(BouncerTestCase): id=F("id") + InstallationCount.objects.latest("id").id ) with self.assertLogs(level="WARNING") as warn_log: - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() self.assertEqual( warn_log.output, [ @@ -1504,7 +1504,7 @@ class AnalyticsBouncerTest(BouncerTestCase): self.assertEqual(remote_realm_audit_log.remote_id, realm_audit_log.id) self.assertEqual(remote_realm_audit_log.remote_realm, None) - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() remote_realm_count.refresh_from_db() remote_installation_count.refresh_from_db() @@ -1536,7 +1536,7 @@ class AnalyticsBouncerTest(BouncerTestCase): event_time=end_time, extra_data={"data": "foo"}, ) - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() # Make sure new data was created, so that we're actually testing what we think. self.assertEqual(RemoteRealmCount.objects.count(), current_remote_realm_count_amount + 1) @@ -1568,7 +1568,7 @@ class AnalyticsBouncerTest(BouncerTestCase): self.assertEqual(RemoteRealmCount.objects.count(), 0) with self.assertLogs("zulip.analytics", level="WARNING") as m: - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() self.assertEqual(m.output, ["WARNING:zulip.analytics:Invalid property invalid count stat"]) self.assertEqual(RemoteRealmCount.objects.count(), 0) @@ -1610,7 +1610,7 @@ class AnalyticsBouncerTest(BouncerTestCase): with transaction.atomic(), self.assertLogs("zulip.analytics", level="WARNING") as m: # The usual atomic() wrapper to avoid IntegrityError breaking the test's # transaction. - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() self.assertEqual(m.output, ["WARNING:zulip.analytics:Duplicate registration detected."]) # Servers on Zulip 2.0.6 and earlier only send realm_counts and installation_counts data, @@ -1661,7 +1661,7 @@ class AnalyticsBouncerTest(BouncerTestCase): extra_data=orjson.dumps({"foo": "bar"}).decode(), ) - # send_analytics_to_push_bouncer calls send_to_push_bouncer twice. + # send_server_data_to_push_bouncer calls send_to_push_bouncer twice. # We need to distinguish the first and second calls. first_call = True @@ -1681,7 +1681,7 @@ class AnalyticsBouncerTest(BouncerTestCase): with mock.patch( "zerver.lib.remote_server.send_to_push_bouncer", side_effect=check_for_unwanted_data ): - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() @override_settings(PUSH_NOTIFICATION_BOUNCER_URL="https://push.zulip.org.example.com") @responses.activate @@ -1697,7 +1697,7 @@ class AnalyticsBouncerTest(BouncerTestCase): event_time=self.TIME_ZERO, extra_data=orjson.dumps({RealmAuditLog.ROLE_COUNT: user_count}).decode(), ) - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() remote_log_entry = RemoteRealmAuditLog.objects.order_by("id").last() assert remote_log_entry is not None self.assertEqual(str(remote_log_entry.server.uuid), self.server_uuid) @@ -1752,7 +1752,7 @@ class AnalyticsBouncerTest(BouncerTestCase): "zerver.lib.remote_server.send_to_push_bouncer", side_effect=transform_realmauditlog_extra_data, ): - send_analytics_to_push_bouncer() + send_server_data_to_push_bouncer() if skip_audit_log_check: return @@ -1795,7 +1795,7 @@ class AnalyticsBouncerTest(BouncerTestCase): with mock.patch( "zilencer.views.RemoteRealmBillingSession.get_customer", return_value=None ) as m: - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) m.assert_called() realms = Realm.objects.all() for realm in realms: @@ -1807,7 +1807,7 @@ class AnalyticsBouncerTest(BouncerTestCase): "zilencer.views.RemoteRealmBillingSession.get_customer", return_value=dummy_customer ): with mock.patch("zilencer.views.get_current_plan_by_customer", return_value=None) as m: - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) m.assert_called() realms = Realm.objects.all() for realm in realms: @@ -1827,7 +1827,7 @@ class AnalyticsBouncerTest(BouncerTestCase): "zilencer.views.RemoteRealmBillingSession.get_next_billing_cycle", return_value=dummy_date, ) as m, self.assertLogs("zulip.analytics", level="INFO") as info_log: - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) m.assert_called() realms = Realm.objects.all() for realm in realms: @@ -1857,7 +1857,7 @@ class AnalyticsBouncerTest(BouncerTestCase): m.side_effect = mock_send_to_push_bouncer_response - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) realms = Realm.objects.all() for realm in realms: @@ -1867,7 +1867,7 @@ class AnalyticsBouncerTest(BouncerTestCase): exception_log.output[0], ) - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) self.assertEqual( list( diff --git a/zerver/views/push_notifications.py b/zerver/views/push_notifications.py index 50d08e65a8..ed3823e5ac 100644 --- a/zerver/views/push_notifications.py +++ b/zerver/views/push_notifications.py @@ -24,7 +24,7 @@ from zerver.lib.push_notifications import ( from zerver.lib.remote_server import ( UserDataForRemoteBilling, get_realms_info_for_push_bouncer, - send_analytics_to_push_bouncer, + send_server_data_to_push_bouncer, send_to_push_bouncer, ) from zerver.lib.request import REQ, has_request_variables @@ -162,7 +162,7 @@ def self_hosting_auth_redirect( result = send_to_push_bouncer("POST", "server/billing", post_data) except MissingRemoteRealmError: # Upload realm info and re-try. It should work now. - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) result = send_to_push_bouncer("POST", "server/billing", post_data) except RemoteRealmServerMismatchError: return render(request, "zilencer/remote_realm_server_mismatch_error.html", status=403) diff --git a/zerver/worker/queue_processors.py b/zerver/worker/queue_processors.py index 1fe0e3776c..5e22561bb3 100644 --- a/zerver/worker/queue_processors.py +++ b/zerver/worker/queue_processors.py @@ -80,7 +80,7 @@ from zerver.lib.pysa import mark_sanitized from zerver.lib.queue import SimpleQueueClient, retry_event from zerver.lib.remote_server import ( PushNotificationBouncerRetryLaterError, - send_analytics_to_push_bouncer, + send_server_data_to_push_bouncer, ) from zerver.lib.send_email import ( EmailNotDeliveredError, @@ -1174,7 +1174,7 @@ class DeferredWorker(QueueProcessingWorker): # In the future we may use the realm_id to send only that single realm's info. realm_id = event["realm_id"] logger.info("Updating push bouncer with metadata on behalf of realm %s", realm_id) - send_analytics_to_push_bouncer(consider_usage_statistics=False) + send_server_data_to_push_bouncer(consider_usage_statistics=False) end = time.time() logger.info(