summaryrefslogtreecommitdiff
path: root/testrig
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2023-03-01 18:26:53 +0000
committerLibravatar GitHub <noreply@github.com>2023-03-01 18:26:53 +0000
commitbaf933cb9f3e1053bdb61b90d7027efe9fad1bc2 (patch)
tree3f2a76851d58517ca3dece2bacd6aceefd8dfb96 /testrig
parent[feature] Federate pinned posts (aka `featuredCollection`) in and out (#1560) (diff)
downloadgotosocial-baf933cb9f3e1053bdb61b90d7027efe9fad1bc2.tar.xz
[chore] move client/federator workerpools to Workers{} (#1575)
* replace concurrency worker pools with base models in State.Workers, update code and tests accordingly * improve code comment * change back testrig default log level * un-comment-out TestAnnounceTwice() and fix --------- Signed-off-by: kim <grufwub@gmail.com> Reviewed-by: tobi
Diffstat (limited to 'testrig')
-rw-r--r--testrig/db.go5
-rw-r--r--testrig/federatingdb.go8
-rw-r--r--testrig/federator.go9
-rw-r--r--testrig/mediahandler.go11
-rw-r--r--testrig/processor.go12
-rw-r--r--testrig/transportcontroller.go8
-rw-r--r--testrig/util.go21
7 files changed, 41 insertions, 33 deletions
diff --git a/testrig/db.go b/testrig/db.go
index 8479347eb..1a29aa8b9 100644
--- a/testrig/db.go
+++ b/testrig/db.go
@@ -71,7 +71,7 @@ var testModels = []interface{}{
//
// If the environment variable GTS_DB_PORT is set, it will take that
// value as the port instead.
-func NewTestDB() db.DB {
+func NewTestDB(state *state.State) db.DB {
if alternateAddress := os.Getenv("GTS_DB_ADDRESS"); alternateAddress != "" {
config.SetDbAddress(alternateAddress)
}
@@ -88,10 +88,9 @@ func NewTestDB() db.DB {
config.SetDbPort(int(port))
}
- var state state.State
state.Caches.Init()
- testDB, err := bundb.NewBunDBService(context.Background(), &state)
+ testDB, err := bundb.NewBunDBService(context.Background(), state)
if err != nil {
log.Panic(nil, err)
}
diff --git a/testrig/federatingdb.go b/testrig/federatingdb.go
index 9b1f1961e..27adc4c51 100644
--- a/testrig/federatingdb.go
+++ b/testrig/federatingdb.go
@@ -19,13 +19,11 @@
package testrig
import (
- "github.com/superseriousbusiness/gotosocial/internal/concurrency"
- "github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/federation/federatingdb"
- "github.com/superseriousbusiness/gotosocial/internal/messages"
+ "github.com/superseriousbusiness/gotosocial/internal/state"
)
// NewTestFederatingDB returns a federating DB with the underlying db
-func NewTestFederatingDB(db db.DB, fedWorker *concurrency.WorkerPool[messages.FromFederator]) federatingdb.DB {
- return federatingdb.New(db, fedWorker, NewTestTypeConverter(db))
+func NewTestFederatingDB(state *state.State) federatingdb.DB {
+ return federatingdb.New(state, NewTestTypeConverter(state.DB))
}
diff --git a/testrig/federator.go b/testrig/federator.go
index 605a2c8f3..bc150633e 100644
--- a/testrig/federator.go
+++ b/testrig/federator.go
@@ -19,16 +19,13 @@
package testrig
import (
- "github.com/superseriousbusiness/gotosocial/internal/concurrency"
- "github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/federation"
"github.com/superseriousbusiness/gotosocial/internal/media"
- "github.com/superseriousbusiness/gotosocial/internal/messages"
- "github.com/superseriousbusiness/gotosocial/internal/storage"
+ "github.com/superseriousbusiness/gotosocial/internal/state"
"github.com/superseriousbusiness/gotosocial/internal/transport"
)
// NewTestFederator returns a federator with the given database and (mock!!) transport controller.
-func NewTestFederator(db db.DB, tc transport.Controller, storage *storage.Driver, mediaManager media.Manager, fedWorker *concurrency.WorkerPool[messages.FromFederator]) federation.Federator {
- return federation.NewFederator(db, NewTestFederatingDB(db, fedWorker), tc, NewTestTypeConverter(db), mediaManager)
+func NewTestFederator(state *state.State, tc transport.Controller, mediaManager media.Manager) federation.Federator {
+ return federation.NewFederator(state.DB, NewTestFederatingDB(state), tc, NewTestTypeConverter(state.DB), mediaManager)
}
diff --git a/testrig/mediahandler.go b/testrig/mediahandler.go
index a1863218c..b4b992b0b 100644
--- a/testrig/mediahandler.go
+++ b/testrig/mediahandler.go
@@ -19,17 +19,12 @@
package testrig
import (
- "github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/media"
"github.com/superseriousbusiness/gotosocial/internal/state"
- "github.com/superseriousbusiness/gotosocial/internal/storage"
)
// NewTestMediaManager returns a media handler with the default test config, and the given db and storage.
-func NewTestMediaManager(db db.DB, storage *storage.Driver) media.Manager {
- var state state.State
- state.DB = db
- state.Storage = storage
- state.Workers.Start()
- return media.NewManager(&state)
+func NewTestMediaManager(state *state.State) media.Manager {
+ StartWorkers(state) // ensure started
+ return media.NewManager(state)
}
diff --git a/testrig/processor.go b/testrig/processor.go
index f451d4ad0..856ee523d 100644
--- a/testrig/processor.go
+++ b/testrig/processor.go
@@ -19,17 +19,17 @@
package testrig
import (
- "github.com/superseriousbusiness/gotosocial/internal/concurrency"
- "github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/email"
"github.com/superseriousbusiness/gotosocial/internal/federation"
"github.com/superseriousbusiness/gotosocial/internal/media"
- "github.com/superseriousbusiness/gotosocial/internal/messages"
"github.com/superseriousbusiness/gotosocial/internal/processing"
- "github.com/superseriousbusiness/gotosocial/internal/storage"
+ "github.com/superseriousbusiness/gotosocial/internal/state"
)
// NewTestProcessor returns a Processor suitable for testing purposes
-func NewTestProcessor(db db.DB, storage *storage.Driver, federator federation.Federator, emailSender email.Sender, mediaManager media.Manager, clientWorker *concurrency.WorkerPool[messages.FromClientAPI], fedWorker *concurrency.WorkerPool[messages.FromFederator]) *processing.Processor {
- return processing.NewProcessor(NewTestTypeConverter(db), federator, NewTestOauthServer(db), mediaManager, storage, db, emailSender, clientWorker, fedWorker)
+func NewTestProcessor(state *state.State, federator federation.Federator, emailSender email.Sender, mediaManager media.Manager) *processing.Processor {
+ p := processing.NewProcessor(NewTestTypeConverter(state.DB), federator, NewTestOauthServer(state.DB), mediaManager, state, emailSender)
+ state.Workers.EnqueueClientAPI = p.EnqueueClientAPI
+ state.Workers.EnqueueFederator = p.EnqueueFederator
+ return p
}
diff --git a/testrig/transportcontroller.go b/testrig/transportcontroller.go
index 7565a741c..9657205f6 100644
--- a/testrig/transportcontroller.go
+++ b/testrig/transportcontroller.go
@@ -30,12 +30,10 @@ import (
"github.com/superseriousbusiness/activity/streams"
"github.com/superseriousbusiness/activity/streams/vocab"
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
- "github.com/superseriousbusiness/gotosocial/internal/concurrency"
- "github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/federation"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/log"
- "github.com/superseriousbusiness/gotosocial/internal/messages"
+ "github.com/superseriousbusiness/gotosocial/internal/state"
"github.com/superseriousbusiness/gotosocial/internal/transport"
)
@@ -53,8 +51,8 @@ const (
// Unlike the other test interfaces provided in this package, you'll probably want to call this function
// PER TEST rather than per suite, so that the do function can be set on a test by test (or even more granular)
// basis.
-func NewTestTransportController(client pub.HttpClient, db db.DB, fedWorker *concurrency.WorkerPool[messages.FromFederator]) transport.Controller {
- return transport.NewController(db, NewTestFederatingDB(db, fedWorker), &federation.Clock{}, client)
+func NewTestTransportController(state *state.State, client pub.HttpClient) transport.Controller {
+ return transport.NewController(state.DB, NewTestFederatingDB(state), &federation.Clock{}, client)
}
type MockHTTPClient struct {
diff --git a/testrig/util.go b/testrig/util.go
index cc392b315..0cda93024 100644
--- a/testrig/util.go
+++ b/testrig/util.go
@@ -20,13 +20,34 @@ package testrig
import (
"bytes"
+ "context"
"io"
"mime/multipart"
"net/url"
"os"
"time"
+
+ "github.com/superseriousbusiness/gotosocial/internal/messages"
+ "github.com/superseriousbusiness/gotosocial/internal/state"
)
+func StartWorkers(state *state.State) {
+ state.Workers.EnqueueClientAPI = func(context.Context, messages.FromClientAPI) {}
+ state.Workers.EnqueueFederator = func(context.Context, messages.FromFederator) {}
+
+ _ = state.Workers.Scheduler.Start(nil)
+ _ = state.Workers.ClientAPI.Start(1, 10)
+ _ = state.Workers.Federator.Start(1, 10)
+ _ = state.Workers.Media.Start(1, 10)
+}
+
+func StopWorkers(state *state.State) {
+ _ = state.Workers.Scheduler.Stop()
+ _ = state.Workers.ClientAPI.Stop()
+ _ = state.Workers.Federator.Stop()
+ _ = state.Workers.Media.Stop()
+}
+
// CreateMultipartFormData is a handy function for taking a fieldname and a filename, and creating a multipart form bytes buffer
// with the file contents set in the given fieldname. The extraFields param can be used to add extra FormFields to the request, as necessary.
// The returned bytes.Buffer b can be used like so: