watchtower/lookout/mock: adds mock backend
This commit is contained in:
parent
475ab01442
commit
671be69743
61
watchtower/lookout/mock.go
Normal file
61
watchtower/lookout/mock.go
Normal file
@ -0,0 +1,61 @@
|
||||
// +build dev
|
||||
|
||||
package lookout
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||
"github.com/btcsuite/btcd/wire"
|
||||
"github.com/lightningnetwork/lnd/chainntnfs"
|
||||
)
|
||||
|
||||
type MockBackend struct {
|
||||
mu sync.RWMutex
|
||||
|
||||
blocks chan *chainntnfs.BlockEpoch
|
||||
epochs map[chainhash.Hash]*wire.MsgBlock
|
||||
quit chan struct{}
|
||||
}
|
||||
|
||||
func NewMockBackend() *MockBackend {
|
||||
return &MockBackend{
|
||||
blocks: make(chan *chainntnfs.BlockEpoch),
|
||||
epochs: make(map[chainhash.Hash]*wire.MsgBlock),
|
||||
quit: make(chan struct{}),
|
||||
}
|
||||
}
|
||||
|
||||
func (m *MockBackend) RegisterBlockEpochNtfn(*chainntnfs.BlockEpoch) (
|
||||
*chainntnfs.BlockEpochEvent, error) {
|
||||
|
||||
return &chainntnfs.BlockEpochEvent{
|
||||
Epochs: m.blocks,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *MockBackend) GetBlock(hash *chainhash.Hash) (*wire.MsgBlock, error) {
|
||||
m.mu.RLock()
|
||||
defer m.mu.RUnlock()
|
||||
|
||||
block, ok := m.epochs[*hash]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("unknown block for hash %x", hash)
|
||||
}
|
||||
|
||||
return block, nil
|
||||
}
|
||||
|
||||
func (m *MockBackend) ConnectEpoch(epoch *chainntnfs.BlockEpoch,
|
||||
block *wire.MsgBlock) {
|
||||
|
||||
m.mu.Lock()
|
||||
m.epochs[*epoch.Hash] = block
|
||||
m.mu.Unlock()
|
||||
|
||||
select {
|
||||
case m.blocks <- epoch:
|
||||
case <-m.quit:
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user