htlcswitch/test: add two hop network
This commit is contained in:
parent
524d2465e0
commit
f80fb286d8
@ -1053,3 +1053,111 @@ func (h *hopNetwork) createChannelLink(server, peer *mockServer,
|
|||||||
|
|
||||||
return link, nil
|
return link, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// twoHopNetwork is used for managing the created cluster of 2 hops.
|
||||||
|
type twoHopNetwork struct {
|
||||||
|
hopNetwork
|
||||||
|
|
||||||
|
aliceServer *mockServer
|
||||||
|
aliceChannelLink *channelLink
|
||||||
|
|
||||||
|
bobServer *mockServer
|
||||||
|
bobChannelLink *channelLink
|
||||||
|
}
|
||||||
|
|
||||||
|
// newTwoHopNetwork function creates the following topology and returns the
|
||||||
|
// control object to manage this cluster:
|
||||||
|
//
|
||||||
|
// alice bob
|
||||||
|
// server - <-connection-> - server
|
||||||
|
// | |
|
||||||
|
// alice htlc bob htlc
|
||||||
|
// switch switch
|
||||||
|
// | |
|
||||||
|
// | |
|
||||||
|
// alice bob
|
||||||
|
// channel link channel link
|
||||||
|
//
|
||||||
|
func newTwoHopNetwork(t testing.TB,
|
||||||
|
aliceChannel, bobChannel *lnwallet.LightningChannel,
|
||||||
|
startingHeight uint32) *twoHopNetwork {
|
||||||
|
|
||||||
|
aliceDb := aliceChannel.State().Db
|
||||||
|
bobDb := bobChannel.State().Db
|
||||||
|
|
||||||
|
hopNetwork := newHopNetwork()
|
||||||
|
|
||||||
|
// Create two peers/servers.
|
||||||
|
aliceServer, err := newMockServer(
|
||||||
|
t, "alice", startingHeight, aliceDb, hopNetwork.defaultDelta,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unable to create alice server: %v", err)
|
||||||
|
}
|
||||||
|
bobServer, err := newMockServer(
|
||||||
|
t, "bob", startingHeight, bobDb, hopNetwork.defaultDelta,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unable to create bob server: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create mock decoder instead of sphinx one in order to mock the route
|
||||||
|
// which htlc should follow.
|
||||||
|
aliceDecoder := newMockIteratorDecoder()
|
||||||
|
bobDecoder := newMockIteratorDecoder()
|
||||||
|
|
||||||
|
aliceChannelLink, err := hopNetwork.createChannelLink(
|
||||||
|
aliceServer, bobServer, aliceChannel, aliceDecoder,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
bobChannelLink, err := hopNetwork.createChannelLink(
|
||||||
|
bobServer, aliceServer, bobChannel, bobDecoder,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &twoHopNetwork{
|
||||||
|
aliceServer: aliceServer,
|
||||||
|
aliceChannelLink: aliceChannelLink.(*channelLink),
|
||||||
|
|
||||||
|
bobServer: bobServer,
|
||||||
|
bobChannelLink: bobChannelLink.(*channelLink),
|
||||||
|
|
||||||
|
hopNetwork: *hopNetwork,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// start starts the three hop network alice,bob,carol servers.
|
||||||
|
func (n *twoHopNetwork) start() error {
|
||||||
|
if err := n.aliceServer.Start(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := n.bobServer.Start(); err != nil {
|
||||||
|
n.aliceServer.Stop()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// stop stops nodes and cleanup its databases.
|
||||||
|
func (n *twoHopNetwork) stop() {
|
||||||
|
done := make(chan struct{})
|
||||||
|
go func() {
|
||||||
|
n.aliceServer.Stop()
|
||||||
|
done <- struct{}{}
|
||||||
|
}()
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
n.bobServer.Stop()
|
||||||
|
done <- struct{}{}
|
||||||
|
}()
|
||||||
|
|
||||||
|
for i := 0; i < 2; i++ {
|
||||||
|
<-done
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user