testplanet

package
v0.19.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 29, 2019 License: AGPL-3.0 Imports: 73 Imported by: 0

Documentation

Overview

Package testplanet implements the full network wiring for testing

Index

Constants

This section is empty.

Variables

View Source
var DisablePeerCAWhitelist = Reconfigure{
	Bootstrap: func(index int, config *bootstrap.Config) {
		config.Server.UsePeerCAWhitelist = false
	},
	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.

View Source
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

func Run

func Run(t *testing.T, config Config, test func(t *testing.T, ctx *testcontext.Context, planet *Planet))

Run runs testplanet in multiple configurations.

Types

type Config

type Config struct {
	SatelliteCount   int
	StorageNodeCount int
	UplinkCount      int

	Identities      *testidentity.Identities
	IdentityVersion *storj.IDVersion
	Reconfigure     Reconfigure
}

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 {
	Bootstrap      *bootstrap.Peer
	VersionControl *versioncontrol.Peer
	Satellites     []*satellite.Peer
	StorageNodes   []*storagenode.Peer
	Uplinks        []*Uplink
	// contains filtered or unexported fields
}

Planet is a full storj system setup.

func New

func New(t zaptest.TestingT, satelliteCount, storageNodeCount, uplinkCount int) (*Planet, error)

New creates a new full system with the given number of nodes.

func NewCustom

func NewCustom(log *zap.Logger, config Config) (*Planet, error)

NewCustom creates a new full system with the specified configuration.

func NewWithIdentityVersion added in v0.9.0

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 NewWithLogger

func NewWithLogger(log *zap.Logger, satelliteCount, storageNodeCount, uplinkCount int) (*Planet, error)

NewWithLogger creates a new full system with 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

func (planet *Planet) NewListener() (net.Listener, error)

NewListener creates a new listener

func (*Planet) NewVersionConfig

func (planet *Planet) NewVersionConfig() version.Config

NewVersionConfig returns the Version Config for this planet with tuned metrics.

func (*Planet) NewVersionInfo

func (planet *Planet) NewVersionInfo() version.Info

NewVersionInfo returns the Version Info for this planet with tuned metrics.

func (*Planet) Reconnect

func (planet *Planet) Reconnect(ctx context.Context)

Reconnect reconnects all nodes with each other.

func (*Planet) Shutdown

func (planet *Planet) Shutdown() error

Shutdown shuts down all the nodes and deletes temporary directories.

func (*Planet) Size

func (planet *Planet) Size() int

Size returns number of nodes in the network

func (*Planet) Start

func (planet *Planet) Start(ctx context.Context)

Start starts all the nodes.

func (*Planet) StopPeer

func (planet *Planet) StopPeer(peer Peer) error

StopPeer stops a single peer in the planet

func (*Planet) WriteWhitelist

func (planet *Planet) WriteWhitelist(version storj.IDVersion) (string, error)

WriteWhitelist writes the pregenerated signer's CA cert to a "CA whitelist", PEM-encoded.

type Reconfigure

type Reconfigure struct {
	NewBootstrapDB func(index int) (bootstrap.DB, error)
	Bootstrap      func(index int, config *bootstrap.Config)

	NewSatelliteDB func(log *zap.Logger, index int) (satellite.DB, 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)
	NewIPCount       int
}

Reconfigure allows to change node configurations

type Uplink struct {
	Log              *zap.Logger
	Info             pb.Node
	Identity         *identity.FullIdentity
	Transport        transport.Client
	StorageNodeCount int
	APIKey           map[storj.NodeID]string
}

Uplink is a general purpose

func (*Uplink) Addr

func (client *Uplink) Addr() string

Addr returns uplink address

func (*Uplink) CreateBucket added in v0.16.0

func (client *Uplink) CreateBucket(ctx context.Context, satellite *satellite.Peer, bucketName string) error

CreateBucket creates a new bucket

func (*Uplink) Delete

func (client *Uplink) Delete(ctx context.Context, satellite *satellite.Peer, 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 string) (*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 *satellite.Peer, bucketName string, path storj.Path) ([]byte, error)

Download data from specific satellite

func (*Uplink) DownloadStream

func (client *Uplink) DownloadStream(ctx context.Context, satellite *satellite.Peer, bucketName string, path storj.Path) (_ io.ReadCloser, cleanup func() error, err error)

DownloadStream returns stream for downloading data

func (*Uplink) DownloadStreamRange added in v0.18.0

func (client *Uplink) DownloadStreamRange(ctx context.Context, satellite *satellite.Peer, 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 *satellite.Peer) uplink.Config

GetConfig returns a default config for a given satellite.

func (*Uplink) GetProject added in v0.16.0

func (client *Uplink) GetProject(ctx context.Context, satellite *satellite.Peer) (*libuplink.Project, error)

GetProject returns a libuplink.Project which allows interactions with a specific project

func (*Uplink) GetProjectAndBucket added in v0.16.0

func (client *Uplink) GetProjectAndBucket(ctx context.Context, satellite *satellite.Peer, 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) ID

func (client *Uplink) ID() storj.NodeID

ID returns uplink id

func (*Uplink) Local

func (client *Uplink) Local() pb.Node

Local returns uplink info

func (client *Uplink) NewLibuplink(ctx context.Context) (*libuplink.Uplink, error)

NewLibuplink creates a libuplink.Uplink object with the testplanet Uplink config

func (*Uplink) Shutdown

func (client *Uplink) Shutdown() error

Shutdown shuts down all uplink dependencies

func (*Uplink) Upload

func (client *Uplink) Upload(ctx context.Context, satellite *satellite.Peer, bucket string, path storj.Path, data []byte) error

Upload data to specific satellite

func (*Uplink) UploadWithConfig

func (client *Uplink) UploadWithConfig(ctx context.Context, satellite *satellite.Peer, redundancy *uplink.RSConfig, bucket string, path storj.Path, data []byte) error

UploadWithConfig uploads data to specific satellite with configured values

func (*Uplink) UploadWithExpiration added in v0.11.0

func (client *Uplink) UploadWithExpiration(ctx context.Context, satellite *satellite.Peer, bucket string, path storj.Path, data []byte, expiration time.Time) error

UploadWithExpiration data to specific satellite and expiration time

func (*Uplink) UploadWithExpirationAndConfig added in v0.14.0

func (client *Uplink) UploadWithExpirationAndConfig(ctx context.Context, satellite *satellite.Peer, 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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL