diff options
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: | 
