Skip to content

Commit 424ca51

Browse files
committed
gossipsub-interop: test topic table extension
1 parent 51d596e commit 424ca51

File tree

7 files changed

+17
-9
lines changed

7 files changed

+17
-9
lines changed

gossipsub-interop/experiment.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class ExperimentParams:
2020

2121

2222
def spread_heartbeat_delay(
23-
node_count: int, template_gs_params: GossipSubParams
23+
node_count: int, topics: List[str], template_gs_params: GossipSubParams
2424
) -> List[ScriptInstruction]:
2525
instructions = []
2626
initial_delay = timedelta(seconds=0.1)
@@ -32,7 +32,8 @@ def spread_heartbeat_delay(
3232
instructions.append(
3333
script_instruction.IfNodeIDEquals(
3434
nodeID=i,
35-
instruction=script_instruction.InitGossipSub(gossipSubParams=gs_params),
35+
# group all the topics in a single bundle
36+
instruction=script_instruction.InitGossipSub(topicBundles=[topics], gossipSubParams=gs_params),
3637
)
3738
)
3839
return instructions
@@ -48,9 +49,10 @@ def scenario(
4849
if disable_gossip:
4950
gs_params.Dlazy = 0
5051
gs_params.GossipFactor = 0
51-
instructions.extend(spread_heartbeat_delay(node_count, gs_params))
5252

5353
topic = "a-subnet"
54+
instructions.extend(spread_heartbeat_delay(node_count, [topic], gs_params))
55+
5456
blob_count = 48
5557
# According to data gathered by lighthouse, a column takes around
5658
# 5ms.
@@ -78,9 +80,9 @@ def scenario(
7880
if disable_gossip:
7981
gs_params.Dlazy = 0
8082
gs_params.GossipFactor = 0
81-
instructions.extend(spread_heartbeat_delay(node_count, gs_params))
8283
topic_a = "topic-a"
8384
topic_b = "topic-b"
85+
instructions.extend(spread_heartbeat_delay(node_count, [topic_a, topic_b], gs_params))
8486
number_of_conns_per_node = 20
8587
if number_of_conns_per_node >= node_count:
8688
number_of_conns_per_node = node_count - 1

gossipsub-interop/go-libp2p/experiment.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func (n *scriptedNode) runInstruction(ctx context.Context, instruction ScriptIns
6161
// Process each script instruction
6262
switch a := instruction.(type) {
6363
case InitGossipSubInstruction:
64-
psOpts := pubsubOptions(n.slogger, a.GossipSubParams)
64+
psOpts := pubsubOptions(n.slogger, a.TopicBundles, a.GossipSubParams)
6565
ps, err := pubsub.NewGossipSub(ctx, n.h, psOpts...)
6666
if err != nil {
6767
return err

gossipsub-interop/go-libp2p/go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,3 +109,5 @@ require (
109109
google.golang.org/protobuf v1.36.5 // indirect
110110
lukechampine.com/blake3 v1.4.0 // indirect
111111
)
112+
113+
replace github.com/libp2p/go-libp2p-pubsub => github.com/ppopth/go-libp2p-pubsub v0.15.1-0.20251104105446-b797c629a411

gossipsub-interop/go-libp2p/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,6 @@ github.com/libp2p/go-libp2p v0.41.1 h1:8ecNQVT5ev/jqALTvisSJeVNvXYJyK4NhQx1nNRXQ
137137
github.com/libp2p/go-libp2p v0.41.1/go.mod h1:DcGTovJzQl/I7HMrby5ZRjeD0kQkGiy+9w6aEkSZpRI=
138138
github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94=
139139
github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8=
140-
github.com/libp2p/go-libp2p-pubsub v0.13.1 h1:tV3ttzzZSCk0EtEXnxVmWIXgjVxXx+20Jwjbs/Ctzjo=
141-
github.com/libp2p/go-libp2p-pubsub v0.13.1/go.mod h1:MKPU5vMI8RRFyTP0HfdsF9cLmL1nHAeJm44AxJGJx44=
142140
github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA=
143141
github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg=
144142
github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0=
@@ -258,6 +256,8 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
258256
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
259257
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
260258
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
259+
github.com/ppopth/go-libp2p-pubsub v0.15.1-0.20251104105446-b797c629a411 h1:DqtAOcQRMnIhZ0a95DCuJWsoTT+ptnpVfHcfyHeUaUw=
260+
github.com/ppopth/go-libp2p-pubsub v0.15.1-0.20251104105446-b797c629a411/go.mod h1:lr4oE8bFgQaifRcoc2uWhWWiK6tPdOEKpUuR408GFN4=
261261
github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
262262
github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk=
263263
github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg=

gossipsub-interop/go-libp2p/instruction.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ func (SetTopicValidationDelayInstruction) isInstruction() {}
7373
// InitGossipSubInstruction represents an instruction to initialize GossipSub with specific parameters
7474
type InitGossipSubInstruction struct {
7575
Type string `json:"type"`
76+
TopicBundles [][]string `json:"topicBundles"`
7677
GossipSubParams pubsub.GossipSubParams `json:"gossipSubParams"`
7778
}
7879

gossipsub-interop/go-libp2p/main.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ var (
2727
)
2828

2929
// pubsubOptions creates a list of options to configure our router with.
30-
func pubsubOptions(slogger *slog.Logger, params pubsub.GossipSubParams) []pubsub.Option {
30+
func pubsubOptions(slogger *slog.Logger, topicBundles [][]string, params pubsub.GossipSubParams) []pubsub.Option {
3131
tr := gossipTracer{logger: slogger.With("service", "gossipsub")}
3232
psOpts := []pubsub.Option{
3333
pubsub.WithMessageSignaturePolicy(pubsub.StrictNoSign),
@@ -42,7 +42,9 @@ func pubsubOptions(slogger *slog.Logger, params pubsub.GossipSubParams) []pubsub
4242
pubsub.WithGossipSubParams(params),
4343
pubsub.WithEventTracer(&tr),
4444
}
45-
45+
if len(topicBundles) > 0 {
46+
psOpts = append(psOpts, pubsub.WithTopicTableExtension(pubsub.TopicTableExtensionConfig{TopicBundles: topicBundles}))
47+
}
4648
return psOpts
4749
}
4850

gossipsub-interop/script_instruction.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class InitGossipSub(BaseModel):
6464
"""
6565

6666
type: Literal["initGossipSub"] = "initGossipSub"
67+
topicBundles: List[List[str]]
6768
gossipSubParams: GossipSubParams
6869

6970

0 commit comments

Comments
 (0)