From c7f4e163b101e427f6c968e0193ffad8c92d7d6c Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Mon, 16 May 2022 14:35:40 +0100 Subject: [PATCH] Use FederationRoomserverAPI in more places --- federationapi/consumers/keychange.go | 4 ++-- federationapi/consumers/roomserver.go | 4 ++-- federationapi/federationapi.go | 2 +- federationapi/federationapi_test.go | 29 +++++++++++++++++++------ federationapi/internal/api.go | 4 ++-- federationapi/queue/destinationqueue.go | 2 +- federationapi/queue/queue.go | 4 ++-- roomserver/api/api.go | 1 + 8 files changed, 33 insertions(+), 17 deletions(-) diff --git a/federationapi/consumers/keychange.go b/federationapi/consumers/keychange.go index 09dd8c7eb..74c9ffca6 100644 --- a/federationapi/consumers/keychange.go +++ b/federationapi/consumers/keychange.go @@ -39,7 +39,7 @@ type KeyChangeConsumer struct { db storage.Database queues *queue.OutgoingQueues serverName gomatrixserverlib.ServerName - rsAPI roomserverAPI.RoomserverInternalAPI + rsAPI roomserverAPI.FederationRoomserverAPI topic string } @@ -50,7 +50,7 @@ func NewKeyChangeConsumer( js nats.JetStreamContext, queues *queue.OutgoingQueues, store storage.Database, - rsAPI roomserverAPI.RoomserverInternalAPI, + rsAPI roomserverAPI.FederationRoomserverAPI, ) *KeyChangeConsumer { return &KeyChangeConsumer{ ctx: process.Context(), diff --git a/federationapi/consumers/roomserver.go b/federationapi/consumers/roomserver.go index 32e0ca2b8..19da0dc5b 100644 --- a/federationapi/consumers/roomserver.go +++ b/federationapi/consumers/roomserver.go @@ -36,7 +36,7 @@ import ( type OutputRoomEventConsumer struct { ctx context.Context cfg *config.FederationAPI - rsAPI api.RoomserverInternalAPI + rsAPI api.FederationRoomserverAPI jetstream nats.JetStreamContext durable string db storage.Database @@ -51,7 +51,7 @@ func NewOutputRoomEventConsumer( js nats.JetStreamContext, queues *queue.OutgoingQueues, store storage.Database, - rsAPI api.RoomserverInternalAPI, + rsAPI api.FederationRoomserverAPI, ) *OutputRoomEventConsumer { return &OutputRoomEventConsumer{ ctx: process.Context(), diff --git a/federationapi/federationapi.go b/federationapi/federationapi.go index bec9ac777..3c3f1cc94 100644 --- a/federationapi/federationapi.go +++ b/federationapi/federationapi.go @@ -94,7 +94,7 @@ func AddPublicRoutes( func NewInternalAPI( base *base.BaseDendrite, federation *gomatrixserverlib.FederationClient, - rsAPI roomserverAPI.RoomserverInternalAPI, + rsAPI roomserverAPI.FederationRoomserverAPI, caches *caching.Caches, keyRing *gomatrixserverlib.KeyRing, resetBlacklist bool, diff --git a/federationapi/federationapi_test.go b/federationapi/federationapi_test.go index d856bb1b8..9aeef8c5e 100644 --- a/federationapi/federationapi_test.go +++ b/federationapi/federationapi_test.go @@ -8,6 +8,7 @@ import ( "github.com/matrix-org/dendrite/federationapi" "github.com/matrix-org/dendrite/federationapi/internal" + "github.com/matrix-org/dendrite/roomserver/api" "github.com/matrix-org/dendrite/setup/base" "github.com/matrix-org/dendrite/setup/config" "github.com/matrix-org/dendrite/test" @@ -15,17 +16,31 @@ import ( "github.com/matrix-org/gomatrixserverlib" ) -/* -func TestSyncAPICreateRoomSyncEarly(t *testing.T) { +type fedRoomserverAPI struct { + api.FederationRoomserverAPI +} + +// Regression test to make sure that /send_join is updating the destination hosts synchronously and +// isn't relying on the roomserver. +func TestFederationAPIJoinThenKeyUpdate(t *testing.T) { test.WithAllDatabases(t, func(t *testing.T, dbType test.DBType) { - testSyncAPICreateRoomSyncEarly(t, dbType) + testFederationAPIJoinThenKeyUpdate(t, dbType) }) } -func testSyncAPICreateRoomSyncEarly(t *testing.T, dbType test.DBType) { - user := test.NewUser() - room := test.NewRoom(t, user) -} */ +func testFederationAPIJoinThenKeyUpdate(t *testing.T, dbType test.DBType) { + /* + base, close := testrig.CreateBaseDendrite(t, dbType) + defer close() + jsctx, _ := base.NATS.Prepare(base.ProcessContext, &base.Cfg.Global.JetStream) + defer jetstream.DeleteAllStreams(jsctx, &base.Cfg.Global.JetStream) + + user := test.NewUser() + room := test.NewRoom(t, user) + + fsapi := federationapi.NewInternalAPI(base, mockClient, fedRoomserverAPI{}, base.Caches, nil, false) + */ +} // Tests that event IDs with '/' in them (escaped as %2F) are correctly passed to the right handler and don't 404. // Relevant for v3 rooms and a cause of flakey sytests as the IDs are randomly generated. diff --git a/federationapi/internal/api.go b/federationapi/internal/api.go index 4e9fa8410..80feb1dad 100644 --- a/federationapi/internal/api.go +++ b/federationapi/internal/api.go @@ -25,7 +25,7 @@ type FederationInternalAPI struct { db storage.Database cfg *config.FederationAPI statistics *statistics.Statistics - rsAPI roomserverAPI.RoomserverInternalAPI + rsAPI roomserverAPI.FederationRoomserverAPI federation *gomatrixserverlib.FederationClient keyRing *gomatrixserverlib.KeyRing queues *queue.OutgoingQueues @@ -34,7 +34,7 @@ type FederationInternalAPI struct { func NewFederationInternalAPI( db storage.Database, cfg *config.FederationAPI, - rsAPI roomserverAPI.RoomserverInternalAPI, + rsAPI roomserverAPI.FederationRoomserverAPI, federation *gomatrixserverlib.FederationClient, statistics *statistics.Statistics, caches *caching.Caches, diff --git a/federationapi/queue/destinationqueue.go b/federationapi/queue/destinationqueue.go index 747940403..d2990b9a3 100644 --- a/federationapi/queue/destinationqueue.go +++ b/federationapi/queue/destinationqueue.go @@ -49,7 +49,7 @@ type destinationQueue struct { db storage.Database process *process.ProcessContext signing *SigningInfo - rsAPI api.RoomserverInternalAPI + rsAPI api.FederationRoomserverAPI client *gomatrixserverlib.FederationClient // federation client origin gomatrixserverlib.ServerName // origin of requests destination gomatrixserverlib.ServerName // destination of requests diff --git a/federationapi/queue/queue.go b/federationapi/queue/queue.go index d152886f5..077b8d733 100644 --- a/federationapi/queue/queue.go +++ b/federationapi/queue/queue.go @@ -39,7 +39,7 @@ type OutgoingQueues struct { db storage.Database process *process.ProcessContext disabled bool - rsAPI api.RoomserverInternalAPI + rsAPI api.FederationRoomserverAPI origin gomatrixserverlib.ServerName client *gomatrixserverlib.FederationClient statistics *statistics.Statistics @@ -86,7 +86,7 @@ func NewOutgoingQueues( disabled bool, origin gomatrixserverlib.ServerName, client *gomatrixserverlib.FederationClient, - rsAPI api.RoomserverInternalAPI, + rsAPI api.FederationRoomserverAPI, statistics *statistics.Statistics, signing *SigningInfo, ) *OutgoingQueues { diff --git a/roomserver/api/api.go b/roomserver/api/api.go index cbb4cebca..80e7aed64 100644 --- a/roomserver/api/api.go +++ b/roomserver/api/api.go @@ -183,6 +183,7 @@ type FederationRoomserverAPI interface { QueryMissingEvents(ctx context.Context, req *QueryMissingEventsRequest, res *QueryMissingEventsResponse) error // Query whether a server is allowed to see an event QueryServerAllowedToSeeEvent(ctx context.Context, req *QueryServerAllowedToSeeEventRequest, res *QueryServerAllowedToSeeEventResponse) error + QueryRoomsForUser(ctx context.Context, req *QueryRoomsForUserRequest, res *QueryRoomsForUserResponse) error PerformInboundPeek(ctx context.Context, req *PerformInboundPeekRequest, res *PerformInboundPeekResponse) error PerformInvite(ctx context.Context, req *PerformInviteRequest, res *PerformInviteResponse) error // Query a given amount (or less) of events prior to a given set of events.