Sync are-we-synapse with dendrite
parent
9424ba0559
commit
1d7207b39e
|
@ -91,14 +91,15 @@ snd PUT /rooms/:room_id/send/:event_type/:txn_id deduplicates the same txn id
|
||||||
get GET /rooms/:room_id/messages returns a message
|
get GET /rooms/:room_id/messages returns a message
|
||||||
get GET /rooms/:room_id/messages lazy loads members correctly
|
get GET /rooms/:room_id/messages lazy loads members correctly
|
||||||
typ PUT /rooms/:room_id/typing/:user_id sets typing notification
|
typ PUT /rooms/:room_id/typing/:user_id sets typing notification
|
||||||
|
typ Typing notifications don't leak (3 subtests)
|
||||||
rst GET /rooms/:room_id/state/m.room.power_levels can fetch levels
|
rst GET /rooms/:room_id/state/m.room.power_levels can fetch levels
|
||||||
rst PUT /rooms/:room_id/state/m.room.power_levels can set levels
|
rst PUT /rooms/:room_id/state/m.room.power_levels can set levels
|
||||||
rst PUT power_levels should not explode if the old power levels were empty
|
rst PUT power_levels should not explode if the old power levels were empty
|
||||||
rst Both GET and PUT work
|
rst Both GET and PUT work
|
||||||
rct POST /rooms/:room_id/receipt can create receipts
|
rct POST /rooms/:room_id/receipt can create receipts
|
||||||
red POST /rooms/:room_id/read_markers can create read marker
|
red POST /rooms/:room_id/read_markers can create read marker
|
||||||
med POST /media/v1/upload can create an upload
|
med POST /media/r0/upload can create an upload
|
||||||
med GET /media/v1/download can fetch the value again
|
med GET /media/r0/download can fetch the value again
|
||||||
cap GET /capabilities is present and well formed for registered user
|
cap GET /capabilities is present and well formed for registered user
|
||||||
cap GET /r0/capabilities is not public
|
cap GET /r0/capabilities is not public
|
||||||
reg Register with a recaptcha
|
reg Register with a recaptcha
|
||||||
|
@ -296,7 +297,7 @@ fgt Forgotten room messages cannot be paginated
|
||||||
fgt Forgetting room does not show up in v2 /sync
|
fgt Forgetting room does not show up in v2 /sync
|
||||||
fgt Can forget room you've been kicked from
|
fgt Can forget room you've been kicked from
|
||||||
fgt Can't forget room you're still in
|
fgt Can't forget room you're still in
|
||||||
mem Can re-join room if re-invited
|
fgt Can re-join room if re-invited
|
||||||
ath Only original members of the room can see messages from erased users
|
ath Only original members of the room can see messages from erased users
|
||||||
mem /joined_rooms returns only joined rooms
|
mem /joined_rooms returns only joined rooms
|
||||||
mem /joined_members return joined members
|
mem /joined_members return joined members
|
||||||
|
@ -455,6 +456,19 @@ rmv User can invite remote user to room with version 5
|
||||||
rmv Remote user can backfill in a room with version 5
|
rmv Remote user can backfill in a room with version 5
|
||||||
rmv Can reject invites over federation for rooms with version 5
|
rmv Can reject invites over federation for rooms with version 5
|
||||||
rmv Can receive redactions from regular users over federation in room version 5
|
rmv Can receive redactions from regular users over federation in room version 5
|
||||||
|
rmv User can create and send/receive messages in a room with version 6
|
||||||
|
rmv User can create and send/receive messages in a room with version 6 (2 subtests)
|
||||||
|
rmv local user can join room with version 6
|
||||||
|
rmv User can invite local user to room with version 6
|
||||||
|
rmv remote user can join room with version 6
|
||||||
|
rmv User can invite remote user to room with version 6
|
||||||
|
rmv Remote user can backfill in a room with version 6
|
||||||
|
rmv Can reject invites over federation for rooms with version 6
|
||||||
|
rmv Can receive redactions from regular users over federation in room version 6
|
||||||
|
rmv Inbound federation rejects invites which include invalid JSON for room version 6
|
||||||
|
rmv Outbound federation rejects invite response which include invalid JSON for room version 6
|
||||||
|
rmv Inbound federation rejects invite rejections which include invalid JSON for room version 6
|
||||||
|
rmv Server rejects invalid JSON in a version 6 room
|
||||||
pre Presence changes are reported to local room members
|
pre Presence changes are reported to local room members
|
||||||
f,pre Presence changes are also reported to remote room members
|
f,pre Presence changes are also reported to remote room members
|
||||||
pre Presence changes to UNAVAILABLE are reported to local room members
|
pre Presence changes to UNAVAILABLE are reported to local room members
|
||||||
|
@ -482,24 +496,24 @@ f,dvk If remote user leaves room, changes device and rejoins we see update in /k
|
||||||
dvk Get left notifs in sync and /keys/changes when other user leaves
|
dvk Get left notifs in sync and /keys/changes when other user leaves
|
||||||
dvk Get left notifs for other users in sync and /keys/changes when user leaves
|
dvk Get left notifs for other users in sync and /keys/changes when user leaves
|
||||||
f,dvk If user leaves room, remote user changes device and rejoins we see update in /sync and /keys/changes
|
f,dvk If user leaves room, remote user changes device and rejoins we see update in /sync and /keys/changes
|
||||||
dvk Can create backup version
|
dkb Can create backup version
|
||||||
dvk Can update backup version
|
dkb Can update backup version
|
||||||
dvk Responds correctly when backup is empty
|
dkb Responds correctly when backup is empty
|
||||||
dvk Can backup keys
|
dkb Can backup keys
|
||||||
dvk Can update keys with better versions
|
dkb Can update keys with better versions
|
||||||
dvk Will not update keys with worse versions
|
dkb Will not update keys with worse versions
|
||||||
dvk Will not back up to an old backup version
|
dkb Will not back up to an old backup version
|
||||||
dvk Can delete backup
|
dkb Can delete backup
|
||||||
dvk Deleted & recreated backups are empty
|
dkb Deleted & recreated backups are empty
|
||||||
dvk Can create more than 10 backup versions
|
dkb Can create more than 10 backup versions
|
||||||
dvk Can upload self-signing keys
|
xsk Can upload self-signing keys
|
||||||
dvk Fails to upload self-signing keys with no auth
|
xsk Fails to upload self-signing keys with no auth
|
||||||
dvk Fails to upload self-signing key without master key
|
xsk Fails to upload self-signing key without master key
|
||||||
dvk Changing master key notifies local users
|
xsk Changing master key notifies local users
|
||||||
dvk Changing user-signing key notifies local users
|
xsk Changing user-signing key notifies local users
|
||||||
f,dvk can fetch self-signing keys over federation
|
f,xsk can fetch self-signing keys over federation
|
||||||
f,dvk uploading self-signing key notifies over federation
|
f,xsk uploading self-signing key notifies over federation
|
||||||
f,dvk uploading signed devices gets propagated over federation
|
f,xsk uploading signed devices gets propagated over federation
|
||||||
tag Can add tag
|
tag Can add tag
|
||||||
tag Can remove tag
|
tag Can remove tag
|
||||||
tag Can list tags for a room
|
tag Can list tags for a room
|
||||||
|
@ -536,11 +550,11 @@ std Can recv device messages until they are acknowledged
|
||||||
std Device messages with the same txn_id are deduplicated
|
std Device messages with the same txn_id are deduplicated
|
||||||
std Device messages wake up /sync
|
std Device messages wake up /sync
|
||||||
std Can recv device messages over federation
|
std Can recv device messages over federation
|
||||||
std Device messages over federation wake up /sync
|
fsd Device messages over federation wake up /sync
|
||||||
std Can send messages with a wildcard device id
|
std Can send messages with a wildcard device id
|
||||||
std Can send messages with a wildcard device id to two devices
|
std Can send messages with a wildcard device id to two devices
|
||||||
std Wildcard device messages wake up /sync
|
std Wildcard device messages wake up /sync
|
||||||
std Wildcard device messages over federation wake up /sync
|
fsd Wildcard device messages over federation wake up /sync
|
||||||
adm /whois
|
adm /whois
|
||||||
nsp /purge_history
|
nsp /purge_history
|
||||||
nsp /purge_history by ts
|
nsp /purge_history by ts
|
||||||
|
@ -578,6 +592,7 @@ frv A pair of servers can establish a join in a v2 room
|
||||||
fsj Outbound federation rejects send_join responses with no m.room.create event
|
fsj Outbound federation rejects send_join responses with no m.room.create event
|
||||||
frv Outbound federation rejects m.room.create events with an unknown room version
|
frv Outbound federation rejects m.room.create events with an unknown room version
|
||||||
fsj Event with an invalid signature in the send_join response should not cause room join to fail
|
fsj Event with an invalid signature in the send_join response should not cause room join to fail
|
||||||
|
fsj Inbound: send_join rejects invalid JSON for room version 6
|
||||||
fed Outbound federation can send events
|
fed Outbound federation can send events
|
||||||
fed Inbound federation can receive events
|
fed Inbound federation can receive events
|
||||||
fed Inbound federation can receive redacted events
|
fed Inbound federation can receive redacted events
|
||||||
|
@ -636,6 +651,7 @@ fst Name/topic keys are correct
|
||||||
fau Remote servers cannot set power levels in rooms without existing powerlevels
|
fau Remote servers cannot set power levels in rooms without existing powerlevels
|
||||||
fau Remote servers should reject attempts by non-creators to set the power levels
|
fau Remote servers should reject attempts by non-creators to set the power levels
|
||||||
fau Inbound federation rejects typing notifications from wrong remote
|
fau Inbound federation rejects typing notifications from wrong remote
|
||||||
|
fau Users cannot set notifications powerlevel higher than their own
|
||||||
fed Forward extremities remain so even after the next events are populated as outliers
|
fed Forward extremities remain so even after the next events are populated as outliers
|
||||||
fau Banned servers cannot send events
|
fau Banned servers cannot send events
|
||||||
fau Banned servers cannot /make_join
|
fau Banned servers cannot /make_join
|
||||||
|
@ -815,6 +831,7 @@ psh Trying to get push rules with unknown scope fails with 400
|
||||||
psh Trying to get push rules with unknown template fails with 400
|
psh Trying to get push rules with unknown template fails with 400
|
||||||
psh Trying to get push rules with unknown attribute fails with 400
|
psh Trying to get push rules with unknown attribute fails with 400
|
||||||
psh Trying to get push rules with unknown rule_id fails with 404
|
psh Trying to get push rules with unknown rule_id fails with 404
|
||||||
|
psh Rooms with names are correctly named in pushes
|
||||||
v1s GET /initialSync with non-numeric 'limit'
|
v1s GET /initialSync with non-numeric 'limit'
|
||||||
v1s GET /events with non-numeric 'limit'
|
v1s GET /events with non-numeric 'limit'
|
||||||
v1s GET /events with negative 'limit'
|
v1s GET /events with negative 'limit'
|
||||||
|
@ -823,7 +840,7 @@ ath Event size limits
|
||||||
syn Check creating invalid filters returns 4xx
|
syn Check creating invalid filters returns 4xx
|
||||||
f,pre New federated private chats get full presence information (SYN-115)
|
f,pre New federated private chats get full presence information (SYN-115)
|
||||||
pre Left room members do not cause problems for presence
|
pre Left room members do not cause problems for presence
|
||||||
crm Rooms can be created with an initial invite list (SYN-205)
|
crm Rooms can be created with an initial invite list (SYN-205) (1 subtests)
|
||||||
typ Typing notifications don't leak
|
typ Typing notifications don't leak
|
||||||
ban Non-present room members cannot ban others
|
ban Non-present room members cannot ban others
|
||||||
psh Getting push rules doesn't corrupt the cache SYN-390
|
psh Getting push rules doesn't corrupt the cache SYN-390
|
||||||
|
@ -834,3 +851,16 @@ gst Real user can call /events on another world_readable room (SYN-606)
|
||||||
gst Events come down the correct room
|
gst Events come down the correct room
|
||||||
pub Asking for a remote rooms list, but supplying the local server's name, returns the local rooms list
|
pub Asking for a remote rooms list, but supplying the local server's name, returns the local rooms list
|
||||||
std Can send a to-device message to two users which both receive it using /sync
|
std Can send a to-device message to two users which both receive it using /sync
|
||||||
|
fme Outbound federation will ignore a missing event with bad JSON for room version 6
|
||||||
|
fbk Outbound federation rejects backfill containing invalid JSON for events in room version 6
|
||||||
|
jso Invalid JSON integers
|
||||||
|
jso Invalid JSON floats
|
||||||
|
jso Invalid JSON special values
|
||||||
|
inv Can invite users to invite-only rooms (2 subtests)
|
||||||
|
plv setting 'm.room.name' respects room powerlevel (2 subtests)
|
||||||
|
psh Messages that notify from another user increment notification_count
|
||||||
|
psh Messages that org.matrix.msc2625.mark_unread from another user increment org.matrix.msc2625.unread_count
|
||||||
|
dvk Can claim one time key using POST (2 subtests)
|
||||||
|
fdk Can query remote device keys using POST (1 subtests)
|
||||||
|
fdk Can claim remote one time key using POST (2 subtests)
|
||||||
|
fmj Inbound /make_join rejects attempts to join rooms where all users have left
|
|
@ -33,6 +33,8 @@ import sys
|
||||||
|
|
||||||
test_mappings = {
|
test_mappings = {
|
||||||
"nsp": "Non-Spec API",
|
"nsp": "Non-Spec API",
|
||||||
|
"unk": "Unknown API (no group specified)",
|
||||||
|
"app": "Application Services API",
|
||||||
"f": "Federation", # flag to mark test involves federation
|
"f": "Federation", # flag to mark test involves federation
|
||||||
|
|
||||||
"federation_apis": {
|
"federation_apis": {
|
||||||
|
@ -50,6 +52,7 @@ test_mappings = {
|
||||||
"fpb": "Public Room API",
|
"fpb": "Public Room API",
|
||||||
"fdk": "Device Key APIs",
|
"fdk": "Device Key APIs",
|
||||||
"fed": "Federation API",
|
"fed": "Federation API",
|
||||||
|
"fsd": "Send-to-Device APIs",
|
||||||
},
|
},
|
||||||
|
|
||||||
"client_apis": {
|
"client_apis": {
|
||||||
|
@ -61,6 +64,8 @@ test_mappings = {
|
||||||
"pro": "Profile",
|
"pro": "Profile",
|
||||||
"dev": "Devices",
|
"dev": "Devices",
|
||||||
"dvk": "Device Keys",
|
"dvk": "Device Keys",
|
||||||
|
"dkb": "Device Key Backup",
|
||||||
|
"xsk": "Cross-signing Keys",
|
||||||
"pre": "Presence",
|
"pre": "Presence",
|
||||||
"crm": "Create Room",
|
"crm": "Create Room",
|
||||||
"syn": "Sync API",
|
"syn": "Sync API",
|
||||||
|
@ -98,7 +103,7 @@ test_mappings = {
|
||||||
"adm": "Server Admin API",
|
"adm": "Server Admin API",
|
||||||
"ign": "Ignore Users",
|
"ign": "Ignore Users",
|
||||||
"udr": "User Directory APIs",
|
"udr": "User Directory APIs",
|
||||||
"app": "Application Services API",
|
"jso": "Enforced canonical JSON",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,6 +161,8 @@ def print_stats(header_name, gid_to_tests, gid_to_name, verbose):
|
||||||
total_tests = 0
|
total_tests = 0
|
||||||
for gid, tests in gid_to_tests.items():
|
for gid, tests in gid_to_tests.items():
|
||||||
group_total = len(tests)
|
group_total = len(tests)
|
||||||
|
if group_total == 0:
|
||||||
|
continue
|
||||||
group_passing = 0
|
group_passing = 0
|
||||||
test_names_and_marks = []
|
test_names_and_marks = []
|
||||||
for name, passing in tests.items():
|
for name, passing in tests.items():
|
||||||
|
@ -186,7 +193,6 @@ def main(results_tap_path, verbose):
|
||||||
test_name_to_group_id = {}
|
test_name_to_group_id = {}
|
||||||
fed_tests = set()
|
fed_tests = set()
|
||||||
client_tests = set()
|
client_tests = set()
|
||||||
groupless_tests = set()
|
|
||||||
with open("./are-we-synapse-yet.list", "r") as f:
|
with open("./are-we-synapse-yet.list", "r") as f:
|
||||||
for line in f.readlines():
|
for line in f.readlines():
|
||||||
test_name = " ".join(line.split(" ")[1:]).strip()
|
test_name = " ".join(line.split(" ")[1:]).strip()
|
||||||
|
@ -212,8 +218,12 @@ def main(results_tap_path, verbose):
|
||||||
# test_name: OK
|
# test_name: OK
|
||||||
# }
|
# }
|
||||||
},
|
},
|
||||||
|
"appservice": {
|
||||||
|
"app": {},
|
||||||
|
},
|
||||||
"nonspec": {
|
"nonspec": {
|
||||||
"nsp": {}
|
"nsp": {},
|
||||||
|
"unk": {}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
with open(results_tap_path, "r") as f:
|
with open(results_tap_path, "r") as f:
|
||||||
|
@ -224,10 +234,11 @@ def main(results_tap_path, verbose):
|
||||||
name = test_result["name"]
|
name = test_result["name"]
|
||||||
group_id = test_name_to_group_id.get(name)
|
group_id = test_name_to_group_id.get(name)
|
||||||
if not group_id:
|
if not group_id:
|
||||||
groupless_tests.add(name)
|
summary["nonspec"]["unk"][name] = test_result["ok"]
|
||||||
# raise Exception("The test '%s' doesn't have a group" % (name,))
|
|
||||||
if group_id == "nsp":
|
if group_id == "nsp":
|
||||||
summary["nonspec"]["nsp"][name] = test_result["ok"]
|
summary["nonspec"]["nsp"][name] = test_result["ok"]
|
||||||
|
elif group_id == "app":
|
||||||
|
summary["appservice"]["app"][name] = test_result["ok"]
|
||||||
elif group_id in test_mappings["federation_apis"]:
|
elif group_id in test_mappings["federation_apis"]:
|
||||||
group = summary["federation"].get(group_id, {})
|
group = summary["federation"].get(group_id, {})
|
||||||
group[name] = test_result["ok"]
|
group[name] = test_result["ok"]
|
||||||
|
@ -243,12 +254,7 @@ def main(results_tap_path, verbose):
|
||||||
print_stats("Non-Spec APIs", summary["nonspec"], test_mappings, verbose)
|
print_stats("Non-Spec APIs", summary["nonspec"], test_mappings, verbose)
|
||||||
print_stats("Client-Server APIs", summary["client"], test_mappings["client_apis"], verbose)
|
print_stats("Client-Server APIs", summary["client"], test_mappings["client_apis"], verbose)
|
||||||
print_stats("Federation APIs", summary["federation"], test_mappings["federation_apis"], verbose)
|
print_stats("Federation APIs", summary["federation"], test_mappings["federation_apis"], verbose)
|
||||||
if verbose:
|
print_stats("Application Services APIs", summary["appservice"], test_mappings, verbose)
|
||||||
print("The following tests don't have a group:")
|
|
||||||
for name in groupless_tests:
|
|
||||||
print(" %s" % (name,))
|
|
||||||
else:
|
|
||||||
print("%d tests don't have a group" % len(groupless_tests))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue