Documentation ¶
Overview ¶
Package testplanet implements the full network wiring for testing
Index ¶
- Variables
- func Run(t *testing.T, config Config, ...)
- type Config
- type Peer
- type Planet
- func (planet *Planet) Identities() *testidentity.Identities
- func (planet *Planet) NewIdentity() (*identity.FullIdentity, error)
- func (planet *Planet) NewListener() (net.Listener, error)
- func (planet *Planet) NewVersionConfig() checker.Config
- func (planet *Planet) NewVersionInfo() version.Info
- func (planet *Planet) Shutdown() error
- func (planet *Planet) Size() int
- func (planet *Planet) Start(ctx context.Context)
- func (planet *Planet) StopPeer(peer Peer) error
- func (planet *Planet) WriteWhitelist(version storj.IDVersion) (string, error)
- type Reconfigure
- type SatelliteSystem
- func (system *SatelliteSystem) Addr() string
- func (system *SatelliteSystem) Close() error
- func (system *SatelliteSystem) ID() storj.NodeID
- func (system *SatelliteSystem) Local() overlay.NodeDossier
- func (system *SatelliteSystem) PrivateAddr() string
- func (system *SatelliteSystem) Run(ctx context.Context) (err error)
- func (system *SatelliteSystem) URL() storj.NodeURL
- type Uplink
- func (client *Uplink) Addr() string
- func (client *Uplink) CreateBucket(ctx context.Context, satellite *SatelliteSystem, bucketName string) error
- func (client *Uplink) Delete(ctx context.Context, satellite *SatelliteSystem, bucketName string, ...) error
- func (client *Uplink) DialMetainfo(ctx context.Context, destination Peer, apikey *macaroon.APIKey) (*metainfo.Client, error)
- func (client *Uplink) DialPiecestore(ctx context.Context, destination Peer) (*piecestore.Client, error)
- func (client *Uplink) Download(ctx context.Context, satellite *SatelliteSystem, bucketName string, ...) ([]byte, error)
- func (client *Uplink) DownloadStream(ctx context.Context, satellite *SatelliteSystem, bucketName string, ...) (_ io.ReadCloser, cleanup func() error, err error)
- func (client *Uplink) DownloadStreamRange(ctx context.Context, satellite *SatelliteSystem, bucketName string, ...) (_ io.ReadCloser, cleanup func() error, err error)
- func (client *Uplink) GetConfig(satellite *SatelliteSystem) uplink.Config
- func (client *Uplink) GetProject(ctx context.Context, satellite *SatelliteSystem) (*libuplink.Project, error)
- func (client *Uplink) GetProjectAndBucket(ctx context.Context, satellite *SatelliteSystem, bucketName string, ...) (_ *libuplink.Project, _ *libuplink.Bucket, err error)
- func (client *Uplink) ID() storj.NodeID
- func (client *Uplink) Local() pb.Node
- func (client *Uplink) NewLibuplink(ctx context.Context) (*libuplink.Uplink, error)
- func (client *Uplink) Shutdown() error
- func (client *Uplink) Upload(ctx context.Context, satellite *SatelliteSystem, bucket string, ...) error
- func (client *Uplink) UploadWithClientConfig(ctx context.Context, satellite *SatelliteSystem, clientConfig uplink.Config, ...) (err error)
- func (client *Uplink) UploadWithConfig(ctx context.Context, satellite *SatelliteSystem, redundancy *uplink.RSConfig, ...) error
- func (client *Uplink) UploadWithExpiration(ctx context.Context, satellite *SatelliteSystem, bucket string, ...) error
- func (client *Uplink) UploadWithExpirationAndConfig(ctx context.Context, satellite *SatelliteSystem, redundancy *uplink.RSConfig, ...) (err error)
Constants ¶
This section is empty.
Variables ¶
var DisablePeerCAWhitelist = Reconfigure{ Satellite: func(log *zap.Logger, index int, config *satellite.Config) { config.Server.UsePeerCAWhitelist = false }, StorageNode: func(index int, config *storagenode.Config) { config.Server.UsePeerCAWhitelist = false }, }
DisablePeerCAWhitelist returns a `Reconfigure` that sets `UsePeerCAWhitelist` for all node types that use kademlia.
var ShortenOnlineWindow = Reconfigure{ Satellite: func(log *zap.Logger, index int, config *satellite.Config) { config.Overlay.Node.OnlineWindow = 1 * time.Second }, }
ShortenOnlineWindow returns a `Reconfigure` that sets the NodeSelection OnlineWindow to 1 second, meaning a connection failure leads to marking the nodes as offline
Functions ¶
Types ¶
type Config ¶
type Config struct { SatelliteCount int StorageNodeCount int UplinkCount int Identities *testidentity.Identities IdentityVersion *storj.IDVersion Reconfigure Reconfigure Name string }
Config describes planet configuration
type Peer ¶
type Peer interface { ID() storj.NodeID Addr() string URL() storj.NodeURL Local() overlay.NodeDossier Run(context.Context) error Close() error }
Peer represents one of StorageNode or Satellite
type Planet ¶
type Planet struct { VersionControl *versioncontrol.Peer Satellites []*SatelliteSystem StorageNodes []*storagenode.Peer Uplinks []*Uplink // contains filtered or unexported fields }
Planet is a full storj system setup.
func NewWithIdentityVersion ¶
func NewWithIdentityVersion(t zaptest.TestingT, identityVersion *storj.IDVersion, satelliteCount, storageNodeCount, uplinkCount int) (*Planet, error)
NewWithIdentityVersion creates a new full system with the given version for node identities and the given number of nodes.
func (*Planet) Identities ¶
func (planet *Planet) Identities() *testidentity.Identities
Identities returns the identity provider for this planet.
func (*Planet) NewIdentity ¶
func (planet *Planet) NewIdentity() (*identity.FullIdentity, error)
NewIdentity creates a new identity for a node
func (*Planet) NewListener ¶
NewListener creates a new listener
func (*Planet) NewVersionConfig ¶
NewVersionConfig returns the Version Config for this planet with tuned metrics.
func (*Planet) NewVersionInfo ¶
NewVersionInfo returns the Version Info for this planet with tuned metrics.
type Reconfigure ¶
type Reconfigure struct { NewSatelliteDB func(log *zap.Logger, index int) (satellite.DB, error) NewSatellitePointerDB func(log *zap.Logger, index int) (metainfo.PointerDB, error) Satellite func(log *zap.Logger, index int, config *satellite.Config) NewStorageNodeDB func(index int, db storagenode.DB, log *zap.Logger) (storagenode.DB, error) StorageNode func(index int, config *storagenode.Config) UniqueIPCount int }
Reconfigure allows to change node configurations
type SatelliteSystem ¶
type SatelliteSystem struct { Core *satellite.Core API *satellite.API Repairer *satellite.Repairer Log *zap.Logger Identity *identity.FullIdentity DB satellite.DB Dialer rpc.Dialer Server *server.Server Version *versionchecker.Service Contact struct { Service *contact.Service Endpoint *contact.Endpoint } Overlay struct { DB overlay.DB Service *overlay.Service Inspector *overlay.Inspector } Metainfo struct { Database metainfo.PointerDB Service *metainfo.Service Endpoint2 *metainfo.Endpoint Loop *metainfo.Loop } Inspector struct { Endpoint *inspector.Endpoint } Orders struct { Endpoint *orders.Endpoint Service *orders.Service } Repair struct { Checker *checker.Checker Repairer *repairer.Service Inspector *irreparable.Inspector } Audit struct { Queue *audit.Queue Worker *audit.Worker Chore *audit.Chore Verifier *audit.Verifier Reporter *audit.Reporter } GarbageCollection struct { Service *gc.Service } DBCleanup struct { Chore *dbcleanup.Chore } Accounting struct { Tally *tally.Service Rollup *rollup.Service ProjectUsage *accounting.Service } LiveAccounting struct { Cache accounting.Cache } Mail struct { Service *mailservice.Service } Vouchers struct { Endpoint *vouchers.Endpoint } Console struct { Listener net.Listener Service *console.Service Endpoint *consoleweb.Server } Marketing struct { Listener net.Listener Endpoint *marketingweb.Server } NodeStats struct { Endpoint *nodestats.Endpoint } GracefulExit struct { Chore *gracefulexit.Chore Endpoint *gracefulexit.Endpoint } Metrics struct { Chore *metrics.Chore } }
SatelliteSystem contains all the processes needed to run a full Satellite setup
func (*SatelliteSystem) Addr ¶
func (system *SatelliteSystem) Addr() string
Addr returns the public address from the Satellite system API.
func (*SatelliteSystem) Close ¶
func (system *SatelliteSystem) Close() error
Close closes all the subsystems in the Satellite system
func (*SatelliteSystem) ID ¶
func (system *SatelliteSystem) ID() storj.NodeID
ID returns the ID of the Satellite system.
func (*SatelliteSystem) Local ¶
func (system *SatelliteSystem) Local() overlay.NodeDossier
Local returns the peer local node info from the Satellite system API.
func (*SatelliteSystem) PrivateAddr ¶
func (system *SatelliteSystem) PrivateAddr() string
PrivateAddr returns the private address from the Satellite system API.
func (*SatelliteSystem) Run ¶
func (system *SatelliteSystem) Run(ctx context.Context) (err error)
Run runs all the subsystems in the Satellite system
func (*SatelliteSystem) URL ¶
func (system *SatelliteSystem) URL() storj.NodeURL
URL returns the storj.NodeURL from the Satellite system API.
type Uplink ¶
type Uplink struct { Log *zap.Logger Info pb.Node Identity *identity.FullIdentity Dialer rpc.Dialer StorageNodeCount int APIKey map[storj.NodeID]*macaroon.APIKey ProjectID map[storj.NodeID]uuid.UUID }
Uplink is a general purpose
func (*Uplink) CreateBucket ¶
func (client *Uplink) CreateBucket(ctx context.Context, satellite *SatelliteSystem, bucketName string) error
CreateBucket creates a new bucket
func (*Uplink) Delete ¶
func (client *Uplink) Delete(ctx context.Context, satellite *SatelliteSystem, bucketName string, path storj.Path) error
Delete deletes an object at the path in a bucket
func (*Uplink) DialMetainfo ¶
func (client *Uplink) DialMetainfo(ctx context.Context, destination Peer, apikey *macaroon.APIKey) (*metainfo.Client, error)
DialMetainfo dials destination with apikey and returns metainfo Client
func (*Uplink) DialPiecestore ¶
func (client *Uplink) DialPiecestore(ctx context.Context, destination Peer) (*piecestore.Client, error)
DialPiecestore dials destination storagenode and returns a piecestore client.
func (*Uplink) Download ¶
func (client *Uplink) Download(ctx context.Context, satellite *SatelliteSystem, bucketName string, path storj.Path) ([]byte, error)
Download data from specific satellite
func (*Uplink) DownloadStream ¶
func (client *Uplink) DownloadStream(ctx context.Context, satellite *SatelliteSystem, bucketName string, path storj.Path) (_ io.ReadCloser, cleanup func() error, err error)
DownloadStream returns stream for downloading data
func (*Uplink) DownloadStreamRange ¶
func (client *Uplink) DownloadStreamRange(ctx context.Context, satellite *SatelliteSystem, bucketName string, path storj.Path, start, limit int64) (_ io.ReadCloser, cleanup func() error, err error)
DownloadStreamRange returns stream for downloading data
func (*Uplink) GetConfig ¶
func (client *Uplink) GetConfig(satellite *SatelliteSystem) uplink.Config
GetConfig returns a default config for a given satellite.
func (*Uplink) GetProject ¶
func (client *Uplink) GetProject(ctx context.Context, satellite *SatelliteSystem) (*libuplink.Project, error)
GetProject returns a libuplink.Project which allows interactions with a specific project
func (*Uplink) GetProjectAndBucket ¶
func (client *Uplink) GetProjectAndBucket(ctx context.Context, satellite *SatelliteSystem, bucketName string, clientCfg uplink.Config) (_ *libuplink.Project, _ *libuplink.Bucket, err error)
GetProjectAndBucket returns a libuplink.Project and Bucket which allows interactions with a specific project and its buckets
func (*Uplink) NewLibuplink ¶
NewLibuplink creates a libuplink.Uplink object with the testplanet Uplink config
func (*Uplink) Upload ¶
func (client *Uplink) Upload(ctx context.Context, satellite *SatelliteSystem, bucket string, path storj.Path, data []byte) error
Upload data to specific satellite
func (*Uplink) UploadWithClientConfig ¶
func (client *Uplink) UploadWithClientConfig(ctx context.Context, satellite *SatelliteSystem, clientConfig uplink.Config, bucketName string, path storj.Path, data []byte) (err error)
UploadWithClientConfig uploads data to specific satellite with custom client configuration
func (*Uplink) UploadWithConfig ¶
func (client *Uplink) UploadWithConfig(ctx context.Context, satellite *SatelliteSystem, redundancy *uplink.RSConfig, bucket string, path storj.Path, data []byte) error
UploadWithConfig uploads data to specific satellite with configured values
func (*Uplink) UploadWithExpiration ¶
func (client *Uplink) UploadWithExpiration(ctx context.Context, satellite *SatelliteSystem, bucket string, path storj.Path, data []byte, expiration time.Time) error
UploadWithExpiration data to specific satellite and expiration time
func (*Uplink) UploadWithExpirationAndConfig ¶
func (client *Uplink) UploadWithExpirationAndConfig(ctx context.Context, satellite *SatelliteSystem, redundancy *uplink.RSConfig, bucketName string, path storj.Path, data []byte, expiration time.Time) (err error)
UploadWithExpirationAndConfig uploads data to specific satellite with configured values and expiration time