Skip to content
Snippets Groups Projects
pipe.go 6.5 KiB
Newer Older
Androlo's avatar
Androlo committed
package mock

import (
Silas Davis's avatar
Silas Davis committed
	core_types "github.com/eris-ltd/eris-db/core/types"
Ethan Buchman's avatar
Ethan Buchman committed
	td "github.com/eris-ltd/eris-db/test/testdata/testdata"
Ethan Buchman's avatar
Ethan Buchman committed
	types "github.com/eris-ltd/eris-db/txs"
Ethan Buchman's avatar
Ethan Buchman committed
	mintTypes "github.com/tendermint/tendermint/types"
Androlo's avatar
Androlo committed
)

// Base struct.
type MockPipe struct {
androlo's avatar
androlo committed
	testData   *td.TestData
Silas Davis's avatar
Silas Davis committed
	accounts   core_types.Accounts
	blockchain core_types.Blockchain
	consensus  core_types.Consensus
	events     core_types.EventEmitter
	namereg    core_types.NameReg
	net        core_types.Net
	transactor core_types.Transactor
Androlo's avatar
Androlo committed
}

// Create a new mock tendermint pipe.
Silas Davis's avatar
Silas Davis committed
func NewMockPipe(td *td.TestData) core_types.Pipe {
androlo's avatar
androlo committed
	accounts := &accounts{td}
	blockchain := &blockchain{td}
	consensus := &consensus{td}
Ethan Buchman's avatar
Ethan Buchman committed
	eventer := &eventer{td}
androlo's avatar
androlo committed
	namereg := &namereg{td}
androlo's avatar
androlo committed
	net := &net{td}
	transactor := &transactor{td}
Androlo's avatar
Androlo committed
	return &MockPipe{
androlo's avatar
androlo committed
		td,
Androlo's avatar
Androlo committed
		accounts,
		blockchain,
		consensus,
Ethan Buchman's avatar
Ethan Buchman committed
		eventer,
androlo's avatar
androlo committed
		namereg,
Androlo's avatar
Androlo committed
		net,
Androlo's avatar
Androlo committed
		transactor,
Androlo's avatar
Androlo committed
	}
}

// Create a mock pipe with default mock data.
Silas Davis's avatar
Silas Davis committed
func NewDefaultMockPipe() core_types.Pipe {
	return NewMockPipe(td.LoadTestData())
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *MockPipe) Accounts() core_types.Accounts {
Androlo's avatar
Androlo committed
	return this.accounts
}

Silas Davis's avatar
Silas Davis committed
func (this *MockPipe) Blockchain() core_types.Blockchain {
Androlo's avatar
Androlo committed
	return this.blockchain
}

Silas Davis's avatar
Silas Davis committed
func (this *MockPipe) Consensus() core_types.Consensus {
Androlo's avatar
Androlo committed
	return this.consensus
}

Silas Davis's avatar
Silas Davis committed
func (this *MockPipe) Events() core_types.EventEmitter {
Androlo's avatar
Androlo committed
	return this.events
}

Silas Davis's avatar
Silas Davis committed
func (this *MockPipe) NameReg() core_types.NameReg {
androlo's avatar
androlo committed
	return this.namereg
}

Silas Davis's avatar
Silas Davis committed
func (this *MockPipe) Net() core_types.Net {
Androlo's avatar
Androlo committed
	return this.net
}

Silas Davis's avatar
Silas Davis committed
func (this *MockPipe) Transactor() core_types.Transactor {
Androlo's avatar
Androlo committed
	return this.transactor
Androlo's avatar
Androlo committed
}

// Components

// Accounts
type accounts struct {
androlo's avatar
androlo committed
	testData *td.TestData
Androlo's avatar
Androlo committed
}

func (this *accounts) GenPrivAccount() (*account.PrivAccount, error) {
androlo's avatar
androlo committed
	return this.testData.GenPrivAccount.Output, nil
Androlo's avatar
Androlo committed
}

func (this *accounts) GenPrivAccountFromKey(key []byte) (*account.PrivAccount, error) {
androlo's avatar
androlo committed
	return this.testData.GenPrivAccount.Output, nil
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *accounts) Accounts([]*core_types.FilterData) (*core_types.AccountList, error) {
androlo's avatar
androlo committed
	return this.testData.GetAccounts.Output, nil
Androlo's avatar
Androlo committed
}

func (this *accounts) Account(address []byte) (*account.Account, error) {
androlo's avatar
androlo committed
	return this.testData.GetAccount.Output, nil
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *accounts) Storage(address []byte) (*core_types.Storage, error) {
androlo's avatar
androlo committed
	return this.testData.GetStorage.Output, nil
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *accounts) StorageAt(address, key []byte) (*core_types.StorageItem, error) {
androlo's avatar
androlo committed
	return this.testData.GetStorageAt.Output, nil
Androlo's avatar
Androlo committed
}

// Blockchain
type blockchain struct {
androlo's avatar
androlo committed
	testData *td.TestData
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *blockchain) Info() (*core_types.BlockchainInfo, error) {
androlo's avatar
androlo committed
	return this.testData.GetBlockchainInfo.Output, nil
Androlo's avatar
Androlo committed
}

func (this *blockchain) ChainId() (string, error) {
androlo's avatar
androlo committed
	return this.testData.GetChainId.Output.ChainId, nil
Androlo's avatar
Androlo committed
}

func (this *blockchain) GenesisHash() ([]byte, error) {
androlo's avatar
androlo committed
	return this.testData.GetGenesisHash.Output.Hash, nil
Androlo's avatar
Androlo committed
}

func (this *blockchain) LatestBlockHeight() (int, error) {
androlo's avatar
androlo committed
	return this.testData.GetLatestBlockHeight.Output.Height, nil
Androlo's avatar
Androlo committed
}

Ethan Buchman's avatar
Ethan Buchman committed
func (this *blockchain) LatestBlock() (*mintTypes.Block, error) {
androlo's avatar
androlo committed
	return this.testData.GetLatestBlock.Output, nil
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *blockchain) Blocks([]*core_types.FilterData) (*core_types.Blocks, error) {
androlo's avatar
androlo committed
	return this.testData.GetBlocks.Output, nil
Androlo's avatar
Androlo committed
}

Ethan Buchman's avatar
Ethan Buchman committed
func (this *blockchain) Block(height int) (*mintTypes.Block, error) {
androlo's avatar
androlo committed
	return this.testData.GetBlock.Output, nil
Androlo's avatar
Androlo committed
}

// Consensus
type consensus struct {
androlo's avatar
androlo committed
	testData *td.TestData
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *consensus) State() (*core_types.ConsensusState, error) {
androlo's avatar
androlo committed
	return this.testData.GetConsensusState.Output, nil
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *consensus) Validators() (*core_types.ValidatorList, error) {
androlo's avatar
androlo committed
	return this.testData.GetValidators.Output, nil
Androlo's avatar
Androlo committed
}

// Events
Ethan Buchman's avatar
Ethan Buchman committed
type eventer struct {
androlo's avatar
androlo committed
	testData *td.TestData
Androlo's avatar
Androlo committed
}

Ethan Buchman's avatar
Ethan Buchman committed
func (this *eventer) Subscribe(subId, event string, callback func(events.EventData)) (bool, error) {
Androlo's avatar
Androlo committed
	return true, nil
}

Ethan Buchman's avatar
Ethan Buchman committed
func (this *eventer) Unsubscribe(subId string) (bool, error) {
	return true, nil
Androlo's avatar
Androlo committed
}

androlo's avatar
androlo committed
// NameReg
type namereg struct {
	testData *td.TestData
}

func (this *namereg) Entry(key string) (*types.NameRegEntry, error) {
	return this.testData.GetNameRegEntry.Output, nil
}

Silas Davis's avatar
Silas Davis committed
func (this *namereg) Entries(filters []*core_types.FilterData) (*core_types.ResultListNames, error) {
androlo's avatar
androlo committed
	return this.testData.GetNameRegEntries.Output, nil
}

Androlo's avatar
Androlo committed
// Net
type net struct {
androlo's avatar
androlo committed
	testData *td.TestData
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *net) Info() (*core_types.NetworkInfo, error) {
androlo's avatar
androlo committed
	return this.testData.GetNetworkInfo.Output, nil
Androlo's avatar
Androlo committed
}

Androlo's avatar
Androlo committed
func (this *net) ClientVersion() (string, error) {
androlo's avatar
androlo committed
	return this.testData.GetClientVersion.Output.ClientVersion, nil
Androlo's avatar
Androlo committed
}

Androlo's avatar
Androlo committed
func (this *net) Moniker() (string, error) {
androlo's avatar
androlo committed
	return this.testData.GetMoniker.Output.Moniker, nil
Androlo's avatar
Androlo committed
}

func (this *net) Listening() (bool, error) {
androlo's avatar
androlo committed
	return this.testData.IsListening.Output.Listening, nil
Androlo's avatar
Androlo committed
}

func (this *net) Listeners() ([]string, error) {
androlo's avatar
androlo committed
	return this.testData.GetListeners.Output.Listeners, nil
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *net) Peers() ([]*core_types.Peer, error) {
androlo's avatar
androlo committed
	return this.testData.GetPeers.Output, nil
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *net) Peer(address string) (*core_types.Peer, error) {
androlo's avatar
androlo committed
	// return this.testData.GetPeer.Output, nil
	return nil, nil
Androlo's avatar
Androlo committed
}

// Txs
Androlo's avatar
Androlo committed
type transactor struct {
androlo's avatar
androlo committed
	testData *td.TestData
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *transactor) Call(fromAddress, toAddress, data []byte) (*core_types.Call, error) {
androlo's avatar
androlo committed
	return this.testData.Call.Output, nil
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *transactor) CallCode(from, code, data []byte) (*core_types.Call, error) {
androlo's avatar
androlo committed
	return this.testData.CallCode.Output, nil
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *transactor) BroadcastTx(tx types.Tx) (*core_types.Receipt, error) {
	return nil, nil
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *transactor) UnconfirmedTxs() (*core_types.UnconfirmedTxs, error) {
androlo's avatar
androlo committed
	return this.testData.GetUnconfirmedTxs.Output, nil
Androlo's avatar
Androlo committed
}

Silas Davis's avatar
Silas Davis committed
func (this *transactor) Transact(privKey, address, data []byte, gasLimit, fee int64) (*core_types.Receipt, error) {
	if address == nil || len(address) == 0 {
androlo's avatar
androlo committed
		return this.testData.TransactCreate.Output, nil
androlo's avatar
androlo committed
	return this.testData.Transact.Output, nil
Androlo's avatar
Androlo committed
}

Ethan Buchman's avatar
Ethan Buchman committed
func (this *transactor) TransactAndHold(privKey, address, data []byte, gasLimit, fee int64) (*types.EventDataCall, error) {
androlo's avatar
androlo committed
	return nil, nil
}

Silas Davis's avatar
Silas Davis committed
func (this *transactor) Send(privKey, toAddress []byte, amount int64) (*core_types.Receipt, error) {
Androlo's avatar
.  
Androlo committed
	return nil, nil
}

Silas Davis's avatar
Silas Davis committed
func (this *transactor) SendAndHold(privKey, toAddress []byte, amount int64) (*core_types.Receipt, error) {
Androlo's avatar
.  
Androlo committed
	return nil, nil
}

Silas Davis's avatar
Silas Davis committed
func (this *transactor) TransactNameReg(privKey []byte, name, data string, amount, fee int64) (*core_types.Receipt, error) {
androlo's avatar
androlo committed
	return this.testData.TransactNameReg.Output, nil
}

Androlo's avatar
Androlo committed
func (this *transactor) SignTx(tx types.Tx, privAccounts []*account.PrivAccount) (types.Tx, error) {
	return nil, nil
Androlo's avatar
Androlo committed
}