aboutsummaryrefslogtreecommitdiff
path: root/federationapi
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2022-02-11 17:40:14 +0000
committerGitHub <noreply@github.com>2022-02-11 17:40:14 +0000
commit5106cc807cf22a95420b24f6bfdd5c9ac8aa06de (patch)
treed1da67b5a150ca40a9e572eed6f2550000e0475e /federationapi
parenta4e7d471af7e2cf902404f6740f0932a088cb660 (diff)
Ensure only one transaction is used for RS input per room (#2178)
* Ensure the input API only uses a single transaction * Remove more of the dead query API call * Tidy up * Fix tests hopefully * Don't do unnecessary work for rooms that don't exist * Improve error, fix another case where transaction wasn't used properly * Add a unit test for checking single transaction on RS input API * Fix logic oops when deciding whether to use a transaction in storeEvent
Diffstat (limited to 'federationapi')
-rw-r--r--federationapi/routing/send_test.go43
1 files changed, 6 insertions, 37 deletions
diff --git a/federationapi/routing/send_test.go b/federationapi/routing/send_test.go
index f1f6169d..4280643e 100644
--- a/federationapi/routing/send_test.go
+++ b/federationapi/routing/send_test.go
@@ -93,11 +93,10 @@ func (o *testEDUProducer) InputCrossSigningKeyUpdate(
type testRoomserverAPI struct {
api.RoomserverInternalAPITrace
- inputRoomEvents []api.InputRoomEvent
- queryMissingAuthPrevEvents func(*api.QueryMissingAuthPrevEventsRequest) api.QueryMissingAuthPrevEventsResponse
- queryStateAfterEvents func(*api.QueryStateAfterEventsRequest) api.QueryStateAfterEventsResponse
- queryEventsByID func(req *api.QueryEventsByIDRequest) api.QueryEventsByIDResponse
- queryLatestEventsAndState func(*api.QueryLatestEventsAndStateRequest) api.QueryLatestEventsAndStateResponse
+ inputRoomEvents []api.InputRoomEvent
+ queryStateAfterEvents func(*api.QueryStateAfterEventsRequest) api.QueryStateAfterEventsResponse
+ queryEventsByID func(req *api.QueryEventsByIDRequest) api.QueryEventsByIDResponse
+ queryLatestEventsAndState func(*api.QueryLatestEventsAndStateRequest) api.QueryLatestEventsAndStateResponse
}
func (t *testRoomserverAPI) InputRoomEvents(
@@ -140,20 +139,6 @@ func (t *testRoomserverAPI) QueryStateAfterEvents(
return nil
}
-// Query the state after a list of events in a room from the room server.
-func (t *testRoomserverAPI) QueryMissingAuthPrevEvents(
- ctx context.Context,
- request *api.QueryMissingAuthPrevEventsRequest,
- response *api.QueryMissingAuthPrevEventsResponse,
-) error {
- response.RoomVersion = testRoomVersion
- res := t.queryMissingAuthPrevEvents(request)
- response.RoomExists = res.RoomExists
- response.MissingAuthEventIDs = res.MissingAuthEventIDs
- response.MissingPrevEventIDs = res.MissingPrevEventIDs
- return nil
-}
-
// Query a list of events by event ID.
func (t *testRoomserverAPI) QueryEventsByID(
ctx context.Context,
@@ -312,15 +297,7 @@ func assertInputRoomEvents(t *testing.T, got []api.InputRoomEvent, want []*gomat
// The purpose of this test is to check that receiving an event over federation for which we have the prev_events works correctly, and passes it on
// to the roomserver. It's the most basic test possible.
func TestBasicTransaction(t *testing.T) {
- rsAPI := &testRoomserverAPI{
- queryMissingAuthPrevEvents: func(req *api.QueryMissingAuthPrevEventsRequest) api.QueryMissingAuthPrevEventsResponse {
- return api.QueryMissingAuthPrevEventsResponse{
- RoomExists: true,
- MissingAuthEventIDs: []string{},
- MissingPrevEventIDs: []string{},
- }
- },
- }
+ rsAPI := &testRoomserverAPI{}
pdus := []json.RawMessage{
testData[len(testData)-1], // a message event
}
@@ -332,15 +309,7 @@ func TestBasicTransaction(t *testing.T) {
// The purpose of this test is to check that if the event received fails auth checks the event is still sent to the roomserver
// as it does the auth check.
func TestTransactionFailAuthChecks(t *testing.T) {
- rsAPI := &testRoomserverAPI{
- queryMissingAuthPrevEvents: func(req *api.QueryMissingAuthPrevEventsRequest) api.QueryMissingAuthPrevEventsResponse {
- return api.QueryMissingAuthPrevEventsResponse{
- RoomExists: true,
- MissingAuthEventIDs: []string{},
- MissingPrevEventIDs: []string{},
- }
- },
- }
+ rsAPI := &testRoomserverAPI{}
pdus := []json.RawMessage{
testData[len(testData)-1], // a message event
}