aboutsummaryrefslogtreecommitdiff
path: root/appservice
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2023-03-22 09:21:32 +0100
committerGitHub <noreply@github.com>2023-03-22 09:21:32 +0100
commit5e85a00cb36c3d343cd5b6f6a18435989724a135 (patch)
treeb22c34dd0a6cdc04025b90086843f9084a876412 /appservice
parentec6879e5ae2919c903707475ce8d72244b2a6847 (diff)
Remove `BaseDendrite` (#3023)
Removes `BaseDendrite` to, hopefully, make testing and composing of components easier in the future.
Diffstat (limited to 'appservice')
-rw-r--r--appservice/appservice.go21
-rw-r--r--appservice/appservice_test.go23
2 files changed, 28 insertions, 16 deletions
diff --git a/appservice/appservice.go b/appservice/appservice.go
index 5b1b93de..d13d9eb1 100644
--- a/appservice/appservice.go
+++ b/appservice/appservice.go
@@ -21,6 +21,8 @@ import (
"sync"
"time"
+ "github.com/matrix-org/dendrite/setup/jetstream"
+ "github.com/matrix-org/dendrite/setup/process"
"github.com/sirupsen/logrus"
"github.com/matrix-org/gomatrixserverlib"
@@ -29,7 +31,6 @@ import (
"github.com/matrix-org/dendrite/appservice/consumers"
"github.com/matrix-org/dendrite/appservice/query"
roomserverAPI "github.com/matrix-org/dendrite/roomserver/api"
- "github.com/matrix-org/dendrite/setup/base"
"github.com/matrix-org/dendrite/setup/config"
userapi "github.com/matrix-org/dendrite/userapi/api"
)
@@ -37,7 +38,9 @@ import (
// NewInternalAPI returns a concerete implementation of the internal API. Callers
// can call functions directly on the returned API or via an HTTP interface using AddInternalRoutes.
func NewInternalAPI(
- base *base.BaseDendrite,
+ processContext *process.ProcessContext,
+ cfg *config.Dendrite,
+ natsInstance *jetstream.NATSInstance,
userAPI userapi.AppserviceUserAPI,
rsAPI roomserverAPI.RoomserverInternalAPI,
) appserviceAPI.AppServiceInternalAPI {
@@ -46,7 +49,7 @@ func NewInternalAPI(
Transport: &http.Transport{
DisableKeepAlives: true,
TLSClientConfig: &tls.Config{
- InsecureSkipVerify: base.Cfg.AppServiceAPI.DisableTLSValidation,
+ InsecureSkipVerify: cfg.AppServiceAPI.DisableTLSValidation,
},
Proxy: http.ProxyFromEnvironment,
},
@@ -55,21 +58,21 @@ func NewInternalAPI(
// outbound and inbound requests (inbound only for the internal API)
appserviceQueryAPI := &query.AppServiceQueryAPI{
HTTPClient: client,
- Cfg: &base.Cfg.AppServiceAPI,
+ Cfg: &cfg.AppServiceAPI,
ProtocolCache: map[string]appserviceAPI.ASProtocolResponse{},
CacheMu: sync.Mutex{},
}
- if len(base.Cfg.Derived.ApplicationServices) == 0 {
+ if len(cfg.Derived.ApplicationServices) == 0 {
return appserviceQueryAPI
}
// Wrap application services in a type that relates the application service and
// a sync.Cond object that can be used to notify workers when there are new
// events to be sent out.
- for _, appservice := range base.Cfg.Derived.ApplicationServices {
+ for _, appservice := range cfg.Derived.ApplicationServices {
// Create bot account for this AS if it doesn't already exist
- if err := generateAppServiceAccount(userAPI, appservice, base.Cfg.Global.ServerName); err != nil {
+ if err := generateAppServiceAccount(userAPI, appservice, cfg.Global.ServerName); err != nil {
logrus.WithFields(logrus.Fields{
"appservice": appservice.ID,
}).WithError(err).Panicf("failed to generate bot account for appservice")
@@ -78,9 +81,9 @@ func NewInternalAPI(
// Only consume if we actually have ASes to track, else we'll just chew cycles needlessly.
// We can't add ASes at runtime so this is safe to do.
- js, _ := base.NATS.Prepare(base.ProcessContext, &base.Cfg.Global.JetStream)
+ js, _ := natsInstance.Prepare(processContext, &cfg.Global.JetStream)
consumer := consumers.NewOutputRoomEventConsumer(
- base.ProcessContext, &base.Cfg.AppServiceAPI,
+ processContext, &cfg.AppServiceAPI,
client, js, rsAPI,
)
if err := consumer.Start(); err != nil {
diff --git a/appservice/appservice_test.go b/appservice/appservice_test.go
index ad6f1dfc..6c8a07b5 100644
--- a/appservice/appservice_test.go
+++ b/appservice/appservice_test.go
@@ -9,12 +9,15 @@ import (
"regexp"
"strings"
"testing"
+ "time"
"github.com/matrix-org/dendrite/appservice"
"github.com/matrix-org/dendrite/appservice/api"
"github.com/matrix-org/dendrite/internal/caching"
+ "github.com/matrix-org/dendrite/internal/sqlutil"
"github.com/matrix-org/dendrite/roomserver"
"github.com/matrix-org/dendrite/setup/config"
+ "github.com/matrix-org/dendrite/setup/jetstream"
"github.com/matrix-org/dendrite/test"
"github.com/matrix-org/dendrite/userapi"
@@ -105,11 +108,11 @@ func TestAppserviceInternalAPI(t *testing.T) {
}
test.WithAllDatabases(t, func(t *testing.T, dbType test.DBType) {
- base, closeBase := testrig.CreateBaseDendrite(t, dbType)
- defer closeBase()
+ cfg, ctx, close := testrig.CreateConfig(t, dbType)
+ defer close()
// Create a dummy application service
- base.Cfg.AppServiceAPI.Derived.ApplicationServices = []config.ApplicationService{
+ cfg.AppServiceAPI.Derived.ApplicationServices = []config.ApplicationService{
{
ID: "someID",
URL: srv.URL,
@@ -124,11 +127,17 @@ func TestAppserviceInternalAPI(t *testing.T) {
},
}
- caches := caching.NewRistrettoCache(base.Cfg.Global.Cache.EstimatedMaxSize, base.Cfg.Global.Cache.MaxAge, caching.DisableMetrics)
+ t.Cleanup(func() {
+ ctx.ShutdownDendrite()
+ ctx.WaitForShutdown()
+ })
+ caches := caching.NewRistrettoCache(128*1024*1024, time.Hour, caching.DisableMetrics)
// Create required internal APIs
- rsAPI := roomserver.NewInternalAPI(base, caches)
- usrAPI := userapi.NewInternalAPI(base, rsAPI, nil)
- asAPI := appservice.NewInternalAPI(base, usrAPI, rsAPI)
+ natsInstance := jetstream.NATSInstance{}
+ cm := sqlutil.NewConnectionManager(ctx, cfg.Global.DatabaseOptions)
+ rsAPI := roomserver.NewInternalAPI(ctx, cfg, cm, &natsInstance, caches, caching.DisableMetrics)
+ usrAPI := userapi.NewInternalAPI(ctx, cfg, cm, &natsInstance, rsAPI, nil)
+ asAPI := appservice.NewInternalAPI(ctx, cfg, &natsInstance, usrAPI, rsAPI)
runCases(t, asAPI)
})