siatest

package
v0.2.3 Latest Latest
Warning

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

Go to latest
Published: Dec 11, 2018 License: MIT Imports: 25 Imported by: 3

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// DefaultAllowance is the allowance used for the group's renters
	DefaultAllowance = modules.Allowance{
		Funds:       types.SiacoinPrecision.Mul64(1e3),
		Hosts:       5,
		Period:      50,
		RenewWindow: 24,
	}
)
View Source
var (
	// MinerTemplate is a template for a Sia node that has a functioning
	// miner. The node has a miner and all dependencies, but no other
	// modules.
	MinerTemplate = node.NodeParams{
		CreateConsensusSet:    true,
		CreateExplorer:        false,
		CreateGateway:         true,
		CreateHost:            false,
		CreateMiner:           true,
		CreateRenter:          false,
		CreateTransactionPool: true,
		CreateWallet:          true,
	}
)
View Source
var (
	// SiaTestingDir is the directory that contains all of the files and
	// folders created during testing.
	SiaTestingDir = filepath.Join(os.TempDir(), "SiaTesting")
)

Functions

func ChunkSize

func ChunkSize(minPieces uint64, ct crypto.CipherType) uint64

ChunkSize is a helper method to calculate the size of a chunk depending on the minimum number of pieces required to restore the chunk.

func Fuzz

func Fuzz() int

Fuzz returns 0, 1 or -1. This can be used to test for random off-by-one errors in the code. For example fuzz can be used to create a File that is either sector aligned or off-by-one.

func Miner

func Miner(dir string) node.NodeParams

Miner returns an MinerTemplate filled out with the provided dir.

func NewDependencyCustomResolver

func NewDependencyCustomResolver(lookupIP func(string) ([]net.IP, error)) modules.Dependencies

NewDependencyCustomResolver creates a dependency from a given lookupIP method which returns a custom resolver that uses the specified lookupIP method to resolve hostnames.

func Retry

func Retry(tries int, durationBetweenAttempts time.Duration, fn func() error) (err error)

Retry will call 'fn' 'tries' times, waiting 'durationBetweenAttempts' between each attempt, returning 'nil' the first time that 'fn' returns nil. If 'nil' is never returned, then the final error returned by 'fn' is returned.

func TestDir

func TestDir(dirs ...string) string

TestDir joins the provided directories and prefixes them with the Sia testing directory, removing any files or directories that previously existed at that location.

Types

type DependencyInterruptOnceOnKeyword

type DependencyInterruptOnceOnKeyword struct {
	modules.ProductionDependencies
	// contains filtered or unexported fields
}

DependencyInterruptOnceOnKeyword is a generic dependency that interrupts the flow of the program if the argument passed to Disrupt equals str and if f was set to true by calling Fail.

func NewDependencyInterruptOnceOnKeyword

func NewDependencyInterruptOnceOnKeyword(str string) *DependencyInterruptOnceOnKeyword

NewDependencyInterruptOnceOnKeyword creates a new DependencyInterruptOnceOnKeyword from a given disrupt key.

func (*DependencyInterruptOnceOnKeyword) Disable

func (d *DependencyInterruptOnceOnKeyword) Disable()

Disable sets the flag to false to make sure that the dependency won't fail.

func (*DependencyInterruptOnceOnKeyword) Disrupt

Disrupt returns true if the correct string is provided and if the flag was set to true by calling fail on the dependency beforehand. After simulating a crash the flag will be set to false and fail has to be called again for another disruption.

func (*DependencyInterruptOnceOnKeyword) Fail

Fail causes the next call to Disrupt to return true if the correct string is provided.

type GroupParams

type GroupParams struct {
	Hosts   int // number of hosts to create
	Renters int // number of renters to create
	Miners  int // number of miners to create
}

GroupParams is a helper struct to make creating TestGroups easier.

type LocalDir

type LocalDir struct {
	// contains filtered or unexported fields
}

LocalDir is a helper struct that represents a directory on disk that is to be uploaded to the sia network

func (*LocalDir) CreateDir

func (ld *LocalDir) CreateDir(name string) (*LocalDir, error)

CreateDir creates a new LocalDir in the current LocalDir with the provide name

func (*LocalDir) Files

func (ld *LocalDir) Files() ([]*LocalFile, error)

Files returns a slice of the files in the LocalDir

func (*LocalDir) Name

func (ld *LocalDir) Name() string

Name returns the directory name of the directory on disk

func (*LocalDir) NewFile

func (ld *LocalDir) NewFile(size int) (*LocalFile, error)

NewFile creates a new LocalFile in the current LocalDir

func (*LocalDir) Path

func (ld *LocalDir) Path() string

Path creates a new LocalFile in the current LocalDir

func (*LocalDir) PopulateDir

func (ld *LocalDir) PopulateDir(files, dirs, levels uint) error

PopulateDir populates a LocalDir levels deep with the number of files and directories provided at each level. The same number of files and directories will be at each level

type LocalFile

type LocalFile struct {
	// contains filtered or unexported fields
}

LocalFile is a helper struct that represents a file uploaded to the Sia network.

func (*LocalFile) Delete

func (lf *LocalFile) Delete() error

Delete removes the LocalFile from disk.

func (*LocalFile) FileName

func (lf *LocalFile) FileName() string

FileName returns the file name of the file on disk

func (*LocalFile) Move

func (lf *LocalFile) Move() error

Move moves the file to a new random location.

type RemoteDir

type RemoteDir struct {
	// contains filtered or unexported fields
}

RemoteDir is a helper struct that represents a directory on the Sia network.

func (*RemoteDir) HyperspacePath added in v0.2.3

func (rd *RemoteDir) HyperspacePath() string

HyperspacePath returns the hyperspacepath of a remote directory.

type RemoteFile

type RemoteFile struct {
	// contains filtered or unexported fields
}

RemoteFile is a helper struct that represents a file uploaded to the Sia network.

func (RemoteFile) HyperspacePath added in v0.2.3

func (rf RemoteFile) HyperspacePath() string

HyperspacePath returns the siaPath of a remote file.

type TestGroup

type TestGroup struct {
	// contains filtered or unexported fields
}

TestGroup is a group of of TestNodes that are funded, synced and ready for upload, download and mining depending on their configuration

func NewGroup

func NewGroup(groupDir string, nodeParams ...node.NodeParams) (*TestGroup, error)

NewGroup creates a group of TestNodes from node params. All the nodes will be connected, synced and funded. Hosts nodes are also announced.

func NewGroupFromTemplate

func NewGroupFromTemplate(groupDir string, groupParams GroupParams) (*TestGroup, error)

NewGroupFromTemplate will create hosts, renters and miners according to the settings in groupParams.

func (*TestGroup) AddNodeN

func (tg *TestGroup) AddNodeN(np node.NodeParams, n int) ([]*TestNode, error)

AddNodeN adds n nodes of a given template to the group.

func (*TestGroup) AddNodes

func (tg *TestGroup) AddNodes(nps ...node.NodeParams) ([]*TestNode, error)

AddNodes creates a node and adds it to the group.

func (*TestGroup) Close

func (tg *TestGroup) Close() error

Close closes the group and all its nodes. Closing a node is usually a slow process, but we can speed it up a lot by closing each node in a separate goroutine.

func (*TestGroup) Hosts

func (tg *TestGroup) Hosts() []*TestNode

Hosts returns all the hosts of the group

func (*TestGroup) Miners

func (tg *TestGroup) Miners() []*TestNode

Miners returns all the miners of the group

func (*TestGroup) Nodes

func (tg *TestGroup) Nodes() []*TestNode

Nodes returns all the nodes of the group

func (*TestGroup) RemoveNode

func (tg *TestGroup) RemoveNode(tn *TestNode) error

RemoveNode removes a node from the group and shuts it down.

func (*TestGroup) Renters

func (tg *TestGroup) Renters() []*TestNode

Renters returns all the renters of the group

func (*TestGroup) SetRenterAllowance

func (tg *TestGroup) SetRenterAllowance(renter *TestNode, allowance modules.Allowance) error

SetRenterAllowance finished the setup for the renter test node

func (*TestGroup) StartNode

func (tg *TestGroup) StartNode(tn *TestNode) error

StartNode starts a node from the group that has previously been stopped.

func (*TestGroup) StopNode

func (tg *TestGroup) StopNode(tn *TestNode) error

StopNode stops a node of a group.

func (*TestGroup) Sync

func (tg *TestGroup) Sync() error

Sync syncs the node of the test group

type TestNode

type TestNode struct {
	*server.Server
	client.Client
	// contains filtered or unexported fields
}

TestNode is a helper struct for testing that contains a server and a client as embedded fields.

func NewCleanNode

func NewCleanNode(nodeParams node.NodeParams) (*TestNode, error)

NewCleanNode creates a new TestNode that's not yet funded

func NewNode

func NewNode(nodeParams node.NodeParams) (*TestNode, error)

NewNode creates a new funded TestNode

func (*TestNode) DownloadByStream

func (tn *TestNode) DownloadByStream(rf *RemoteFile) (data []byte, err error)

DownloadByStream downloads a file and returns its contents as a slice of bytes.

func (*TestNode) DownloadDir

func (tn *TestNode) DownloadDir() *LocalDir

DownloadDir returns the LocalDir that is the testnodes download directory

func (*TestNode) DownloadInfo

func (tn *TestNode) DownloadInfo(lf *LocalFile, rf *RemoteFile) (*api.DownloadInfo, error)

DownloadInfo returns the DownloadInfo struct of a file. If it returns nil, the download has either finished, or was never started in the first place. If the corresponding download info was found, DownloadInfo also performs a few sanity checks on its fields.

func (*TestNode) DownloadToDisk

func (tn *TestNode) DownloadToDisk(rf *RemoteFile, async bool) (*LocalFile, error)

DownloadToDisk downloads a previously uploaded file. The file will be downloaded to a random location and returned as a TestFile object.

func (*TestNode) File

func (tn *TestNode) File(siaPath string) (modules.FileInfo, error)

File returns the file queried by the user

func (*TestNode) FileInfo

func (tn *TestNode) FileInfo(rf *RemoteFile) (modules.FileInfo, error)

FileInfo retrieves the info of a certain file that is tracked by the renter

func (*TestNode) Files

func (tn *TestNode) Files() ([]modules.FileInfo, error)

Files lists the files tracked by the renter

func (*TestNode) HyperspacePath added in v0.2.3

func (tn *TestNode) HyperspacePath(path string) string

HyperspacePath returns the hyperspacepath of a local file or directory to be used for uploading

func (*TestNode) KnowsHost

func (tn *TestNode) KnowsHost(host *TestNode) error

KnowsHost checks if tn has a certain host in its hostdb. This check is performed using the host's public key.

func (*TestNode) MineBlock

func (tn *TestNode) MineBlock() error

MineBlock makes the underlying node mine a single block and broadcast it.

func (*TestNode) Rename

func (tn *TestNode) Rename(rf *RemoteFile, newPath string) (*RemoteFile, error)

Rename renames a remoteFile and returns the new file.

func (*TestNode) RenterDir

func (tn *TestNode) RenterDir() string

RenterDir returns the renter directory for the renter

func (*TestNode) RestartNode

func (tn *TestNode) RestartNode() error

RestartNode restarts a TestNode

func (*TestNode) SetFileRepairPath

func (tn *TestNode) SetFileRepairPath(rf *RemoteFile, lf *LocalFile) error

SetFileRepairPath changes the repair path of a remote file to the provided local file's path.

func (*TestNode) StartNode

func (tn *TestNode) StartNode() error

StartNode starts a TestNode from an active group

func (*TestNode) StopNode

func (tn *TestNode) StopNode() error

StopNode stops a TestNode

func (*TestNode) Stream

func (tn *TestNode) Stream(rf *RemoteFile) (data []byte, err error)

Stream uses the streaming endpoint to download a file.

func (*TestNode) StreamPartial

func (tn *TestNode) StreamPartial(rf *RemoteFile, lf *LocalFile, from, to uint64) (data []byte, err error)

StreamPartial uses the streaming endpoint to download a partial file in range [from;to]. A local file can be provided optionally to implicitly check the checksum of the downloaded data.

func (*TestNode) Upload

func (tn *TestNode) Upload(lf *LocalFile, dataPieces, parityPieces uint64) (*RemoteFile, error)

Upload uses the node to upload the file.

func (*TestNode) UploadDir

func (tn *TestNode) UploadDir() *LocalDir

UploadDir returns the LocalDir that is the testnodes upload directory

func (*TestNode) UploadDirectory

func (tn *TestNode) UploadDirectory(ld *LocalDir) (*RemoteDir, error)

UploadDirectory uses the node to upload a directory

func (*TestNode) UploadNewDirectory

func (tn *TestNode) UploadNewDirectory(files, dirs, levels uint) (*RemoteDir, error)

UploadNewDirectory uses the node to create and upload a directory with a random name

func (*TestNode) UploadNewFile

func (tn *TestNode) UploadNewFile(filesize int, dataPieces uint64, parityPieces uint64) (*LocalFile, *RemoteFile, error)

UploadNewFile initiates the upload of a filesize bytes large file.

func (*TestNode) UploadNewFileBlocking

func (tn *TestNode) UploadNewFileBlocking(filesize int, dataPieces uint64, parityPieces uint64) (*LocalFile, *RemoteFile, error)

UploadNewFileBlocking uploads a filesize bytes large file and waits for the upload to reach 100% progress and redundancy.

func (*TestNode) WaitForDecreasingRedundancy

func (tn *TestNode) WaitForDecreasingRedundancy(rf *RemoteFile, redundancy float64) error

WaitForDecreasingRedundancy waits until the redundancy decreases to a certain point.

func (*TestNode) WaitForDownload

func (tn *TestNode) WaitForDownload(lf *LocalFile, rf *RemoteFile) error

WaitForDownload waits for the download of a file to finish. If a file wasn't scheduled for download it will return instantly without an error. If parent is provided, it will compare the contents of the downloaded file to the contents of tf2 after the download is finished. WaitForDownload also verifies the checksum of the downloaded file.

func (*TestNode) WaitForUploadProgress

func (tn *TestNode) WaitForUploadProgress(rf *RemoteFile, progress float64) error

WaitForUploadProgress waits for a file to reach a certain upload progress.

func (*TestNode) WaitForUploadRedundancy

func (tn *TestNode) WaitForUploadRedundancy(rf *RemoteFile, redundancy float64) error

WaitForUploadRedundancy waits for a file to reach a certain upload redundancy.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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