mirror of
https://github.com/logos-storage/logos-storage-nim.git
synced 2026-07-26 19:43:18 +00:00
Apply libp2p update
This commit is contained in:
parent
20e820f07b
commit
06bd7842c1
@ -140,7 +140,7 @@ switch("warning", "ObservableStores:off")
|
||||
# Too many false positives for "Warning: method has lock level <unknown>, but another method has 0 [LockLevel]"
|
||||
switch("warning", "LockLevel:off")
|
||||
|
||||
switch("define", "libp2p_pki_schemes=secp256k1")
|
||||
switch("define", "libp2p_pki_schemes=secp256k1,rsa")
|
||||
#TODO this infects everything in this folder, ideally it would only
|
||||
# apply to storage.nim, but since storage.nims is used for other purpose
|
||||
# we can't use it. And storage.cfg doesn't work
|
||||
|
||||
@ -314,8 +314,15 @@ proc new*(
|
||||
## Create a new BlockExcNetwork instance
|
||||
##
|
||||
|
||||
# libp2p now requires a non-nil handler at construction; the real one is set
|
||||
# by self.init() below. This placeholder only exists until then.
|
||||
proc placeholder(
|
||||
conn: Connection, proto: string
|
||||
): Future[void] {.async: (raises: [CancelledError]).} =
|
||||
discard
|
||||
|
||||
let self = lp_protocol.new(
|
||||
BlockExcNetwork, @[Codec], nil, maxIncomingStreamsTotal = maxInflight
|
||||
BlockExcNetwork, @[Codec], placeholder, maxIncomingStreamsTotal = maxInflight
|
||||
)
|
||||
self.switch = switch
|
||||
self.getConn = connProvider
|
||||
|
||||
@ -94,7 +94,7 @@ import std/typetraits
|
||||
import pkg/chronicles except toJson, `%`
|
||||
import json_serialization/writer as json_serialization_writer
|
||||
from pkg/chronos import TransportAddress
|
||||
from pkg/libp2p import Cid, MultiAddress, `$`
|
||||
from pkg/libp2p import Cid, MultiAddress, SignedPeerRecord, `$`
|
||||
import pkg/questionable
|
||||
import pkg/questionable/results
|
||||
import ./utils/json except formatIt # TODO: remove exception?
|
||||
@ -248,6 +248,8 @@ formatIt(UInt256):
|
||||
$it
|
||||
formatIt(MultiAddress):
|
||||
$it
|
||||
formatIt(SignedPeerRecord):
|
||||
$it
|
||||
formatIt(LogFormat.textLines, array[32, byte]):
|
||||
it.short0xHexLog
|
||||
formatIt(LogFormat.json, array[32, byte]):
|
||||
|
||||
@ -263,7 +263,8 @@ proc new*(
|
||||
var switchBuilder = SwitchBuilder
|
||||
.new()
|
||||
.withPrivateKey(privateKey)
|
||||
.withAddresses(@[listenMultiAddr], enableWildcardResolver = true)
|
||||
.withAddresses(@[listenMultiAddr])
|
||||
.withWildcardResolver()
|
||||
.withIdentifyPusher(false)
|
||||
.withRng(random.Rng.instance().libp2pRng)
|
||||
.withNoise()
|
||||
@ -469,7 +470,7 @@ proc new*(
|
||||
info "Relay reservation updated", addresses = publicAddrs
|
||||
# relay addresses are for download traffic only, not DHT routing
|
||||
discovery.announceRelayAddrs(publicAddrs),
|
||||
rng = random.Rng.instance(),
|
||||
rng = random.Rng.instance().libp2pRng,
|
||||
)
|
||||
|
||||
relayService.setup(switch)
|
||||
|
||||
@ -7,7 +7,6 @@ import pkg/storage/chunker
|
||||
import pkg/storage/stores
|
||||
|
||||
import ../../asynctest
|
||||
import ../helpers/switchutils
|
||||
|
||||
type CountingStore* = ref object of NetworkStore
|
||||
lookups*: Table[Cid, int]
|
||||
|
||||
@ -20,7 +20,7 @@ suite "Discovery - SPR record logic":
|
||||
udpPort = Port(8090)
|
||||
|
||||
setup:
|
||||
key = PrivateKey.random(Rng.instance()).get()
|
||||
key = PrivateKey.random(Rng.instance().libp2pRng).get()
|
||||
disc = Discovery.new(key, announceAddrs = @[])
|
||||
|
||||
test "announceDirectAddrs sets the SPR with both TCP and UDP addresses":
|
||||
|
||||
@ -56,8 +56,8 @@ method sendDialRequest*(
|
||||
proc serverSwitch(): Switch =
|
||||
SwitchBuilder
|
||||
.new()
|
||||
.withRng(Rng.instance())
|
||||
.withPrivateKey(PrivateKey.random(Rng.instance()).get())
|
||||
.withRng(Rng.instance().libp2pRng)
|
||||
.withPrivateKey(PrivateKey.random(Rng.instance().libp2pRng).get())
|
||||
.withAddresses(@[MultiAddress.init(listenAddr).get()])
|
||||
.withTcpTransport(flags)
|
||||
.withNoise()
|
||||
@ -77,8 +77,8 @@ asyncchecksuite "NAT detection - simulated NAT":
|
||||
let relayClient = relayClientModule.RelayClient.new()
|
||||
natNode = SwitchBuilder
|
||||
.new()
|
||||
.withRng(Rng.instance())
|
||||
.withPrivateKey(PrivateKey.random(Rng.instance()).get())
|
||||
.withRng(Rng.instance().libp2pRng)
|
||||
.withPrivateKey(PrivateKey.random(Rng.instance().libp2pRng).get())
|
||||
.withAddresses(@[MultiAddress.init(listenAddr).get()])
|
||||
.withNatTransport(router, flags)
|
||||
.withNoise()
|
||||
@ -86,9 +86,11 @@ asyncchecksuite "NAT detection - simulated NAT":
|
||||
.withCircuitRelay(relayClient)
|
||||
.build()
|
||||
|
||||
relay = AutoRelayService.new(1, relayClient, nil, Rng.instance())
|
||||
relay = AutoRelayService.new(1, relayClient, nil, Rng.instance().libp2pRng)
|
||||
autorelayservice.setup(relay, natNode)
|
||||
disc = Discovery.new(PrivateKey.random(Rng.instance()).get(), announceAddrs = @[])
|
||||
disc = Discovery.new(
|
||||
PrivateKey.random(Rng.instance().libp2pRng).get(), announceAddrs = @[]
|
||||
)
|
||||
# nodes start in client mode until Reachable
|
||||
disc.protocol.clientMode = true
|
||||
|
||||
@ -203,7 +205,7 @@ asyncchecksuite "NAT detection - dial request candidates":
|
||||
test "autonat handles the observed dialable address":
|
||||
let mockClient = MockAutonatV2Client()
|
||||
let autonat = AutonatV2Service.new(
|
||||
Rng.instance(),
|
||||
Rng.instance().libp2pRng,
|
||||
mockClient,
|
||||
AutonatV2ServiceConfig.new(
|
||||
enableDialableCandidates = true, maxQueueSize = 1, minConfidence = 0.5
|
||||
|
||||
@ -36,9 +36,10 @@ asyncchecksuite "NAT reaction - port mapping":
|
||||
var autoRelay: AutoRelayService
|
||||
|
||||
setup:
|
||||
autoRelay =
|
||||
AutoRelayService.new(1, relayClientModule.RelayClient.new(), nil, Rng.instance())
|
||||
key = PrivateKey.random(Rng.instance()).get()
|
||||
autoRelay = AutoRelayService.new(
|
||||
1, relayClientModule.RelayClient.new(), nil, Rng.instance().libp2pRng
|
||||
)
|
||||
key = PrivateKey.random(Rng.instance().libp2pRng).get()
|
||||
disc = Discovery.new(key, announceAddrs = @[])
|
||||
sw = newStandardSwitch()
|
||||
await sw.start()
|
||||
@ -149,7 +150,7 @@ asyncchecksuite "NAT reaction - address announcing":
|
||||
var disc: Discovery
|
||||
|
||||
setup:
|
||||
key = PrivateKey.random(Rng.instance()).get()
|
||||
key = PrivateKey.random(Rng.instance().libp2pRng).get()
|
||||
disc = Discovery.new(key, announceAddrs = @[])
|
||||
sw = newStandardSwitch()
|
||||
await sw.start()
|
||||
@ -179,7 +180,7 @@ asyncchecksuite "NAT reaction - address announcing":
|
||||
check disc.getSpr().data.seqNo == seqNo
|
||||
|
||||
test "peerInfo observer announces addresses when Reachable":
|
||||
let autonat = AutonatV2Service.new(Rng.instance())
|
||||
let autonat = AutonatV2Service.new(Rng.instance().libp2pRng)
|
||||
discard setupPeerInfoObserver(
|
||||
sw, autonat, disc, NatPortMapper(discoveryPort: discoveryPort)
|
||||
)
|
||||
@ -193,7 +194,7 @@ asyncchecksuite "NAT reaction - address announcing":
|
||||
check disc.announceAddrs == sw.peerInfo.addrs
|
||||
|
||||
test "peerInfo observer announces the mapped external UDP port when a mapping is active":
|
||||
let autonat = AutonatV2Service.new(Rng.instance())
|
||||
let autonat = AutonatV2Service.new(Rng.instance().libp2pRng)
|
||||
let mapper =
|
||||
NatPortMapper(discoveryPort: discoveryPort, activeUdpPort: some(Port(40001)))
|
||||
discard setupPeerInfoObserver(sw, autonat, disc, mapper)
|
||||
@ -210,7 +211,7 @@ asyncchecksuite "NAT reaction - address announcing":
|
||||
sprAddrs
|
||||
|
||||
test "peerInfo observer does not announce when the node is not Reachable":
|
||||
let autonat = AutonatV2Service.new(Rng.instance())
|
||||
let autonat = AutonatV2Service.new(Rng.instance().libp2pRng)
|
||||
discard setupPeerInfoObserver(
|
||||
sw, autonat, disc, NatPortMapper(discoveryPort: discoveryPort)
|
||||
)
|
||||
|
||||
@ -4,7 +4,7 @@ import pkg/libp2p/wire
|
||||
|
||||
import ./helpers
|
||||
import ../asynctest
|
||||
import ../../storage/rng
|
||||
import ../../storage/rng as storage_rng
|
||||
import ../../storage/nat
|
||||
import ./natsimulation
|
||||
|
||||
@ -22,22 +22,22 @@ proc cannotConnect(a, b: Switch): Future[bool] {.async.} =
|
||||
return false
|
||||
return not a.isConnected(b.peerInfo.peerId)
|
||||
|
||||
proc newSwitch(rng: Rng): Switch =
|
||||
proc newSwitch(rng: storage_rng.Rng): Switch =
|
||||
SwitchBuilder
|
||||
.new()
|
||||
.withRng(rng)
|
||||
.withPrivateKey(PrivateKey.random(rng).get())
|
||||
.withRng(rng.libp2pRng)
|
||||
.withPrivateKey(PrivateKey.random(rng.libp2pRng).get())
|
||||
.withAddresses(@[MultiAddress.init(listenAddr).get()])
|
||||
.withTcpTransport(flags)
|
||||
.withNoise()
|
||||
.withYamux()
|
||||
.build()
|
||||
|
||||
proc newNatSwitch(router: NatRouter, rng: Rng): Switch =
|
||||
proc newNatSwitch(router: NatRouter, rng: storage_rng.Rng): Switch =
|
||||
SwitchBuilder
|
||||
.new()
|
||||
.withRng(rng)
|
||||
.withPrivateKey(PrivateKey.random(rng).get())
|
||||
.withRng(rng.libp2pRng)
|
||||
.withPrivateKey(PrivateKey.random(rng.libp2pRng).get())
|
||||
.withAddresses(@[MultiAddress.init(listenAddr).get()])
|
||||
.withNatTransport(router, flags)
|
||||
.withNoise()
|
||||
@ -49,8 +49,8 @@ asyncchecksuite "Nat transport - Endpoint-Independent Filtering":
|
||||
|
||||
setup:
|
||||
let router = NatRouter.new(EndpointIndependent)
|
||||
bootstrap = newSwitch(Rng.instance())
|
||||
natNode = newNatSwitch(router, Rng.instance())
|
||||
bootstrap = newSwitch(storage_rng.Rng.instance())
|
||||
natNode = newNatSwitch(router, storage_rng.Rng.instance())
|
||||
await bootstrap.start()
|
||||
await natNode.start()
|
||||
|
||||
@ -67,9 +67,9 @@ asyncchecksuite "Nat transport - Address-Dependent Filtering":
|
||||
|
||||
setup:
|
||||
let router = NatRouter.new(AddressDependent)
|
||||
bootstrap = newSwitch(Rng.instance())
|
||||
thirdNode = newSwitch(Rng.instance())
|
||||
natNode = newNatSwitch(router, Rng.instance())
|
||||
bootstrap = newSwitch(storage_rng.Rng.instance())
|
||||
thirdNode = newSwitch(storage_rng.Rng.instance())
|
||||
natNode = newNatSwitch(router, storage_rng.Rng.instance())
|
||||
await bootstrap.start()
|
||||
await thirdNode.start()
|
||||
await natNode.start()
|
||||
@ -99,9 +99,9 @@ asyncchecksuite "Nat transport - Address-and-Port-Dependent Filtering":
|
||||
|
||||
setup:
|
||||
let router = NatRouter.new(AddressAndPortDependent)
|
||||
bootstrap = newSwitch(Rng.instance())
|
||||
thirdNode = newSwitch(Rng.instance())
|
||||
natNode = newNatSwitch(router, Rng.instance())
|
||||
bootstrap = newSwitch(storage_rng.Rng.instance())
|
||||
thirdNode = newSwitch(storage_rng.Rng.instance())
|
||||
natNode = newNatSwitch(router, storage_rng.Rng.instance())
|
||||
await bootstrap.start()
|
||||
await thirdNode.start()
|
||||
await natNode.start()
|
||||
@ -131,8 +131,8 @@ asyncchecksuite "Nat transport - Double NAT":
|
||||
|
||||
setup:
|
||||
router = NatRouter.new(DoubleNat)
|
||||
bootstrap = newSwitch(Rng.instance())
|
||||
natNode = newNatSwitch(router, Rng.instance())
|
||||
bootstrap = newSwitch(storage_rng.Rng.instance())
|
||||
natNode = newNatSwitch(router, storage_rng.Rng.instance())
|
||||
await bootstrap.start()
|
||||
await natNode.start()
|
||||
|
||||
@ -154,8 +154,8 @@ asyncchecksuite "Nat transport - Port Mapping":
|
||||
|
||||
setup:
|
||||
router = NatRouter.new(AddressAndPortDependent)
|
||||
bootstrap = newSwitch(Rng.instance())
|
||||
natNode = newNatSwitch(router, Rng.instance())
|
||||
bootstrap = newSwitch(storage_rng.Rng.instance())
|
||||
natNode = newNatSwitch(router, storage_rng.Rng.instance())
|
||||
await bootstrap.start()
|
||||
await natNode.start()
|
||||
|
||||
|
||||
2
vendor/nim-libp2p
vendored
2
vendor/nim-libp2p
vendored
@ -1 +1 @@
|
||||
Subproject commit 2be4e5edb39c113be7c293d53ec17c6cadbb9640
|
||||
Subproject commit 1bd3b986c82ab37a509fc84ca0ad7ea67a705a1b
|
||||
Loading…
x
Reference in New Issue
Block a user