Merge branch 'master' into dev/etan/ma-nameresolving

This commit is contained in:
kaiserd 2024-11-03 19:16:43 +01:00 committed by GitHub
commit c4b3a0e342
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 70 additions and 45 deletions

View File

@ -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

View File

@ -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

View File

@ -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']"

View File

@ -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

View File

@ -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']"

View File

@ -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'}}]"

View File

@ -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

View File

@ -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