mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-11-12 11:26:37 -05:00
Merge branch 'develop' into application-services-txn-reliability
Conflicts: synapse/storage/appservice.py
This commit is contained in:
commit
f9232c7917
45 changed files with 1192 additions and 372 deletions
|
|
@ -100,7 +100,7 @@ class PresenceTestCase(unittest.TestCase):
|
|||
self.room_members = []
|
||||
|
||||
room_member_handler = handlers.room_member_handler = Mock(spec=[
|
||||
"get_rooms_for_user",
|
||||
"get_joined_rooms_for_user",
|
||||
"get_room_members",
|
||||
"fetch_room_distributions_into",
|
||||
])
|
||||
|
|
@ -111,7 +111,7 @@ class PresenceTestCase(unittest.TestCase):
|
|||
return defer.succeed([self.room_id])
|
||||
else:
|
||||
return defer.succeed([])
|
||||
room_member_handler.get_rooms_for_user = get_rooms_for_user
|
||||
room_member_handler.get_joined_rooms_for_user = get_rooms_for_user
|
||||
|
||||
def get_room_members(room_id):
|
||||
if room_id == self.room_id:
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ class PresenceProfilelikeDataTestCase(unittest.TestCase):
|
|||
"set_presence_state",
|
||||
"is_presence_visible",
|
||||
"set_profile_displayname",
|
||||
"get_rooms_for_user_where_membership_is",
|
||||
"get_rooms_for_user",
|
||||
]),
|
||||
handlers=None,
|
||||
resource_for_federation=Mock(),
|
||||
|
|
@ -124,9 +124,9 @@ class PresenceProfilelikeDataTestCase(unittest.TestCase):
|
|||
self.mock_update_client)
|
||||
|
||||
hs.handlers.room_member_handler = Mock(spec=[
|
||||
"get_rooms_for_user",
|
||||
"get_joined_rooms_for_user",
|
||||
])
|
||||
hs.handlers.room_member_handler.get_rooms_for_user = (
|
||||
hs.handlers.room_member_handler.get_joined_rooms_for_user = (
|
||||
lambda u: defer.succeed([]))
|
||||
|
||||
# Some local users to test with
|
||||
|
|
@ -138,7 +138,7 @@ class PresenceProfilelikeDataTestCase(unittest.TestCase):
|
|||
self.u_potato = UserID.from_string("@potato:remote")
|
||||
|
||||
self.mock_get_joined = (
|
||||
self.datastore.get_rooms_for_user_where_membership_is
|
||||
self.datastore.get_rooms_for_user
|
||||
)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
|
|
|
|||
0
tests/metrics/__init__.py
Normal file
0
tests/metrics/__init__.py
Normal file
161
tests/metrics/test_metric.py
Normal file
161
tests/metrics/test_metric.py
Normal file
|
|
@ -0,0 +1,161 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Copyright 2015 OpenMarket Ltd
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from tests import unittest
|
||||
|
||||
from synapse.metrics.metric import (
|
||||
CounterMetric, CallbackMetric, DistributionMetric, CacheMetric
|
||||
)
|
||||
|
||||
|
||||
class CounterMetricTestCase(unittest.TestCase):
|
||||
|
||||
def test_scalar(self):
|
||||
counter = CounterMetric("scalar")
|
||||
|
||||
self.assertEquals(counter.render(), [
|
||||
'scalar 0',
|
||||
])
|
||||
|
||||
counter.inc()
|
||||
|
||||
self.assertEquals(counter.render(), [
|
||||
'scalar 1',
|
||||
])
|
||||
|
||||
counter.inc_by(2)
|
||||
|
||||
self.assertEquals(counter.render(), [
|
||||
'scalar 3'
|
||||
])
|
||||
|
||||
def test_vector(self):
|
||||
counter = CounterMetric("vector", labels=["method"])
|
||||
|
||||
# Empty counter doesn't yet know what values it has
|
||||
self.assertEquals(counter.render(), [])
|
||||
|
||||
counter.inc("GET")
|
||||
|
||||
self.assertEquals(counter.render(), [
|
||||
'vector{method="GET"} 1',
|
||||
])
|
||||
|
||||
counter.inc("GET")
|
||||
counter.inc("PUT")
|
||||
|
||||
self.assertEquals(counter.render(), [
|
||||
'vector{method="GET"} 2',
|
||||
'vector{method="PUT"} 1',
|
||||
])
|
||||
|
||||
|
||||
class CallbackMetricTestCase(unittest.TestCase):
|
||||
|
||||
def test_scalar(self):
|
||||
d = dict()
|
||||
|
||||
metric = CallbackMetric("size", lambda: len(d))
|
||||
|
||||
self.assertEquals(metric.render(), [
|
||||
'size 0',
|
||||
])
|
||||
|
||||
d["key"] = "value"
|
||||
|
||||
self.assertEquals(metric.render(), [
|
||||
'size 1',
|
||||
])
|
||||
|
||||
def test_vector(self):
|
||||
vals = dict()
|
||||
|
||||
metric = CallbackMetric("values", lambda: vals, labels=["type"])
|
||||
|
||||
self.assertEquals(metric.render(), [])
|
||||
|
||||
# Keys have to be tuples, even if they're 1-element
|
||||
vals[("foo",)] = 1
|
||||
vals[("bar",)] = 2
|
||||
|
||||
self.assertEquals(metric.render(), [
|
||||
'values{type="bar"} 2',
|
||||
'values{type="foo"} 1',
|
||||
])
|
||||
|
||||
|
||||
class DistributionMetricTestCase(unittest.TestCase):
|
||||
|
||||
def test_scalar(self):
|
||||
metric = DistributionMetric("thing")
|
||||
|
||||
self.assertEquals(metric.render(), [
|
||||
'thing:count 0',
|
||||
'thing:total 0',
|
||||
])
|
||||
|
||||
metric.inc_by(500)
|
||||
|
||||
self.assertEquals(metric.render(), [
|
||||
'thing:count 1',
|
||||
'thing:total 500',
|
||||
])
|
||||
|
||||
def test_vector(self):
|
||||
metric = DistributionMetric("queries", labels=["verb"])
|
||||
|
||||
self.assertEquals(metric.render(), [])
|
||||
|
||||
metric.inc_by(300, "SELECT")
|
||||
metric.inc_by(200, "SELECT")
|
||||
metric.inc_by(800, "INSERT")
|
||||
|
||||
self.assertEquals(metric.render(), [
|
||||
'queries:count{verb="INSERT"} 1',
|
||||
'queries:count{verb="SELECT"} 2',
|
||||
'queries:total{verb="INSERT"} 800',
|
||||
'queries:total{verb="SELECT"} 500',
|
||||
])
|
||||
|
||||
|
||||
class CacheMetricTestCase(unittest.TestCase):
|
||||
|
||||
def test_cache(self):
|
||||
d = dict()
|
||||
|
||||
metric = CacheMetric("cache", lambda: len(d))
|
||||
|
||||
self.assertEquals(metric.render(), [
|
||||
'cache:hits 0',
|
||||
'cache:total 0',
|
||||
'cache:size 0',
|
||||
])
|
||||
|
||||
metric.inc_misses()
|
||||
d["key"] = "value"
|
||||
|
||||
self.assertEquals(metric.render(), [
|
||||
'cache:hits 0',
|
||||
'cache:total 1',
|
||||
'cache:size 1',
|
||||
])
|
||||
|
||||
metric.inc_hits()
|
||||
|
||||
self.assertEquals(metric.render(), [
|
||||
'cache:hits 1',
|
||||
'cache:total 2',
|
||||
'cache:size 1',
|
||||
])
|
||||
|
|
@ -79,13 +79,13 @@ class PresenceStateTestCase(unittest.TestCase):
|
|||
|
||||
room_member_handler = hs.handlers.room_member_handler = Mock(
|
||||
spec=[
|
||||
"get_rooms_for_user",
|
||||
"get_joined_rooms_for_user",
|
||||
]
|
||||
)
|
||||
|
||||
def get_rooms_for_user(user):
|
||||
return defer.succeed([])
|
||||
room_member_handler.get_rooms_for_user = get_rooms_for_user
|
||||
room_member_handler.get_joined_rooms_for_user = get_rooms_for_user
|
||||
|
||||
presence.register_servlets(hs, self.mock_resource)
|
||||
|
||||
|
|
@ -166,7 +166,7 @@ class PresenceListTestCase(unittest.TestCase):
|
|||
|
||||
hs.handlers.room_member_handler = Mock(
|
||||
spec=[
|
||||
"get_rooms_for_user",
|
||||
"get_joined_rooms_for_user",
|
||||
]
|
||||
)
|
||||
|
||||
|
|
@ -291,7 +291,7 @@ class PresenceEventStreamTestCase(unittest.TestCase):
|
|||
return ["a-room"]
|
||||
else:
|
||||
return []
|
||||
hs.handlers.room_member_handler.get_rooms_for_user = get_rooms_for_user
|
||||
hs.handlers.room_member_handler.get_joined_rooms_for_user = get_rooms_for_user
|
||||
|
||||
self.mock_datastore = hs.get_datastore()
|
||||
self.mock_datastore.get_app_service_by_token = Mock(return_value=None)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue