diff options
author | 2023-03-01 18:26:53 +0000 | |
---|---|---|
committer | 2023-03-01 18:26:53 +0000 | |
commit | baf933cb9f3e1053bdb61b90d7027efe9fad1bc2 (patch) | |
tree | 3f2a76851d58517ca3dece2bacd6aceefd8dfb96 /testrig | |
parent | [feature] Federate pinned posts (aka `featuredCollection`) in and out (#1560) (diff) | |
download | gotosocial-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.go | 5 | ||||
-rw-r--r-- | testrig/federatingdb.go | 8 | ||||
-rw-r--r-- | testrig/federator.go | 9 | ||||
-rw-r--r-- | testrig/mediahandler.go | 11 | ||||
-rw-r--r-- | testrig/processor.go | 12 | ||||
-rw-r--r-- | testrig/transportcontroller.go | 8 | ||||
-rw-r--r-- | testrig/util.go | 21 |
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: |