-
Notifications
You must be signed in to change notification settings - Fork 57
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: adding NetConfig test suite (#2091)
- Loading branch information
1 parent
e85f05b
commit 23b49ca
Showing
4 changed files
with
360 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,340 @@ | ||
{.used.} | ||
|
||
import | ||
chronos, | ||
confutils/toml/std/net, | ||
libp2p/multiaddress, | ||
testutils/unittests | ||
|
||
import | ||
./testlib/wakunode, | ||
../../waku/waku_enr/capabilities | ||
|
||
include | ||
../../waku/node/config | ||
|
||
proc defaultTestWakuFlags(): CapabilitiesBitfield = | ||
CapabilitiesBitfield.init( | ||
lightpush = false, | ||
filter = false, | ||
store = false, | ||
relay = true | ||
) | ||
|
||
suite "Waku NetConfig": | ||
|
||
asyncTest "Create NetConfig with default values": | ||
|
||
let conf = defaultTestWakuNodeConf() | ||
|
||
let wakuFlags = defaultTestWakuFlags() | ||
|
||
let netConfigRes = NetConfig.init( | ||
bindIp = conf.listenAddress, | ||
bindPort = conf.tcpPort, | ||
extIp = none(ValidIpAddress), | ||
extPort = none(Port), | ||
extMultiAddrs = @[], | ||
wsBindPort = conf.websocketPort, | ||
wsEnabled = conf.websocketSupport, | ||
wssEnabled = conf.websocketSecureSupport, | ||
dns4DomainName = none(string), | ||
discv5UdpPort = none(Port), | ||
wakuFlags = some(wakuFlags) | ||
) | ||
|
||
check: | ||
netConfigRes.isOk() | ||
|
||
asyncTest "AnnouncedAddresses contains only bind address when no external addresses are provided": | ||
|
||
let conf = defaultTestWakuNodeConf() | ||
|
||
let netConfigRes = NetConfig.init( | ||
bindIp = conf.listenAddress, | ||
bindPort = conf.tcpPort | ||
) | ||
|
||
assert netConfigRes.isOk(), $netConfigRes.error | ||
|
||
let netConfig = netConfigRes.get() | ||
|
||
check: | ||
netConfig.announcedAddresses.len == 1 # Only bind address should be present | ||
netConfig.announcedAddresses[0] == formatListenAddress(ip4TcpEndPoint(conf.listenAddress, conf.tcpPort)) | ||
|
||
|
||
asyncTest "AnnouncedAddresses contains external address if extIp/Port are provided": | ||
|
||
let | ||
conf = defaultTestWakuNodeConf() | ||
extIp = ValidIpAddress.init("1.2.3.4") | ||
extPort = Port(1234) | ||
|
||
let netConfigRes = NetConfig.init( | ||
bindIp = conf.listenAddress, | ||
bindPort = conf.tcpPort, | ||
extIp = some(extIp), | ||
extPort = some(extPort) | ||
) | ||
|
||
assert netConfigRes.isOk(), $netConfigRes.error | ||
|
||
let netConfig = netConfigRes.get() | ||
|
||
check: | ||
netConfig.announcedAddresses.len == 1 # Only external address should be present | ||
netConfig.announcedAddresses[0] == ip4TcpEndPoint(extIp, extPort) | ||
|
||
asyncTest "AnnouncedAddresses contains dns4DomainName if provided": | ||
|
||
let | ||
conf = defaultTestWakuNodeConf() | ||
dns4DomainName = "example.com" | ||
extPort = Port(1234) | ||
|
||
let netConfigRes = NetConfig.init( | ||
bindIp = conf.listenAddress, | ||
bindPort = conf.tcpPort, | ||
dns4DomainName = some(dns4DomainName), | ||
extPort = some(extPort) | ||
) | ||
|
||
assert netConfigRes.isOk(), $netConfigRes.error | ||
|
||
let netConfig = netConfigRes.get() | ||
|
||
check: | ||
netConfig.announcedAddresses.len == 1 # Only DNS address should be present | ||
netConfig.announcedAddresses[0] == dns4TcpEndPoint(dns4DomainName, extPort) | ||
|
||
asyncTest "AnnouncedAddresses includes extMultiAddrs when provided": | ||
|
||
let | ||
conf = defaultTestWakuNodeConf() | ||
extIp = ValidIpAddress.init("1.2.3.4") | ||
extPort = Port(1234) | ||
extMultiAddrs = @[ip4TcpEndPoint(extIp, extPort)] | ||
|
||
let netConfigRes = NetConfig.init( | ||
bindIp = conf.listenAddress, | ||
bindPort = conf.tcpPort, | ||
extMultiAddrs = extMultiAddrs | ||
) | ||
|
||
assert netConfigRes.isOk(), $netConfigRes.error | ||
|
||
let netConfig = netConfigRes.get() | ||
|
||
check: | ||
netConfig.announcedAddresses.len == 2 # Bind address + extAddress | ||
netConfig.announcedAddresses[1] == extMultiAddrs[0] | ||
|
||
|
||
asyncTest "AnnouncedAddresses uses dns4DomainName over extIp when both are provided": | ||
|
||
let | ||
conf = defaultTestWakuNodeConf() | ||
dns4DomainName = "example.com" | ||
extIp = ValidIpAddress.init("1.2.3.4") | ||
extPort = Port(1234) | ||
|
||
let netConfigRes = NetConfig.init( | ||
bindIp = conf.listenAddress, | ||
bindPort = conf.tcpPort, | ||
dns4DomainName = some(dns4DomainName), | ||
extIp = some(extIp), | ||
extPort = some(extPort) | ||
) | ||
|
||
assert netConfigRes.isOk(), $netConfigRes.error | ||
|
||
let netConfig = netConfigRes.get() | ||
|
||
check: | ||
netConfig.announcedAddresses.len == 1 # DNS address | ||
netConfig.announcedAddresses[0] == dns4TcpEndPoint(dns4DomainName, extPort) | ||
|
||
asyncTest "AnnouncedAddresses includes WebSocket addresses when enabled": | ||
|
||
var | ||
conf = defaultTestWakuNodeConf() | ||
wssEnabled = false | ||
|
||
var netConfigRes = NetConfig.init( | ||
bindIp = conf.listenAddress, | ||
bindPort = conf.tcpPort, | ||
wsEnabled = true, | ||
wssEnabled = wssEnabled | ||
) | ||
|
||
assert netConfigRes.isOk(), $netConfigRes.error | ||
|
||
var netConfig = netConfigRes.get() | ||
|
||
check: | ||
netConfig.announcedAddresses.len == 2 # Bind address + wsHostAddress | ||
netConfig.announcedAddresses[1] == (ip4TcpEndPoint(conf.listenAddress, | ||
conf.websocketPort) & wsFlag(wssEnabled)) | ||
|
||
## Now try the same for the case of wssEnabled = true | ||
|
||
wssEnabled = true | ||
|
||
netConfigRes = NetConfig.init( | ||
bindIp = conf.listenAddress, | ||
bindPort = conf.tcpPort, | ||
wsEnabled = true, | ||
wssEnabled = wssEnabled | ||
) | ||
|
||
assert netConfigRes.isOk(), $netConfigRes.error | ||
|
||
netConfig = netConfigRes.get() | ||
|
||
check: | ||
netConfig.announcedAddresses.len == 2 # Bind address + wsHostAddress | ||
netConfig.announcedAddresses[1] == (ip4TcpEndPoint(conf.listenAddress, | ||
conf.websocketPort) & wsFlag(wssEnabled)) | ||
|
||
asyncTest "Announced WebSocket address contains external IP if provided": | ||
|
||
let | ||
conf = defaultTestWakuNodeConf() | ||
extIp = ValidIpAddress.init("1.2.3.4") | ||
extPort = Port(1234) | ||
wssEnabled = false | ||
|
||
let netConfigRes = NetConfig.init( | ||
bindIp = conf.listenAddress, | ||
bindPort = conf.tcpPort, | ||
extIp = some(extIp), | ||
extPort = some(extPort), | ||
wsEnabled = true, | ||
wssEnabled = wssEnabled | ||
) | ||
|
||
assert netConfigRes.isOk(), $netConfigRes.error | ||
|
||
let netConfig = netConfigRes.get() | ||
|
||
check: | ||
netConfig.announcedAddresses.len == 2 # External address + wsHostAddress | ||
netConfig.announcedAddresses[1] == (ip4TcpEndPoint(extIp, | ||
conf.websocketPort) & wsFlag(wssEnabled)) | ||
|
||
asyncTest "Announced WebSocket address contains dns4DomainName if provided": | ||
|
||
let | ||
conf = defaultTestWakuNodeConf() | ||
dns4DomainName = "example.com" | ||
extPort = Port(1234) | ||
wssEnabled = false | ||
|
||
let netConfigRes = NetConfig.init( | ||
bindIp = conf.listenAddress, | ||
bindPort = conf.tcpPort, | ||
dns4DomainName = some(dns4DomainName), | ||
extPort = some(extPort), | ||
wsEnabled = true, | ||
wssEnabled = wssEnabled | ||
) | ||
|
||
assert netConfigRes.isOk(), $netConfigRes.error | ||
|
||
let netConfig = netConfigRes.get() | ||
|
||
check: | ||
netConfig.announcedAddresses.len == 2 # Bind address + wsHostAddress | ||
netConfig.announcedAddresses[1] == (dns4TcpEndPoint(dns4DomainName, conf.websocketPort) & | ||
wsFlag(wssEnabled)) | ||
|
||
asyncTest "Announced WebSocket address contains dns4DomainName if provided alongside extIp": | ||
|
||
let | ||
conf = defaultTestWakuNodeConf() | ||
dns4DomainName = "example.com" | ||
extIp = ValidIpAddress.init("1.2.3.4") | ||
extPort = Port(1234) | ||
wssEnabled = false | ||
|
||
let netConfigRes = NetConfig.init( | ||
bindIp = conf.listenAddress, | ||
bindPort = conf.tcpPort, | ||
dns4DomainName = some(dns4DomainName), | ||
extIp = some(extIp), | ||
extPort = some(extPort), | ||
wsEnabled = true, | ||
wssEnabled = wssEnabled | ||
) | ||
|
||
assert netConfigRes.isOk(), $netConfigRes.error | ||
|
||
let netConfig = netConfigRes.get() | ||
|
||
check: | ||
netConfig.announcedAddresses.len == 2 # DNS address + wsHostAddress | ||
netConfig.announcedAddresses[0] == dns4TcpEndPoint(dns4DomainName, extPort) | ||
netConfig.announcedAddresses[1] == (dns4TcpEndPoint(dns4DomainName, conf.websocketPort) & | ||
wsFlag(wssEnabled)) | ||
|
||
asyncTest "ENR is set with bindIp/Port if no extIp/Port are provided": | ||
|
||
let conf = defaultTestWakuNodeConf() | ||
|
||
let netConfigRes = NetConfig.init( | ||
bindIp = conf.listenAddress, | ||
bindPort = conf.tcpPort | ||
) | ||
|
||
assert netConfigRes.isOk(), $netConfigRes.error | ||
|
||
let netConfig = netConfigRes.get() | ||
|
||
check: | ||
netConfig.enrIp.get() == conf.listenAddress | ||
netConfig.enrPort.get() == conf.tcpPort | ||
|
||
asyncTest "ENR is set with extIp/Port if provided": | ||
|
||
let | ||
conf = defaultTestWakuNodeConf() | ||
extIp = ValidIpAddress.init("1.2.3.4") | ||
extPort = Port(1234) | ||
|
||
let netConfigRes = NetConfig.init( | ||
bindIp = conf.listenAddress, | ||
bindPort = conf.tcpPort, | ||
extIp = some(extIp), | ||
extPort = some(extPort) | ||
) | ||
|
||
assert netConfigRes.isOk(), $netConfigRes.error | ||
|
||
let netConfig = netConfigRes.get() | ||
|
||
check: | ||
netConfig.extIp.get() == extIp | ||
netConfig.enrPort.get() == extPort | ||
|
||
asyncTest "ENR is set with dns4DomainName if provided": | ||
|
||
let | ||
conf = defaultTestWakuNodeConf() | ||
dns4DomainName = "example.com" | ||
extPort = Port(1234) | ||
|
||
let netConfigRes = NetConfig.init( | ||
bindIp = conf.listenAddress, | ||
bindPort = conf.tcpPort, | ||
dns4DomainName = some(dns4DomainName), | ||
extPort = some(extPort) | ||
) | ||
|
||
assert netConfigRes.isOk(), $netConfigRes.error | ||
|
||
let netConfig = netConfigRes.get() | ||
|
||
check: | ||
netConfig.enrMultiaddrs.contains(dns4TcpEndPoint(dns4DomainName, extPort)) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.