|
|
|
@@ -1,6 +1,6 @@
|
|
|
|
|
// +build dev
|
|
|
|
|
|
|
|
|
|
package server_test
|
|
|
|
|
package wtserver_test
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"bytes"
|
|
|
|
@@ -12,8 +12,8 @@ import (
|
|
|
|
|
"github.com/btcsuite/btcd/chaincfg"
|
|
|
|
|
"github.com/btcsuite/btcutil"
|
|
|
|
|
"github.com/lightningnetwork/lnd/lnwire"
|
|
|
|
|
"github.com/lightningnetwork/lnd/watchtower/server"
|
|
|
|
|
"github.com/lightningnetwork/lnd/watchtower/wtdb"
|
|
|
|
|
"github.com/lightningnetwork/lnd/watchtower/wtserver"
|
|
|
|
|
"github.com/lightningnetwork/lnd/watchtower/wtwire"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
@@ -36,8 +36,8 @@ func randPubKey(t *testing.T) *btcec.PublicKey {
|
|
|
|
|
|
|
|
|
|
// initServer creates and starts a new server using the server.DB and timeout.
|
|
|
|
|
// If the provided database is nil, a mock db will be used.
|
|
|
|
|
func initServer(t *testing.T, db server.DB,
|
|
|
|
|
timeout time.Duration) server.Interface {
|
|
|
|
|
func initServer(t *testing.T, db wtserver.DB,
|
|
|
|
|
timeout time.Duration) wtserver.Interface {
|
|
|
|
|
|
|
|
|
|
t.Helper()
|
|
|
|
|
|
|
|
|
@@ -45,7 +45,7 @@ func initServer(t *testing.T, db server.DB,
|
|
|
|
|
db = wtdb.NewMockDB()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
s, err := server.New(&server.Config{
|
|
|
|
|
s, err := wtserver.New(&wtserver.Config{
|
|
|
|
|
DB: db,
|
|
|
|
|
ReadTimeout: timeout,
|
|
|
|
|
WriteTimeout: timeout,
|
|
|
|
@@ -79,8 +79,8 @@ func TestServerOnlyAcceptOnePeer(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
// Create two peers using the same session id.
|
|
|
|
|
peerPub := randPubKey(t)
|
|
|
|
|
peer1 := server.NewMockPeer(peerPub, nil, 0)
|
|
|
|
|
peer2 := server.NewMockPeer(peerPub, nil, 0)
|
|
|
|
|
peer1 := wtserver.NewMockPeer(peerPub, nil, 0)
|
|
|
|
|
peer2 := wtserver.NewMockPeer(peerPub, nil, 0)
|
|
|
|
|
|
|
|
|
|
// Serialize a Init message to be sent by both peers.
|
|
|
|
|
init := wtwire.NewInitMessage(
|
|
|
|
@@ -106,8 +106,8 @@ func TestServerOnlyAcceptOnePeer(t *testing.T) {
|
|
|
|
|
// Try to send a message on either peer, and record the opposite peer as
|
|
|
|
|
// the one we assume to be rejected.
|
|
|
|
|
var (
|
|
|
|
|
rejectedPeer *server.MockPeer
|
|
|
|
|
acceptedPeer *server.MockPeer
|
|
|
|
|
rejectedPeer *wtserver.MockPeer
|
|
|
|
|
acceptedPeer *wtserver.MockPeer
|
|
|
|
|
)
|
|
|
|
|
select {
|
|
|
|
|
case peer1.IncomingMsgs <- msg:
|
|
|
|
@@ -192,7 +192,7 @@ func testServerCreateSession(t *testing.T, i int, test createSessionTestCase) {
|
|
|
|
|
|
|
|
|
|
// Create a new client and connect to server.
|
|
|
|
|
peerPub := randPubKey(t)
|
|
|
|
|
peer := server.NewMockPeer(peerPub, nil, 0)
|
|
|
|
|
peer := wtserver.NewMockPeer(peerPub, nil, 0)
|
|
|
|
|
connect(t, i, s, peer, test.initMsg, timeoutDuration)
|
|
|
|
|
|
|
|
|
|
// Send the CreateSession message, and wait for a reply.
|
|
|
|
@@ -220,7 +220,7 @@ func testServerCreateSession(t *testing.T, i int, test createSessionTestCase) {
|
|
|
|
|
|
|
|
|
|
// Simulate a peer with the same session id connection to the server
|
|
|
|
|
// again.
|
|
|
|
|
peer = server.NewMockPeer(peerPub, nil, 0)
|
|
|
|
|
peer = wtserver.NewMockPeer(peerPub, nil, 0)
|
|
|
|
|
connect(t, i, s, peer, test.initMsg, timeoutDuration)
|
|
|
|
|
|
|
|
|
|
// Send the _same_ CreateSession message as the first attempt.
|
|
|
|
@@ -492,7 +492,7 @@ func testServerStateUpdates(t *testing.T, i int, test stateUpdateTestCase) {
|
|
|
|
|
|
|
|
|
|
// Create a new client and connect to the server.
|
|
|
|
|
peerPub := randPubKey(t)
|
|
|
|
|
peer := server.NewMockPeer(peerPub, nil, 0)
|
|
|
|
|
peer := wtserver.NewMockPeer(peerPub, nil, 0)
|
|
|
|
|
connect(t, i, s, peer, test.initMsg, timeoutDuration)
|
|
|
|
|
|
|
|
|
|
// Register a session for this client to use in the subsequent tests.
|
|
|
|
@@ -512,7 +512,7 @@ func testServerStateUpdates(t *testing.T, i int, test stateUpdateTestCase) {
|
|
|
|
|
|
|
|
|
|
// Now that the original connection has been closed, connect a new
|
|
|
|
|
// client with the same session id.
|
|
|
|
|
peer = server.NewMockPeer(peerPub, nil, 0)
|
|
|
|
|
peer = wtserver.NewMockPeer(peerPub, nil, 0)
|
|
|
|
|
connect(t, i, s, peer, test.initMsg, timeoutDuration)
|
|
|
|
|
|
|
|
|
|
// Send the intended StateUpdate messages in series.
|
|
|
|
@@ -523,7 +523,7 @@ func testServerStateUpdates(t *testing.T, i int, test stateUpdateTestCase) {
|
|
|
|
|
if update == nil {
|
|
|
|
|
assertConnClosed(t, peer, 2*timeoutDuration)
|
|
|
|
|
|
|
|
|
|
peer = server.NewMockPeer(peerPub, nil, 0)
|
|
|
|
|
peer = wtserver.NewMockPeer(peerPub, nil, 0)
|
|
|
|
|
connect(t, i, s, peer, test.initMsg, timeoutDuration)
|
|
|
|
|
|
|
|
|
|
continue
|
|
|
|
@@ -547,7 +547,7 @@ func testServerStateUpdates(t *testing.T, i int, test stateUpdateTestCase) {
|
|
|
|
|
assertConnClosed(t, peer, 2*timeoutDuration)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func connect(t *testing.T, i int, s server.Interface, peer *server.MockPeer,
|
|
|
|
|
func connect(t *testing.T, i int, s wtserver.Interface, peer *wtserver.MockPeer,
|
|
|
|
|
initMsg *wtwire.Init, timeout time.Duration) {
|
|
|
|
|
|
|
|
|
|
s.InboundPeerConnected(peer)
|
|
|
|
@@ -555,9 +555,9 @@ func connect(t *testing.T, i int, s server.Interface, peer *server.MockPeer,
|
|
|
|
|
recvReply(t, i, "Init", peer, timeout)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// sendMsg sends a wtwire.Message message via a server.MockPeer.
|
|
|
|
|
// sendMsg sends a wtwire.Message message via a wtserver.MockPeer.
|
|
|
|
|
func sendMsg(t *testing.T, i int, msg wtwire.Message,
|
|
|
|
|
peer *server.MockPeer, timeout time.Duration) {
|
|
|
|
|
peer *wtserver.MockPeer, timeout time.Duration) {
|
|
|
|
|
|
|
|
|
|
t.Helper()
|
|
|
|
|
|
|
|
|
@@ -579,7 +579,7 @@ func sendMsg(t *testing.T, i int, msg wtwire.Message,
|
|
|
|
|
// expected reply type. The supported replies are CreateSessionReply and
|
|
|
|
|
// StateUpdateReply.
|
|
|
|
|
func recvReply(t *testing.T, i int, name string,
|
|
|
|
|
peer *server.MockPeer, timeout time.Duration) wtwire.Message {
|
|
|
|
|
peer *wtserver.MockPeer, timeout time.Duration) wtwire.Message {
|
|
|
|
|
|
|
|
|
|
t.Helper()
|
|
|
|
|
|
|
|
|
@@ -623,7 +623,7 @@ func recvReply(t *testing.T, i int, name string,
|
|
|
|
|
|
|
|
|
|
// assertConnClosed checks that the peer's connection is closed before the
|
|
|
|
|
// timeout expires.
|
|
|
|
|
func assertConnClosed(t *testing.T, peer *server.MockPeer, duration time.Duration) {
|
|
|
|
|
func assertConnClosed(t *testing.T, peer *wtserver.MockPeer, duration time.Duration) {
|
|
|
|
|
t.Helper()
|
|
|
|
|
|
|
|
|
|
select {
|