Do some logging when one-time-keys get claimed

might help us figure out if https://github.com/vector-im/riot-web/issues/3868
has happened.
This commit is contained in:
Richard van der Hoff 2017-05-09 19:01:39 +01:00
parent a7e9d8762d
commit de042b3b88
3 changed files with 54 additions and 0 deletions

View file

@ -440,6 +440,16 @@ class FederationServer(FederationBase):
key_id: json.loads(json_bytes) key_id: json.loads(json_bytes)
} }
logger.info(
"Claimed one-time-keys: %s",
",".join((
"%s for %s:%s" % (key_id, user_id, device_id)
for user_id, user_keys in json_result.iteritems()
for device_id, device_keys in user_keys.iteritems()
for key_id, _ in device_keys.iteritems()
)),
)
defer.returnValue({"one_time_keys": json_result}) defer.returnValue({"one_time_keys": json_result})
@defer.inlineCallbacks @defer.inlineCallbacks

View file

@ -262,6 +262,16 @@ class E2eKeysHandler(object):
for destination in remote_queries for destination in remote_queries
])) ]))
logger.info(
"Claimed one-time-keys: %s",
",".join((
"%s for %s:%s" % (key_id, user_id, device_id)
for user_id, user_keys in json_result.iteritems()
for device_id, device_keys in user_keys.iteritems()
for key_id, _ in device_keys.iteritems()
)),
)
defer.returnValue({ defer.returnValue({
"one_time_keys": json_result, "one_time_keys": json_result,
"failures": failures "failures": failures

View file

@ -142,3 +142,37 @@ class E2eKeysHandlerTestCase(unittest.TestCase):
self.fail("No error when replacing dict key") self.fail("No error when replacing dict key")
except errors.SynapseError: except errors.SynapseError:
pass pass
@unittest.DEBUG
@defer.inlineCallbacks
def test_claim_one_time_key(self):
local_user = "@boris:" + self.hs.hostname
device_id = "xyz"
keys = {
"alg1:k1": "key1",
}
res = yield self.handler.upload_keys_for_user(
local_user, device_id, {"one_time_keys": keys},
)
self.assertDictEqual(res, {
"one_time_key_counts": {"alg1": 1}
})
res2 = yield self.handler.claim_one_time_keys({
"one_time_keys": {
local_user: {
device_id: "alg1"
}
}
}, timeout=None)
self.assertEqual(res2, {
"failures": {},
"one_time_keys": {
local_user: {
device_id: {
"alg1:k1": "key1"
}
}
}
})