Merge branch 'master' into dev/etan/ma-nameresolving
This commit is contained in:
commit
c4b3a0e342
|
@ -6,7 +6,7 @@ inputs:
|
||||||
cpu:
|
cpu:
|
||||||
description: "CPU to build for"
|
description: "CPU to build for"
|
||||||
default: "amd64"
|
default: "amd64"
|
||||||
nim_branch:
|
nim_ref:
|
||||||
description: "Nim version"
|
description: "Nim version"
|
||||||
default: "version-1-6"
|
default: "version-1-6"
|
||||||
shell:
|
shell:
|
||||||
|
@ -117,7 +117,7 @@ runs:
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: '${{ github.workspace }}/nim'
|
path: '${{ github.workspace }}/nim'
|
||||||
key: ${{ inputs.os }}-${{ inputs.cpu }}-nim-${{ inputs.nim_branch }}-cache-${{ env.cache_nonce }}
|
key: ${{ inputs.os }}-${{ inputs.cpu }}-nim-${{ inputs.nim_ref }}-cache-${{ env.cache_nonce }}
|
||||||
|
|
||||||
- name: Build Nim and Nimble
|
- name: Build Nim and Nimble
|
||||||
shell: ${{ inputs.shell }}
|
shell: ${{ inputs.shell }}
|
||||||
|
@ -126,6 +126,6 @@ runs:
|
||||||
# We don't want partial matches of the cache restored
|
# We don't want partial matches of the cache restored
|
||||||
rm -rf nim
|
rm -rf nim
|
||||||
curl -O -L -s -S https://raw.githubusercontent.com/status-im/nimbus-build-system/master/scripts/build_nim.sh
|
curl -O -L -s -S https://raw.githubusercontent.com/status-im/nimbus-build-system/master/scripts/build_nim.sh
|
||||||
env MAKE="${MAKE_CMD} -j${ncpu}" ARCH_OVERRIDE=${PLATFORM} NIM_COMMIT=${{ inputs.nim_branch }} \
|
env MAKE="${MAKE_CMD} -j${ncpu}" ARCH_OVERRIDE=${PLATFORM} NIM_COMMIT=${{ inputs.nim_ref }} \
|
||||||
QUICK_AND_DIRTY_COMPILER=1 QUICK_AND_DIRTY_NIMBLE=1 CC=gcc \
|
QUICK_AND_DIRTY_COMPILER=1 QUICK_AND_DIRTY_NIMBLE=1 CC=gcc \
|
||||||
bash build_nim.sh nim csources dist/nimble NimBinaries
|
bash build_nim.sh nim csources dist/nimble NimBinaries
|
||||||
|
|
|
@ -30,9 +30,12 @@ jobs:
|
||||||
- os: windows
|
- os: windows
|
||||||
cpu: amd64
|
cpu: amd64
|
||||||
nim:
|
nim:
|
||||||
- branch: version-1-6
|
- ref: version-1-6
|
||||||
memory_management: refc
|
memory_management: refc
|
||||||
- branch: version-2-0
|
# The ref below corresponds to the branch "version-2-0".
|
||||||
|
# Right before an update from Nimble 0.16.1 to 0.16.2.
|
||||||
|
# That update breaks our dependency resolution.
|
||||||
|
- ref: 8754469f4947844c5938f56e1fba846c349354b5
|
||||||
memory_management: refc
|
memory_management: refc
|
||||||
include:
|
include:
|
||||||
- platform:
|
- platform:
|
||||||
|
@ -56,7 +59,7 @@ jobs:
|
||||||
run:
|
run:
|
||||||
shell: ${{ matrix.shell }}
|
shell: ${{ matrix.shell }}
|
||||||
|
|
||||||
name: '${{ matrix.platform.os }}-${{ matrix.platform.cpu }} (Nim ${{ matrix.nim.branch }})'
|
name: '${{ matrix.platform.os }}-${{ matrix.platform.cpu }} (Nim ${{ matrix.nim.ref }})'
|
||||||
runs-on: ${{ matrix.builder }}
|
runs-on: ${{ matrix.builder }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
|
@ -70,7 +73,7 @@ jobs:
|
||||||
os: ${{ matrix.platform.os }}
|
os: ${{ matrix.platform.os }}
|
||||||
cpu: ${{ matrix.platform.cpu }}
|
cpu: ${{ matrix.platform.cpu }}
|
||||||
shell: ${{ matrix.shell }}
|
shell: ${{ matrix.shell }}
|
||||||
nim_branch: ${{ matrix.nim.branch }}
|
nim_ref: ${{ matrix.nim.ref }}
|
||||||
|
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
uses: actions/setup-go@v5
|
uses: actions/setup-go@v5
|
||||||
|
@ -86,9 +89,9 @@ jobs:
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: nimbledeps
|
path: nimbledeps
|
||||||
# Using nim.branch as a simple way to differentiate between nimble using the "pkgs" or "pkgs2" directories.
|
# Using nim.ref as a simple way to differentiate between nimble using the "pkgs" or "pkgs2" directories.
|
||||||
# The change happened on Nimble v0.14.0.
|
# The change happened on Nimble v0.14.0.
|
||||||
key: nimbledeps-${{ matrix.nim.branch }}-${{ hashFiles('.pinned') }} # hashFiles returns a different value on windows
|
key: nimbledeps-${{ matrix.nim.ref }}-${{ hashFiles('.pinned') }} # hashFiles returns a different value on windows
|
||||||
|
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
if: ${{ steps.deps-cache.outputs.cache-hit != 'true' }}
|
if: ${{ steps.deps-cache.outputs.cache-hit != 'true' }}
|
||||||
|
@ -109,5 +112,6 @@ jobs:
|
||||||
nim --version
|
nim --version
|
||||||
nimble --version
|
nimble --version
|
||||||
gcc --version
|
gcc --version
|
||||||
|
|
||||||
NIMFLAGS="${NIMFLAGS} --mm:${{ matrix.nim.memory_management }}"
|
NIMFLAGS="${NIMFLAGS} --mm:${{ matrix.nim.memory_management }}"
|
||||||
nimble test
|
nimble test
|
||||||
|
|
|
@ -10,5 +10,5 @@ jobs:
|
||||||
name: Daily amd64
|
name: Daily amd64
|
||||||
uses: ./.github/workflows/daily_common.yml
|
uses: ./.github/workflows/daily_common.yml
|
||||||
with:
|
with:
|
||||||
nim: "[{'branch': 'version-1-6', 'memory_management': 'refc'}, {'branch': 'version-2-0', 'memory_management': 'refc'}]"
|
nim: "[{'ref': 'version-1-6', 'memory_management': 'refc'}, {'ref': '8754469f4947844c5938f56e1fba846c349354b5', 'memory_management': 'refc'}]"
|
||||||
cpu: "['amd64']"
|
cpu: "['amd64']"
|
||||||
|
|
|
@ -7,7 +7,7 @@ on:
|
||||||
nim:
|
nim:
|
||||||
description: 'Nim Configuration'
|
description: 'Nim Configuration'
|
||||||
required: true
|
required: true
|
||||||
type: string # Following this format: [{"branch": ..., "memory_management": ...}, ...]
|
type: string # Following this format: [{"ref": ..., "memory_management": ...}, ...]
|
||||||
cpu:
|
cpu:
|
||||||
description: 'CPU'
|
description: 'CPU'
|
||||||
required: true
|
required: true
|
||||||
|
@ -58,7 +58,7 @@ jobs:
|
||||||
run:
|
run:
|
||||||
shell: ${{ matrix.platform.shell }}
|
shell: ${{ matrix.platform.shell }}
|
||||||
|
|
||||||
name: '${{ matrix.platform.os }}-${{ matrix.cpu }} (Nim ${{ matrix.nim.branch }})'
|
name: '${{ matrix.platform.os }}-${{ matrix.cpu }} (Nim ${{ matrix.nim.ref }})'
|
||||||
runs-on: ${{ matrix.platform.builder }}
|
runs-on: ${{ matrix.platform.builder }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
|
@ -69,7 +69,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
os: ${{ matrix.platform.os }}
|
os: ${{ matrix.platform.os }}
|
||||||
shell: ${{ matrix.platform.shell }}
|
shell: ${{ matrix.platform.shell }}
|
||||||
nim_branch: ${{ matrix.nim.branch }}
|
nim_ref: ${{ matrix.nim.ref }}
|
||||||
cpu: ${{ matrix.cpu }}
|
cpu: ${{ matrix.cpu }}
|
||||||
|
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
|
|
|
@ -10,5 +10,5 @@ jobs:
|
||||||
name: Daily Nim Devel
|
name: Daily Nim Devel
|
||||||
uses: ./.github/workflows/daily_common.yml
|
uses: ./.github/workflows/daily_common.yml
|
||||||
with:
|
with:
|
||||||
nim: "[{'branch': 'devel', 'memory_management': 'orc'}]"
|
nim: "[{'ref': 'devel', 'memory_management': 'orc'}]"
|
||||||
cpu: "['amd64']"
|
cpu: "['amd64']"
|
||||||
|
|
|
@ -10,6 +10,6 @@ jobs:
|
||||||
name: Daily i386 (Linux)
|
name: Daily i386 (Linux)
|
||||||
uses: ./.github/workflows/daily_common.yml
|
uses: ./.github/workflows/daily_common.yml
|
||||||
with:
|
with:
|
||||||
nim: "[{'branch': 'version-1-6', 'memory_management': 'refc'}, {'branch': 'version-2-0', 'memory_management': 'refc'}, {'branch': 'devel', 'memory_management': 'orc'}]"
|
nim: "[{'ref': 'version-1-6', 'memory_management': 'refc'}, {'ref': '8754469f4947844c5938f56e1fba846c349354b5', 'memory_management': 'refc'}, {'ref': 'devel', 'memory_management': 'orc'}]"
|
||||||
cpu: "['i386']"
|
cpu: "['i386']"
|
||||||
exclude: "[{'platform': {'os':'macos'}}, {'platform': {'os':'windows'}}]"
|
exclude: "[{'platform': {'os':'macos'}}, {'platform': {'os':'windows'}}]"
|
||||||
|
|
|
@ -10,6 +10,6 @@ jobs:
|
||||||
name: Daily SAT
|
name: Daily SAT
|
||||||
uses: ./.github/workflows/daily_common.yml
|
uses: ./.github/workflows/daily_common.yml
|
||||||
with:
|
with:
|
||||||
nim: "[{'branch': 'version-2-0', 'memory_management': 'refc'}]"
|
nim: "[{'ref': '8754469f4947844c5938f56e1fba846c349354b5', 'memory_management': 'refc'}]"
|
||||||
cpu: "['amd64']"
|
cpu: "['amd64']"
|
||||||
use_sat_solver: true
|
use_sat_solver: true
|
||||||
|
|
|
@ -677,55 +677,76 @@ suite "GossipSub internal":
|
||||||
gossipSub.mesh[topic] = initHashSet[PubSubPeer]()
|
gossipSub.mesh[topic] = initHashSet[PubSubPeer]()
|
||||||
gossipSub.subscribe(topic, handler2)
|
gossipSub.subscribe(topic, handler2)
|
||||||
|
|
||||||
|
# Instantiates 30 peers and connects all of them to the previously defined `gossipSub`
|
||||||
for i in 0 ..< 30:
|
for i in 0 ..< 30:
|
||||||
|
# Define a new connection
|
||||||
let conn = TestBufferStream.new(noop)
|
let conn = TestBufferStream.new(noop)
|
||||||
conns &= conn
|
conns &= conn
|
||||||
let peerId = randomPeerId()
|
let peerId = randomPeerId()
|
||||||
conn.peerId = peerId
|
conn.peerId = peerId
|
||||||
let peer = gossipSub.getPubSubPeer(peerId)
|
let peer = gossipSub.getPubSubPeer(peerId)
|
||||||
peer.handler = handler
|
peer.handler = handler
|
||||||
|
# Add the connection to `gossipSub`, to their `gossipSub.gossipsub` and `gossipSub.mesh` tables
|
||||||
gossipSub.grafted(peer, topic)
|
gossipSub.grafted(peer, topic)
|
||||||
gossipSub.mesh[topic].incl(peer)
|
gossipSub.mesh[topic].incl(peer)
|
||||||
|
|
||||||
|
# Peers with no budget should not request messages
|
||||||
block:
|
block:
|
||||||
# should ignore no budget peer
|
# Define a new connection
|
||||||
let conn = TestBufferStream.new(noop)
|
|
||||||
conns &= conn
|
|
||||||
let peerId = randomPeerId()
|
|
||||||
conn.peerId = peerId
|
|
||||||
let peer = gossipSub.getPubSubPeer(peerId)
|
|
||||||
let id = @[0'u8, 1, 2, 3]
|
|
||||||
let msg = ControlIHave(topicID: topic, messageIDs: @[id, id, id])
|
|
||||||
peer.iHaveBudget = 0
|
|
||||||
let iwants = gossipSub.handleIHave(peer, @[msg])
|
|
||||||
check:
|
|
||||||
iwants.messageIDs.len == 0
|
|
||||||
|
|
||||||
block:
|
|
||||||
# given duplicate ihave should generate only one iwant
|
|
||||||
let conn = TestBufferStream.new(noop)
|
|
||||||
conns &= conn
|
|
||||||
let peerId = randomPeerId()
|
|
||||||
conn.peerId = peerId
|
|
||||||
let peer = gossipSub.getPubSubPeer(peerId)
|
|
||||||
let id = @[0'u8, 1, 2, 3]
|
|
||||||
let msg = ControlIHave(topicID: topic, messageIDs: @[id, id, id])
|
|
||||||
let iwants = gossipSub.handleIHave(peer, @[msg])
|
|
||||||
check:
|
|
||||||
iwants.messageIDs.len == 1
|
|
||||||
|
|
||||||
block:
|
|
||||||
# given duplicate iwant should generate only one message
|
|
||||||
let conn = TestBufferStream.new(noop)
|
let conn = TestBufferStream.new(noop)
|
||||||
conns &= conn
|
conns &= conn
|
||||||
let peerId = randomPeerId()
|
let peerId = randomPeerId()
|
||||||
conn.peerId = peerId
|
conn.peerId = peerId
|
||||||
let peer = gossipSub.getPubSubPeer(peerId)
|
let peer = gossipSub.getPubSubPeer(peerId)
|
||||||
|
# Add message to `gossipSub`'s message cache
|
||||||
let id = @[0'u8, 1, 2, 3]
|
let id = @[0'u8, 1, 2, 3]
|
||||||
gossipSub.mcache.put(id, Message())
|
gossipSub.mcache.put(id, Message())
|
||||||
peer.sentIHaves[^1].incl(id)
|
peer.sentIHaves[^1].incl(id)
|
||||||
|
# Build an IHAVE message that contains the same message ID three times
|
||||||
|
let msg = ControlIHave(topicID: topic, messageIDs: @[id, id, id])
|
||||||
|
# Given the peer has no budget to request messages
|
||||||
|
peer.iHaveBudget = 0
|
||||||
|
# When a peer makes an IHAVE request for the a message that `gossipSub` has
|
||||||
|
let iwants = gossipSub.handleIHave(peer, @[msg])
|
||||||
|
# Then `gossipSub` should not generate an IWant message for the message,
|
||||||
|
check:
|
||||||
|
iwants.messageIDs.len == 0
|
||||||
|
|
||||||
|
# Peers with budget should request messages. If ids are repeated, only one request should be generated
|
||||||
|
block:
|
||||||
|
# Define a new connection
|
||||||
|
let conn = TestBufferStream.new(noop)
|
||||||
|
conns &= conn
|
||||||
|
let peerId = randomPeerId()
|
||||||
|
conn.peerId = peerId
|
||||||
|
let peer = gossipSub.getPubSubPeer(peerId)
|
||||||
|
let id = @[0'u8, 1, 2, 3]
|
||||||
|
# Build an IHAVE message that contains the same message ID three times
|
||||||
|
let msg = ControlIHave(topicID: topic, messageIDs: @[id, id, id])
|
||||||
|
# Given the budget is not 0 (because it's not been overridden)
|
||||||
|
# When a peer makes an IHAVE request for the a message that `gossipSub` does not have
|
||||||
|
let iwants = gossipSub.handleIHave(peer, @[msg])
|
||||||
|
# Then `gossipSub` should generate an IWant message for the message
|
||||||
|
check:
|
||||||
|
iwants.messageIDs.len == 1
|
||||||
|
|
||||||
|
# Peers with budget should request messages. If ids are repeated, only one request should be generated
|
||||||
|
block:
|
||||||
|
# Define a new connection
|
||||||
|
let conn = TestBufferStream.new(noop)
|
||||||
|
conns &= conn
|
||||||
|
let peerId = randomPeerId()
|
||||||
|
conn.peerId = peerId
|
||||||
|
let peer = gossipSub.getPubSubPeer(peerId)
|
||||||
|
# Add message to `gossipSub`'s message cache
|
||||||
|
let id = @[0'u8, 1, 2, 3]
|
||||||
|
gossipSub.mcache.put(id, Message())
|
||||||
|
peer.sentIHaves[^1].incl(id)
|
||||||
|
# Build an IWANT message that contains the same message ID three times
|
||||||
let msg = ControlIWant(messageIDs: @[id, id, id])
|
let msg = ControlIWant(messageIDs: @[id, id, id])
|
||||||
|
# When a peer makes an IWANT request for the a message that `gossipSub` has
|
||||||
let genmsg = gossipSub.handleIWant(peer, @[msg])
|
let genmsg = gossipSub.handleIWant(peer, @[msg])
|
||||||
|
# Then `gossipSub` should return the message
|
||||||
check:
|
check:
|
||||||
genmsg.len == 1
|
genmsg.len == 1
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue