mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2024-09-06 22:21:59 +00:00
Filter out appservices from mau count (#8404)
This is an attempt to fix #8403.
This commit is contained in:
parent
1c6b8752b8
commit
8676d8ab2e
1
changelog.d/8404.misc
Normal file
1
changelog.d/8404.misc
Normal file
@ -0,0 +1 @@
|
|||||||
|
Do not include appservice users when calculating the total MAU for a server.
|
@ -41,7 +41,14 @@ class MonthlyActiveUsersWorkerStore(SQLBaseStore):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def _count_users(txn):
|
def _count_users(txn):
|
||||||
sql = "SELECT COALESCE(count(*), 0) FROM monthly_active_users"
|
# Exclude app service users
|
||||||
|
sql = """
|
||||||
|
SELECT COALESCE(count(*), 0)
|
||||||
|
FROM monthly_active_users
|
||||||
|
LEFT JOIN users
|
||||||
|
ON monthly_active_users.user_id=users.name
|
||||||
|
WHERE (users.appservice_id IS NULL OR users.appservice_id = '');
|
||||||
|
"""
|
||||||
txn.execute(sql)
|
txn.execute(sql)
|
||||||
(count,) = txn.fetchone()
|
(count,) = txn.fetchone()
|
||||||
return count
|
return count
|
||||||
|
@ -137,6 +137,21 @@ class MonthlyActiveUsersTestCase(unittest.HomeserverTestCase):
|
|||||||
count = self.get_success(self.store.get_monthly_active_count())
|
count = self.get_success(self.store.get_monthly_active_count())
|
||||||
self.assertEqual(count, 1)
|
self.assertEqual(count, 1)
|
||||||
|
|
||||||
|
def test_appservice_user_not_counted_in_mau(self):
|
||||||
|
self.get_success(
|
||||||
|
self.store.register_user(
|
||||||
|
user_id="@appservice_user:server", appservice_id="wibble"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
count = self.get_success(self.store.get_monthly_active_count())
|
||||||
|
self.assertEqual(count, 0)
|
||||||
|
|
||||||
|
d = self.store.upsert_monthly_active_user("@appservice_user:server")
|
||||||
|
self.get_success(d)
|
||||||
|
|
||||||
|
count = self.get_success(self.store.get_monthly_active_count())
|
||||||
|
self.assertEqual(count, 0)
|
||||||
|
|
||||||
def test_user_last_seen_monthly_active(self):
|
def test_user_last_seen_monthly_active(self):
|
||||||
user_id1 = "@user1:server"
|
user_id1 = "@user1:server"
|
||||||
user_id2 = "@user2:server"
|
user_id2 = "@user2:server"
|
||||||
@ -383,7 +398,7 @@ class MonthlyActiveUsersTestCase(unittest.HomeserverTestCase):
|
|||||||
self.get_success(self.store.upsert_monthly_active_user(appservice2_user1))
|
self.get_success(self.store.upsert_monthly_active_user(appservice2_user1))
|
||||||
|
|
||||||
count = self.get_success(self.store.get_monthly_active_count())
|
count = self.get_success(self.store.get_monthly_active_count())
|
||||||
self.assertEqual(count, 4)
|
self.assertEqual(count, 1)
|
||||||
|
|
||||||
d = self.store.get_monthly_active_count_by_service()
|
d = self.store.get_monthly_active_count_by_service()
|
||||||
result = self.get_success(d)
|
result = self.get_success(d)
|
||||||
|
Loading…
Reference in New Issue
Block a user