From 0e0ff4628f467445ff34d4a5d63abc2a7483d35a Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 19 Mar 2024 18:12:47 +0800 Subject: [PATCH 01/97] test: node with static sharding and multiple pubSubTopics --- waku/v2/node/wakunode2_test.go | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index ba22108fc..dade7af68 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -318,3 +318,38 @@ func TestDecoupledStoreFromRelay(t *testing.T) { require.Len(t, result.Messages, 1) require.Equal(t, msg.Timestamp, result.Messages[0].Timestamp) } + +func TestStaticShardingMultiplePubSubTopics(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // NODE1: Relay Node + Filter Server + hostAddr1, err := net.ResolveTCPAddr("tcp", "0.0.0.0:0") + require.NoError(t, err) + wakuNode1, err := New( + WithHostAddress(hostAddr1), + WithWakuRelay(), + WithWakuFilterFullNode(), + ) + require.NoError(t, err) + err = wakuNode1.Start(ctx) + require.NoError(t, err) + defer wakuNode1.Stop() + + pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(0)) + pubSubTopic1Str := pubSubTopic1.String() + + pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(10)) + pubSubTopic2Str := pubSubTopic2.String() + + subs1, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str)) + require.NoError(t, err) + + subs2, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic2Str)) + require.NoError(t, err) + + require.NotEqual(t, subs1[0].ID, subs2[0].ID) + defer subs1[0].Unsubscribe() + defer subs2[0].Unsubscribe() + +} From abec5b018d1bb353522dacb83b22cc5d9d3c4f6f Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 20 Mar 2024 15:00:01 +0800 Subject: [PATCH 02/97] test: remove Unsubscribe() calls --- waku/v2/node/wakunode2_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index dade7af68..77f781089 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -349,7 +349,7 @@ func TestStaticShardingMultiplePubSubTopics(t *testing.T) { require.NoError(t, err) require.NotEqual(t, subs1[0].ID, subs2[0].ID) - defer subs1[0].Unsubscribe() - defer subs2[0].Unsubscribe() + //defer subs1[0].Unsubscribe() + //defer subs2[0].Unsubscribe() } From a8689eb7d10289436dc0e9efd7f10d7128ffa5e8 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 20 Mar 2024 17:45:34 +0800 Subject: [PATCH 03/97] fix: add content topics to TestStaticShardingMultipleTopics --- waku/v2/node/wakunode2_test.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 77f781089..2d20f6912 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -319,17 +319,16 @@ func TestDecoupledStoreFromRelay(t *testing.T) { require.Equal(t, msg.Timestamp, result.Messages[0].Timestamp) } -func TestStaticShardingMultiplePubSubTopics(t *testing.T) { +func TestStaticShardingMultipleTopics(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() - // NODE1: Relay Node + Filter Server + // Node1 with Relay hostAddr1, err := net.ResolveTCPAddr("tcp", "0.0.0.0:0") require.NoError(t, err) wakuNode1, err := New( WithHostAddress(hostAddr1), WithWakuRelay(), - WithWakuFilterFullNode(), ) require.NoError(t, err) err = wakuNode1.Start(ctx) @@ -338,18 +337,25 @@ func TestStaticShardingMultiplePubSubTopics(t *testing.T) { pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(0)) pubSubTopic1Str := pubSubTopic1.String() + contentTopic1 := "/test/2/my-app" pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(10)) pubSubTopic2Str := pubSubTopic2.String() + contentTopic2 := "/test/3/my-app" - subs1, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str)) + subs1, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str, contentTopic1)) require.NoError(t, err) - subs2, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic2Str)) + subs2, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic2Str, contentTopic2)) require.NoError(t, err) require.NotEqual(t, subs1[0].ID, subs2[0].ID) - //defer subs1[0].Unsubscribe() - //defer subs2[0].Unsubscribe() + + s1, err := wakuNode1.Relay().GetSubscriptionWithPubsubTopic(pubSubTopic1Str, contentTopic1) + require.NoError(t, err) + s2, err := wakuNode1.Relay().GetSubscriptionWithPubsubTopic(pubSubTopic2Str, contentTopic2) + require.NoError(t, err) + require.Equal(t, s1.ID, subs1[0].ID) + require.Equal(t, s2.ID, subs2[0].ID) } From a3ec28236844d6fec58918a4ccd61a4d44102365 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 20 Mar 2024 17:58:32 +0800 Subject: [PATCH 04/97] fix: add IsSubscribed() test --- waku/v2/node/wakunode2_test.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 2d20f6912..bf738aa86 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -343,17 +343,22 @@ func TestStaticShardingMultipleTopics(t *testing.T) { pubSubTopic2Str := pubSubTopic2.String() contentTopic2 := "/test/3/my-app" - subs1, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str, contentTopic1)) + r := wakuNode1.Relay() + + subs1, err := r.Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str, contentTopic1)) require.NoError(t, err) - subs2, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic2Str, contentTopic2)) + subs2, err := r.Subscribe(ctx, protocol.NewContentFilter(pubSubTopic2Str, contentTopic2)) require.NoError(t, err) require.NotEqual(t, subs1[0].ID, subs2[0].ID) - s1, err := wakuNode1.Relay().GetSubscriptionWithPubsubTopic(pubSubTopic1Str, contentTopic1) + require.True(t, r.IsSubscribed(pubSubTopic1Str)) + require.True(t, r.IsSubscribed(pubSubTopic2Str)) + + s1, err := r.GetSubscriptionWithPubsubTopic(pubSubTopic1Str, contentTopic1) require.NoError(t, err) - s2, err := wakuNode1.Relay().GetSubscriptionWithPubsubTopic(pubSubTopic2Str, contentTopic2) + s2, err := r.GetSubscriptionWithPubsubTopic(pubSubTopic2Str, contentTopic2) require.NoError(t, err) require.Equal(t, s1.ID, subs1[0].ID) require.Equal(t, s2.ID, subs2[0].ID) From 3fe24f6818e6fc0be6609859c5cc8083369720d2 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 21 Mar 2024 18:36:45 +0800 Subject: [PATCH 05/97] fix: switch to use GetSubscription instead of GetSubscriptionWithPubsubTopic --- waku/v2/node/wakunode2_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index bf738aa86..2a06b1d7d 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -337,11 +337,11 @@ func TestStaticShardingMultipleTopics(t *testing.T) { pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(0)) pubSubTopic1Str := pubSubTopic1.String() - contentTopic1 := "/test/2/my-app" + contentTopic1 := "/test/2/my-app/sharded" pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(10)) pubSubTopic2Str := pubSubTopic2.String() - contentTopic2 := "/test/3/my-app" + contentTopic2 := "/test/3/my-app/sharded" r := wakuNode1.Relay() @@ -356,9 +356,9 @@ func TestStaticShardingMultipleTopics(t *testing.T) { require.True(t, r.IsSubscribed(pubSubTopic1Str)) require.True(t, r.IsSubscribed(pubSubTopic2Str)) - s1, err := r.GetSubscriptionWithPubsubTopic(pubSubTopic1Str, contentTopic1) + s1, err := r.GetSubscription(contentTopic1) require.NoError(t, err) - s2, err := r.GetSubscriptionWithPubsubTopic(pubSubTopic2Str, contentTopic2) + s2, err := r.GetSubscription(contentTopic2) require.NoError(t, err) require.Equal(t, s1.ID, subs1[0].ID) require.Equal(t, s2.ID, subs2[0].ID) From 77f1f5962d2394ec6ec79a819c00e74e6602df6d Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 21 Mar 2024 22:11:32 +0800 Subject: [PATCH 06/97] fix: switch back to use GetSubscriptionWithPubsubTopic --- waku/v2/node/wakunode2_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 0db427fe1..d0b4c4270 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -356,9 +356,9 @@ func TestStaticShardingMultipleTopics(t *testing.T) { require.True(t, r.IsSubscribed(pubSubTopic1Str)) require.True(t, r.IsSubscribed(pubSubTopic2Str)) - s1, err := r.GetSubscription(contentTopic1) + s1, err := r.GetSubscriptionWithPubsubTopic(pubSubTopic1Str, contentTopic1) require.NoError(t, err) - s2, err := r.GetSubscription(contentTopic2) + s2, err := r.GetSubscriptionWithPubsubTopic(pubSubTopic2Str, contentTopic2) require.NoError(t, err) require.Equal(t, s1.ID, subs1[0].ID) require.Equal(t, s2.ID, subs2[0].ID) From 6495860ab949bc78e69f5d7fe95657df1894bc96 Mon Sep 17 00:00:00 2001 From: Roman Date: Sat, 23 Mar 2024 13:15:19 +0800 Subject: [PATCH 07/97] fix: validate with messages --- waku/v2/node/wakunode2_test.go | 63 ++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index d0b4c4270..105ae482f 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -343,6 +343,10 @@ func TestStaticShardingMultipleTopics(t *testing.T) { pubSubTopic2Str := pubSubTopic2.String() contentTopic2 := "/test/3/my-app/sharded" + log := utils.Logger() + + log.Info("pubsub1", zap.String("pb1", pubSubTopic1Str)) + r := wakuNode1.Relay() subs1, err := r.Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str, contentTopic1)) @@ -363,4 +367,63 @@ func TestStaticShardingMultipleTopics(t *testing.T) { require.Equal(t, s1.ID, subs1[0].ID) require.Equal(t, s2.ID, subs2[0].ID) + // Wait for subscriptions + time.Sleep(1 * time.Second) + + // Send message to subscribed topic + msg := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message") + + _, err = r.Publish(ctx, msg, relay.WithPubSubTopic(pubSubTopic1Str)) + require.NoError(t, err) + + time.Sleep(500 * time.Millisecond) + + var wg sync.WaitGroup + wg.Add(1) + // Message msg could be retrieved + go func() { + defer wg.Done() + env, ok := <-subs1[0].Ch + require.True(t, ok, "no message retrieved") + require.Equal(t, msg.Timestamp, env.Message().Timestamp) + }() + + wg.Wait() + + // Send another message to non-subscribed pubsub topic, but subscribed content topic + msg2 := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message 2") + + _, err = r.Publish(ctx, msg2, relay.WithPubSubTopic("/waku/2/rs/0/321")) + require.NoError(t, err) + + time.Sleep(500 * time.Millisecond) + + // No message could be retrieved + wg.Add(1) + go func() { + defer wg.Done() + _, ok := <-subs1[0].Ch + require.False(t, ok) + }() + + wg.Wait() + + // Send another message to subscribed pubsub topic, but not subscribed content topic - mix it up + msg3 := tests.CreateWakuMessage(contentTopic2, utils.GetUnixEpoch(), "test message 3") + + _, err = r.Publish(ctx, msg3, relay.WithPubSubTopic(pubSubTopic1Str)) + require.NoError(t, err) + + time.Sleep(500 * time.Millisecond) + + // No message could be retrieved + wg.Add(1) + go func() { + defer wg.Done() + _, ok := <-subs1[0].Ch + require.False(t, ok) + }() + + wg.Wait() + } From ff01699e2a95c5e7be853873d337867feee80baa Mon Sep 17 00:00:00 2001 From: Roman Date: Sat, 23 Mar 2024 13:25:08 +0800 Subject: [PATCH 08/97] fix: extend deadline for context --- waku/v2/node/wakunode2_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 105ae482f..a9ae9bdcb 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -320,7 +320,7 @@ func TestDecoupledStoreFromRelay(t *testing.T) { } func TestStaticShardingMultipleTopics(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) defer cancel() // Node1 with Relay From 95f3ff0a0808d4473f63522c9174fa91a2e676d0 Mon Sep 17 00:00:00 2001 From: Roman Date: Sat, 23 Mar 2024 13:42:52 +0800 Subject: [PATCH 09/97] fix: use select for timeout wait --- waku/v2/node/wakunode2_test.go | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index a9ae9bdcb..12613f89f 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -320,7 +320,7 @@ func TestDecoupledStoreFromRelay(t *testing.T) { } func TestStaticShardingMultipleTopics(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() // Node1 with Relay @@ -343,10 +343,6 @@ func TestStaticShardingMultipleTopics(t *testing.T) { pubSubTopic2Str := pubSubTopic2.String() contentTopic2 := "/test/3/my-app/sharded" - log := utils.Logger() - - log.Info("pubsub1", zap.String("pb1", pubSubTopic1Str)) - r := wakuNode1.Relay() subs1, err := r.Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str, contentTopic1)) @@ -376,7 +372,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { _, err = r.Publish(ctx, msg, relay.WithPubSubTopic(pubSubTopic1Str)) require.NoError(t, err) - time.Sleep(500 * time.Millisecond) + time.Sleep(100 * time.Millisecond) var wg sync.WaitGroup wg.Add(1) @@ -396,14 +392,20 @@ func TestStaticShardingMultipleTopics(t *testing.T) { _, err = r.Publish(ctx, msg2, relay.WithPubSubTopic("/waku/2/rs/0/321")) require.NoError(t, err) - time.Sleep(500 * time.Millisecond) + time.Sleep(100 * time.Millisecond) // No message could be retrieved wg.Add(1) go func() { defer wg.Done() - _, ok := <-subs1[0].Ch - require.False(t, ok) + select { + case _, ok := <-subs1[0].Ch: + require.False(t, ok, "should not retrieve message") + case <-time.After(1 * time.Second): + // All good + case <-ctx.Done(): + require.Fail(t, "test exceeded allocated time") + } }() wg.Wait() @@ -414,14 +416,20 @@ func TestStaticShardingMultipleTopics(t *testing.T) { _, err = r.Publish(ctx, msg3, relay.WithPubSubTopic(pubSubTopic1Str)) require.NoError(t, err) - time.Sleep(500 * time.Millisecond) + time.Sleep(100 * time.Millisecond) // No message could be retrieved wg.Add(1) go func() { defer wg.Done() - _, ok := <-subs1[0].Ch - require.False(t, ok) + select { + case _, ok := <-subs1[0].Ch: + require.False(t, ok, "should not retrieve message") + case <-time.After(1 * time.Second): + // All good + case <-ctx.Done(): + require.Fail(t, "test exceeded allocated time") + } }() wg.Wait() From d26f178c6cc4e9d92e0ff8bbfe65ea1862329516 Mon Sep 17 00:00:00 2001 From: Roman Date: Sat, 23 Mar 2024 13:54:14 +0800 Subject: [PATCH 10/97] fix: refactor repeated code into waitForTimeout --- waku/v2/node/wakunode2_test.go | 47 ++++++++++++++-------------------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 12613f89f..dd4a03726 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -37,6 +37,23 @@ func createTestMsg(version uint32) *pb.WakuMessage { return message } +func waitForTimeout(t *testing.T, ctx context.Context, wg *sync.WaitGroup, ch chan *protocol.Envelope) { + wg.Add(1) + go func() { + defer wg.Done() + select { + case _, ok := <-ch: + require.False(t, ok, "should not retrieve message") + case <-time.After(1 * time.Second): + // All good + case <-ctx.Done(): + require.Fail(t, "test exceeded allocated time") + } + }() + + wg.Wait() +} + func TestWakuNode2(t *testing.T) { hostAddr, _ := net.ResolveTCPAddr("tcp", "0.0.0.0:0") @@ -395,20 +412,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { time.Sleep(100 * time.Millisecond) // No message could be retrieved - wg.Add(1) - go func() { - defer wg.Done() - select { - case _, ok := <-subs1[0].Ch: - require.False(t, ok, "should not retrieve message") - case <-time.After(1 * time.Second): - // All good - case <-ctx.Done(): - require.Fail(t, "test exceeded allocated time") - } - }() - - wg.Wait() + waitForTimeout(t, ctx, &wg, subs1[0].Ch) // Send another message to subscribed pubsub topic, but not subscribed content topic - mix it up msg3 := tests.CreateWakuMessage(contentTopic2, utils.GetUnixEpoch(), "test message 3") @@ -419,19 +423,6 @@ func TestStaticShardingMultipleTopics(t *testing.T) { time.Sleep(100 * time.Millisecond) // No message could be retrieved - wg.Add(1) - go func() { - defer wg.Done() - select { - case _, ok := <-subs1[0].Ch: - require.False(t, ok, "should not retrieve message") - case <-time.After(1 * time.Second): - // All good - case <-ctx.Done(): - require.Fail(t, "test exceeded allocated time") - } - }() - - wg.Wait() + waitForTimeout(t, ctx, &wg, subs1[0].Ch) } From dc4ed27c86767cae7049b1a65da5420bcabec307 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 27 Mar 2024 18:13:20 +0800 Subject: [PATCH 11/97] test: Waku store with static sharding --- .../store/waku_store_protocol_test.go | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/waku/v2/protocol/store/waku_store_protocol_test.go b/waku/v2/protocol/store/waku_store_protocol_test.go index 10ada3dec..db4a17281 100644 --- a/waku/v2/protocol/store/waku_store_protocol_test.go +++ b/waku/v2/protocol/store/waku_store_protocol_test.go @@ -425,3 +425,86 @@ func TestWakuStoreStart(t *testing.T) { defer s2.Stop() } + +func TestWakuStoreWithStaticSharding(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + host1, err := libp2p.New(libp2p.DefaultTransports, libp2p.ListenAddrStrings("/ip4/0.0.0.0/tcp/0")) + require.NoError(t, err) + + s1 := NewWakuStore(MemoryDB(t), nil, timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) + s1.SetHost(host1) + + // Prepare pubsub topics for static sharding + pubSubTopics := protocol.ShardsToTopics(20, []int{1, 2, 3}) + + // Prepare test messages + now := *utils.GetUnixEpoch() + msg1 := tests.CreateWakuMessage("hello", proto.Int64(now)) + + nowPlusOne := proto.Int64(now + 1) + msg2 := tests.CreateWakuMessage("/test/2/my-app/sharded", nowPlusOne) + + nowPlusTwo := proto.Int64(now + 2) + msg3 := tests.CreateWakuMessage("/test/2/my-app/sharded", nowPlusTwo) + + // Subscribe to pubSubtopics and start store1 + host1 with them + sub := SimulateSubscription([]*protocol.Envelope{ + protocol.NewEnvelope(msg1, *utils.GetUnixEpoch(), pubSubTopics[0]), + protocol.NewEnvelope(msg2, *utils.GetUnixEpoch(), pubSubTopics[1]), + protocol.NewEnvelope(msg3, *utils.GetUnixEpoch(), pubSubTopics[2]), + }) + err = s1.Start(ctx, sub) + require.NoError(t, err) + defer s1.Stop() + + host2, err := libp2p.New(libp2p.DefaultTransports, libp2p.ListenAddrStrings("/ip4/0.0.0.0/tcp/0")) + require.NoError(t, err) + + host2.Peerstore().AddAddr(host1.ID(), tests.GetHostAddress(host1), peerstore.PermanentAddrTTL) + err = host2.Peerstore().AddProtocols(host1.ID(), StoreID_v20beta4) + require.NoError(t, err) + + s2 := NewWakuStore(MemoryDB(t), nil, timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) + s2.SetHost(host2) + + // Subscribe to DefaultWakuTopic at store2 + host2 + sub1 := relay.NewSubscription(protocol.NewContentFilter(relay.DefaultWakuTopic)) + + err = s2.Start(ctx, sub1) + require.NoError(t, err) + defer s2.Stop() + + q1 := Query{ + PubsubTopic: pubSubTopics[0], + } + + fn1 := func(msg *pb.WakuMessage) (bool, error) { + return msg.ContentTopic == "hello", nil + } + + // Find msg1 on the second host2+s2 + foundMsg, err := s2.Find(ctx, q1, fn1, WithPeer(host1.ID()), WithAutomaticRequestID(), WithPaging(true, 2)) + require.NoError(t, err) + require.NotNil(t, foundMsg) + require.Equal(t, "hello", foundMsg.ContentTopic) + + q2 := Query{ + PubsubTopic: pubSubTopics[1], + } + + // Find msg2 on the second host2+s2; No other messages (msg3) should be found + result, err := s2.Query(ctx, q2, WithPeer(host1.ID()), WithAutomaticRequestID(), WithPaging(true, 2)) + require.NoError(t, err) + + for i, m := range result.Messages { + if i == 0 { + require.Equal(t, "/test/2/my-app/sharded", m.ContentTopic) + require.Equal(t, nowPlusOne, m.Timestamp) + } else { + require.Fail(t, "Unexpected message found") + } + } + +} From 4266513a252b3b30480bf2ccad6a85e57d7ee7f0 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 28 Mar 2024 10:36:28 +0800 Subject: [PATCH 12/97] fix: add WithClusterID to see its effect --- waku/v2/node/wakunode2_test.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index dd4a03726..311029df7 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -346,20 +346,23 @@ func TestStaticShardingMultipleTopics(t *testing.T) { wakuNode1, err := New( WithHostAddress(hostAddr1), WithWakuRelay(), + WithClusterID(uint16(20)), ) require.NoError(t, err) err = wakuNode1.Start(ctx) require.NoError(t, err) defer wakuNode1.Stop() - pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(0)) + pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(uint16(21), uint16(0)) pubSubTopic1Str := pubSubTopic1.String() contentTopic1 := "/test/2/my-app/sharded" - pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(10)) + pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(uint16(21), uint16(10)) pubSubTopic2Str := pubSubTopic2.String() contentTopic2 := "/test/3/my-app/sharded" + require.Equal(t, uint16(20), wakuNode1.ClusterID()) + r := wakuNode1.Relay() subs1, err := r.Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str, contentTopic1)) From b9e700feffdde88aedde689e3213b2055f2b9502 Mon Sep 17 00:00:00 2001 From: Roman Date: Mon, 1 Apr 2024 18:43:22 +0800 Subject: [PATCH 13/97] test: static sharding for lightPush --- .../protocol/lightpush/waku_lightpush_test.go | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/waku/v2/protocol/lightpush/waku_lightpush_test.go b/waku/v2/protocol/lightpush/waku_lightpush_test.go index 08c134eee..251554101 100644 --- a/waku/v2/protocol/lightpush/waku_lightpush_test.go +++ b/waku/v2/protocol/lightpush/waku_lightpush_test.go @@ -58,6 +58,23 @@ func waitForMsg(t *testing.T, wg *sync.WaitGroup, ch chan *protocol.Envelope) { wg.Wait() } +func waitForTimeout(t *testing.T, ctx context.Context, wg *sync.WaitGroup, ch chan *protocol.Envelope) { + wg.Add(1) + go func() { + defer wg.Done() + select { + case _, ok := <-ch: + require.False(t, ok, "should not retrieve message") + case <-time.After(1 * time.Second): + // All good + case <-ctx.Done(): + require.Fail(t, "test exceeded allocated time") + } + }() + + wg.Wait() +} + // Node1: Relay // Node2: Relay+Lightpush // Client that will lightpush a message @@ -332,3 +349,64 @@ func TestWakuLightPushCornerCases(t *testing.T) { // Test situation when cancel func is nil lightPushNode2.cancel = nil } + +func TestWakuLightPushWithStaticSharding(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Prepare pubsub topics for static sharding + pubSubTopic := protocol.NewStaticShardingPubsubTopic(uint16(25), uint16(0)).String() + testContentTopic := "/test/10/my-lp-app/proto" + + node1, sub1, host1 := makeWakuRelay(t, pubSubTopic) + defer node1.Stop() + defer sub1.Unsubscribe() + + node2, sub2, host2 := makeWakuRelay(t, pubSubTopic) + defer node2.Stop() + defer sub2.Unsubscribe() + + lightPushNode2 := NewWakuLightPush(node2, nil, prometheus.DefaultRegisterer, utils.Logger()) + lightPushNode2.SetHost(host2) + err := lightPushNode2.Start(ctx) + require.NoError(t, err) + defer lightPushNode2.Stop() + + host2.Peerstore().AddAddr(host1.ID(), tests.GetHostAddress(host1), peerstore.PermanentAddrTTL) + err = host2.Peerstore().AddProtocols(host1.ID(), relay.WakuRelayID_v200) + require.NoError(t, err) + + err = host2.Connect(ctx, host2.Peerstore().PeerInfo(host1.ID())) + require.NoError(t, err) + + port, err := tests.FindFreePort(t, "", 5) + require.NoError(t, err) + + clientHost, err := tests.MakeHost(context.Background(), port, rand.Reader) + require.NoError(t, err) + client := NewWakuLightPush(nil, nil, prometheus.DefaultRegisterer, utils.Logger()) + client.SetHost(clientHost) + + clientHost.Peerstore().AddAddr(host2.ID(), tests.GetHostAddress(host2), peerstore.PermanentAddrTTL) + err = clientHost.Peerstore().AddProtocols(host2.ID(), LightPushID_v20beta1) + require.NoError(t, err) + + msg := tests.CreateWakuMessage(testContentTopic, utils.GetUnixEpoch()) + msg2 := tests.CreateWakuMessage(testContentTopic, utils.GetUnixEpoch()) + + // Wait for the mesh connection to happen between node1 and node2 + time.Sleep(2 * time.Second) + + var wg sync.WaitGroup + + // Check that msg publish has led to message deliver for existing topic + _, err = client.Publish(ctx, msg, WithPubSubTopic(pubSubTopic), WithPeer(host2.ID())) + require.NoError(t, err) + waitForMsg(t, &wg, sub1.Ch) + + // Check that msg2 publish finished without message delivery for unconfigured topic + _, err = client.Publish(ctx, msg2, WithPubSubTopic("/waku/2/rsv/25/0"), WithPeer(host2.ID())) + require.NoError(t, err) + waitForTimeout(t, ctx, &wg, sub1.Ch) + +} From 2c66e9163542c15612d8ee0f841f17a00e95efa7 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 2 Apr 2024 15:10:20 +0800 Subject: [PATCH 14/97] test: static sharding for Filter --- waku/v2/protocol/filter/filter_test.go | 64 ++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/waku/v2/protocol/filter/filter_test.go b/waku/v2/protocol/filter/filter_test.go index e5dac7182..62dd3825d 100644 --- a/waku/v2/protocol/filter/filter_test.go +++ b/waku/v2/protocol/filter/filter_test.go @@ -543,3 +543,67 @@ func (s *FilterTestSuite) BeforeTest(suiteName, testName string) { func (s *FilterTestSuite) AfterTest(suiteName, testName string) { s.log.Info("Finished executing ", zap.String("testName", testName)) } + +func (s *FilterTestSuite) TestStaticSharding() { + log := utils.Logger() + s.log = log + s.wg = &sync.WaitGroup{} + + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) // Test can't exceed 10 seconds + s.ctx = ctx + s.ctxCancel = cancel + + // Gen pubsub topic "/waku/2/rs/1024/0" + s.testTopic = protocol.NewStaticShardingPubsubTopic(uint16(1024), uint16(100)).String() + + // Pubsub topics for neg. test cases + testTopics := []string{ + "/waku/2/rs/100/1024", + "/waku/2/rs/1024/101", + } + s.testContentTopic = "/test/10/my-filter-app/proto" + + // Prepare new nodes + s.lightNode = s.makeWakuFilterLightNode(true, true) + s.relayNode, s.fullNode = s.makeWakuFilterFullNode(s.testTopic, false, true) + + // Connect nodes + s.lightNodeHost.Peerstore().AddAddr(s.fullNodeHost.ID(), tests.GetHostAddress(s.fullNodeHost), peerstore.PermanentAddrTTL) + err := s.lightNodeHost.Peerstore().AddProtocols(s.fullNodeHost.ID(), FilterSubscribeID_v20beta1) + s.Require().NoError(err) + + s.subDetails = s.subscribe(s.testTopic, s.testContentTopic, s.fullNodeHost.ID()) + + msg := tests.CreateWakuMessage(s.testContentTopic, utils.GetUnixEpoch()) + msg2 := tests.CreateWakuMessage(s.testContentTopic, utils.GetUnixEpoch()) + + // Test positive case for static shard pubsub topic - message gets received + s.waitForMsg(func() { + _, err := s.relayNode.Publish(s.ctx, msg, relay.WithPubSubTopic(s.testTopic)) + s.Require().NoError(err) + + }, s.subDetails[0].C) + + // Test two negative cases for static shard pubsub topic - message times out + s.waitForTimeout(func() { + _, err := s.relayNode.Publish(s.ctx, msg2, relay.WithPubSubTopic(testTopics[0])) + s.Require().NoError(err) + + }, s.subDetails[0].C) + + s.waitForTimeout(func() { + _, err := s.relayNode.Publish(s.ctx, msg2, relay.WithPubSubTopic(testTopics[1])) + s.Require().NoError(err) + + }, s.subDetails[0].C) + + // Cleanup + _, err = s.lightNode.Unsubscribe(s.ctx, protocol.ContentFilter{ + PubsubTopic: s.testTopic, + ContentTopics: protocol.NewContentTopicSet(s.testContentTopic), + }) + s.Require().NoError(err) + + _, err = s.lightNode.UnsubscribeAll(s.ctx) + s.Require().NoError(err) +} From 4e89a8fc7df24b3ec1c984230838f15d3b006d67 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 2 Apr 2024 15:17:31 +0800 Subject: [PATCH 15/97] fix: reuse tests.WaitForTimeout --- tests/utils.go | 20 +++++++++++++++++++ waku/v2/node/wakunode2_test.go | 2 +- .../protocol/lightpush/waku_lightpush_test.go | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/tests/utils.go b/tests/utils.go index 10c99be63..465cdac6f 100644 --- a/tests/utils.go +++ b/tests/utils.go @@ -9,6 +9,7 @@ import ( "encoding/hex" "encoding/json" "fmt" + "github.com/waku-org/go-waku/waku/v2/protocol" "io" "math" "math/big" @@ -16,7 +17,9 @@ import ( "net/url" "strconv" "strings" + "sync" "testing" + "time" "unicode/utf8" gcrypto "github.com/ethereum/go-ethereum/crypto" @@ -385,3 +388,20 @@ func GenerateRandomSQLInsert(maxLength int) (string, error) { return query, nil } + +func WaitForTimeout(t *testing.T, ctx context.Context, wg *sync.WaitGroup, ch chan *protocol.Envelope) { + wg.Add(1) + go func() { + defer wg.Done() + select { + case _, ok := <-ch: + require.False(t, ok, "should not retrieve message") + case <-time.After(1 * time.Second): + // All good + case <-ctx.Done(): + require.Fail(t, "test exceeded allocated time") + } + }() + + wg.Wait() +} diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 311029df7..707aa7853 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -426,6 +426,6 @@ func TestStaticShardingMultipleTopics(t *testing.T) { time.Sleep(100 * time.Millisecond) // No message could be retrieved - waitForTimeout(t, ctx, &wg, subs1[0].Ch) + tests.WaitForTimeout(t, ctx, &wg, subs1[0].Ch) } diff --git a/waku/v2/protocol/lightpush/waku_lightpush_test.go b/waku/v2/protocol/lightpush/waku_lightpush_test.go index 251554101..2a3c64a91 100644 --- a/waku/v2/protocol/lightpush/waku_lightpush_test.go +++ b/waku/v2/protocol/lightpush/waku_lightpush_test.go @@ -407,6 +407,6 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { // Check that msg2 publish finished without message delivery for unconfigured topic _, err = client.Publish(ctx, msg2, WithPubSubTopic("/waku/2/rsv/25/0"), WithPeer(host2.ID())) require.NoError(t, err) - waitForTimeout(t, ctx, &wg, sub1.Ch) + tests.WaitForTimeout(t, ctx, &wg, sub1.Ch) } From def82f2a53516f6354b0861f6d234e8f40e7288b Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 2 Apr 2024 15:22:38 +0800 Subject: [PATCH 16/97] fix: reuse tests.WaitForMsg --- waku/v2/node/wakunode2_test.go | 19 +-------- .../protocol/lightpush/waku_lightpush_test.go | 41 ++----------------- 2 files changed, 4 insertions(+), 56 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 707aa7853..f1530b5a6 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -37,23 +37,6 @@ func createTestMsg(version uint32) *pb.WakuMessage { return message } -func waitForTimeout(t *testing.T, ctx context.Context, wg *sync.WaitGroup, ch chan *protocol.Envelope) { - wg.Add(1) - go func() { - defer wg.Done() - select { - case _, ok := <-ch: - require.False(t, ok, "should not retrieve message") - case <-time.After(1 * time.Second): - // All good - case <-ctx.Done(): - require.Fail(t, "test exceeded allocated time") - } - }() - - wg.Wait() -} - func TestWakuNode2(t *testing.T) { hostAddr, _ := net.ResolveTCPAddr("tcp", "0.0.0.0:0") @@ -415,7 +398,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { time.Sleep(100 * time.Millisecond) // No message could be retrieved - waitForTimeout(t, ctx, &wg, subs1[0].Ch) + tests.WaitForTimeout(t, ctx, &wg, subs1[0].Ch) // Send another message to subscribed pubsub topic, but not subscribed content topic - mix it up msg3 := tests.CreateWakuMessage(contentTopic2, utils.GetUnixEpoch(), "test message 3") diff --git a/waku/v2/protocol/lightpush/waku_lightpush_test.go b/waku/v2/protocol/lightpush/waku_lightpush_test.go index 2a3c64a91..e2c602508 100644 --- a/waku/v2/protocol/lightpush/waku_lightpush_test.go +++ b/waku/v2/protocol/lightpush/waku_lightpush_test.go @@ -7,14 +7,12 @@ import ( "testing" "time" - "github.com/waku-org/go-waku/waku/v2/peermanager" - "go.uber.org/zap" - "github.com/libp2p/go-libp2p/core/host" "github.com/libp2p/go-libp2p/core/peerstore" "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" "github.com/waku-org/go-waku/tests" + "github.com/waku-org/go-waku/waku/v2/peermanager" "github.com/waku-org/go-waku/waku/v2/protocol" "github.com/waku-org/go-waku/waku/v2/protocol/relay" "github.com/waku-org/go-waku/waku/v2/timesource" @@ -42,39 +40,6 @@ func makeWakuRelay(t *testing.T, pusubTopic string) (*relay.WakuRelay, *relay.Su return relay, sub[0], host } -func waitForMsg(t *testing.T, wg *sync.WaitGroup, ch chan *protocol.Envelope) { - wg.Add(1) - log := utils.Logger() - go func() { - defer wg.Done() - select { - case env := <-ch: - msg := env.Message() - log.Info("Received ", zap.String("msg", msg.String())) - case <-time.After(2 * time.Second): - require.Fail(t, "Message timeout") - } - }() - wg.Wait() -} - -func waitForTimeout(t *testing.T, ctx context.Context, wg *sync.WaitGroup, ch chan *protocol.Envelope) { - wg.Add(1) - go func() { - defer wg.Done() - select { - case _, ok := <-ch: - require.False(t, ok, "should not retrieve message") - case <-time.After(1 * time.Second): - // All good - case <-ctx.Done(): - require.Fail(t, "test exceeded allocated time") - } - }() - - wg.Wait() -} - // Node1: Relay // Node2: Relay+Lightpush // Client that will lightpush a message @@ -322,7 +287,7 @@ func TestWakuLightPushCornerCases(t *testing.T) { require.NoError(t, err) // Wait for the nominal case message at node1 - waitForMsg(t, &wg, sub1.Ch) + tests.WaitForMsg(t, &wg, sub1.Ch) // Test error case with nil message _, err = client.Publish(ctx, nil, lpOptions...) @@ -402,7 +367,7 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { // Check that msg publish has led to message deliver for existing topic _, err = client.Publish(ctx, msg, WithPubSubTopic(pubSubTopic), WithPeer(host2.ID())) require.NoError(t, err) - waitForMsg(t, &wg, sub1.Ch) + tests.WaitForMsg(t, &wg, sub1.Ch) // Check that msg2 publish finished without message delivery for unconfigured topic _, err = client.Publish(ctx, msg2, WithPubSubTopic("/waku/2/rsv/25/0"), WithPeer(host2.ID())) From 3b571baf07748cd895822bde929688456f13759a Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 2 Apr 2024 15:23:30 +0800 Subject: [PATCH 17/97] fix: forgot to add utils.go --- tests/utils.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/utils.go b/tests/utils.go index 465cdac6f..acb76708f 100644 --- a/tests/utils.go +++ b/tests/utils.go @@ -389,6 +389,22 @@ func GenerateRandomSQLInsert(maxLength int) (string, error) { return query, nil } +func WaitForMsg(t *testing.T, wg *sync.WaitGroup, ch chan *protocol.Envelope) { + wg.Add(1) + log := utils.Logger() + go func() { + defer wg.Done() + select { + case env := <-ch: + msg := env.Message() + log.Info("Received ", zap.String("msg", msg.String())) + case <-time.After(2 * time.Second): + require.Fail(t, "Message timeout") + } + }() + wg.Wait() +} + func WaitForTimeout(t *testing.T, ctx context.Context, wg *sync.WaitGroup, ch chan *protocol.Envelope) { wg.Add(1) go func() { From c80456ddeaf8c810a5cf4d81be1dad484d5468f4 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 2 Apr 2024 19:11:30 +0800 Subject: [PATCH 18/97] test: static sharding for Relay --- waku/v2/protocol/relay/waku_relay_test.go | 74 +++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/waku/v2/protocol/relay/waku_relay_test.go b/waku/v2/protocol/relay/waku_relay_test.go index 94e9992ad..90a31d0b5 100644 --- a/waku/v2/protocol/relay/waku_relay_test.go +++ b/waku/v2/protocol/relay/waku_relay_test.go @@ -355,3 +355,77 @@ func TestInvalidMessagePublish(t *testing.T) { ctxCancel() } + +func TestWakuRelayStaticSharding(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Follow spec /waku/2/rs// + testTopic := "/waku/2/rs/64/0" + testContentTopic := "/test/10/my-relay" + + // Host1 + port, err := tests.FindFreePort(t, "", 5) + require.NoError(t, err) + + host1, err := tests.MakeHost(context.Background(), port, rand.Reader) + require.NoError(t, err) + bcaster1 := NewBroadcaster(10) + relay1 := NewWakuRelay(bcaster1, 0, timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) + relay1.SetHost(host1) + err = relay1.Start(context.Background()) + require.NoError(t, err) + + err = bcaster1.Start(context.Background()) + require.NoError(t, err) + defer relay1.Stop() + + // Host2 + port, err = tests.FindFreePort(t, "", 5) + require.NoError(t, err) + + host2, err := tests.MakeHost(context.Background(), port, rand.Reader) + require.NoError(t, err) + bcaster2 := NewBroadcaster(10) + relay2 := NewWakuRelay(bcaster2, 0, timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) + relay2.SetHost(host2) + err = relay2.Start(context.Background()) + require.NoError(t, err) + + err = bcaster2.Start(context.Background()) + require.NoError(t, err) + defer relay2.Stop() + + // Connect nodes + host2.Peerstore().AddAddr(host1.ID(), tests.GetHostAddress(host1), peerstore.PermanentAddrTTL) + err = host2.Peerstore().AddProtocols(host1.ID(), WakuRelayID_v200) + require.NoError(t, err) + + // Wait for the mesh connection to happen between node1 and node2 + time.Sleep(2 * time.Second) + + // Subscribe to valid static shard topic on both hosts + subs1, err := relay2.subscribe(context.Background(), protocol.NewContentFilter(testTopic, testContentTopic)) + require.NoError(t, err) + + subs2, err := relay2.subscribe(context.Background(), protocol.NewContentFilter(testTopic, testContentTopic)) + require.NoError(t, err) + require.True(t, relay2.IsSubscribed(testTopic)) + require.Equal(t, testContentTopic, subs2[0].contentFilter.ContentTopics.ToList()[0]) + + msg := tests.CreateWakuMessage(testContentTopic, utils.GetUnixEpoch(), "test_payload") + + // Test publish from host2 using autosharding -> should fail on topic format + _, err = relay2.Publish(ctx, msg) + require.Error(t, err) + + // Test publish from host2 using static sharding -> should succeed + _, err = relay2.Publish(ctx, msg, WithPubSubTopic(testTopic)) + require.NoError(t, err) + + var wg sync.WaitGroup + + // Msg should get received on host1 + tests.WaitForMsg(t, &wg, subs1[0].Ch) + +} From 873caa8aa09a487df878301975ac018372a3ad59 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 3 Apr 2024 19:08:30 +0800 Subject: [PATCH 19/97] test: static sharding limits --- waku/v2/node/wakunode2_test.go | 73 ++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index f1530b5a6..fddbf25cb 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -3,6 +3,7 @@ package node import ( "bytes" "context" + "fmt" "math/big" "net" "sync" @@ -98,6 +99,7 @@ func TestUpAndDown(t *testing.T) { WithWakuRelay(), WithDiscoveryV5(0, bootnodes, true), ) + require.NoError(t, err) for i := 0; i < 5; i++ { @@ -412,3 +414,74 @@ func TestStaticShardingMultipleTopics(t *testing.T) { tests.WaitForTimeout(t, ctx, &wg, subs1[0].Ch) } + +func TestStaticShardingLimits(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 140*time.Second) + defer cancel() + + // Node1 with Relay + hostAddr1, err := net.ResolveTCPAddr("tcp", "0.0.0.0:0") + require.NoError(t, err) + discv5UDPPort1, err := tests.FindFreeUDPPort(t, "0.0.0.0", 3) + require.NoError(t, err) + wakuNode1, err := New( + WithHostAddress(hostAddr1), + WithWakuRelay(), + WithClusterID(uint16(21)), + WithDiscoveryV5(uint(discv5UDPPort1), nil, true), + ) + require.NoError(t, err) + err = wakuNode1.Start(ctx) + require.NoError(t, err) + defer wakuNode1.Stop() + + // Node2 with Relay + hostAddr2, err := net.ResolveTCPAddr("tcp", "0.0.0.0:0") + require.NoError(t, err) + discv5UDPPort2, err := tests.FindFreeUDPPort(t, "0.0.0.0", 3) + require.NoError(t, err) + wakuNode2, err := New( + WithHostAddress(hostAddr2), + WithWakuRelay(), + WithClusterID(uint16(21)), + WithDiscoveryV5(uint(discv5UDPPort2), []*enode.Node{wakuNode1.localNode.Node()}, true), + ) + require.NoError(t, err) + err = wakuNode2.Start(ctx) + require.NoError(t, err) + defer wakuNode2.Stop() + + err = wakuNode1.DiscV5().Start(ctx) + require.NoError(t, err) + err = wakuNode2.DiscV5().Start(ctx) + require.NoError(t, err) + + // Wait for discovery + time.Sleep(3 * time.Second) + + contentTopic1 := "/test/2/my-app/sharded" + + r1 := wakuNode1.Relay() + + var shardedPubSubTopics, nonShardedPubSubTopics []string + for i := 0; i < 1024; i++ { + nonShardedPubSubTopics = append(nonShardedPubSubTopics, fmt.Sprintf("/waku/2/my-app/21/%d", i)) + shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/21/%d", i)) + } + + // Subscribe topics not related to static sharding + for i := 0; i < 1024; i++ { + _, err = r1.Subscribe(ctx, protocol.NewContentFilter(nonShardedPubSubTopics[i], contentTopic1)) + require.NoError(t, err) + time.Sleep(10 * time.Millisecond) + } + + // Subscribe topics related to static sharding + for i := 0; i < 1024; i++ { + _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) + require.NoError(t, err) + time.Sleep(100 * time.Millisecond) + } + + time.Sleep(1 * time.Second) +} From 502ff9d4e3f81867f9d290130d0b4bd963fc9509 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 4 Apr 2024 13:53:01 +0800 Subject: [PATCH 20/97] fix: remove named shards --- waku/v2/node/wakunode2_test.go | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index fddbf25cb..c0ad30e46 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -463,19 +463,11 @@ func TestStaticShardingLimits(t *testing.T) { r1 := wakuNode1.Relay() - var shardedPubSubTopics, nonShardedPubSubTopics []string + var shardedPubSubTopics []string for i := 0; i < 1024; i++ { - nonShardedPubSubTopics = append(nonShardedPubSubTopics, fmt.Sprintf("/waku/2/my-app/21/%d", i)) shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/21/%d", i)) } - // Subscribe topics not related to static sharding - for i := 0; i < 1024; i++ { - _, err = r1.Subscribe(ctx, protocol.NewContentFilter(nonShardedPubSubTopics[i], contentTopic1)) - require.NoError(t, err) - time.Sleep(10 * time.Millisecond) - } - // Subscribe topics related to static sharding for i := 0; i < 1024; i++ { _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) From 72be483441b6b777cacc97ce45c7e5d6718154ab Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 5 Apr 2024 07:46:13 +0800 Subject: [PATCH 21/97] fix: change subscription to every 10ms --- waku/v2/node/wakunode2_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index c0ad30e46..17777de1a 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -472,7 +472,7 @@ func TestStaticShardingLimits(t *testing.T) { for i := 0; i < 1024; i++ { _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) - time.Sleep(100 * time.Millisecond) + time.Sleep(10 * time.Millisecond) } time.Sleep(1 * time.Second) From 9693bedc4451751237ff479f8ad4a0f01d967840 Mon Sep 17 00:00:00 2001 From: Roman Date: Mon, 8 Apr 2024 10:24:09 +0800 Subject: [PATCH 22/97] fix: add ENR shard info comparison --- waku/v2/node/wakunode2_test.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 17777de1a..daec6b73e 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -4,6 +4,7 @@ import ( "bytes" "context" "fmt" + wenr "github.com/waku-org/go-waku/waku/v2/protocol/enr" "math/big" "net" "sync" @@ -419,6 +420,8 @@ func TestStaticShardingLimits(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 140*time.Second) defer cancel() + testClusterID := uint16(21) + // Node1 with Relay hostAddr1, err := net.ResolveTCPAddr("tcp", "0.0.0.0:0") require.NoError(t, err) @@ -427,7 +430,7 @@ func TestStaticShardingLimits(t *testing.T) { wakuNode1, err := New( WithHostAddress(hostAddr1), WithWakuRelay(), - WithClusterID(uint16(21)), + WithClusterID(testClusterID), WithDiscoveryV5(uint(discv5UDPPort1), nil, true), ) require.NoError(t, err) @@ -443,7 +446,7 @@ func TestStaticShardingLimits(t *testing.T) { wakuNode2, err := New( WithHostAddress(hostAddr2), WithWakuRelay(), - WithClusterID(uint16(21)), + WithClusterID(testClusterID), WithDiscoveryV5(uint(discv5UDPPort2), []*enode.Node{wakuNode1.localNode.Node()}, true), ) require.NoError(t, err) @@ -463,9 +466,14 @@ func TestStaticShardingLimits(t *testing.T) { r1 := wakuNode1.Relay() - var shardedPubSubTopics []string + var ( + shardedPubSubTopics []string + expectedShardIDs []uint16 + ) + for i := 0; i < 1024; i++ { - shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/21/%d", i)) + shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) + expectedShardIDs = append(expectedShardIDs, uint16(i)) } // Subscribe topics related to static sharding @@ -475,5 +483,12 @@ func TestStaticShardingLimits(t *testing.T) { time.Sleep(10 * time.Millisecond) } + // Check ENR value after 1024 subscriptions + shardsENR, err := wenr.RelaySharding(wakuNode1.ENR().Record()) + require.NoError(t, err) + require.Equal(t, testClusterID, shardsENR.ClusterID) + require.Equal(t, 1024, len(shardsENR.ShardIDs)) + time.Sleep(1 * time.Second) + } From b6fc2cb6840fb08940e1009cdc4b874566273bff Mon Sep 17 00:00:00 2001 From: Roman Date: Mon, 8 Apr 2024 10:30:28 +0800 Subject: [PATCH 23/97] fix: remove expected shardIDs array --- waku/v2/node/wakunode2_test.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index daec6b73e..fd9ba082a 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -466,14 +466,10 @@ func TestStaticShardingLimits(t *testing.T) { r1 := wakuNode1.Relay() - var ( - shardedPubSubTopics []string - expectedShardIDs []uint16 - ) + var shardedPubSubTopics []string for i := 0; i < 1024; i++ { shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) - expectedShardIDs = append(expectedShardIDs, uint16(i)) } // Subscribe topics related to static sharding From 8efec1ef71ea30a076903969c24b4b301826a3e9 Mon Sep 17 00:00:00 2001 From: Roman Date: Mon, 8 Apr 2024 19:08:52 +0800 Subject: [PATCH 24/97] fix: reset subscriptions back to 1 per 100ms --- waku/v2/node/wakunode2_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index fd9ba082a..4316cb256 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -476,7 +476,7 @@ func TestStaticShardingLimits(t *testing.T) { for i := 0; i < 1024; i++ { _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) - time.Sleep(10 * time.Millisecond) + time.Sleep(100 * time.Millisecond) } // Check ENR value after 1024 subscriptions From 1cd52ee6d51a1d4cdad87389df838816fd146ee0 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 10 Apr 2024 20:41:15 +0800 Subject: [PATCH 25/97] fix: add message publish to test - shorten subscription rate back to 1/10ms --- waku/v2/node/wakunode2_test.go | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 4316cb256..3f9fee519 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -6,6 +6,7 @@ import ( "fmt" wenr "github.com/waku-org/go-waku/waku/v2/protocol/enr" "math/big" + "math/rand" "net" "sync" "testing" @@ -417,7 +418,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { } func TestStaticShardingLimits(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 140*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second) defer cancel() testClusterID := uint16(21) @@ -465,26 +466,46 @@ func TestStaticShardingLimits(t *testing.T) { contentTopic1 := "/test/2/my-app/sharded" r1 := wakuNode1.Relay() + r2 := wakuNode1.Relay() var shardedPubSubTopics []string - for i := 0; i < 1024; i++ { - shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) - } - // Subscribe topics related to static sharding for i := 0; i < 1024; i++ { + shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) + _, err = r2.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) - time.Sleep(100 * time.Millisecond) + time.Sleep(10 * time.Millisecond) } + // Let ENR updates to finish + time.Sleep(3 * time.Second) + // Check ENR value after 1024 subscriptions shardsENR, err := wenr.RelaySharding(wakuNode1.ENR().Record()) require.NoError(t, err) require.Equal(t, testClusterID, shardsENR.ClusterID) require.Equal(t, 1024, len(shardsENR.ShardIDs)) + // Prepare message + msg1 := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message") + + // Select shard to publish to + randomShard := rand.Intn(1024) + + // Publish on node1 + _, err = r1.Publish(ctx, msg1, relay.WithPubSubTopic(shardedPubSubTopics[randomShard])) + require.NoError(t, err) + time.Sleep(1 * time.Second) + s, err := r2.GetSubscriptionWithPubsubTopic(shardedPubSubTopics[randomShard], contentTopic1) + require.NoError(t, err) + + var wg sync.WaitGroup + + // Retrieve on node2 + tests.WaitForMsg(t, &wg, s.Ch) + } From 891d9a9f1cd25dbe6b70e1ee9cf0bfda72f5def8 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 10 Apr 2024 20:47:11 +0800 Subject: [PATCH 26/97] fix: add missing error check --- waku/v2/node/wakunode2_test.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 3f9fee519..0bf4c7951 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -474,6 +474,7 @@ func TestStaticShardingLimits(t *testing.T) { for i := 0; i < 1024; i++ { shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) + require.NoError(t, err) _, err = r2.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) time.Sleep(10 * time.Millisecond) @@ -491,7 +492,7 @@ func TestStaticShardingLimits(t *testing.T) { // Prepare message msg1 := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message") - // Select shard to publish to + // Select shard to publish randomShard := rand.Intn(1024) // Publish on node1 @@ -500,12 +501,12 @@ func TestStaticShardingLimits(t *testing.T) { time.Sleep(1 * time.Second) - s, err := r2.GetSubscriptionWithPubsubTopic(shardedPubSubTopics[randomShard], contentTopic1) + s2, err := r2.GetSubscriptionWithPubsubTopic(shardedPubSubTopics[randomShard], contentTopic1) require.NoError(t, err) var wg sync.WaitGroup // Retrieve on node2 - tests.WaitForMsg(t, &wg, s.Ch) + tests.WaitForMsg(t, &wg, s2.Ch) } From d27c0ed17fcaa2f0cc3736bd79282ab71efaba76 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 10 Apr 2024 20:59:34 +0800 Subject: [PATCH 27/97] fix: missed assigment for relay2 - subscribe to both relays with a breath time --- waku/v2/node/wakunode2_test.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 0bf4c7951..d120d7eee 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -418,7 +418,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { } func TestStaticShardingLimits(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 40*time.Second) defer cancel() testClusterID := uint16(21) @@ -466,7 +466,7 @@ func TestStaticShardingLimits(t *testing.T) { contentTopic1 := "/test/2/my-app/sharded" r1 := wakuNode1.Relay() - r2 := wakuNode1.Relay() + r2 := wakuNode2.Relay() var shardedPubSubTopics []string @@ -475,6 +475,14 @@ func TestStaticShardingLimits(t *testing.T) { shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) + time.Sleep(10 * time.Millisecond) + } + + // Let ENR updates to finish + time.Sleep(3 * time.Second) + + // Subscribe topics related to static sharding + for i := 0; i < 1024; i++ { _, err = r2.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) time.Sleep(10 * time.Millisecond) From e1210c7ce3b5d3eb3d3ae1284855d465cfe4e1df Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 10 Apr 2024 21:13:00 +0800 Subject: [PATCH 28/97] fix: add IsSubscribed check --- waku/v2/node/wakunode2_test.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index d120d7eee..eee80e802 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -418,7 +418,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { } func TestStaticShardingLimits(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 40*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second) defer cancel() testClusterID := uint16(21) @@ -503,6 +503,10 @@ func TestStaticShardingLimits(t *testing.T) { // Select shard to publish randomShard := rand.Intn(1024) + // Check both nodes are subscribed + require.True(t, r1.IsSubscribed(shardedPubSubTopics[randomShard])) + require.True(t, r2.IsSubscribed(shardedPubSubTopics[randomShard])) + // Publish on node1 _, err = r1.Publish(ctx, msg1, relay.WithPubSubTopic(shardedPubSubTopics[randomShard])) require.NoError(t, err) From b562771c6965504bf897cb30a65a9883912367f4 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 11 Apr 2024 10:10:17 +0800 Subject: [PATCH 29/97] test: log peerstore content before subscribing to topics --- waku/v2/node/wakunode2_test.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index eee80e802..172845cf4 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -418,9 +418,11 @@ func TestStaticShardingMultipleTopics(t *testing.T) { } func TestStaticShardingLimits(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 1000*time.Second) defer cancel() + log := utils.Logger() + testClusterID := uint16(21) // Node1 with Relay @@ -463,6 +465,21 @@ func TestStaticShardingLimits(t *testing.T) { // Wait for discovery time.Sleep(3 * time.Second) + log.Info("Node1 has", zap.String("peer ID", wakuNode1.ID())) + log.Info("Node2 has", zap.String("peer ID", wakuNode2.ID())) + + knownPeers := wakuNode1.peerstore.Peers() + for _, peer := range knownPeers { + log.Info("Peers known to Node1", zap.String("ID", peer.String())) + } + + knownPeers = wakuNode2.peerstore.Peers() + for _, peer := range knownPeers { + log.Info("Peers known to Node2", zap.String("ID", peer.String())) + } + + log.Info("No peers for the topic yet") + contentTopic1 := "/test/2/my-app/sharded" r1 := wakuNode1.Relay() @@ -507,6 +524,8 @@ func TestStaticShardingLimits(t *testing.T) { require.True(t, r1.IsSubscribed(shardedPubSubTopics[randomShard])) require.True(t, r2.IsSubscribed(shardedPubSubTopics[randomShard])) + time.Sleep(120 * time.Second) + // Publish on node1 _, err = r1.Publish(ctx, msg1, relay.WithPubSubTopic(shardedPubSubTopics[randomShard])) require.NoError(t, err) From 8d7e31bde9eaca3eca389ebcf15263b072781960 Mon Sep 17 00:00:00 2001 From: Roman Date: Mon, 15 Apr 2024 14:27:21 +0800 Subject: [PATCH 30/97] test: reduce number of topics to one --- waku/v2/node/wakunode2_test.go | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 172845cf4..762f3a657 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -6,7 +6,6 @@ import ( "fmt" wenr "github.com/waku-org/go-waku/waku/v2/protocol/enr" "math/big" - "math/rand" "net" "sync" "testing" @@ -418,7 +417,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { } func TestStaticShardingLimits(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 1000*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second) defer cancel() log := utils.Logger() @@ -488,7 +487,7 @@ func TestStaticShardingLimits(t *testing.T) { var shardedPubSubTopics []string // Subscribe topics related to static sharding - for i := 0; i < 1024; i++ { + for i := 0; i < 1; i++ { shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) @@ -499,7 +498,7 @@ func TestStaticShardingLimits(t *testing.T) { time.Sleep(3 * time.Second) // Subscribe topics related to static sharding - for i := 0; i < 1024; i++ { + for i := 0; i < 1; i++ { _, err = r2.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) time.Sleep(10 * time.Millisecond) @@ -512,19 +511,19 @@ func TestStaticShardingLimits(t *testing.T) { shardsENR, err := wenr.RelaySharding(wakuNode1.ENR().Record()) require.NoError(t, err) require.Equal(t, testClusterID, shardsENR.ClusterID) - require.Equal(t, 1024, len(shardsENR.ShardIDs)) + require.Equal(t, 1, len(shardsENR.ShardIDs)) // Prepare message msg1 := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message") // Select shard to publish - randomShard := rand.Intn(1024) + randomShard := 0 // Check both nodes are subscribed require.True(t, r1.IsSubscribed(shardedPubSubTopics[randomShard])) require.True(t, r2.IsSubscribed(shardedPubSubTopics[randomShard])) - time.Sleep(120 * time.Second) + time.Sleep(1 * time.Second) // Publish on node1 _, err = r1.Publish(ctx, msg1, relay.WithPubSubTopic(shardedPubSubTopics[randomShard])) From 99e3f334cd8356d343d3f3f7ac750ca46508de05 Mon Sep 17 00:00:00 2001 From: Roman Date: Mon, 22 Apr 2024 10:47:13 +0800 Subject: [PATCH 31/97] fix: add timeout param to WaitForTimeout and WaitForMsg - clarify intent for using different shardIDs - use clusterID other than 0 - to test unsubscribed topic --- tests/utils.go | 8 ++++---- waku/v2/node/wakunode2_test.go | 19 +++++++++++-------- .../protocol/lightpush/waku_lightpush_test.go | 6 +++--- waku/v2/protocol/relay/waku_relay_test.go | 2 +- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/tests/utils.go b/tests/utils.go index acb76708f..8b9dec223 100644 --- a/tests/utils.go +++ b/tests/utils.go @@ -389,7 +389,7 @@ func GenerateRandomSQLInsert(maxLength int) (string, error) { return query, nil } -func WaitForMsg(t *testing.T, wg *sync.WaitGroup, ch chan *protocol.Envelope) { +func WaitForMsg(t *testing.T, timeout time.Duration, wg *sync.WaitGroup, ch chan *protocol.Envelope) { wg.Add(1) log := utils.Logger() go func() { @@ -398,21 +398,21 @@ func WaitForMsg(t *testing.T, wg *sync.WaitGroup, ch chan *protocol.Envelope) { case env := <-ch: msg := env.Message() log.Info("Received ", zap.String("msg", msg.String())) - case <-time.After(2 * time.Second): + case <-time.After(timeout): require.Fail(t, "Message timeout") } }() wg.Wait() } -func WaitForTimeout(t *testing.T, ctx context.Context, wg *sync.WaitGroup, ch chan *protocol.Envelope) { +func WaitForTimeout(t *testing.T, ctx context.Context, timeout time.Duration, wg *sync.WaitGroup, ch chan *protocol.Envelope) { wg.Add(1) go func() { defer wg.Done() select { case _, ok := <-ch: require.False(t, ok, "should not retrieve message") - case <-time.After(1 * time.Second): + case <-time.After(timeout): // All good case <-ctx.Done(): require.Fail(t, "test exceeded allocated time") diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 762f3a657..6cecf8d81 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -326,28 +326,31 @@ func TestStaticShardingMultipleTopics(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() + nodeNativeClusterID := uint16(20) + shardingClusterID := uint16(21) + // Node1 with Relay hostAddr1, err := net.ResolveTCPAddr("tcp", "0.0.0.0:0") require.NoError(t, err) wakuNode1, err := New( WithHostAddress(hostAddr1), WithWakuRelay(), - WithClusterID(uint16(20)), + WithClusterID(nodeNativeClusterID), ) require.NoError(t, err) err = wakuNode1.Start(ctx) require.NoError(t, err) defer wakuNode1.Stop() - pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(uint16(21), uint16(0)) + pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(shardingClusterID, uint16(0)) pubSubTopic1Str := pubSubTopic1.String() contentTopic1 := "/test/2/my-app/sharded" - pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(uint16(21), uint16(10)) + pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(shardingClusterID, uint16(10)) pubSubTopic2Str := pubSubTopic2.String() contentTopic2 := "/test/3/my-app/sharded" - require.Equal(t, uint16(20), wakuNode1.ClusterID()) + require.Equal(t, nodeNativeClusterID, wakuNode1.ClusterID()) r := wakuNode1.Relay() @@ -395,13 +398,13 @@ func TestStaticShardingMultipleTopics(t *testing.T) { // Send another message to non-subscribed pubsub topic, but subscribed content topic msg2 := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message 2") - _, err = r.Publish(ctx, msg2, relay.WithPubSubTopic("/waku/2/rs/0/321")) + _, err = r.Publish(ctx, msg2, relay.WithPubSubTopic("/waku/2/rs/100/321")) require.NoError(t, err) time.Sleep(100 * time.Millisecond) // No message could be retrieved - tests.WaitForTimeout(t, ctx, &wg, subs1[0].Ch) + tests.WaitForTimeout(t, ctx, 1*time.Second, &wg, subs1[0].Ch) // Send another message to subscribed pubsub topic, but not subscribed content topic - mix it up msg3 := tests.CreateWakuMessage(contentTopic2, utils.GetUnixEpoch(), "test message 3") @@ -412,7 +415,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { time.Sleep(100 * time.Millisecond) // No message could be retrieved - tests.WaitForTimeout(t, ctx, &wg, subs1[0].Ch) + tests.WaitForTimeout(t, ctx, 1*time.Second, &wg, subs1[0].Ch) } @@ -537,6 +540,6 @@ func TestStaticShardingLimits(t *testing.T) { var wg sync.WaitGroup // Retrieve on node2 - tests.WaitForMsg(t, &wg, s2.Ch) + tests.WaitForMsg(t, 2*time.Second, &wg, s2.Ch) } diff --git a/waku/v2/protocol/lightpush/waku_lightpush_test.go b/waku/v2/protocol/lightpush/waku_lightpush_test.go index e2c602508..151e05308 100644 --- a/waku/v2/protocol/lightpush/waku_lightpush_test.go +++ b/waku/v2/protocol/lightpush/waku_lightpush_test.go @@ -287,7 +287,7 @@ func TestWakuLightPushCornerCases(t *testing.T) { require.NoError(t, err) // Wait for the nominal case message at node1 - tests.WaitForMsg(t, &wg, sub1.Ch) + tests.WaitForMsg(t, 2*time.Second, &wg, sub1.Ch) // Test error case with nil message _, err = client.Publish(ctx, nil, lpOptions...) @@ -367,11 +367,11 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { // Check that msg publish has led to message deliver for existing topic _, err = client.Publish(ctx, msg, WithPubSubTopic(pubSubTopic), WithPeer(host2.ID())) require.NoError(t, err) - tests.WaitForMsg(t, &wg, sub1.Ch) + tests.WaitForMsg(t, 2*time.Second, &wg, sub1.Ch) // Check that msg2 publish finished without message delivery for unconfigured topic _, err = client.Publish(ctx, msg2, WithPubSubTopic("/waku/2/rsv/25/0"), WithPeer(host2.ID())) require.NoError(t, err) - tests.WaitForTimeout(t, ctx, &wg, sub1.Ch) + tests.WaitForTimeout(t, ctx, 1*time.Second, &wg, sub1.Ch) } diff --git a/waku/v2/protocol/relay/waku_relay_test.go b/waku/v2/protocol/relay/waku_relay_test.go index 90a31d0b5..c71db4bba 100644 --- a/waku/v2/protocol/relay/waku_relay_test.go +++ b/waku/v2/protocol/relay/waku_relay_test.go @@ -426,6 +426,6 @@ func TestWakuRelayStaticSharding(t *testing.T) { var wg sync.WaitGroup // Msg should get received on host1 - tests.WaitForMsg(t, &wg, subs1[0].Ch) + tests.WaitForMsg(t, 2*time.Second, &wg, subs1[0].Ch) } From 590e4ffa4da5bfc272fc50791254d316f51b9698 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 23 Apr 2024 10:33:09 +0800 Subject: [PATCH 32/97] fix: revert test to desired form and mark it flaky --- waku/v2/node/wakunode2_test.go | 35 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 6cecf8d81..28dfe0f6c 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -6,7 +6,9 @@ import ( "fmt" wenr "github.com/waku-org/go-waku/waku/v2/protocol/enr" "math/big" + "math/rand" "net" + "os" "sync" "testing" "time" @@ -420,11 +422,19 @@ func TestStaticShardingMultipleTopics(t *testing.T) { } func TestStaticShardingLimits(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second) - defer cancel() log := utils.Logger() + if os.Getenv("RUN_FLAKY_TESTS") != "true" { + + log.Info("Skipping", zap.String("test", t.Name()), + zap.String("reason", "RUN_FLAKY_TESTS environment variable is not set to true")) + t.SkipNow() + } + + ctx, cancel := context.WithTimeout(context.Background(), 300*time.Second) + defer cancel() + testClusterID := uint16(21) // Node1 with Relay @@ -467,21 +477,6 @@ func TestStaticShardingLimits(t *testing.T) { // Wait for discovery time.Sleep(3 * time.Second) - log.Info("Node1 has", zap.String("peer ID", wakuNode1.ID())) - log.Info("Node2 has", zap.String("peer ID", wakuNode2.ID())) - - knownPeers := wakuNode1.peerstore.Peers() - for _, peer := range knownPeers { - log.Info("Peers known to Node1", zap.String("ID", peer.String())) - } - - knownPeers = wakuNode2.peerstore.Peers() - for _, peer := range knownPeers { - log.Info("Peers known to Node2", zap.String("ID", peer.String())) - } - - log.Info("No peers for the topic yet") - contentTopic1 := "/test/2/my-app/sharded" r1 := wakuNode1.Relay() @@ -490,7 +485,7 @@ func TestStaticShardingLimits(t *testing.T) { var shardedPubSubTopics []string // Subscribe topics related to static sharding - for i := 0; i < 1; i++ { + for i := 0; i < 1024; i++ { shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) @@ -501,7 +496,7 @@ func TestStaticShardingLimits(t *testing.T) { time.Sleep(3 * time.Second) // Subscribe topics related to static sharding - for i := 0; i < 1; i++ { + for i := 0; i < 1024; i++ { _, err = r2.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) time.Sleep(10 * time.Millisecond) @@ -520,7 +515,7 @@ func TestStaticShardingLimits(t *testing.T) { msg1 := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message") // Select shard to publish - randomShard := 0 + randomShard := rand.Intn(1024) // Check both nodes are subscribed require.True(t, r1.IsSubscribed(shardedPubSubTopics[randomShard])) From 7404bb416fe513d2dd68387657767adaa4f5b852 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 2 May 2024 10:25:47 +0800 Subject: [PATCH 33/97] fix: keep same cluster ID for topics - TestStaticSharding --- waku/v2/protocol/filter/filter_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/waku/v2/protocol/filter/filter_test.go b/waku/v2/protocol/filter/filter_test.go index 62dd3825d..be5a0e2cf 100644 --- a/waku/v2/protocol/filter/filter_test.go +++ b/waku/v2/protocol/filter/filter_test.go @@ -553,13 +553,13 @@ func (s *FilterTestSuite) TestStaticSharding() { s.ctx = ctx s.ctxCancel = cancel - // Gen pubsub topic "/waku/2/rs/1024/0" - s.testTopic = protocol.NewStaticShardingPubsubTopic(uint16(1024), uint16(100)).String() + // Gen pubsub topic "/waku/2/rs/100/100" + s.testTopic = protocol.NewStaticShardingPubsubTopic(uint16(100), uint16(100)).String() // Pubsub topics for neg. test cases testTopics := []string{ "/waku/2/rs/100/1024", - "/waku/2/rs/1024/101", + "/waku/2/rs/100/101", } s.testContentTopic = "/test/10/my-filter-app/proto" From 12a8923d6270d4e185a683607bb51fe1d3beb987 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 2 May 2024 15:23:33 +0800 Subject: [PATCH 34/97] fix: start s2 store with different sharded topic --- waku/v2/protocol/store/waku_store_protocol_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/waku/v2/protocol/store/waku_store_protocol_test.go b/waku/v2/protocol/store/waku_store_protocol_test.go index db4a17281..db5717354 100644 --- a/waku/v2/protocol/store/waku_store_protocol_test.go +++ b/waku/v2/protocol/store/waku_store_protocol_test.go @@ -437,7 +437,7 @@ func TestWakuStoreWithStaticSharding(t *testing.T) { s1.SetHost(host1) // Prepare pubsub topics for static sharding - pubSubTopics := protocol.ShardsToTopics(20, []int{1, 2, 3}) + pubSubTopics := protocol.ShardsToTopics(20, []int{1, 2, 3, 4}) // Prepare test messages now := *utils.GetUnixEpoch() @@ -469,8 +469,8 @@ func TestWakuStoreWithStaticSharding(t *testing.T) { s2 := NewWakuStore(MemoryDB(t), nil, timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) s2.SetHost(host2) - // Subscribe to DefaultWakuTopic at store2 + host2 - sub1 := relay.NewSubscription(protocol.NewContentFilter(relay.DefaultWakuTopic)) + // Subscribe to different pubSubTopics[3] at store2 + host2 + sub1 := relay.NewSubscription(protocol.NewContentFilter(pubSubTopics[3])) err = s2.Start(ctx, sub1) require.NoError(t, err) From 73a90e085c8b90418abab36e2abea17abee74d58 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 2 May 2024 17:30:38 +0800 Subject: [PATCH 35/97] fix: change node2 to lightpush receiver --- .../protocol/lightpush/waku_lightpush_test.go | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/waku/v2/protocol/lightpush/waku_lightpush_test.go b/waku/v2/protocol/lightpush/waku_lightpush_test.go index 151e05308..010a128dd 100644 --- a/waku/v2/protocol/lightpush/waku_lightpush_test.go +++ b/waku/v2/protocol/lightpush/waku_lightpush_test.go @@ -40,6 +40,19 @@ func makeWakuRelay(t *testing.T, pusubTopic string) (*relay.WakuRelay, *relay.Su return relay, sub[0], host } +func makeWakuLightPush(t *testing.T, relay *relay.WakuRelay, pm *peermanager.PeerManager) (*WakuLightPush, host.Host) { + port, err := tests.FindFreePort(t, "", 5) + require.NoError(t, err) + + host, err := tests.MakeHost(context.Background(), port, rand.Reader) + require.NoError(t, err) + + lightPushNode := NewWakuLightPush(relay, pm, prometheus.DefaultRegisterer, utils.Logger()) + lightPushNode.SetHost(host) + + return lightPushNode, host +} + // Node1: Relay // Node2: Relay+Lightpush // Client that will lightpush a message @@ -327,30 +340,16 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { defer node1.Stop() defer sub1.Unsubscribe() - node2, sub2, host2 := makeWakuRelay(t, pubSubTopic) - defer node2.Stop() - defer sub2.Unsubscribe() - - lightPushNode2 := NewWakuLightPush(node2, nil, prometheus.DefaultRegisterer, utils.Logger()) - lightPushNode2.SetHost(host2) - err := lightPushNode2.Start(ctx) - require.NoError(t, err) - defer lightPushNode2.Stop() + _, host2 := makeWakuLightPush(t, nil, nil) host2.Peerstore().AddAddr(host1.ID(), tests.GetHostAddress(host1), peerstore.PermanentAddrTTL) - err = host2.Peerstore().AddProtocols(host1.ID(), relay.WakuRelayID_v200) + err := host2.Peerstore().AddProtocols(host1.ID(), relay.WakuRelayID_v200) require.NoError(t, err) err = host2.Connect(ctx, host2.Peerstore().PeerInfo(host1.ID())) require.NoError(t, err) - port, err := tests.FindFreePort(t, "", 5) - require.NoError(t, err) - - clientHost, err := tests.MakeHost(context.Background(), port, rand.Reader) - require.NoError(t, err) - client := NewWakuLightPush(nil, nil, prometheus.DefaultRegisterer, utils.Logger()) - client.SetHost(clientHost) + client, clientHost := makeWakuLightPush(t, nil, nil) clientHost.Peerstore().AddAddr(host2.ID(), tests.GetHostAddress(host2), peerstore.PermanentAddrTTL) err = clientHost.Peerstore().AddProtocols(host2.ID(), LightPushID_v20beta1) From fa01d17367d9fbca0c60bb6568822a8225a24ebf Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 2 May 2024 19:02:27 +0800 Subject: [PATCH 36/97] fix: returned node2 to support lightpush and relay --- .../protocol/lightpush/waku_lightpush_test.go | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/waku/v2/protocol/lightpush/waku_lightpush_test.go b/waku/v2/protocol/lightpush/waku_lightpush_test.go index 010a128dd..35bde1d9a 100644 --- a/waku/v2/protocol/lightpush/waku_lightpush_test.go +++ b/waku/v2/protocol/lightpush/waku_lightpush_test.go @@ -40,19 +40,6 @@ func makeWakuRelay(t *testing.T, pusubTopic string) (*relay.WakuRelay, *relay.Su return relay, sub[0], host } -func makeWakuLightPush(t *testing.T, relay *relay.WakuRelay, pm *peermanager.PeerManager) (*WakuLightPush, host.Host) { - port, err := tests.FindFreePort(t, "", 5) - require.NoError(t, err) - - host, err := tests.MakeHost(context.Background(), port, rand.Reader) - require.NoError(t, err) - - lightPushNode := NewWakuLightPush(relay, pm, prometheus.DefaultRegisterer, utils.Logger()) - lightPushNode.SetHost(host) - - return lightPushNode, host -} - // Node1: Relay // Node2: Relay+Lightpush // Client that will lightpush a message @@ -340,16 +327,30 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { defer node1.Stop() defer sub1.Unsubscribe() - _, host2 := makeWakuLightPush(t, nil, nil) + node2, sub2, host2 := makeWakuRelay(t, pubSubTopic) + defer node2.Stop() + defer sub2.Unsubscribe() + + lightPushNode2 := NewWakuLightPush(node2, nil, prometheus.DefaultRegisterer, utils.Logger()) + lightPushNode2.SetHost(host2) + err := lightPushNode2.Start(ctx) + require.NoError(t, err) + defer lightPushNode2.Stop() host2.Peerstore().AddAddr(host1.ID(), tests.GetHostAddress(host1), peerstore.PermanentAddrTTL) - err := host2.Peerstore().AddProtocols(host1.ID(), relay.WakuRelayID_v200) + err = host2.Peerstore().AddProtocols(host1.ID(), relay.WakuRelayID_v200) require.NoError(t, err) err = host2.Connect(ctx, host2.Peerstore().PeerInfo(host1.ID())) require.NoError(t, err) - client, clientHost := makeWakuLightPush(t, nil, nil) + port, err := tests.FindFreePort(t, "", 5) + require.NoError(t, err) + + clientHost, err := tests.MakeHost(context.Background(), port, rand.Reader) + require.NoError(t, err) + client := NewWakuLightPush(nil, nil, prometheus.DefaultRegisterer, utils.Logger()) + client.SetHost(clientHost) clientHost.Peerstore().AddAddr(host2.ID(), tests.GetHostAddress(host2), peerstore.PermanentAddrTTL) err = clientHost.Peerstore().AddProtocols(host2.ID(), LightPushID_v20beta1) @@ -372,5 +373,4 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { _, err = client.Publish(ctx, msg2, WithPubSubTopic("/waku/2/rsv/25/0"), WithPeer(host2.ID())) require.NoError(t, err) tests.WaitForTimeout(t, ctx, 1*time.Second, &wg, sub1.Ch) - } From 093ea363a6ac347c0c424360a34075bfed62a4a7 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 2 May 2024 19:18:29 +0800 Subject: [PATCH 37/97] fix: added comment and improved readability - TestWakuLightPushWithStaticSharding --- .../protocol/lightpush/waku_lightpush_test.go | 47 +++++++++++-------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/waku/v2/protocol/lightpush/waku_lightpush_test.go b/waku/v2/protocol/lightpush/waku_lightpush_test.go index 35bde1d9a..189c21c82 100644 --- a/waku/v2/protocol/lightpush/waku_lightpush_test.go +++ b/waku/v2/protocol/lightpush/waku_lightpush_test.go @@ -319,47 +319,54 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() - // Prepare pubsub topics for static sharding + // Prepare pubsub topic for static sharding pubSubTopic := protocol.NewStaticShardingPubsubTopic(uint16(25), uint16(0)).String() testContentTopic := "/test/10/my-lp-app/proto" - node1, sub1, host1 := makeWakuRelay(t, pubSubTopic) - defer node1.Stop() - defer sub1.Unsubscribe() + // Node topology: clientNode (lightpush client) <-> node2(relay+lightpush server) <-> node3(relay) + // ClientNode + port, err := tests.FindFreePort(t, "", 5) + require.NoError(t, err) + + clientHost, err := tests.MakeHost(context.Background(), port, rand.Reader) + require.NoError(t, err) + client := NewWakuLightPush(nil, nil, prometheus.DefaultRegisterer, utils.Logger()) + client.SetHost(clientHost) + // Node2 node2, sub2, host2 := makeWakuRelay(t, pubSubTopic) defer node2.Stop() defer sub2.Unsubscribe() lightPushNode2 := NewWakuLightPush(node2, nil, prometheus.DefaultRegisterer, utils.Logger()) lightPushNode2.SetHost(host2) - err := lightPushNode2.Start(ctx) + err = lightPushNode2.Start(ctx) require.NoError(t, err) defer lightPushNode2.Stop() - host2.Peerstore().AddAddr(host1.ID(), tests.GetHostAddress(host1), peerstore.PermanentAddrTTL) - err = host2.Peerstore().AddProtocols(host1.ID(), relay.WakuRelayID_v200) - require.NoError(t, err) - - err = host2.Connect(ctx, host2.Peerstore().PeerInfo(host1.ID())) - require.NoError(t, err) + // Node3 + node3, sub3, host3 := makeWakuRelay(t, pubSubTopic) + defer node3.Stop() + defer sub3.Unsubscribe() - port, err := tests.FindFreePort(t, "", 5) + // Add path clientNode (lightpush client) -> node2(relay+lightpush server) + clientHost.Peerstore().AddAddr(host2.ID(), tests.GetHostAddress(host2), peerstore.PermanentAddrTTL) + err = clientHost.Peerstore().AddProtocols(host2.ID(), LightPushID_v20beta1) require.NoError(t, err) - clientHost, err := tests.MakeHost(context.Background(), port, rand.Reader) + // Add path node2(relay+lightpush server) -> node3(relay) + host2.Peerstore().AddAddr(host3.ID(), tests.GetHostAddress(host3), peerstore.PermanentAddrTTL) + err = host2.Peerstore().AddProtocols(host3.ID(), relay.WakuRelayID_v200) require.NoError(t, err) - client := NewWakuLightPush(nil, nil, prometheus.DefaultRegisterer, utils.Logger()) - client.SetHost(clientHost) - clientHost.Peerstore().AddAddr(host2.ID(), tests.GetHostAddress(host2), peerstore.PermanentAddrTTL) - err = clientHost.Peerstore().AddProtocols(host2.ID(), LightPushID_v20beta1) + err = host2.Connect(ctx, host2.Peerstore().PeerInfo(host3.ID())) require.NoError(t, err) + // Create messages msg := tests.CreateWakuMessage(testContentTopic, utils.GetUnixEpoch()) msg2 := tests.CreateWakuMessage(testContentTopic, utils.GetUnixEpoch()) - // Wait for the mesh connection to happen between node1 and node2 + // Wait for the mesh connection to happen between nodes time.Sleep(2 * time.Second) var wg sync.WaitGroup @@ -367,10 +374,10 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { // Check that msg publish has led to message deliver for existing topic _, err = client.Publish(ctx, msg, WithPubSubTopic(pubSubTopic), WithPeer(host2.ID())) require.NoError(t, err) - tests.WaitForMsg(t, 2*time.Second, &wg, sub1.Ch) + tests.WaitForMsg(t, 2*time.Second, &wg, sub3.Ch) // Check that msg2 publish finished without message delivery for unconfigured topic _, err = client.Publish(ctx, msg2, WithPubSubTopic("/waku/2/rsv/25/0"), WithPeer(host2.ID())) require.NoError(t, err) - tests.WaitForTimeout(t, ctx, 1*time.Second, &wg, sub1.Ch) + tests.WaitForTimeout(t, ctx, 1*time.Second, &wg, sub3.Ch) } From dd960ef93dc1c72149e3561d326c77f4721b57b4 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 14:41:28 +0800 Subject: [PATCH 38/97] fix: align clusterID with valid pubsub topics --- waku/v2/node/wakunode2_test.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 28dfe0f6c..61b42a7d4 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -328,8 +328,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() - nodeNativeClusterID := uint16(20) - shardingClusterID := uint16(21) + testClusterID := uint16(20) // Node1 with Relay hostAddr1, err := net.ResolveTCPAddr("tcp", "0.0.0.0:0") @@ -337,22 +336,22 @@ func TestStaticShardingMultipleTopics(t *testing.T) { wakuNode1, err := New( WithHostAddress(hostAddr1), WithWakuRelay(), - WithClusterID(nodeNativeClusterID), + WithClusterID(testClusterID), ) require.NoError(t, err) err = wakuNode1.Start(ctx) require.NoError(t, err) defer wakuNode1.Stop() - pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(shardingClusterID, uint16(0)) + pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(testClusterID, uint16(0)) pubSubTopic1Str := pubSubTopic1.String() contentTopic1 := "/test/2/my-app/sharded" - pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(shardingClusterID, uint16(10)) + pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(testClusterID, uint16(10)) pubSubTopic2Str := pubSubTopic2.String() contentTopic2 := "/test/3/my-app/sharded" - require.Equal(t, nodeNativeClusterID, wakuNode1.ClusterID()) + require.Equal(t, testClusterID, wakuNode1.ClusterID()) r := wakuNode1.Relay() From 2d0af554473395c6349dd833fbeb6fe5ac585c82 Mon Sep 17 00:00:00 2001 From: Prem Chaitanya Prathi Date: Fri, 3 May 2024 15:29:29 +0530 Subject: [PATCH 39/97] chore: fix test to use same shard --- waku/v2/node/wakunode2_test.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 61b42a7d4..89371e0f9 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -4,7 +4,6 @@ import ( "bytes" "context" "fmt" - wenr "github.com/waku-org/go-waku/waku/v2/protocol/enr" "math/big" "math/rand" "net" @@ -13,6 +12,8 @@ import ( "testing" "time" + wenr "github.com/waku-org/go-waku/waku/v2/protocol/enr" + "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/p2p/enode" "github.com/prometheus/client_golang/prometheus" @@ -398,8 +399,9 @@ func TestStaticShardingMultipleTopics(t *testing.T) { // Send another message to non-subscribed pubsub topic, but subscribed content topic msg2 := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message 2") - - _, err = r.Publish(ctx, msg2, relay.WithPubSubTopic("/waku/2/rs/100/321")) + pubSubTopic3 := protocol.NewStaticShardingPubsubTopic(testClusterID, uint16(321)) + pubSubTopic3Str := pubSubTopic3.String() + _, err = r.Publish(ctx, msg2, relay.WithPubSubTopic(pubSubTopic3Str)) require.NoError(t, err) time.Sleep(100 * time.Millisecond) From 77f6917f67d1ee6ff1f6cb0bd4e37d7b9168d846 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 18:59:13 +0800 Subject: [PATCH 40/97] test: ci test --- .github/workflows/ci_test.yml | 168 ++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 .github/workflows/ci_test.yml diff --git a/.github/workflows/ci_test.yml b/.github/workflows/ci_test.yml new file mode 100644 index 000000000..60fafbe9a --- /dev/null +++ b/.github/workflows/ci_test.yml @@ -0,0 +1,168 @@ +name: ci + +on: + pull_request: + push: + branches: + - chore-sharding-tests-update + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + changes: # changes detection + runs-on: ubuntu-latest + permissions: + pull-requests: read + steps: + - uses: actions/checkout@v3 + name: Checkout code + id: checkout + + - uses: dorny/paths-filter@v2 + id: filter + with: + filters: | + common: + - '.github/workflows/**' + - 'Makefile' + - 'libs/**' + - 'go.mod' + - 'go.sum' + - 'flake.nix' + - 'examples/**' + + v2: + - 'waku/**' + - 'cmd/**' + - 'library/**' + - 'tests/**' + + docker: + - 'docker/**' + - 'Dockerfile' + + outputs: + common: ${{ steps.filter.outputs.common }} + v2: ${{ steps.filter.outputs.v2 }} + docker: ${{ steps.filter.outputs.docker }} + + env: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - uses: xom9ikk/dotenv@v2 + with: + path: ".github/" + - run: | + echo "go_version=${{ env.GO_VERSION }}" >> $GITHUB_OUTPUT + + - run: | + VERSION=$(cat ./VERSION) + echo "waku_version=$VERSION" >> $GITHUB_OUTPUT + + golangci: + name: lint + needs: [changes, env] + if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Install Go + uses: actions/setup-go@v4 + with: + go-version: ${{ needs.env.outputs.go_version }} + cache: false + + - name: Execute golangci-lint + uses: golangci/golangci-lint-action@v3 + with: + version: v1.55.2 + args: --deadline=5m + + build: + needs: [changes, env] + if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest] + runs-on: ${{ matrix.os }} + timeout-minutes: 60 + + name: build-${{ matrix.os }} + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Get submodules hash + id: submodules + run: | + echo "hash=$(git submodule status | awk '{print $1}' | sort | shasum -a 256 | sed 's/[ -]*//g')" >> $GITHUB_OUTPUT + + - name: Cache submodules + uses: actions/cache@v3 + with: + path: | + vendor/ + .git/modules + key: ${{ runner.os }}-vendor-modules-${{ steps.submodules.outputs.hash }} + + - name: Install Go + uses: actions/setup-go@v4 + with: + go-version: ${{ needs.env.outputs.go_version }} + cache: false + + - name: Build binary + run: make + + - name: Build library + run: make static-library dynamic-library + + - name: Build examples + run: make build-example + + test: + needs: [changes, env] + if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} + strategy: + matrix: + tests: [test-ci, test-with-race] + runs-on: ubuntu-latest + timeout-minutes: 60 + + name: ${{ matrix.tests }} + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Get submodules hash + id: submodules + run: | + echo "hash=$(git submodule status | awk '{print $1}' | sort | shasum -a 256 | sed 's/[ -]*//g')" >> $GITHUB_OUTPUT + + - name: Cache submodules + uses: actions/cache@v3 + with: + path: | + vendor/ + .git/modules + key: ${{ runner.os }}-vendor-modules-${{ steps.submodules.outputs.hash }} + + - name: Install Go + uses: actions/setup-go@v4 + with: + go-version: ${{ needs.env.outputs.go_version }} + cache: false + + - name: "Run tests" + run: make ${{ matrix.tests }} + + - name: "Run onchain-tests" + run: | + docker compose -f .github/docker-compose/ganache.yml up -d + make test-onchain${{ matrix.tests == 'test-with-race' && '-with-race' || '' }} From 6a72e6d83c7f9d42bf4df48c6b74d4299932df03 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:11:11 +0800 Subject: [PATCH 41/97] test: ci test - try without mac os --- .github/workflows/ci_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_test.yml b/.github/workflows/ci_test.yml index 60fafbe9a..77babeaa4 100644 --- a/.github/workflows/ci_test.yml +++ b/.github/workflows/ci_test.yml @@ -89,7 +89,7 @@ jobs: if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} strategy: matrix: - os: [ubuntu-latest, macos-latest] + os: [ubuntu-latest] runs-on: ${{ matrix.os }} timeout-minutes: 60 From 1afb587c15505e7045d069eb166f648385baa052 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:27:09 +0800 Subject: [PATCH 42/97] test: copy go mod from PR1091 --- go.mod | 65 +++++++++++++++++++++++++++------------------------------- 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/go.mod b/go.mod index a9996f5cc..32f07116d 100644 --- a/go.mod +++ b/go.mod @@ -1,31 +1,30 @@ module github.com/waku-org/go-waku -go 1.20 +go 1.21 require ( github.com/btcsuite/btcd/btcec/v2 v2.2.1 github.com/cruxic/go-hmac-drbg v0.0.0-20170206035330-84c46983886d github.com/ethereum/go-ethereum v1.11.6 github.com/golang-migrate/migrate/v4 v4.15.2 - github.com/golang/protobuf v1.5.3 // indirect github.com/ipfs/go-ds-sql v0.3.0 github.com/ipfs/go-log/v2 v2.5.1 - github.com/libp2p/go-libp2p v0.32.2 + github.com/libp2p/go-libp2p v0.33.2 github.com/libp2p/go-libp2p-pubsub v0.10.0 github.com/libp2p/go-msgio v0.3.0 github.com/mattn/go-sqlite3 v1.14.17 - github.com/multiformats/go-multiaddr v0.12.0 + github.com/multiformats/go-multiaddr v0.12.3 github.com/stretchr/testify v1.8.4 github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a // indirect github.com/urfave/cli/v2 v2.24.4 go.opencensus.io v0.24.0 - go.uber.org/zap v1.26.0 - golang.org/x/sync v0.4.0 // indirect + go.uber.org/zap v1.27.0 + golang.org/x/sync v0.6.0 // indirect ) require ( github.com/waku-org/go-discover v0.0.0-20240321122731-fe708039d53f - golang.org/x/text v0.13.0 // indirect + golang.org/x/text v0.14.0 // indirect ) require ( @@ -47,7 +46,7 @@ require ( github.com/deckarep/golang-set/v2 v2.1.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b // indirect + github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 // indirect github.com/hashicorp/golang-lru/arc/v2 v2.0.5 // indirect github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c // indirect @@ -61,18 +60,16 @@ require ( github.com/jackc/pgtype v1.6.2 // indirect github.com/jackc/pgx/v4 v4.10.1 // indirect github.com/lib/pq v1.10.4 // indirect - github.com/onsi/ginkgo/v2 v2.13.0 // indirect + github.com/onsi/ginkgo/v2 v2.15.0 // indirect github.com/quic-go/qpack v0.4.0 // indirect - github.com/quic-go/qtls-go1-20 v0.3.4 // indirect - github.com/quic-go/quic-go v0.39.4 // indirect + github.com/quic-go/quic-go v0.42.0 // indirect github.com/quic-go/webtransport-go v0.6.0 // indirect - github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/waku-org/go-zerokit-rln-apple v0.0.0-20230916172309-ee0ee61dde2b // indirect github.com/waku-org/go-zerokit-rln-arm v0.0.0-20230916171929-1dd9494ff065 // indirect github.com/waku-org/go-zerokit-rln-x86_64 v0.0.0-20230916171518-2a77c3734dd1 // indirect go.uber.org/dig v1.17.1 // indirect go.uber.org/fx v1.20.1 // indirect - go.uber.org/mock v0.3.0 // indirect + go.uber.org/mock v0.4.0 // indirect golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect ) @@ -90,7 +87,7 @@ require ( github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/elastic/gosigar v0.14.2 // indirect - github.com/flynn/noise v1.0.0 // indirect + github.com/flynn/noise v1.1.0 // indirect github.com/francoispqt/gojay v1.2.13 // indirect github.com/go-ole/go-ole v1.2.1 // indirect github.com/go-stack/stack v1.8.1 // indirect @@ -99,8 +96,8 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/gopacket v1.1.19 // indirect - github.com/google/uuid v1.3.0 - github.com/gorilla/websocket v1.5.0 // indirect + github.com/google/uuid v1.4.0 + github.com/gorilla/websocket v1.5.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d @@ -110,13 +107,12 @@ require ( github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect github.com/jbenet/goprocess v0.1.4 // indirect - github.com/klauspost/compress v1.17.2 // indirect - github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/klauspost/compress v1.17.6 // indirect + github.com/klauspost/cpuid/v2 v2.2.7 // indirect github.com/koron/go-ssdp v0.0.4 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/libp2p/go-cidranger v1.1.0 // indirect github.com/libp2p/go-flow-metrics v0.1.0 // indirect - github.com/libp2p/go-libp2p-asn-util v0.3.0 // indirect + github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect github.com/libp2p/go-mplex v0.7.0 // indirect github.com/libp2p/go-nat v0.2.0 // indirect github.com/libp2p/go-netroute v0.2.1 // indirect @@ -124,8 +120,7 @@ require ( github.com/libp2p/go-yamux/v4 v4.0.1 // indirect github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect - github.com/miekg/dns v1.1.56 // indirect + github.com/miekg/dns v1.1.58 // indirect github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect github.com/minio/sha256-simd v1.0.1 // indirect @@ -139,14 +134,14 @@ require ( github.com/multiformats/go-multihash v0.2.3 // indirect github.com/multiformats/go-multistream v0.5.0 github.com/multiformats/go-varint v0.0.7 // indirect - github.com/opencontainers/runtime-spec v1.1.0 // indirect + github.com/opencontainers/runtime-spec v1.2.0 // indirect github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.14.0 - github.com/prometheus/client_model v0.4.0 - github.com/prometheus/common v0.42.0 // indirect - github.com/prometheus/procfs v0.9.0 // indirect + github.com/prometheus/client_golang v1.18.0 + github.com/prometheus/client_model v0.6.0 + github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect github.com/raulk/go-watchdog v1.3.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect @@ -156,14 +151,14 @@ require ( github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.14.0 // indirect - golang.org/x/exp v0.0.0-20231006140011-7918f672742d - golang.org/x/mod v0.13.0 // indirect - golang.org/x/net v0.17.0 // indirect - golang.org/x/sys v0.13.0 - golang.org/x/time v0.0.0-20220922220347-f3bd1da661af - golang.org/x/tools v0.14.0 // indirect - google.golang.org/protobuf v1.31.0 + golang.org/x/crypto v0.19.0 // indirect + golang.org/x/exp v0.0.0-20240213143201-ec583247a57a + golang.org/x/mod v0.15.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sys v0.17.0 + golang.org/x/time v0.5.0 + golang.org/x/tools v0.18.0 // indirect + google.golang.org/protobuf v1.32.0 gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect From 3a1a7e6c9311857638c51ef0e193af6c3bb223ea Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:29:42 +0800 Subject: [PATCH 43/97] test: copy go sum from PR1091 --- go.sum | 165 ++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 98 insertions(+), 67 deletions(-) diff --git a/go.sum b/go.sum index 0ebdd1254..22f222f9a 100644 --- a/go.sum +++ b/go.sum @@ -59,6 +59,7 @@ gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zum git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M= +github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-storage-blob-go v0.14.0/go.mod h1:SMqIBi+SuiQH32bvyjngEewEeXoPfKMgWlBDaYf6fck= @@ -86,6 +87,7 @@ github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= +github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= @@ -121,6 +123,7 @@ github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:H github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c3fqvvgKm5o= +github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -218,6 +221,7 @@ github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= +github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -255,10 +259,14 @@ github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:z github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= +github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811 h1:ytcWPaNPhNoGMWEhDvS3zToKcDpRsLuRolQJBVGdozk= +github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811/go.mod h1:Nb5lgvnQ2+oGlE/EyZy4+2/CxRh9KfvCXnag1vtpxVM= github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= +github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= @@ -405,12 +413,15 @@ github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6Uh github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI= github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/denisenkom/go-mssqldb v0.10.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= +github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= github.com/dgraph-io/ristretto v0.0.2 h1:a5WaUrDa0qm0YrAAS1tUykT5El3kt62KNZZeMxQn3po= +github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= @@ -445,6 +456,7 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= @@ -469,9 +481,10 @@ github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQL github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= +github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= -github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= +github.com/flynn/noise v1.1.0 h1:KjPQoQCEFdZDiP03phOvGi11+SVVhBG2wOWAorLsstg= +github.com/flynn/noise v1.1.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= @@ -491,8 +504,10 @@ github.com/gabriel-vasile/mimetype v1.3.1/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmx github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= +github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= @@ -520,7 +535,8 @@ github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTg github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E= @@ -582,6 +598,7 @@ github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= @@ -597,6 +614,7 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= +github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-migrate/migrate/v4 v4.15.2 h1:vU+M05vs6jWHKDdmE1Ecwj0BznygFc4QsdRe2E/L7kc= github.com/golang-migrate/migrate/v4 v4.15.2/go.mod h1:f2toGLkYqD3JH+Todi4aZ2ZdbeUNx4sIwiOK96rE9Lw= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= @@ -661,7 +679,8 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-github/v39 v39.2.0/go.mod h1:C1s8C5aCC9L+JXIYpJM5GYytdX52vC1bLvHEF1IhBrE= @@ -691,15 +710,16 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b h1:RMpPgZTSApbPf7xaVel+QkoGPRLFLrwFO89uDUHEGf0= -github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= +github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 h1:E/LAvt58di64hlYjx7AsNS6C/ysHWYo+2qPCZKTQhRo= +github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -718,8 +738,8 @@ github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB7 github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= @@ -737,6 +757,7 @@ github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brv github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= +github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= @@ -764,6 +785,7 @@ github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0m github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= +github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c h1:DZfsyhDK1hnSS5lH8l+JggqzEleHteTYfutAiVlSUM8= github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -787,7 +809,9 @@ github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8 github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= github.com/ipfs/go-ds-badger v0.3.0 h1:xREL3V0EH9S219kFFueOYJJTcjgNSZ2HY1iSvN7U1Ro= +github.com/ipfs/go-ds-badger v0.3.0/go.mod h1:1ke6mXNqeV8K3y5Ak2bAA0osoTfmxUdupVCGm4QUIek= github.com/ipfs/go-ds-leveldb v0.5.0 h1:s++MEBbD3ZKc9/8/njrn4flZLnCuY9I79v94gBUNumo= +github.com/ipfs/go-ds-leveldb v0.5.0/go.mod h1:d3XG9RUDzQ6V4SHi8+Xgj9j1XuEk1z82lquxrVbml/Q= github.com/ipfs/go-ds-sql v0.3.0 h1:PLBbl0Rt0tBwWhQ0b3GCQbH+Bgd6aj2srKG6vJ7nYl4= github.com/ipfs/go-ds-sql v0.3.0/go.mod h1:jE3bhmuUnMPXFftc4NEAiPUfgiwiv7fIdjozuX+m1/E= github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= @@ -905,10 +929,10 @@ github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdY github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= -github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= -github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= +github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= +github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -920,6 +944,7 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= @@ -929,6 +954,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/ktrysmt/go-bitbucket v0.6.4/go.mod h1:9u0v3hsd2rqCHRIpbir1oP7F58uo5dq19sBYvuMoyQ4= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -939,19 +965,18 @@ github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk= github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= -github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c= -github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= -github.com/libp2p/go-libp2p v0.32.2 h1:s8GYN4YJzgUoyeYNPdW7JZeZ5Ee31iNaIBfGYMAY4FQ= -github.com/libp2p/go-libp2p v0.32.2/go.mod h1:E0LKe+diV/ZVJVnOJby8VC5xzHF0660osg71skcxJvk= -github.com/libp2p/go-libp2p-asn-util v0.3.0 h1:gMDcMyYiZKkocGXDQ5nsUQyquC9+H+iLEQHwOCZ7s8s= -github.com/libp2p/go-libp2p-asn-util v0.3.0/go.mod h1:B1mcOrKUE35Xq/ASTmQ4tN3LNzVVaMNmq2NACuqyB9w= +github.com/libp2p/go-libp2p v0.33.2 h1:vCdwnFxoGOXMKmaGHlDSnL4bM3fQeW8pgIa9DECnb40= +github.com/libp2p/go-libp2p v0.33.2/go.mod h1:zTeppLuCvUIkT118pFVzA8xzP/p2dJYOMApCkFh0Yww= +github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94= +github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8= github.com/libp2p/go-libp2p-mplex v0.9.0 h1:R58pDRAmuBXkYugbSSXR9wrTX3+1pFM1xP2bLuodIq8= github.com/libp2p/go-libp2p-mplex v0.9.0/go.mod h1:ro1i4kuwiFT+uMPbIDIFkcLs1KRbNp0QwnUXM+P64Og= github.com/libp2p/go-libp2p-pubsub v0.10.0 h1:wS0S5FlISavMaAbxyQn3dxMOe2eegMfswM471RuHJwA= github.com/libp2p/go-libp2p-pubsub v0.10.0/go.mod h1:1OxbaT/pFRO5h+Dpze8hdHQ63R0ke55XTs6b6NwLLkw= github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= +github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg= github.com/libp2p/go-mplex v0.7.0 h1:BDhFZdlk5tbr0oyFq/xv/NPGfjbnrsDam1EvutpBDbY= github.com/libp2p/go-mplex v0.7.0/go.mod h1:rW8ThnRcYWft/Jb2jeORBmPd6xuG3dGxWN/W168L9EU= github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0= @@ -986,6 +1011,7 @@ github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcncea github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= @@ -999,6 +1025,7 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= @@ -1010,14 +1037,12 @@ github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6 github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.56 h1:5imZaSeoRNvpM9SzWNhEcP9QliKiz20/dA2QabIGVnE= -github.com/miekg/dns v1.1.56/go.mod h1:cRm6Oo2C8TY9ZS/TqsSrseAcncm74lfK5G+ikN2SWWY= +github.com/miekg/dns v1.1.58 h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4= +github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c h1:bzE/A84HN25pxAuk9Eej1Kz9OUelF97nAc82bDquQI8= github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= @@ -1040,8 +1065,10 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= +github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= @@ -1072,8 +1099,8 @@ github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9 github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= -github.com/multiformats/go-multiaddr v0.12.0 h1:1QlibTFkoXJuDjjYsMHhE73TnzJQl8FSWatk/0gxGzE= -github.com/multiformats/go-multiaddr v0.12.0/go.mod h1:WmZXgObOQOYp9r3cslLlppkrz1FYSHmE834dfz/lWu8= +github.com/multiformats/go-multiaddr v0.12.3 h1:hVBXvPRcKG0w80VinQ23P5t7czWgg65BmIvQKjDydU8= +github.com/multiformats/go-multiaddr v0.12.3/go.mod h1:sBXrNzucqkFJhvKOiwwLyqamGa/P5EIXNPLovyhQCII= github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= @@ -1108,6 +1135,7 @@ github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+ github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -1124,8 +1152,8 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4= -github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= +github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= +github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -1138,7 +1166,8 @@ github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDs github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= +github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -1163,8 +1192,8 @@ github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.m github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg= -github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= +github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= @@ -1204,15 +1233,15 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= -github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= +github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= -github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= @@ -1222,8 +1251,8 @@ github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+ github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= +github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1237,15 +1266,13 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= -github.com/quic-go/qtls-go1-20 v0.3.4 h1:MfFAPULvst4yoMgY9QmtpYmfij/em7O8UUi+bNVm7Cg= -github.com/quic-go/qtls-go1-20 v0.3.4/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= -github.com/quic-go/quic-go v0.39.4 h1:PelfiuG7wXEffUT2yceiqz5V6Pc0TA5ruOd1LcmFc1s= -github.com/quic-go/quic-go v0.39.4/go.mod h1:T09QsDQWjLiQ74ZmacDfqZmhY/NLnw5BC40MANNNZ1Q= +github.com/quic-go/quic-go v0.42.0 h1:uSfdap0eveIl8KXnipv9K7nlwZ5IqLlYOpJ58u5utpM= +github.com/quic-go/quic-go v0.42.0/go.mod h1:132kz4kL3F9vxhW3CtQJLDVwcFe5wdWeJXXijhsO57M= github.com/quic-go/webtransport-go v0.6.0 h1:CvNsKqc4W2HljHJnoT+rMmbRJybShZ0YPFDD3NxaZLY= github.com/quic-go/webtransport-go v0.6.0/go.mod h1:9KjU4AEBqEQidGHNDkZrb8CAa1abRaosM2yGOyiikEc= github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= @@ -1260,6 +1287,7 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= @@ -1346,6 +1374,7 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= +github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -1385,6 +1414,7 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= +github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= @@ -1500,9 +1530,10 @@ go.uber.org/fx v1.20.1/go.mod h1:iSYNbHf2y55acNCwCXKx7LbWb5WG1Bnue5RDXz1OREg= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= -go.uber.org/mock v0.3.0 h1:3mUxI1No2/60yUYax92Pt8eNOEecx2D3lcXZh2NEZJo= -go.uber.org/mock v0.3.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= +go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= @@ -1513,8 +1544,8 @@ go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1545,8 +1576,8 @@ golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1561,8 +1592,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= +golang.org/x/exp v0.0.0-20240213143201-ec583247a57a h1:HinSgX1tJRX3KsL//Gxynpw5CTOAIPhgL4W8PNiIpVE= +golang.org/x/exp v0.0.0-20240213143201-ec583247a57a/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1597,8 +1628,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1669,8 +1700,8 @@ golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220111093109-d55c255bac03/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/oauth2 v0.0.0-20180227000427-d7d64896b5ff/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1704,8 +1735,8 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180224232135-f6cff0780e54/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1837,8 +1868,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1853,8 +1884,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1864,8 +1895,8 @@ golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220922220347-f3bd1da661af h1:Yx9k8YCG3dvF87UAn2tu2HQLf2dt/eR1bXxpLMWeH+Y= -golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1946,8 +1977,8 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2134,8 +2165,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From a05971b533262210b8bce3847a4b0c7cace4bca7 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:37:16 +0800 Subject: [PATCH 44/97] Revert "test: copy go sum from PR1091" This reverts commit 3a1a7e6c9311857638c51ef0e193af6c3bb223ea. --- go.sum | 165 +++++++++++++++++++++++---------------------------------- 1 file changed, 67 insertions(+), 98 deletions(-) diff --git a/go.sum b/go.sum index 22f222f9a..0ebdd1254 100644 --- a/go.sum +++ b/go.sum @@ -59,7 +59,6 @@ gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zum git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M= -github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-storage-blob-go v0.14.0/go.mod h1:SMqIBi+SuiQH32bvyjngEewEeXoPfKMgWlBDaYf6fck= @@ -87,7 +86,6 @@ github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= -github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= @@ -123,7 +121,6 @@ github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:H github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c3fqvvgKm5o= -github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -221,7 +218,6 @@ github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= -github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -259,14 +255,10 @@ github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:z github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= -github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= -github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811 h1:ytcWPaNPhNoGMWEhDvS3zToKcDpRsLuRolQJBVGdozk= -github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811/go.mod h1:Nb5lgvnQ2+oGlE/EyZy4+2/CxRh9KfvCXnag1vtpxVM= github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= -github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= @@ -413,15 +405,12 @@ github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6Uh github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI= github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= -github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/denisenkom/go-mssqldb v0.10.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= -github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= github.com/dgraph-io/ristretto v0.0.2 h1:a5WaUrDa0qm0YrAAS1tUykT5El3kt62KNZZeMxQn3po= -github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= @@ -456,7 +445,6 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= @@ -481,10 +469,9 @@ github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQL github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/flynn/noise v1.1.0 h1:KjPQoQCEFdZDiP03phOvGi11+SVVhBG2wOWAorLsstg= -github.com/flynn/noise v1.1.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= +github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= +github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= @@ -504,10 +491,8 @@ github.com/gabriel-vasile/mimetype v1.3.1/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmx github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= -github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= @@ -535,8 +520,7 @@ github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTg github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= -github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E= @@ -598,7 +582,6 @@ github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= -github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= @@ -614,7 +597,6 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= -github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-migrate/migrate/v4 v4.15.2 h1:vU+M05vs6jWHKDdmE1Ecwj0BznygFc4QsdRe2E/L7kc= github.com/golang-migrate/migrate/v4 v4.15.2/go.mod h1:f2toGLkYqD3JH+Todi4aZ2ZdbeUNx4sIwiOK96rE9Lw= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= @@ -679,8 +661,7 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-github/v39 v39.2.0/go.mod h1:C1s8C5aCC9L+JXIYpJM5GYytdX52vC1bLvHEF1IhBrE= @@ -710,16 +691,15 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 h1:E/LAvt58di64hlYjx7AsNS6C/ysHWYo+2qPCZKTQhRo= -github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= +github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b h1:RMpPgZTSApbPf7xaVel+QkoGPRLFLrwFO89uDUHEGf0= +github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -738,8 +718,8 @@ github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB7 github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= -github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= @@ -757,7 +737,6 @@ github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brv github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= -github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= @@ -785,7 +764,6 @@ github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0m github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= -github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c h1:DZfsyhDK1hnSS5lH8l+JggqzEleHteTYfutAiVlSUM8= github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -809,9 +787,7 @@ github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8 github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= github.com/ipfs/go-ds-badger v0.3.0 h1:xREL3V0EH9S219kFFueOYJJTcjgNSZ2HY1iSvN7U1Ro= -github.com/ipfs/go-ds-badger v0.3.0/go.mod h1:1ke6mXNqeV8K3y5Ak2bAA0osoTfmxUdupVCGm4QUIek= github.com/ipfs/go-ds-leveldb v0.5.0 h1:s++MEBbD3ZKc9/8/njrn4flZLnCuY9I79v94gBUNumo= -github.com/ipfs/go-ds-leveldb v0.5.0/go.mod h1:d3XG9RUDzQ6V4SHi8+Xgj9j1XuEk1z82lquxrVbml/Q= github.com/ipfs/go-ds-sql v0.3.0 h1:PLBbl0Rt0tBwWhQ0b3GCQbH+Bgd6aj2srKG6vJ7nYl4= github.com/ipfs/go-ds-sql v0.3.0/go.mod h1:jE3bhmuUnMPXFftc4NEAiPUfgiwiv7fIdjozuX+m1/E= github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= @@ -929,10 +905,10 @@ github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdY github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= -github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= -github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= +github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -944,7 +920,6 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= @@ -954,7 +929,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/ktrysmt/go-bitbucket v0.6.4/go.mod h1:9u0v3hsd2rqCHRIpbir1oP7F58uo5dq19sBYvuMoyQ4= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -965,18 +939,19 @@ github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk= github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c= +github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= -github.com/libp2p/go-libp2p v0.33.2 h1:vCdwnFxoGOXMKmaGHlDSnL4bM3fQeW8pgIa9DECnb40= -github.com/libp2p/go-libp2p v0.33.2/go.mod h1:zTeppLuCvUIkT118pFVzA8xzP/p2dJYOMApCkFh0Yww= -github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94= -github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8= +github.com/libp2p/go-libp2p v0.32.2 h1:s8GYN4YJzgUoyeYNPdW7JZeZ5Ee31iNaIBfGYMAY4FQ= +github.com/libp2p/go-libp2p v0.32.2/go.mod h1:E0LKe+diV/ZVJVnOJby8VC5xzHF0660osg71skcxJvk= +github.com/libp2p/go-libp2p-asn-util v0.3.0 h1:gMDcMyYiZKkocGXDQ5nsUQyquC9+H+iLEQHwOCZ7s8s= +github.com/libp2p/go-libp2p-asn-util v0.3.0/go.mod h1:B1mcOrKUE35Xq/ASTmQ4tN3LNzVVaMNmq2NACuqyB9w= github.com/libp2p/go-libp2p-mplex v0.9.0 h1:R58pDRAmuBXkYugbSSXR9wrTX3+1pFM1xP2bLuodIq8= github.com/libp2p/go-libp2p-mplex v0.9.0/go.mod h1:ro1i4kuwiFT+uMPbIDIFkcLs1KRbNp0QwnUXM+P64Og= github.com/libp2p/go-libp2p-pubsub v0.10.0 h1:wS0S5FlISavMaAbxyQn3dxMOe2eegMfswM471RuHJwA= github.com/libp2p/go-libp2p-pubsub v0.10.0/go.mod h1:1OxbaT/pFRO5h+Dpze8hdHQ63R0ke55XTs6b6NwLLkw= github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= -github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg= github.com/libp2p/go-mplex v0.7.0 h1:BDhFZdlk5tbr0oyFq/xv/NPGfjbnrsDam1EvutpBDbY= github.com/libp2p/go-mplex v0.7.0/go.mod h1:rW8ThnRcYWft/Jb2jeORBmPd6xuG3dGxWN/W168L9EU= github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0= @@ -1011,7 +986,6 @@ github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcncea github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= @@ -1025,7 +999,6 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= @@ -1037,12 +1010,14 @@ github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6 github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.58 h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4= -github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY= +github.com/miekg/dns v1.1.56 h1:5imZaSeoRNvpM9SzWNhEcP9QliKiz20/dA2QabIGVnE= +github.com/miekg/dns v1.1.56/go.mod h1:cRm6Oo2C8TY9ZS/TqsSrseAcncm74lfK5G+ikN2SWWY= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c h1:bzE/A84HN25pxAuk9Eej1Kz9OUelF97nAc82bDquQI8= github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= @@ -1065,10 +1040,8 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= -github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= @@ -1099,8 +1072,8 @@ github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9 github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= -github.com/multiformats/go-multiaddr v0.12.3 h1:hVBXvPRcKG0w80VinQ23P5t7czWgg65BmIvQKjDydU8= -github.com/multiformats/go-multiaddr v0.12.3/go.mod h1:sBXrNzucqkFJhvKOiwwLyqamGa/P5EIXNPLovyhQCII= +github.com/multiformats/go-multiaddr v0.12.0 h1:1QlibTFkoXJuDjjYsMHhE73TnzJQl8FSWatk/0gxGzE= +github.com/multiformats/go-multiaddr v0.12.0/go.mod h1:WmZXgObOQOYp9r3cslLlppkrz1FYSHmE834dfz/lWu8= github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= @@ -1135,7 +1108,6 @@ github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+ github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -1152,8 +1124,8 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= -github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= +github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4= +github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -1166,8 +1138,7 @@ github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDs github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= -github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -1192,8 +1163,8 @@ github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.m github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= -github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg= +github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= @@ -1233,15 +1204,15 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= +github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= -github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= @@ -1251,8 +1222,8 @@ github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+ github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= +github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1266,13 +1237,15 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= +github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= -github.com/quic-go/quic-go v0.42.0 h1:uSfdap0eveIl8KXnipv9K7nlwZ5IqLlYOpJ58u5utpM= -github.com/quic-go/quic-go v0.42.0/go.mod h1:132kz4kL3F9vxhW3CtQJLDVwcFe5wdWeJXXijhsO57M= +github.com/quic-go/qtls-go1-20 v0.3.4 h1:MfFAPULvst4yoMgY9QmtpYmfij/em7O8UUi+bNVm7Cg= +github.com/quic-go/qtls-go1-20 v0.3.4/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= +github.com/quic-go/quic-go v0.39.4 h1:PelfiuG7wXEffUT2yceiqz5V6Pc0TA5ruOd1LcmFc1s= +github.com/quic-go/quic-go v0.39.4/go.mod h1:T09QsDQWjLiQ74ZmacDfqZmhY/NLnw5BC40MANNNZ1Q= github.com/quic-go/webtransport-go v0.6.0 h1:CvNsKqc4W2HljHJnoT+rMmbRJybShZ0YPFDD3NxaZLY= github.com/quic-go/webtransport-go v0.6.0/go.mod h1:9KjU4AEBqEQidGHNDkZrb8CAa1abRaosM2yGOyiikEc= github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= @@ -1287,7 +1260,6 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= -github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= @@ -1374,7 +1346,6 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= -github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -1414,7 +1385,6 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= -github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= @@ -1530,10 +1500,9 @@ go.uber.org/fx v1.20.1/go.mod h1:iSYNbHf2y55acNCwCXKx7LbWb5WG1Bnue5RDXz1OREg= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= -go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= -go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= +go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= +go.uber.org/mock v0.3.0 h1:3mUxI1No2/60yUYax92Pt8eNOEecx2D3lcXZh2NEZJo= +go.uber.org/mock v0.3.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= @@ -1544,8 +1513,8 @@ go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1576,8 +1545,8 @@ golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1592,8 +1561,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240213143201-ec583247a57a h1:HinSgX1tJRX3KsL//Gxynpw5CTOAIPhgL4W8PNiIpVE= -golang.org/x/exp v0.0.0-20240213143201-ec583247a57a/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1628,8 +1597,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= -golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1700,8 +1669,8 @@ golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220111093109-d55c255bac03/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180227000427-d7d64896b5ff/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1735,8 +1704,8 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180224232135-f6cff0780e54/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1868,8 +1837,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1884,8 +1853,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1895,8 +1864,8 @@ golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af h1:Yx9k8YCG3dvF87UAn2tu2HQLf2dt/eR1bXxpLMWeH+Y= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1977,8 +1946,8 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= -golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2165,8 +2134,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 0741101a55e8b5fb2907173b678e714f1ecd7665 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:37:48 +0800 Subject: [PATCH 45/97] Revert "test: copy go mod from PR1091" This reverts commit 1afb587c15505e7045d069eb166f648385baa052. --- go.mod | 65 +++++++++++++++++++++++++++++++--------------------------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/go.mod b/go.mod index 32f07116d..a9996f5cc 100644 --- a/go.mod +++ b/go.mod @@ -1,30 +1,31 @@ module github.com/waku-org/go-waku -go 1.21 +go 1.20 require ( github.com/btcsuite/btcd/btcec/v2 v2.2.1 github.com/cruxic/go-hmac-drbg v0.0.0-20170206035330-84c46983886d github.com/ethereum/go-ethereum v1.11.6 github.com/golang-migrate/migrate/v4 v4.15.2 + github.com/golang/protobuf v1.5.3 // indirect github.com/ipfs/go-ds-sql v0.3.0 github.com/ipfs/go-log/v2 v2.5.1 - github.com/libp2p/go-libp2p v0.33.2 + github.com/libp2p/go-libp2p v0.32.2 github.com/libp2p/go-libp2p-pubsub v0.10.0 github.com/libp2p/go-msgio v0.3.0 github.com/mattn/go-sqlite3 v1.14.17 - github.com/multiformats/go-multiaddr v0.12.3 + github.com/multiformats/go-multiaddr v0.12.0 github.com/stretchr/testify v1.8.4 github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a // indirect github.com/urfave/cli/v2 v2.24.4 go.opencensus.io v0.24.0 - go.uber.org/zap v1.27.0 - golang.org/x/sync v0.6.0 // indirect + go.uber.org/zap v1.26.0 + golang.org/x/sync v0.4.0 // indirect ) require ( github.com/waku-org/go-discover v0.0.0-20240321122731-fe708039d53f - golang.org/x/text v0.14.0 // indirect + golang.org/x/text v0.13.0 // indirect ) require ( @@ -46,7 +47,7 @@ require ( github.com/deckarep/golang-set/v2 v2.1.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 // indirect + github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b // indirect github.com/hashicorp/golang-lru/arc/v2 v2.0.5 // indirect github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c // indirect @@ -60,16 +61,18 @@ require ( github.com/jackc/pgtype v1.6.2 // indirect github.com/jackc/pgx/v4 v4.10.1 // indirect github.com/lib/pq v1.10.4 // indirect - github.com/onsi/ginkgo/v2 v2.15.0 // indirect + github.com/onsi/ginkgo/v2 v2.13.0 // indirect github.com/quic-go/qpack v0.4.0 // indirect - github.com/quic-go/quic-go v0.42.0 // indirect + github.com/quic-go/qtls-go1-20 v0.3.4 // indirect + github.com/quic-go/quic-go v0.39.4 // indirect github.com/quic-go/webtransport-go v0.6.0 // indirect + github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/waku-org/go-zerokit-rln-apple v0.0.0-20230916172309-ee0ee61dde2b // indirect github.com/waku-org/go-zerokit-rln-arm v0.0.0-20230916171929-1dd9494ff065 // indirect github.com/waku-org/go-zerokit-rln-x86_64 v0.0.0-20230916171518-2a77c3734dd1 // indirect go.uber.org/dig v1.17.1 // indirect go.uber.org/fx v1.20.1 // indirect - go.uber.org/mock v0.4.0 // indirect + go.uber.org/mock v0.3.0 // indirect golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect ) @@ -87,7 +90,7 @@ require ( github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/elastic/gosigar v0.14.2 // indirect - github.com/flynn/noise v1.1.0 // indirect + github.com/flynn/noise v1.0.0 // indirect github.com/francoispqt/gojay v1.2.13 // indirect github.com/go-ole/go-ole v1.2.1 // indirect github.com/go-stack/stack v1.8.1 // indirect @@ -96,8 +99,8 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/gopacket v1.1.19 // indirect - github.com/google/uuid v1.4.0 - github.com/gorilla/websocket v1.5.1 // indirect + github.com/google/uuid v1.3.0 + github.com/gorilla/websocket v1.5.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d @@ -107,12 +110,13 @@ require ( github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect github.com/jbenet/goprocess v0.1.4 // indirect - github.com/klauspost/compress v1.17.6 // indirect - github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/klauspost/compress v1.17.2 // indirect + github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/koron/go-ssdp v0.0.4 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/libp2p/go-cidranger v1.1.0 // indirect github.com/libp2p/go-flow-metrics v0.1.0 // indirect - github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect + github.com/libp2p/go-libp2p-asn-util v0.3.0 // indirect github.com/libp2p/go-mplex v0.7.0 // indirect github.com/libp2p/go-nat v0.2.0 // indirect github.com/libp2p/go-netroute v0.2.1 // indirect @@ -120,7 +124,8 @@ require ( github.com/libp2p/go-yamux/v4 v4.0.1 // indirect github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/miekg/dns v1.1.58 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/miekg/dns v1.1.56 // indirect github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect github.com/minio/sha256-simd v1.0.1 // indirect @@ -134,14 +139,14 @@ require ( github.com/multiformats/go-multihash v0.2.3 // indirect github.com/multiformats/go-multistream v0.5.0 github.com/multiformats/go-varint v0.0.7 // indirect - github.com/opencontainers/runtime-spec v1.2.0 // indirect + github.com/opencontainers/runtime-spec v1.1.0 // indirect github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.18.0 - github.com/prometheus/client_model v0.6.0 - github.com/prometheus/common v0.47.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/client_golang v1.14.0 + github.com/prometheus/client_model v0.4.0 + github.com/prometheus/common v0.42.0 // indirect + github.com/prometheus/procfs v0.9.0 // indirect github.com/raulk/go-watchdog v1.3.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect @@ -151,14 +156,14 @@ require ( github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect - golang.org/x/exp v0.0.0-20240213143201-ec583247a57a - golang.org/x/mod v0.15.0 // indirect - golang.org/x/net v0.21.0 // indirect - golang.org/x/sys v0.17.0 - golang.org/x/time v0.5.0 - golang.org/x/tools v0.18.0 // indirect - google.golang.org/protobuf v1.32.0 + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/exp v0.0.0-20231006140011-7918f672742d + golang.org/x/mod v0.13.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 + golang.org/x/time v0.0.0-20220922220347-f3bd1da661af + golang.org/x/tools v0.14.0 // indirect + google.golang.org/protobuf v1.31.0 gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect From 8968e593d87b3075a3687ec17dc537e40eb2cb7c Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:52:02 +0800 Subject: [PATCH 46/97] test: update go mod --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index a9996f5cc..1e9fb8fad 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/waku-org/go-waku -go 1.20 +go 1.21 require ( github.com/btcsuite/btcd/btcec/v2 v2.2.1 From a047dd8d1722cb7632b07b19dc2e8447d4f9207f Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:54:06 +0800 Subject: [PATCH 47/97] test: delete ci_test --- .github/workflows/ci_test.yml | 168 ---------------------------------- 1 file changed, 168 deletions(-) delete mode 100644 .github/workflows/ci_test.yml diff --git a/.github/workflows/ci_test.yml b/.github/workflows/ci_test.yml deleted file mode 100644 index 77babeaa4..000000000 --- a/.github/workflows/ci_test.yml +++ /dev/null @@ -1,168 +0,0 @@ -name: ci - -on: - pull_request: - push: - branches: - - chore-sharding-tests-update - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - changes: # changes detection - runs-on: ubuntu-latest - permissions: - pull-requests: read - steps: - - uses: actions/checkout@v3 - name: Checkout code - id: checkout - - - uses: dorny/paths-filter@v2 - id: filter - with: - filters: | - common: - - '.github/workflows/**' - - 'Makefile' - - 'libs/**' - - 'go.mod' - - 'go.sum' - - 'flake.nix' - - 'examples/**' - - v2: - - 'waku/**' - - 'cmd/**' - - 'library/**' - - 'tests/**' - - docker: - - 'docker/**' - - 'Dockerfile' - - outputs: - common: ${{ steps.filter.outputs.common }} - v2: ${{ steps.filter.outputs.v2 }} - docker: ${{ steps.filter.outputs.docker }} - - env: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: xom9ikk/dotenv@v2 - with: - path: ".github/" - - run: | - echo "go_version=${{ env.GO_VERSION }}" >> $GITHUB_OUTPUT - - - run: | - VERSION=$(cat ./VERSION) - echo "waku_version=$VERSION" >> $GITHUB_OUTPUT - - golangci: - name: lint - needs: [changes, env] - if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Install Go - uses: actions/setup-go@v4 - with: - go-version: ${{ needs.env.outputs.go_version }} - cache: false - - - name: Execute golangci-lint - uses: golangci/golangci-lint-action@v3 - with: - version: v1.55.2 - args: --deadline=5m - - build: - needs: [changes, env] - if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} - strategy: - matrix: - os: [ubuntu-latest] - runs-on: ${{ matrix.os }} - timeout-minutes: 60 - - name: build-${{ matrix.os }} - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Get submodules hash - id: submodules - run: | - echo "hash=$(git submodule status | awk '{print $1}' | sort | shasum -a 256 | sed 's/[ -]*//g')" >> $GITHUB_OUTPUT - - - name: Cache submodules - uses: actions/cache@v3 - with: - path: | - vendor/ - .git/modules - key: ${{ runner.os }}-vendor-modules-${{ steps.submodules.outputs.hash }} - - - name: Install Go - uses: actions/setup-go@v4 - with: - go-version: ${{ needs.env.outputs.go_version }} - cache: false - - - name: Build binary - run: make - - - name: Build library - run: make static-library dynamic-library - - - name: Build examples - run: make build-example - - test: - needs: [changes, env] - if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} - strategy: - matrix: - tests: [test-ci, test-with-race] - runs-on: ubuntu-latest - timeout-minutes: 60 - - name: ${{ matrix.tests }} - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Get submodules hash - id: submodules - run: | - echo "hash=$(git submodule status | awk '{print $1}' | sort | shasum -a 256 | sed 's/[ -]*//g')" >> $GITHUB_OUTPUT - - - name: Cache submodules - uses: actions/cache@v3 - with: - path: | - vendor/ - .git/modules - key: ${{ runner.os }}-vendor-modules-${{ steps.submodules.outputs.hash }} - - - name: Install Go - uses: actions/setup-go@v4 - with: - go-version: ${{ needs.env.outputs.go_version }} - cache: false - - - name: "Run tests" - run: make ${{ matrix.tests }} - - - name: "Run onchain-tests" - run: | - docker compose -f .github/docker-compose/ganache.yml up -d - make test-onchain${{ matrix.tests == 'test-with-race' && '-with-race' || '' }} From 01803ded829b323c1955f9b58aa073cdf99d7ae4 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:58:06 +0800 Subject: [PATCH 48/97] Revert "test: update go mod" This reverts commit 8968e593d87b3075a3687ec17dc537e40eb2cb7c. --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 1e9fb8fad..a9996f5cc 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/waku-org/go-waku -go 1.21 +go 1.20 require ( github.com/btcsuite/btcd/btcec/v2 v2.2.1 From 28c2a2704af212803919ffe7e2e77963bac5978e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?rich=CE=9Brd?= Date: Fri, 3 May 2024 12:07:03 -0400 Subject: [PATCH 49/97] feat: storeV3 client (#1028) --- .github/.env | 1 - .github/docker-compose/nwaku.yml | 6 + .github/workflows/ci.yml | 27 +- Makefile | 4 + cmd/waku/node.go | 4 +- cmd/waku/server/rest/store.go | 28 +- cmd/waku/server/utils.go | 4 +- examples/basic-relay/main.go | 2 +- examples/chat2/chat.go | 16 +- examples/chat2/exec.go | 4 +- library/lightpush.go | 4 +- library/node.go | 3 +- library/relay.go | 4 +- library/store.go | 32 +- logging/logging.go | 7 +- waku/persistence/store.go | 6 +- waku/persistence/utils/store_test.go | 2 +- waku/v2/node/wakunode2.go | 31 +- waku/v2/node/wakunode2_test.go | 7 +- waku/v2/node/wakuoptions.go | 6 +- waku/v2/node/wakuoptions_test.go | 10 +- waku/v2/peermanager/peer_manager_test.go | 1 - waku/v2/protocol/envelope.go | 6 +- waku/v2/protocol/envelope_test.go | 2 +- waku/v2/protocol/filter/client.go | 6 +- waku/v2/protocol/filter/server.go | 2 +- .../{store => legacy_store}/metrics.go | 2 +- waku/v2/protocol/legacy_store/pb/generate.go | 3 + .../{store => legacy_store}/pb/store.pb.go | 0 .../v2/protocol/legacy_store/pb/validation.go | 68 +++ .../pb/validation_test.go | 0 .../{store => legacy_store}/utils_test.go | 2 +- .../waku_resume_test.go | 2 +- .../waku_store_client.go | 4 +- .../waku_store_client_test.go | 2 +- .../waku_store_common.go | 2 +- .../waku_store_pagination_test.go | 4 +- .../waku_store_persistence_test.go | 2 +- .../waku_store_protocol.go | 4 +- .../waku_store_protocol_test.go | 7 +- .../waku_store_query_test.go | 4 +- waku/v2/protocol/lightpush/waku_lightpush.go | 12 +- waku/v2/protocol/pb/utils.go | 25 +- waku/v2/protocol/pb/utils_test.go | 13 +- waku/v2/protocol/relay/metrics.go | 2 +- waku/v2/protocol/relay/waku_relay.go | 22 +- waku/v2/protocol/relay/waku_relay_test.go | 2 +- waku/v2/protocol/rln/waku_rln_relay.go | 2 +- waku/v2/protocol/store/client.go | 290 ++++++++++++ waku/v2/protocol/store/client_test.go | 224 +++++++++ waku/v2/protocol/store/criteria.go | 36 ++ waku/v2/protocol/store/options.go | 126 +++++ waku/v2/protocol/store/pb/generate.go | 2 +- waku/v2/protocol/store/pb/hash.go | 9 + waku/v2/protocol/store/pb/storev3.pb.go | 445 ++++++++++++++++++ waku/v2/protocol/store/pb/storev3.proto | 41 ++ waku/v2/protocol/store/pb/validation.go | 86 ++-- waku/v2/protocol/store/result.go | 68 +++ 58 files changed, 1556 insertions(+), 180 deletions(-) delete mode 100644 .github/.env create mode 100644 .github/docker-compose/nwaku.yml rename waku/v2/protocol/{store => legacy_store}/metrics.go (98%) create mode 100644 waku/v2/protocol/legacy_store/pb/generate.go rename waku/v2/protocol/{store => legacy_store}/pb/store.pb.go (100%) create mode 100644 waku/v2/protocol/legacy_store/pb/validation.go rename waku/v2/protocol/{store => legacy_store}/pb/validation_test.go (100%) rename waku/v2/protocol/{store => legacy_store}/utils_test.go (96%) rename waku/v2/protocol/{store => legacy_store}/waku_resume_test.go (99%) rename waku/v2/protocol/{store => legacy_store}/waku_store_client.go (99%) rename waku/v2/protocol/{store => legacy_store}/waku_store_client_test.go (99%) rename waku/v2/protocol/{store => legacy_store}/waku_store_common.go (99%) rename waku/v2/protocol/{store => legacy_store}/waku_store_pagination_test.go (99%) rename waku/v2/protocol/{store => legacy_store}/waku_store_persistence_test.go (98%) rename waku/v2/protocol/{store => legacy_store}/waku_store_protocol.go (99%) rename waku/v2/protocol/{store => legacy_store}/waku_store_protocol_test.go (99%) rename waku/v2/protocol/{store => legacy_store}/waku_store_query_test.go (99%) create mode 100644 waku/v2/protocol/store/client.go create mode 100644 waku/v2/protocol/store/client_test.go create mode 100644 waku/v2/protocol/store/criteria.go create mode 100644 waku/v2/protocol/store/options.go create mode 100644 waku/v2/protocol/store/pb/hash.go create mode 100644 waku/v2/protocol/store/pb/storev3.pb.go create mode 100644 waku/v2/protocol/store/pb/storev3.proto create mode 100644 waku/v2/protocol/store/result.go diff --git a/.github/.env b/.github/.env deleted file mode 100644 index 8789b588c..000000000 --- a/.github/.env +++ /dev/null @@ -1 +0,0 @@ -go_version=1.20 diff --git a/.github/docker-compose/nwaku.yml b/.github/docker-compose/nwaku.yml new file mode 100644 index 000000000..b8371066a --- /dev/null +++ b/.github/docker-compose/nwaku.yml @@ -0,0 +1,6 @@ +services: + nwaku: + image: "harbor.status.im/wakuorg/nwaku:latest" + command: ["--relay", "--store", "--nodekey=1122334455667788990011223344556677889900112233445566778899001122"] + ports: + - "60000" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2254a822e..690b3da9b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,13 +52,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - - uses: xom9ikk/dotenv@v2 - with: - path: ".github/" - - run: | - echo "go_version=${{ env.GO_VERSION }}" >> $GITHUB_OUTPUT - - run: | VERSION=$(cat ./VERSION) echo "waku_version=$VERSION" >> $GITHUB_OUTPUT @@ -73,9 +66,9 @@ jobs: uses: actions/checkout@v3 - name: Install Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: - go-version: ${{ needs.env.outputs.go_version }} + go-version-file: 'go.mod' cache: false - name: Execute golangci-lint @@ -112,9 +105,9 @@ jobs: key: ${{ runner.os }}-vendor-modules-${{ steps.submodules.outputs.hash }} - name: Install Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: - go-version: ${{ needs.env.outputs.go_version }} + go-version-file: 'go.mod' cache: false - name: Build binary @@ -154,9 +147,9 @@ jobs: key: ${{ runner.os }}-vendor-modules-${{ steps.submodules.outputs.hash }} - name: Install Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: - go-version: ${{ needs.env.outputs.go_version }} + go-version-file: 'go.mod' cache: false - name: "Run tests" @@ -166,3 +159,11 @@ jobs: run: | docker compose -f .github/docker-compose/ganache.yml up -d make test-onchain${{ matrix.tests == 'test-with-race' && '-with-race' || '' }} + + - name: "Run storev3 tests" + run: | + docker compose -f .github/docker-compose/nwaku.yml up -d + NWAKU_HOST=$(docker-compose -f .github/docker-compose/nwaku.yml port nwaku 60000) + NWAKU_PORT=$(echo $NWAKU_HOST | cut -d ":" -f 2) + sleep 5 + make test-storev3 TEST_STOREV3_NODE="/ip4/127.0.0.1/tcp/${NWAKU_PORT}/p2p/16Uiu2HAmMGhfSTUzKbsjMWxc6T1X4wiTWSF1bEWSLjAukCm7KiHV" diff --git a/Makefile b/Makefile index daf97d1e8..df2f096e6 100644 --- a/Makefile +++ b/Makefile @@ -219,3 +219,7 @@ test-postgres: test-postgres-with-race: ${GOCMD} test -race -p 1 -v -count 1 -tags="${PG_BUILD_TAGS}" github.com/waku-org/go-waku/waku/persistence/... + +TEST_STOREV3_NODE ?= +test-storev3: + TEST_STOREV3_NODE=${TEST_STOREV3_NODE} ${GOCMD} test -p 1 -v -count 1 -tags="${BUILD_TAGS} include_storev3_tests" github.com/waku-org/go-waku/waku/v2/protocol/store/... \ No newline at end of file diff --git a/cmd/waku/node.go b/cmd/waku/node.go index 4a5a352bd..976d10242 100644 --- a/cmd/waku/node.go +++ b/cmd/waku/node.go @@ -46,10 +46,10 @@ import ( "github.com/waku-org/go-waku/waku/v2/node" wprotocol "github.com/waku-org/go-waku/waku/v2/protocol" "github.com/waku-org/go-waku/waku/v2/protocol/filter" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store" "github.com/waku-org/go-waku/waku/v2/protocol/lightpush" "github.com/waku-org/go-waku/waku/v2/protocol/peer_exchange" "github.com/waku-org/go-waku/waku/v2/protocol/relay" - "github.com/waku-org/go-waku/waku/v2/protocol/store" "github.com/waku-org/go-waku/waku/v2/utils" humanize "github.com/dustin/go-humanize" @@ -336,7 +336,7 @@ func Execute(options NodeOptions) error { //For now assuming that static peers added support/listen on all topics specified via commandLine. staticPeers := map[protocol.ID][]multiaddr.Multiaddr{ - store.StoreID_v20beta4: options.Store.Nodes, + legacy_store.StoreID_v20beta4: options.Store.Nodes, lightpush.LightPushID_v20beta1: options.LightPush.Nodes, rendezvous.RendezvousID: options.Rendezvous.Nodes, filter.FilterSubscribeID_v20beta1: options.Filter.Nodes, diff --git a/cmd/waku/server/rest/store.go b/cmd/waku/server/rest/store.go index 723acabfd..f1435eb81 100644 --- a/cmd/waku/server/rest/store.go +++ b/cmd/waku/server/rest/store.go @@ -12,8 +12,8 @@ import ( "github.com/go-chi/chi/v5" "github.com/multiformats/go-multiaddr" "github.com/waku-org/go-waku/waku/v2/node" - "github.com/waku-org/go-waku/waku/v2/protocol/store" - "github.com/waku-org/go-waku/waku/v2/protocol/store/pb" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store/pb" ) type StoreService struct { @@ -55,9 +55,9 @@ func NewStoreService(node *node.WakuNode, m *chi.Mux) *StoreService { return s } -func getStoreParams(r *http.Request) (*store.Query, []store.HistoryRequestOption, error) { - query := &store.Query{} - var options []store.HistoryRequestOption +func getStoreParams(r *http.Request) (*legacy_store.Query, []legacy_store.HistoryRequestOption, error) { + query := &legacy_store.Query{} + var options []legacy_store.HistoryRequestOption var err error peerAddrStr := r.URL.Query().Get("peerAddr") var m multiaddr.Multiaddr @@ -66,12 +66,12 @@ func getStoreParams(r *http.Request) (*store.Query, []store.HistoryRequestOption if err != nil { return nil, nil, err } - options = append(options, store.WithPeerAddr(m)) + options = append(options, legacy_store.WithPeerAddr(m)) } else { // The user didn't specify a peer address and self-node is configured as a store node. // In this case we assume that the user is willing to retrieve the messages stored by // the local/self store node. - options = append(options, store.WithLocalQuery()) + options = append(options, legacy_store.WithLocalQuery()) } query.PubsubTopic = r.URL.Query().Get("pubsubTopic") @@ -131,14 +131,14 @@ func getStoreParams(r *http.Request) (*store.Query, []store.HistoryRequestOption cursor.PubsubTopic = query.PubsubTopic - options = append(options, store.WithCursor(cursor)) + options = append(options, legacy_store.WithCursor(cursor)) } pageSizeStr := r.URL.Query().Get("pageSize") ascendingStr := r.URL.Query().Get("ascending") if ascendingStr != "" || pageSizeStr != "" { ascending := true - pageSize := uint64(store.DefaultPageSize) + pageSize := uint64(legacy_store.DefaultPageSize) if ascendingStr != "" { ascending, err = strconv.ParseBool(ascendingStr) if err != nil { @@ -151,12 +151,12 @@ func getStoreParams(r *http.Request) (*store.Query, []store.HistoryRequestOption if err != nil { return nil, nil, err } - if pageSize > store.MaxPageSize { - pageSize = store.MaxPageSize + if pageSize > legacy_store.MaxPageSize { + pageSize = legacy_store.MaxPageSize } } - options = append(options, store.WithPaging(ascending, pageSize)) + options = append(options, legacy_store.WithPaging(ascending, pageSize)) } return query, options, nil @@ -166,7 +166,7 @@ func writeStoreError(w http.ResponseWriter, code int, err error) { writeResponse(w, StoreResponse{ErrorMessage: err.Error()}, code) } -func toStoreResponse(result *store.Result) StoreResponse { +func toStoreResponse(result *legacy_store.Result) StoreResponse { response := StoreResponse{} cursor := result.Cursor() @@ -202,7 +202,7 @@ func (d *StoreService) getV1Messages(w http.ResponseWriter, r *http.Request) { ctx, cancel := context.WithTimeout(r.Context(), 5*time.Second) defer cancel() - result, err := d.node.Store().Query(ctx, *query, options...) + result, err := d.node.LegacyStore().Query(ctx, *query, options...) if err != nil { writeStoreError(w, http.StatusInternalServerError, err) return diff --git a/cmd/waku/server/utils.go b/cmd/waku/server/utils.go index 865d09009..1c12c8ae1 100644 --- a/cmd/waku/server/utils.go +++ b/cmd/waku/server/utils.go @@ -6,6 +6,7 @@ import ( "github.com/libp2p/go-libp2p/core/protocol" "github.com/waku-org/go-waku/waku/v2/protocol/filter" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store" "github.com/waku-org/go-waku/waku/v2/protocol/lightpush" "github.com/waku-org/go-waku/waku/v2/protocol/relay" "github.com/waku-org/go-waku/waku/v2/protocol/store" @@ -16,7 +17,8 @@ func IsWakuProtocol(protocol protocol.ID) bool { protocol == filter.FilterSubscribeID_v20beta1 || protocol == relay.WakuRelayID_v200 || protocol == lightpush.LightPushID_v20beta1 || - protocol == store.StoreID_v20beta4 + protocol == legacy_store.StoreID_v20beta4 || + protocol == store.StoreQueryID_v300 } type Base64URLByte []byte diff --git a/examples/basic-relay/main.go b/examples/basic-relay/main.go index 86aef53d7..4536701ca 100644 --- a/examples/basic-relay/main.go +++ b/examples/basic-relay/main.go @@ -191,7 +191,7 @@ func write(ctx context.Context, wakuNode *node.WakuNode, contentTopic string, ms if err != nil { log.Error("Error sending a message", zap.Error(err)) } - log.Info("Published msg,", zap.String("data", string(msg.Payload)), logging.HexBytes("hash", hash)) + log.Info("Published msg,", zap.String("data", string(msg.Payload)), logging.HexBytes("hash", hash.Bytes())) } func writeLoop(ctx context.Context, wakuNode *node.WakuNode, contentTopic string) { diff --git a/examples/chat2/chat.go b/examples/chat2/chat.go index 6a65cea4d..48c39d4fd 100644 --- a/examples/chat2/chat.go +++ b/examples/chat2/chat.go @@ -17,11 +17,11 @@ import ( "github.com/waku-org/go-waku/waku/v2/payload" "github.com/waku-org/go-waku/waku/v2/protocol" "github.com/waku-org/go-waku/waku/v2/protocol/filter" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store" "github.com/waku-org/go-waku/waku/v2/protocol/lightpush" wpb "github.com/waku-org/go-waku/waku/v2/protocol/pb" "github.com/waku-org/go-waku/waku/v2/protocol/relay" wrln "github.com/waku-org/go-waku/waku/v2/protocol/rln" - "github.com/waku-org/go-waku/waku/v2/protocol/store" "github.com/waku-org/go-waku/waku/v2/utils" "google.golang.org/protobuf/proto" ) @@ -368,10 +368,10 @@ func (c *Chat) retrieveHistory(connectionWg *sync.WaitGroup) { return } - var storeOpt store.HistoryRequestOption + var storeOpt legacy_store.HistoryRequestOption if c.options.Store.Node == nil { c.ui.InfoMessage("No store node configured. Choosing one at random...") - storeOpt = store.WithAutomaticPeerSelection() + storeOpt = legacy_store.WithAutomaticPeerSelection() } else { peerID, err := (*c.options.Store.Node).ValueForProtocol(multiaddr.P_P2P) if err != nil { @@ -383,7 +383,7 @@ func (c *Chat) retrieveHistory(connectionWg *sync.WaitGroup) { c.ui.ErrorMessage(err) return } - storeOpt = store.WithPeer(pID) + storeOpt = legacy_store.WithPeer(pID) c.ui.InfoMessage(fmt.Sprintf("Querying historic messages from %s", peerID)) } @@ -391,14 +391,14 @@ func (c *Chat) retrieveHistory(connectionWg *sync.WaitGroup) { tCtx, cancel := context.WithTimeout(c.ctx, 10*time.Second) defer cancel() - q := store.Query{ + q := legacy_store.Query{ ContentTopics: []string{options.ContentTopic}, } - response, err := c.node.Store().Query(tCtx, q, - store.WithAutomaticRequestID(), + response, err := c.node.LegacyStore().Query(tCtx, q, + legacy_store.WithAutomaticRequestID(), storeOpt, - store.WithPaging(false, 100)) + legacy_store.WithPaging(false, 100)) if err != nil { c.ui.ErrorMessage(fmt.Errorf("could not query storenode: %w", err)) diff --git a/examples/chat2/exec.go b/examples/chat2/exec.go index 266b03151..2882960c6 100644 --- a/examples/chat2/exec.go +++ b/examples/chat2/exec.go @@ -12,9 +12,9 @@ import ( "github.com/waku-org/go-waku/waku/v2/node" "github.com/waku-org/go-waku/waku/v2/peerstore" "github.com/waku-org/go-waku/waku/v2/protocol/filter" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store" "github.com/waku-org/go-waku/waku/v2/protocol/lightpush" "github.com/waku-org/go-waku/waku/v2/protocol/pb" - "github.com/waku-org/go-waku/waku/v2/protocol/store" ) func execute(options Options) { @@ -77,7 +77,7 @@ func execute(options Options) { return } - err = addPeer(wakuNode, options.Store.Node, options.Relay.Topics.Value(), store.StoreID_v20beta4) + err = addPeer(wakuNode, options.Store.Node, options.Relay.Topics.Value(), legacy_store.StoreID_v20beta4) if err != nil { fmt.Println(err.Error()) return diff --git a/library/lightpush.go b/library/lightpush.go index 1714b2d69..e1e353d2b 100644 --- a/library/lightpush.go +++ b/library/lightpush.go @@ -6,7 +6,6 @@ import ( "github.com/waku-org/go-waku/waku/v2/protocol/pb" - "github.com/ethereum/go-ethereum/common/hexutil" "github.com/libp2p/go-libp2p/core/peer" "github.com/waku-org/go-waku/waku/v2/protocol/lightpush" ) @@ -42,7 +41,8 @@ func lightpushPublish(instance *WakuInstance, msg *pb.WakuMessage, pubsubTopic s } hash, err := instance.node.Lightpush().Publish(ctx, msg, lpOptions...) - return hexutil.Encode(hash), err + + return hash.String(), err } // LightpushPublish is used to publish a WakuMessage in a pubsub topic using Lightpush protocol diff --git a/library/node.go b/library/node.go index d8b787986..f1e49b2c7 100644 --- a/library/node.go +++ b/library/node.go @@ -16,7 +16,6 @@ import ( "go.uber.org/zap" "go.uber.org/zap/zapcore" - "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/crypto" pubsub "github.com/libp2p/go-libp2p-pubsub" "github.com/libp2p/go-libp2p/core/peer" @@ -444,7 +443,7 @@ type subscriptionMsg struct { func toSubscriptionMessage(msg *protocol.Envelope) *subscriptionMsg { return &subscriptionMsg{ - MessageID: hexutil.Encode(msg.Hash()), + MessageID: msg.Hash().String(), PubsubTopic: msg.PubsubTopic(), Message: msg.Message(), } diff --git a/library/relay.go b/library/relay.go index 452b56bc8..666904e5f 100644 --- a/library/relay.go +++ b/library/relay.go @@ -4,7 +4,6 @@ import ( "context" "time" - "github.com/ethereum/go-ethereum/common/hexutil" "github.com/waku-org/go-waku/waku/v2/protocol" "github.com/waku-org/go-waku/waku/v2/protocol/pb" "github.com/waku-org/go-waku/waku/v2/protocol/relay" @@ -40,7 +39,8 @@ func relayPublish(instance *WakuInstance, msg *pb.WakuMessage, pubsubTopic strin } hash, err := instance.node.Relay().Publish(ctx, msg, relay.WithPubSubTopic(pubsubTopic)) - return hexutil.Encode(hash), err + + return hash.String(), err } // RelayPublish publishes a message using waku relay and returns the message ID diff --git a/library/store.go b/library/store.go index 59ad2703d..aaac40cf7 100644 --- a/library/store.go +++ b/library/store.go @@ -4,15 +4,15 @@ import ( "C" "encoding/json" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store/pb" wpb "github.com/waku-org/go-waku/waku/v2/protocol/pb" - "github.com/waku-org/go-waku/waku/v2/protocol/store" - "github.com/waku-org/go-waku/waku/v2/protocol/store/pb" ) import ( "context" "time" "github.com/libp2p/go-libp2p/core/peer" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store" ) type storePagingOptions struct { @@ -35,10 +35,10 @@ type storeMessagesReply struct { Error string `json:"error,omitempty"` } -func queryResponse(ctx context.Context, instance *WakuInstance, args storeMessagesArgs, options []store.HistoryRequestOption) (string, error) { - res, err := instance.node.Store().Query( +func queryResponse(ctx context.Context, instance *WakuInstance, args storeMessagesArgs, options []legacy_store.HistoryRequestOption) (string, error) { + res, err := instance.node.LegacyStore().Query( ctx, - store.Query{ + legacy_store.Query{ PubsubTopic: args.Topic, ContentTopics: args.ContentTopics, StartTime: args.StartTime, @@ -75,10 +75,10 @@ func StoreQuery(instance *WakuInstance, queryJSON string, peerID string, ms int) return "", err } - options := []store.HistoryRequestOption{ - store.WithAutomaticRequestID(), - store.WithPaging(args.PagingOptions.Forward, args.PagingOptions.PageSize), - store.WithCursor(args.PagingOptions.Cursor), + options := []legacy_store.HistoryRequestOption{ + legacy_store.WithAutomaticRequestID(), + legacy_store.WithPaging(args.PagingOptions.Forward, args.PagingOptions.PageSize), + legacy_store.WithCursor(args.PagingOptions.Cursor), } if peerID != "" { @@ -86,9 +86,9 @@ func StoreQuery(instance *WakuInstance, queryJSON string, peerID string, ms int) if err != nil { return "", err } - options = append(options, store.WithPeer(p)) + options = append(options, legacy_store.WithPeer(p)) } else { - options = append(options, store.WithAutomaticPeerSelection()) + options = append(options, legacy_store.WithAutomaticPeerSelection()) } var ctx context.Context @@ -116,11 +116,11 @@ func StoreLocalQuery(instance *WakuInstance, queryJSON string) (string, error) { return "", err } - options := []store.HistoryRequestOption{ - store.WithAutomaticRequestID(), - store.WithPaging(args.PagingOptions.Forward, args.PagingOptions.PageSize), - store.WithCursor(args.PagingOptions.Cursor), - store.WithLocalQuery(), + options := []legacy_store.HistoryRequestOption{ + legacy_store.WithAutomaticRequestID(), + legacy_store.WithPaging(args.PagingOptions.Forward, args.PagingOptions.PageSize), + legacy_store.WithCursor(args.PagingOptions.Cursor), + legacy_store.WithLocalQuery(), } return queryResponse(instance.ctx, instance, args, options) diff --git a/logging/logging.go b/logging/logging.go index fb0295ae3..7e872eefc 100644 --- a/logging/logging.go +++ b/logging/logging.go @@ -15,7 +15,8 @@ import ( "github.com/ethereum/go-ethereum/p2p/enode" "github.com/libp2p/go-libp2p/core/peer" "github.com/multiformats/go-multiaddr" - "github.com/waku-org/go-waku/waku/v2/protocol/store/pb" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store/pb" + wpb "github.com/waku-org/go-waku/waku/v2/protocol/pb" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) @@ -128,6 +129,10 @@ func (bytes hexBytes) String() string { return hexutil.Encode(bytes) } +func Hash(hash wpb.MessageHash) zap.Field { + return zap.Stringer("hash", hash) +} + // ENode creates a field for ENR node. func ENode(key string, node *enode.Node) zap.Field { return zap.Stringer(key, node) diff --git a/waku/persistence/store.go b/waku/persistence/store.go index 574d1877d..10540c7ce 100644 --- a/waku/persistence/store.go +++ b/waku/persistence/store.go @@ -11,8 +11,8 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/waku-org/go-waku/waku/v2/protocol" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store/pb" wpb "github.com/waku-org/go-waku/waku/v2/protocol/pb" - "github.com/waku-org/go-waku/waku/v2/protocol/store/pb" "github.com/waku-org/go-waku/waku/v2/timesource" "go.uber.org/zap" "google.golang.org/protobuf/proto" @@ -317,8 +317,10 @@ func (d *DBStore) Put(env *protocol.Envelope) error { storedAt = env.Index().ReceiverTime } + hash := env.Hash() + start := time.Now() - _, err = stmt.Exec(env.Index().Digest, env.Hash(), storedAt, env.Message().GetTimestamp(), env.Message().ContentTopic, env.PubsubTopic(), env.Message().Payload, env.Message().GetVersion()) + _, err = stmt.Exec(env.Index().Digest, hash[:], storedAt, env.Message().GetTimestamp(), env.Message().ContentTopic, env.PubsubTopic(), env.Message().Payload, env.Message().GetVersion()) if err != nil { return err } diff --git a/waku/persistence/utils/store_test.go b/waku/persistence/utils/store_test.go index fee14f65a..743f1fefa 100644 --- a/waku/persistence/utils/store_test.go +++ b/waku/persistence/utils/store_test.go @@ -17,7 +17,7 @@ import ( "github.com/waku-org/go-waku/waku/persistence/postgres" "github.com/waku-org/go-waku/waku/persistence/sqlite" "github.com/waku-org/go-waku/waku/v2/protocol" - "github.com/waku-org/go-waku/waku/v2/protocol/store/pb" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store/pb" "github.com/waku-org/go-waku/waku/v2/timesource" "github.com/waku-org/go-waku/waku/v2/utils" "go.uber.org/zap" diff --git a/waku/v2/node/wakunode2.go b/waku/v2/node/wakunode2.go index 5ef808c95..323958e58 100644 --- a/waku/v2/node/wakunode2.go +++ b/waku/v2/node/wakunode2.go @@ -36,6 +36,7 @@ import ( wakuprotocol "github.com/waku-org/go-waku/waku/v2/protocol" "github.com/waku-org/go-waku/waku/v2/protocol/enr" "github.com/waku-org/go-waku/waku/v2/protocol/filter" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store" "github.com/waku-org/go-waku/waku/v2/protocol/lightpush" "github.com/waku-org/go-waku/waku/v2/protocol/metadata" "github.com/waku-org/go-waku/waku/v2/protocol/pb" @@ -59,7 +60,7 @@ type Peer struct { PubsubTopics []string `json:"pubsubTopics"` } -type storeFactory func(w *WakuNode) store.Store +type storeFactory func(w *WakuNode) legacy_store.Store type byte32 = [32]byte @@ -100,7 +101,8 @@ type WakuNode struct { metadata Service filterFullNode ReceptorService filterLightNode Service - store ReceptorService + legacyStore ReceptorService + store *store.WakuStore rlnRelay RLNRelay wakuFlag enr.WakuEnrBitfield @@ -125,8 +127,8 @@ type WakuNode struct { peermanager *peermanager.PeerManager } -func defaultStoreFactory(w *WakuNode) store.Store { - return store.NewWakuStore(w.opts.messageProvider, w.peermanager, w.timesource, w.opts.prometheusReg, w.log) +func defaultStoreFactory(w *WakuNode) legacy_store.Store { + return legacy_store.NewWakuStore(w.opts.messageProvider, w.peermanager, w.timesource, w.opts.prometheusReg, w.log) } // New is used to instantiate a WakuNode using a set of WakuNodeOptions @@ -291,6 +293,8 @@ func New(opts ...WakuNodeOption) (*WakuNode, error) { w.filterLightNode = filter.NewWakuFilterLightNode(w.bcaster, w.peermanager, w.timesource, w.opts.prometheusReg, w.log) w.lightPush = lightpush.NewWakuLightPush(w.Relay(), w.peermanager, w.opts.prometheusReg, w.log) + w.store = store.NewWakuStore(w.peermanager, w.timesource, w.log) + if params.storeFactory != nil { w.storeFactory = params.storeFactory } else { @@ -422,8 +426,8 @@ func (w *WakuNode) Start(ctx context.Context) error { w.registerAndMonitorReachability(ctx) } - w.store = w.storeFactory(w) - w.store.SetHost(host) + w.legacyStore = w.storeFactory(w) + w.legacyStore.SetHost(host) if w.opts.enableStore { sub := w.bcaster.RegisterForAll() err := w.startStore(ctx, sub) @@ -433,6 +437,8 @@ func (w *WakuNode) Start(ctx context.Context) error { w.log.Info("Subscribing store to broadcaster") } + w.store.SetHost(host) + w.lightPush.SetHost(host) if w.opts.enableLightPush { if err := w.lightPush.Start(ctx); err != nil { @@ -498,7 +504,7 @@ func (w *WakuNode) Stop() { w.relay.Stop() w.lightPush.Stop() - w.store.Stop() + w.legacyStore.Stop() w.filterFullNode.Stop() w.filterLightNode.Stop() @@ -583,9 +589,14 @@ func (w *WakuNode) Relay() *relay.WakuRelay { return nil } +// LegacyStore is used to access any operation related to Waku Store protocol +func (w *WakuNode) LegacyStore() legacy_store.Store { + return w.legacyStore.(legacy_store.Store) +} + // Store is used to access any operation related to Waku Store protocol -func (w *WakuNode) Store() store.Store { - return w.store.(store.Store) +func (w *WakuNode) Store() *store.WakuStore { + return w.store } // FilterLightnode is used to access any operation related to Waku Filter protocol Full node feature @@ -667,7 +678,7 @@ func (w *WakuNode) mountDiscV5() error { } func (w *WakuNode) startStore(ctx context.Context, sub *relay.Subscription) error { - err := w.store.Start(ctx, sub) + err := w.legacyStore.Start(ctx, sub) if err != nil { w.log.Error("starting store", zap.Error(err)) return err diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 484cb3090..1912fc781 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -20,9 +20,10 @@ import ( "github.com/waku-org/go-waku/waku/v2/peerstore" "github.com/waku-org/go-waku/waku/v2/protocol" "github.com/waku-org/go-waku/waku/v2/protocol/filter" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store" "github.com/waku-org/go-waku/waku/v2/protocol/pb" "github.com/waku-org/go-waku/waku/v2/protocol/relay" - "github.com/waku-org/go-waku/waku/v2/protocol/store" + "github.com/waku-org/go-waku/waku/v2/utils" "go.uber.org/zap" "google.golang.org/protobuf/proto" @@ -309,11 +310,11 @@ func TestDecoupledStoreFromRelay(t *testing.T) { require.NoError(t, err) defer wakuNode3.Stop() - _, err = wakuNode3.AddPeer(wakuNode2.ListenAddresses()[0], peerstore.Static, []string{relay.DefaultWakuTopic}, store.StoreID_v20beta4) + _, err = wakuNode3.AddPeer(wakuNode2.ListenAddresses()[0], peerstore.Static, []string{relay.DefaultWakuTopic}, legacy_store.StoreID_v20beta4) require.NoError(t, err) time.Sleep(2 * time.Second) // NODE2 should have returned the message received via filter - result, err := wakuNode3.Store().Query(ctx, store.Query{}) + result, err := wakuNode3.LegacyStore().Query(ctx, legacy_store.Query{}) require.NoError(t, err) require.Len(t, result.Messages, 1) require.Equal(t, msg.Timestamp, result.Messages[0].Timestamp) diff --git a/waku/v2/node/wakuoptions.go b/waku/v2/node/wakuoptions.go index 9372d4561..60608f779 100644 --- a/waku/v2/node/wakuoptions.go +++ b/waku/v2/node/wakuoptions.go @@ -28,8 +28,8 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/waku-org/go-waku/waku/v2/peermanager" "github.com/waku-org/go-waku/waku/v2/protocol/filter" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store" "github.com/waku-org/go-waku/waku/v2/protocol/pb" - "github.com/waku-org/go-waku/waku/v2/protocol/store" "github.com/waku-org/go-waku/waku/v2/rendezvous" "github.com/waku-org/go-waku/waku/v2/timesource" "github.com/waku-org/go-waku/waku/v2/utils" @@ -83,7 +83,7 @@ type WakuNodeParameters struct { maxMsgSizeBytes int enableStore bool - messageProvider store.MessageProvider + messageProvider legacy_store.MessageProvider enableRendezvousPoint bool rendezvousDB *rendezvous.DB @@ -448,7 +448,7 @@ func WithWakuStoreFactory(factory storeFactory) WakuNodeOption { // WithMessageProvider is a WakuNodeOption that sets the MessageProvider // used to store and retrieve persisted messages -func WithMessageProvider(s store.MessageProvider) WakuNodeOption { +func WithMessageProvider(s legacy_store.MessageProvider) WakuNodeOption { return func(params *WakuNodeParameters) error { if s == nil { return errors.New("message provider can't be nil") diff --git a/waku/v2/node/wakuoptions_test.go b/waku/v2/node/wakuoptions_test.go index eb4793d6b..751c71582 100644 --- a/waku/v2/node/wakuoptions_test.go +++ b/waku/v2/node/wakuoptions_test.go @@ -7,6 +7,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/waku-org/go-waku/waku/v2/peermanager" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store" "github.com/waku-org/go-waku/waku/v2/protocol/pb" r "github.com/waku-org/go-zerokit-rln/rln" "go.uber.org/zap" @@ -17,7 +18,6 @@ import ( "github.com/stretchr/testify/require" "github.com/waku-org/go-waku/tests" "github.com/waku-org/go-waku/waku/persistence" - "github.com/waku-org/go-waku/waku/v2/protocol/store" ) func handleSpam(msg *pb.WakuMessage, topic string) error { @@ -43,8 +43,8 @@ func TestWakuOptions(t *testing.T) { addr, err := multiaddr.NewMultiaddr("/ip4/0.0.0.0/tcp/4000/ws") require.NoError(t, err) - storeFactory := func(w *WakuNode) store.Store { - return store.NewWakuStore(w.opts.messageProvider, w.peermanager, w.timesource, prometheus.DefaultRegisterer, w.log) + storeFactory := func(w *WakuNode) legacy_store.Store { + return legacy_store.NewWakuStore(w.opts.messageProvider, w.peermanager, w.timesource, prometheus.DefaultRegisterer, w.log) } options := []WakuNodeOption{ @@ -88,8 +88,8 @@ func TestWakuRLNOptions(t *testing.T) { addr, err := multiaddr.NewMultiaddr("/ip4/0.0.0.0/tcp/4000/ws") require.NoError(t, err) - storeFactory := func(w *WakuNode) store.Store { - return store.NewWakuStore(w.opts.messageProvider, w.peermanager, w.timesource, prometheus.DefaultRegisterer, w.log) + storeFactory := func(w *WakuNode) legacy_store.Store { + return legacy_store.NewWakuStore(w.opts.messageProvider, w.peermanager, w.timesource, prometheus.DefaultRegisterer, w.log) } index := r.MembershipIndex(5) diff --git a/waku/v2/peermanager/peer_manager_test.go b/waku/v2/peermanager/peer_manager_test.go index 41dd27697..a49a7b9bd 100644 --- a/waku/v2/peermanager/peer_manager_test.go +++ b/waku/v2/peermanager/peer_manager_test.go @@ -167,7 +167,6 @@ func TestPeerSelection(t *testing.T) { require.NoError(t, err) peerIDs, err = pm.SelectPeers(PeerSelectionCriteria{SelectionType: Automatic, Proto: protocol, PubsubTopics: []string{"/waku/2/rs/2/1"}, MaxPeers: 3}) - fmt.Println("peerIDs", peerIDs) require.Equal(t, 2, peerIDs.Len()) require.NoError(t, err) diff --git a/waku/v2/protocol/envelope.go b/waku/v2/protocol/envelope.go index 6fd4edbc9..5ca5a77fa 100644 --- a/waku/v2/protocol/envelope.go +++ b/waku/v2/protocol/envelope.go @@ -2,8 +2,8 @@ package protocol import ( "github.com/waku-org/go-waku/waku/v2/hash" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store/pb" wpb "github.com/waku-org/go-waku/waku/v2/protocol/pb" - "github.com/waku-org/go-waku/waku/v2/protocol/store/pb" ) // Envelope contains information about the pubsub topic of a WakuMessage @@ -11,7 +11,7 @@ import ( // protobuffer type Envelope struct { msg *wpb.WakuMessage - hash []byte + hash wpb.MessageHash index *pb.Index } @@ -44,7 +44,7 @@ func (e *Envelope) PubsubTopic() string { } // Hash returns a 32 byte hash calculated from the WakuMessage bytes -func (e *Envelope) Hash() []byte { +func (e *Envelope) Hash() wpb.MessageHash { return e.hash } diff --git a/waku/v2/protocol/envelope_test.go b/waku/v2/protocol/envelope_test.go index b95426b43..84a963dfc 100644 --- a/waku/v2/protocol/envelope_test.go +++ b/waku/v2/protocol/envelope_test.go @@ -24,7 +24,7 @@ func TestEnvelope(t *testing.T) { require.Equal( t, - []byte{0x91, 0x0, 0xe4, 0xa5, 0xcf, 0xf7, 0x19, 0x27, 0x49, 0x81, 0x66, 0xb3, 0xdf, 0xc7, 0xa6, 0x31, 0xf0, 0x87, 0xc7, 0x29, 0xb4, 0x28, 0x83, 0xb9, 0x5c, 0x31, 0x25, 0x33, 0x3, 0xc9, 0x7, 0x95}, + pb.ToMessageHash([]byte{0x91, 0x0, 0xe4, 0xa5, 0xcf, 0xf7, 0x19, 0x27, 0x49, 0x81, 0x66, 0xb3, 0xdf, 0xc7, 0xa6, 0x31, 0xf0, 0x87, 0xc7, 0x29, 0xb4, 0x28, 0x83, 0xb9, 0x5c, 0x31, 0x25, 0x33, 0x3, 0xc9, 0x7, 0x95}), hash, ) } diff --git a/waku/v2/protocol/filter/client.go b/waku/v2/protocol/filter/client.go index 451ef51c8..cad12dc6f 100644 --- a/waku/v2/protocol/filter/client.go +++ b/waku/v2/protocol/filter/client.go @@ -277,11 +277,7 @@ func (wf *WakuFilterLightNode) request(ctx context.Context, requestID []byte, if filterSubscribeResponse.StatusCode != http.StatusOK { wf.metrics.RecordError(errorResponse) - errMessage := "" - if filterSubscribeResponse.StatusDesc != nil { - errMessage = *filterSubscribeResponse.StatusDesc - } - err := NewFilterError(int(filterSubscribeResponse.StatusCode), errMessage) + err := NewFilterError(int(filterSubscribeResponse.StatusCode), filterSubscribeResponse.GetStatusDesc()) return &err } diff --git a/waku/v2/protocol/filter/server.go b/waku/v2/protocol/filter/server.go index 29f38e12d..aa18839b4 100644 --- a/waku/v2/protocol/filter/server.go +++ b/waku/v2/protocol/filter/server.go @@ -222,7 +222,7 @@ func (wf *WakuFilterFullNode) filterListener(ctx context.Context) { handle := func(envelope *protocol.Envelope) error { msg := envelope.Message() pubsubTopic := envelope.PubsubTopic() - logger := utils.MessagesLogger("filter").With(logging.HexBytes("hash", envelope.Hash()), + logger := utils.MessagesLogger("filter").With(logging.Hash(envelope.Hash()), zap.String("pubsubTopic", envelope.PubsubTopic()), zap.String("contentTopic", envelope.Message().ContentTopic), ) diff --git a/waku/v2/protocol/store/metrics.go b/waku/v2/protocol/legacy_store/metrics.go similarity index 98% rename from waku/v2/protocol/store/metrics.go rename to waku/v2/protocol/legacy_store/metrics.go index d9083ec66..99ff87a06 100644 --- a/waku/v2/protocol/store/metrics.go +++ b/waku/v2/protocol/legacy_store/metrics.go @@ -1,4 +1,4 @@ -package store +package legacy_store import ( "github.com/libp2p/go-libp2p/p2p/metricshelper" diff --git a/waku/v2/protocol/legacy_store/pb/generate.go b/waku/v2/protocol/legacy_store/pb/generate.go new file mode 100644 index 000000000..eb2537ebd --- /dev/null +++ b/waku/v2/protocol/legacy_store/pb/generate.go @@ -0,0 +1,3 @@ +package pb + +//go:generate protoc -I./../../waku-proto/waku/store/v2beta4//. -I./../../waku-proto/ --go_opt=paths=source_relative --go_opt=Mstore.proto=github.com/waku-org/go-waku/waku/v2/protocol/legacy_store/pb --go_opt=Mwaku/message/v1/message.proto=github.com/waku-org/go-waku/waku/v2/protocol/pb --go_out=. ./../../waku-proto/waku/store/v2beta4/store.proto diff --git a/waku/v2/protocol/store/pb/store.pb.go b/waku/v2/protocol/legacy_store/pb/store.pb.go similarity index 100% rename from waku/v2/protocol/store/pb/store.pb.go rename to waku/v2/protocol/legacy_store/pb/store.pb.go diff --git a/waku/v2/protocol/legacy_store/pb/validation.go b/waku/v2/protocol/legacy_store/pb/validation.go new file mode 100644 index 000000000..740b58086 --- /dev/null +++ b/waku/v2/protocol/legacy_store/pb/validation.go @@ -0,0 +1,68 @@ +package pb + +import ( + "errors" +) + +// MaxContentFilters is the maximum number of allowed content filters in a query +const MaxContentFilters = 10 + +var ( + errMissingRequestID = errors.New("missing RequestId field") + errMissingQuery = errors.New("missing Query field") + errRequestIDMismatch = errors.New("requestID in response does not match request") + errMaxContentFilters = errors.New("exceeds the maximum number of content filters allowed") + errEmptyContentTopics = errors.New("one or more content topics specified is empty") +) + +func (x *HistoryQuery) Validate() error { + if len(x.ContentFilters) > MaxContentFilters { + return errMaxContentFilters + } + + for _, m := range x.ContentFilters { + if m.ContentTopic == "" { + return errEmptyContentTopics + } + } + + return nil +} + +func (x *HistoryRPC) ValidateQuery() error { + if x.RequestId == "" { + return errMissingRequestID + } + + if x.Query == nil { + return errMissingQuery + } + + return x.Query.Validate() +} + +func (x *HistoryResponse) Validate() error { + for _, m := range x.Messages { + if err := m.Validate(); err != nil { + return err + } + } + + return nil +} + +func (x *HistoryRPC) ValidateResponse(requestID string) error { + if x.RequestId == "" { + return errMissingRequestID + } + + if x.RequestId != requestID { + return errRequestIDMismatch + } + + if x.Response != nil { + return x.Response.Validate() + } + + return nil +} diff --git a/waku/v2/protocol/store/pb/validation_test.go b/waku/v2/protocol/legacy_store/pb/validation_test.go similarity index 100% rename from waku/v2/protocol/store/pb/validation_test.go rename to waku/v2/protocol/legacy_store/pb/validation_test.go diff --git a/waku/v2/protocol/store/utils_test.go b/waku/v2/protocol/legacy_store/utils_test.go similarity index 96% rename from waku/v2/protocol/store/utils_test.go rename to waku/v2/protocol/legacy_store/utils_test.go index 6fd883c82..3b689a037 100644 --- a/waku/v2/protocol/store/utils_test.go +++ b/waku/v2/protocol/legacy_store/utils_test.go @@ -1,4 +1,4 @@ -package store +package legacy_store import ( "database/sql" diff --git a/waku/v2/protocol/store/waku_resume_test.go b/waku/v2/protocol/legacy_store/waku_resume_test.go similarity index 99% rename from waku/v2/protocol/store/waku_resume_test.go rename to waku/v2/protocol/legacy_store/waku_resume_test.go index 52175cbc4..aeecc6dfd 100644 --- a/waku/v2/protocol/store/waku_resume_test.go +++ b/waku/v2/protocol/legacy_store/waku_resume_test.go @@ -1,4 +1,4 @@ -package store +package legacy_store import ( "context" diff --git a/waku/v2/protocol/store/waku_store_client.go b/waku/v2/protocol/legacy_store/waku_store_client.go similarity index 99% rename from waku/v2/protocol/store/waku_store_client.go rename to waku/v2/protocol/legacy_store/waku_store_client.go index f1612a1c6..b02cd92e3 100644 --- a/waku/v2/protocol/store/waku_store_client.go +++ b/waku/v2/protocol/legacy_store/waku_store_client.go @@ -1,4 +1,4 @@ -package store +package legacy_store import ( "context" @@ -15,8 +15,8 @@ import ( "github.com/waku-org/go-waku/waku/v2/peermanager" "github.com/waku-org/go-waku/waku/v2/peerstore" "github.com/waku-org/go-waku/waku/v2/protocol" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store/pb" wpb "github.com/waku-org/go-waku/waku/v2/protocol/pb" - "github.com/waku-org/go-waku/waku/v2/protocol/store/pb" ) type Query struct { diff --git a/waku/v2/protocol/store/waku_store_client_test.go b/waku/v2/protocol/legacy_store/waku_store_client_test.go similarity index 99% rename from waku/v2/protocol/store/waku_store_client_test.go rename to waku/v2/protocol/legacy_store/waku_store_client_test.go index fc44bde9f..c947a64dc 100644 --- a/waku/v2/protocol/store/waku_store_client_test.go +++ b/waku/v2/protocol/legacy_store/waku_store_client_test.go @@ -1,4 +1,4 @@ -package store +package legacy_store import ( "context" diff --git a/waku/v2/protocol/store/waku_store_common.go b/waku/v2/protocol/legacy_store/waku_store_common.go similarity index 99% rename from waku/v2/protocol/store/waku_store_common.go rename to waku/v2/protocol/legacy_store/waku_store_common.go index 929e58e1f..f1edbbc25 100644 --- a/waku/v2/protocol/store/waku_store_common.go +++ b/waku/v2/protocol/legacy_store/waku_store_common.go @@ -1,4 +1,4 @@ -package store +package legacy_store import ( "context" diff --git a/waku/v2/protocol/store/waku_store_pagination_test.go b/waku/v2/protocol/legacy_store/waku_store_pagination_test.go similarity index 99% rename from waku/v2/protocol/store/waku_store_pagination_test.go rename to waku/v2/protocol/legacy_store/waku_store_pagination_test.go index a9ca7374a..a6cee3c08 100644 --- a/waku/v2/protocol/store/waku_store_pagination_test.go +++ b/waku/v2/protocol/legacy_store/waku_store_pagination_test.go @@ -1,4 +1,4 @@ -package store +package legacy_store import ( "testing" @@ -6,8 +6,8 @@ import ( "github.com/stretchr/testify/require" "github.com/waku-org/go-waku/waku/persistence" "github.com/waku-org/go-waku/waku/v2/protocol" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store/pb" wpb "github.com/waku-org/go-waku/waku/v2/protocol/pb" - "github.com/waku-org/go-waku/waku/v2/protocol/store/pb" "github.com/waku-org/go-waku/waku/v2/utils" "google.golang.org/protobuf/proto" ) diff --git a/waku/v2/protocol/store/waku_store_persistence_test.go b/waku/v2/protocol/legacy_store/waku_store_persistence_test.go similarity index 98% rename from waku/v2/protocol/store/waku_store_persistence_test.go rename to waku/v2/protocol/legacy_store/waku_store_persistence_test.go index 022d47b41..2c5d674e6 100644 --- a/waku/v2/protocol/store/waku_store_persistence_test.go +++ b/waku/v2/protocol/legacy_store/waku_store_persistence_test.go @@ -1,4 +1,4 @@ -package store +package legacy_store import ( "testing" diff --git a/waku/v2/protocol/store/waku_store_protocol.go b/waku/v2/protocol/legacy_store/waku_store_protocol.go similarity index 99% rename from waku/v2/protocol/store/waku_store_protocol.go rename to waku/v2/protocol/legacy_store/waku_store_protocol.go index e40abe7ef..16eabe8f0 100644 --- a/waku/v2/protocol/store/waku_store_protocol.go +++ b/waku/v2/protocol/legacy_store/waku_store_protocol.go @@ -1,4 +1,4 @@ -package store +package legacy_store import ( "context" @@ -17,9 +17,9 @@ import ( "github.com/waku-org/go-waku/logging" "github.com/waku-org/go-waku/waku/persistence" "github.com/waku-org/go-waku/waku/v2/protocol" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store/pb" wpb "github.com/waku-org/go-waku/waku/v2/protocol/pb" "github.com/waku-org/go-waku/waku/v2/protocol/relay" - "github.com/waku-org/go-waku/waku/v2/protocol/store/pb" "github.com/waku-org/go-waku/waku/v2/timesource" ) diff --git a/waku/v2/protocol/store/waku_store_protocol_test.go b/waku/v2/protocol/legacy_store/waku_store_protocol_test.go similarity index 99% rename from waku/v2/protocol/store/waku_store_protocol_test.go rename to waku/v2/protocol/legacy_store/waku_store_protocol_test.go index 10ada3dec..b0b315fcb 100644 --- a/waku/v2/protocol/store/waku_store_protocol_test.go +++ b/waku/v2/protocol/legacy_store/waku_store_protocol_test.go @@ -1,13 +1,14 @@ -package store +package legacy_store import ( "context" "database/sql" - "github.com/waku-org/go-waku/waku/persistence" - "github.com/waku-org/go-waku/waku/persistence/sqlite" "testing" "time" + "github.com/waku-org/go-waku/waku/persistence" + "github.com/waku-org/go-waku/waku/persistence/sqlite" + "github.com/libp2p/go-libp2p" "github.com/libp2p/go-libp2p/core/peerstore" "github.com/prometheus/client_golang/prometheus" diff --git a/waku/v2/protocol/store/waku_store_query_test.go b/waku/v2/protocol/legacy_store/waku_store_query_test.go similarity index 99% rename from waku/v2/protocol/store/waku_store_query_test.go rename to waku/v2/protocol/legacy_store/waku_store_query_test.go index 2d775953b..881ee79af 100644 --- a/waku/v2/protocol/store/waku_store_query_test.go +++ b/waku/v2/protocol/legacy_store/waku_store_query_test.go @@ -1,4 +1,4 @@ -package store +package legacy_store import ( "testing" @@ -10,7 +10,7 @@ import ( wpb "github.com/waku-org/go-waku/waku/v2/protocol/pb" "google.golang.org/protobuf/proto" - "github.com/waku-org/go-waku/waku/v2/protocol/store/pb" + "github.com/waku-org/go-waku/waku/v2/protocol/legacy_store/pb" "github.com/waku-org/go-waku/waku/v2/timesource" "github.com/waku-org/go-waku/waku/v2/utils" ) diff --git a/waku/v2/protocol/lightpush/waku_lightpush.go b/waku/v2/protocol/lightpush/waku_lightpush.go index fe65ed047..f2b98bb37 100644 --- a/waku/v2/protocol/lightpush/waku_lightpush.go +++ b/waku/v2/protocol/lightpush/waku_lightpush.go @@ -313,14 +313,14 @@ func (wakuLP *WakuLightPush) handleOpts(ctx context.Context, message *wpb.WakuMe // Publish is used to broadcast a WakuMessage to the pubSubTopic (which is derived from the // contentTopic) via lightpush protocol. If auto-sharding is not to be used, then the // `WithPubSubTopic` option should be provided to publish the message to an specific pubSubTopic -func (wakuLP *WakuLightPush) Publish(ctx context.Context, message *wpb.WakuMessage, opts ...RequestOption) ([]byte, error) { +func (wakuLP *WakuLightPush) Publish(ctx context.Context, message *wpb.WakuMessage, opts ...RequestOption) (wpb.MessageHash, error) { if message == nil { - return nil, errors.New("message can't be null") + return wpb.MessageHash{}, errors.New("message can't be null") } params, err := wakuLP.handleOpts(ctx, message, opts...) if err != nil { - return nil, err + return wpb.MessageHash{}, err } req := new(pb.PushRequest) req.Message = message @@ -333,12 +333,12 @@ func (wakuLP *WakuLightPush) Publish(ctx context.Context, message *wpb.WakuMessa response, err := wakuLP.request(ctx, req, params) if err != nil { logger.Error("could not publish message", zap.Error(err)) - return nil, err + return wpb.MessageHash{}, err } if response.IsSuccess { hash := message.Hash(params.pubsubTopic) - utils.MessagesLogger("lightpush").Debug("waku.lightpush published", logging.HexBytes("hash", hash)) + utils.MessagesLogger("lightpush").Debug("waku.lightpush published", logging.HexBytes("hash", hash[:])) return hash, nil } @@ -347,5 +347,5 @@ func (wakuLP *WakuLightPush) Publish(ctx context.Context, message *wpb.WakuMessa errMsg = *response.Info } - return nil, errors.New(errMsg) + return wpb.MessageHash{}, errors.New(errMsg) } diff --git a/waku/v2/protocol/pb/utils.go b/waku/v2/protocol/pb/utils.go index 70de2e0d5..6c306e2b6 100644 --- a/waku/v2/protocol/pb/utils.go +++ b/waku/v2/protocol/pb/utils.go @@ -9,9 +9,28 @@ import ( "go.uber.org/zap/zapcore" ) +// MessageHash represents an unique identifier for a message within a pubsub topic +type MessageHash [32]byte + +func (h MessageHash) String() string { + return hexutil.Encode(h[:]) +} + +func (h MessageHash) Bytes() []byte { + return h[:] +} + +// ToMessageHash converts a byte slice into a MessageHash +func ToMessageHash(b []byte) MessageHash { + var result MessageHash + copy(result[:], b) + return result +} + // Hash calculates the hash of a waku message -func (msg *WakuMessage) Hash(pubsubTopic string) []byte { - return hash.SHA256([]byte(pubsubTopic), msg.Payload, []byte(msg.ContentTopic), msg.Meta, toBytes(msg.GetTimestamp())) +func (msg *WakuMessage) Hash(pubsubTopic string) MessageHash { + hash := hash.SHA256([]byte(pubsubTopic), msg.Payload, []byte(msg.ContentTopic), msg.Meta, toBytes(msg.GetTimestamp())) + return ToMessageHash(hash) } func toBytes(i int64) []byte { @@ -22,7 +41,7 @@ func toBytes(i int64) []byte { func (msg *WakuMessage) LogFields(pubsubTopic string) []zapcore.Field { return []zapcore.Field{ - zap.String("hash", hexutil.Encode(msg.Hash(pubsubTopic))), + zap.Stringer("hash", msg.Hash(pubsubTopic)), zap.String("pubsubTopic", pubsubTopic), zap.String("contentTopic", msg.ContentTopic), zap.Int64("timestamp", msg.GetTimestamp()), diff --git a/waku/v2/protocol/pb/utils_test.go b/waku/v2/protocol/pb/utils_test.go index f15421db2..133c0f6ee 100644 --- a/waku/v2/protocol/pb/utils_test.go +++ b/waku/v2/protocol/pb/utils_test.go @@ -1,7 +1,6 @@ package pb import ( - "encoding/hex" "testing" "github.com/stretchr/testify/require" @@ -24,7 +23,7 @@ func TestEnvelopeHash(t *testing.T) { expected := []byte{0xb6, 0x59, 0x60, 0x7f, 0x2a, 0xae, 0x18, 0x84, 0x8d, 0xca, 0xa7, 0xd5, 0x1c, 0xb3, 0x7e, 0x6c, 0xc6, 0xfc, 0x33, 0x40, 0x2c, 0x70, 0x4f, 0xf0, 0xc0, 0x16, 0x33, 0x7d, 0x83, 0xad, 0x61, 0x50} result := msg.Hash("test") - require.Equal(t, expected, result) + require.Equal(t, ToMessageHash(expected), result) } func TestEmptyMeta(t *testing.T) { @@ -39,7 +38,7 @@ func TestEmptyMeta(t *testing.T) { messageHash := msg.Hash(pubsubTopic) - require.Equal(t, "f0183c2e370e473ff471bbe1028d0d8a940949c02f3007a1ccd21fed356852a0", hex.EncodeToString(messageHash)) + require.Equal(t, "0xf0183c2e370e473ff471bbe1028d0d8a940949c02f3007a1ccd21fed356852a0", messageHash.String()) } func Test13ByteMeta(t *testing.T) { @@ -53,7 +52,7 @@ func Test13ByteMeta(t *testing.T) { messageHash := msg.Hash(pubsubTopic) - require.Equal(t, "f673cd2c9c973d685b52ca74c2559e001733a3a31a49ffc7b6e8713decba5a55", hex.EncodeToString(messageHash)) + require.Equal(t, "0xf673cd2c9c973d685b52ca74c2559e001733a3a31a49ffc7b6e8713decba5a55", messageHash.String()) } func TestZeroLenPayload(t *testing.T) { @@ -67,7 +66,7 @@ func TestZeroLenPayload(t *testing.T) { messageHash := msg.Hash(pubsubTopic) - require.Equal(t, "978ccc9a665029f9829d42d84e3a49ad3a4791cce53fb5a8b581ef43ad6b4d2f", hex.EncodeToString(messageHash)) + require.Equal(t, "0x978ccc9a665029f9829d42d84e3a49ad3a4791cce53fb5a8b581ef43ad6b4d2f", messageHash.String()) } func TestHashWithTimestamp(t *testing.T) { @@ -79,11 +78,11 @@ func TestHashWithTimestamp(t *testing.T) { msg.Version = proto.Uint32(1) messageHash := msg.Hash(pubsubTopic) - require.Equal(t, "58e2fc032a82c4adeb967a8b87086d0d6fb304912f120d4404e6236add8f1f56", hex.EncodeToString(messageHash)) + require.Equal(t, "0x58e2fc032a82c4adeb967a8b87086d0d6fb304912f120d4404e6236add8f1f56", messageHash.String()) msg.Timestamp = proto.Int64(123456789123456789) messageHash = msg.Hash(pubsubTopic) - require.Equal(t, "978ccc9a665029f9829d42d84e3a49ad3a4791cce53fb5a8b581ef43ad6b4d2f", hex.EncodeToString(messageHash)) + require.Equal(t, "0x978ccc9a665029f9829d42d84e3a49ad3a4791cce53fb5a8b581ef43ad6b4d2f", messageHash.String()) } func TestIntToBytes(t *testing.T) { diff --git a/waku/v2/protocol/relay/metrics.go b/waku/v2/protocol/relay/metrics.go index b642c4970..4a10a0a9a 100644 --- a/waku/v2/protocol/relay/metrics.go +++ b/waku/v2/protocol/relay/metrics.go @@ -61,7 +61,7 @@ func (m *metricsImpl) RecordMessage(envelope *waku_proto.Envelope) { messageSize.Observe(payloadSizeInKb) pubsubTopic := envelope.PubsubTopic() messages.WithLabelValues(pubsubTopic).Inc() - m.log.Debug("waku.relay received", zap.String("pubsubTopic", pubsubTopic), logging.HexBytes("hash", envelope.Hash()), zap.Int64("receivedTime", envelope.Index().ReceiverTime), zap.Int("payloadSizeBytes", payloadSizeInBytes)) + m.log.Debug("waku.relay received", zap.String("pubsubTopic", pubsubTopic), logging.Hash(envelope.Hash()), zap.Int64("receivedTime", envelope.Index().ReceiverTime), zap.Int("payloadSizeBytes", payloadSizeInBytes)) }() } diff --git a/waku/v2/protocol/relay/waku_relay.go b/waku/v2/protocol/relay/waku_relay.go index 06fd2c281..d2ec331bf 100644 --- a/waku/v2/protocol/relay/waku_relay.go +++ b/waku/v2/protocol/relay/waku_relay.go @@ -255,19 +255,19 @@ func (w *WakuRelay) subscribeToPubsubTopic(topic string) (*pubsubTopicSubscripti // Publish is used to broadcast a WakuMessage to a pubsub topic. The pubsubTopic is derived from contentTopic // specified in the message via autosharding. To publish to a specific pubsubTopic, the `WithPubSubTopic` option should // be provided -func (w *WakuRelay) Publish(ctx context.Context, message *pb.WakuMessage, opts ...PublishOption) ([]byte, error) { +func (w *WakuRelay) Publish(ctx context.Context, message *pb.WakuMessage, opts ...PublishOption) (pb.MessageHash, error) { // Publish a `WakuMessage` to a PubSub topic. if w.pubsub == nil { - return nil, errors.New("PubSub hasn't been set") + return pb.MessageHash{}, errors.New("PubSub hasn't been set") } if message == nil { - return nil, errors.New("message can't be null") + return pb.MessageHash{}, errors.New("message can't be null") } err := message.Validate() if err != nil { - return nil, err + return pb.MessageHash{}, err } params := new(publishParameters) @@ -278,12 +278,12 @@ func (w *WakuRelay) Publish(ctx context.Context, message *pb.WakuMessage, opts . if params.pubsubTopic == "" { params.pubsubTopic, err = waku_proto.GetPubSubTopicFromContentTopic(message.ContentTopic) if err != nil { - return nil, err + return pb.MessageHash{}, err } } if !w.EnoughPeersToPublishToTopic(params.pubsubTopic) { - return nil, errors.New("not enough peers to publish") + return pb.MessageHash{}, errors.New("not enough peers to publish") } w.topicsMutex.Lock() @@ -291,26 +291,26 @@ func (w *WakuRelay) Publish(ctx context.Context, message *pb.WakuMessage, opts . pubSubTopic, err := w.upsertTopic(params.pubsubTopic) if err != nil { - return nil, err + return pb.MessageHash{}, err } out, err := proto.Marshal(message) if err != nil { - return nil, err + return pb.MessageHash{}, err } if len(out) > w.relayParams.maxMsgSizeBytes { - return nil, errors.New("message size exceeds gossipsub max message size") + return pb.MessageHash{}, errors.New("message size exceeds gossipsub max message size") } err = pubSubTopic.Publish(ctx, out) if err != nil { - return nil, err + return pb.MessageHash{}, err } hash := message.Hash(params.pubsubTopic) - w.logMessages.Debug("waku.relay published", zap.String("pubsubTopic", params.pubsubTopic), logging.HexBytes("hash", hash), zap.Int64("publishTime", w.timesource.Now().UnixNano()), zap.Int("payloadSizeBytes", len(message.Payload))) + w.logMessages.Debug("waku.relay published", zap.String("pubsubTopic", params.pubsubTopic), logging.Hash(hash), zap.Int64("publishTime", w.timesource.Now().UnixNano()), zap.Int("payloadSizeBytes", len(message.Payload))) return hash, nil } diff --git a/waku/v2/protocol/relay/waku_relay_test.go b/waku/v2/protocol/relay/waku_relay_test.go index 94e9992ad..7dc848581 100644 --- a/waku/v2/protocol/relay/waku_relay_test.go +++ b/waku/v2/protocol/relay/waku_relay_test.go @@ -56,7 +56,7 @@ func TestWakuRelay(t *testing.T) { go func() { defer cancel() env := <-subs[0].Ch - t.Log("received msg", logging.HexBytes("hash", env.Hash())) + t.Log("received msg", logging.Hash(env.Hash())) }() msg := &pb.WakuMessage{ diff --git a/waku/v2/protocol/rln/waku_rln_relay.go b/waku/v2/protocol/rln/waku_rln_relay.go index 39b718061..29d5d65ac 100644 --- a/waku/v2/protocol/rln/waku_rln_relay.go +++ b/waku/v2/protocol/rln/waku_rln_relay.go @@ -235,7 +235,7 @@ func (rlnRelay *WakuRLNRelay) Validator( hash := msg.Hash(topic) log := rlnRelay.log.With( - logging.HexBytes("hash", hash), + logging.HexBytes("hash", hash[:]), zap.String("pubsubTopic", topic), zap.String("contentTopic", msg.ContentTopic), ) diff --git a/waku/v2/protocol/store/client.go b/waku/v2/protocol/store/client.go new file mode 100644 index 000000000..9eb3da40a --- /dev/null +++ b/waku/v2/protocol/store/client.go @@ -0,0 +1,290 @@ +package store + +import ( + "context" + "encoding/hex" + "errors" + "fmt" + "math" + + "github.com/libp2p/go-libp2p/core/host" + "github.com/libp2p/go-libp2p/core/peer" + libp2pProtocol "github.com/libp2p/go-libp2p/core/protocol" + "github.com/libp2p/go-msgio/pbio" + "github.com/waku-org/go-waku/logging" + "github.com/waku-org/go-waku/waku/v2/peermanager" + "github.com/waku-org/go-waku/waku/v2/peerstore" + "github.com/waku-org/go-waku/waku/v2/protocol" + wpb "github.com/waku-org/go-waku/waku/v2/protocol/pb" + "github.com/waku-org/go-waku/waku/v2/protocol/store/pb" + "github.com/waku-org/go-waku/waku/v2/timesource" + "go.uber.org/zap" + "google.golang.org/protobuf/proto" +) + +// StoreQueryID_v300 is the Store protocol v3 identifier +const StoreQueryID_v300 = libp2pProtocol.ID("/vac/waku/store-query/3.0.0") +const StoreENRField = uint8(1 << 1) + +// MaxPageSize is the maximum number of waku messages to return per page +const MaxPageSize = 100 + +// DefaultPageSize is the default number of waku messages per page +const DefaultPageSize = 20 + +const ok = uint32(200) + +var ( + + // ErrNoPeersAvailable is returned when there are no store peers in the peer store + // that could be used to retrieve message history + ErrNoPeersAvailable = errors.New("no suitable remote peers") + ErrMustSelectPeer = errors.New("a peer ID or multiaddress is required when checking for message hashes") +) + +// StoreError represents an error code returned by a storenode +type StoreError struct { + Code int + Message string +} + +// NewStoreError creates a new instance of StoreError +func NewStoreError(code int, message string) StoreError { + return StoreError{ + Code: code, + Message: message, + } +} + +const errorStringFmt = "%d - %s" + +// Error returns a string with the error message +func (e *StoreError) Error() string { + return fmt.Sprintf(errorStringFmt, e.Code, e.Message) +} + +// WakuStore represents an instance of a store client +type WakuStore struct { + h host.Host + timesource timesource.Timesource + log *zap.Logger + pm *peermanager.PeerManager +} + +// NewWakuStore is used to instantiate a StoreV3 client +func NewWakuStore(pm *peermanager.PeerManager, timesource timesource.Timesource, log *zap.Logger) *WakuStore { + s := new(WakuStore) + s.log = log.Named("store-client") + s.timesource = timesource + s.pm = pm + + if pm != nil { + pm.RegisterWakuProtocol(StoreQueryID_v300, StoreENRField) + } + + return s +} + +// Sets the host to be able to mount or consume a protocol +func (s *WakuStore) SetHost(h host.Host) { + s.h = h +} + +// Request is used to send a store query. This function requires understanding how to prepare a store query +// and most of the time you can use `Query`, `QueryByHash` and `Exists` instead, as they provide +// a simpler API +func (s *WakuStore) Request(ctx context.Context, criteria Criteria, opts ...RequestOption) (*Result, error) { + params := new(Parameters) + + optList := DefaultOptions() + optList = append(optList, opts...) + for _, opt := range optList { + err := opt(params) + if err != nil { + return nil, err + } + } + + filterCriteria, isFilterCriteria := criteria.(FilterCriteria) + + var pubsubTopics []string + if isFilterCriteria { + pubsubTopics = append(pubsubTopics, filterCriteria.PubsubTopic) + } + + //Add Peer to peerstore. + if s.pm != nil && params.peerAddr != nil { + pData, err := s.pm.AddPeer(params.peerAddr, peerstore.Static, pubsubTopics, StoreQueryID_v300) + if err != nil { + return nil, err + } + s.pm.Connect(pData) + params.selectedPeer = pData.AddrInfo.ID + } + + if s.pm != nil && params.selectedPeer == "" { + if isFilterCriteria { + selectedPeers, err := s.pm.SelectPeers( + peermanager.PeerSelectionCriteria{ + SelectionType: params.peerSelectionType, + Proto: StoreQueryID_v300, + PubsubTopics: []string{filterCriteria.PubsubTopic}, + SpecificPeers: params.preferredPeers, + Ctx: ctx, + }, + ) + if err != nil { + return nil, err + } + params.selectedPeer = selectedPeers[0] + } else { + return nil, ErrMustSelectPeer + } + } + + if params.selectedPeer == "" { + return nil, ErrNoPeersAvailable + } + + pageLimit := params.pageLimit + if pageLimit == 0 { + pageLimit = DefaultPageSize + } else if pageLimit > uint64(MaxPageSize) { + pageLimit = MaxPageSize + } + + storeRequest := &pb.StoreQueryRequest{ + RequestId: hex.EncodeToString(params.requestID), + IncludeData: params.includeData, + PaginationForward: params.forward, + PaginationLimit: proto.Uint64(pageLimit), + } + + criteria.PopulateStoreRequest(storeRequest) + + if params.cursor != nil { + storeRequest.PaginationCursor = params.cursor + } + + err := storeRequest.Validate() + if err != nil { + return nil, err + } + + response, err := s.queryFrom(ctx, storeRequest, params.selectedPeer) + if err != nil { + return nil, err + } + + result := &Result{ + store: s, + messages: response.Messages, + storeRequest: storeRequest, + peerID: params.selectedPeer, + cursor: response.PaginationCursor, + } + + return result, nil +} + +// Query retrieves all the messages that match a criteria. Use the options to indicate whether to return the message themselves or not. +func (s *WakuStore) Query(ctx context.Context, criteria FilterCriteria, opts ...RequestOption) (*Result, error) { + return s.Request(ctx, criteria, opts...) +} + +// Query retrieves all the messages with specific message hashes +func (s *WakuStore) QueryByHash(ctx context.Context, messageHashes []wpb.MessageHash, opts ...RequestOption) (*Result, error) { + return s.Request(ctx, MessageHashCriteria{messageHashes}, opts...) +} + +// Exists is an utility function to determine if a message exists. For checking the presence of more than one message, use QueryByHash +// and pass the option WithReturnValues(false). You will have to iterate the results and check whether the full list of messages contains +// the list of messages to verify +func (s *WakuStore) Exists(ctx context.Context, messageHash wpb.MessageHash, opts ...RequestOption) (bool, error) { + opts = append(opts, IncludeData(false)) + result, err := s.Request(ctx, MessageHashCriteria{MessageHashes: []wpb.MessageHash{messageHash}}, opts...) + if err != nil { + return false, err + } + + return len(result.messages) != 0, nil +} + +func (s *WakuStore) next(ctx context.Context, r *Result) (*Result, error) { + if r.IsComplete() { + return &Result{ + store: s, + started: true, + messages: []*pb.WakuMessageKeyValue{}, + cursor: nil, + storeRequest: r.storeRequest, + peerID: r.PeerID(), + }, nil + } + + storeRequest := proto.Clone(r.storeRequest).(*pb.StoreQueryRequest) + storeRequest.RequestId = hex.EncodeToString(protocol.GenerateRequestID()) + storeRequest.PaginationCursor = r.Cursor() + + response, err := s.queryFrom(ctx, storeRequest, r.PeerID()) + if err != nil { + return nil, err + } + + result := &Result{ + started: true, + store: s, + messages: response.Messages, + storeRequest: storeRequest, + peerID: r.PeerID(), + cursor: response.PaginationCursor, + } + + return result, nil + +} + +func (s *WakuStore) queryFrom(ctx context.Context, storeRequest *pb.StoreQueryRequest, selectedPeer peer.ID) (*pb.StoreQueryResponse, error) { + logger := s.log.With(logging.HostID("peer", selectedPeer)) + logger.Info("sending store request") + + stream, err := s.h.NewStream(ctx, selectedPeer, StoreQueryID_v300) + if err != nil { + logger.Error("creating stream to peer", zap.Error(err)) + return nil, err + } + + writer := pbio.NewDelimitedWriter(stream) + reader := pbio.NewDelimitedReader(stream, math.MaxInt32) + + err = writer.WriteMsg(storeRequest) + if err != nil { + logger.Error("writing request", zap.Error(err)) + if err := stream.Reset(); err != nil { + s.log.Error("resetting connection", zap.Error(err)) + } + return nil, err + } + + storeResponse := &pb.StoreQueryResponse{RequestId: storeRequest.RequestId} + err = reader.ReadMsg(storeResponse) + if err != nil { + logger.Error("reading response", zap.Error(err)) + if err := stream.Reset(); err != nil { + s.log.Error("resetting connection", zap.Error(err)) + } + return nil, err + } + + stream.Close() + + if err := storeResponse.Validate(storeRequest.RequestId); err != nil { + return nil, err + } + + if storeResponse.GetStatusCode() != ok { + err := NewStoreError(int(storeResponse.GetStatusCode()), storeResponse.GetStatusDesc()) + return nil, &err + } + return storeResponse, nil +} diff --git a/waku/v2/protocol/store/client_test.go b/waku/v2/protocol/store/client_test.go new file mode 100644 index 000000000..e02e904e6 --- /dev/null +++ b/waku/v2/protocol/store/client_test.go @@ -0,0 +1,224 @@ +//go:build include_storev3_tests +// +build include_storev3_tests + +package store + +import ( + "context" + "crypto/rand" + "os" + "testing" + "time" + + "github.com/libp2p/go-libp2p/core/peer" + "github.com/multiformats/go-multiaddr" + "github.com/prometheus/client_golang/prometheus" + "github.com/stretchr/testify/require" + "github.com/waku-org/go-waku/tests" + "github.com/waku-org/go-waku/waku/v2/peermanager" + "github.com/waku-org/go-waku/waku/v2/protocol" + "github.com/waku-org/go-waku/waku/v2/protocol/pb" + "github.com/waku-org/go-waku/waku/v2/protocol/relay" + "github.com/waku-org/go-waku/waku/v2/timesource" + "github.com/waku-org/go-waku/waku/v2/utils" + "google.golang.org/protobuf/proto" +) + +func TestStoreClient(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second) + defer cancel() + + port, err := tests.FindFreePort(t, "", 5) + require.NoError(t, err) + + host, err := tests.MakeHost(context.Background(), port, rand.Reader) + require.NoError(t, err) + + // Creating a relay instance for pushing messages to the store node + b := relay.NewBroadcaster(10) + require.NoError(t, b.Start(context.Background())) + wakuRelay := relay.NewWakuRelay(b, 0, timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) + wakuRelay.SetHost(host) + require.NoError(t, err) + err = wakuRelay.Start(context.Background()) + require.NoError(t, err) + + pm := peermanager.NewPeerManager(5, 5, nil, utils.Logger()) + pm.SetHost(host) + err = pm.SubscribeToRelayEvtBus(wakuRelay.Events()) + require.NoError(t, err) + pm.Start(ctx) + + // Creating a storeV3 instance for all queries + wakuStore := NewWakuStore(pm, timesource.NewDefaultClock(), utils.Logger()) + wakuStore.SetHost(host) + + _, err = wakuRelay.Subscribe(context.Background(), protocol.NewContentFilter(protocol.DefaultPubsubTopic{}.String()), relay.WithoutConsumer()) + require.NoError(t, err) + + // Obtain multiaddr from env + envStorenode := os.Getenv("TEST_STOREV3_NODE") + if envStorenode == "" { + envStorenode = "/ip4/127.0.0.1/tcp/60000/p2p/16Uiu2HAmMGhfSTUzKbsjMWxc6T1X4wiTWSF1bEWSLjAukCm7KiHV" + } + storenode_multiaddr, err := multiaddr.NewMultiaddr(envStorenode) + require.NoError(t, err) + + storenode, err := peer.AddrInfoFromP2pAddr(storenode_multiaddr) + require.NoError(t, err) + + err = host.Connect(ctx, *storenode) + require.NoError(t, err) + + // Wait until mesh forms + time.Sleep(2 * time.Second) + + // Send messages + messages := []*pb.WakuMessage{} + startTime := utils.GetUnixEpoch(timesource.NewDefaultClock()) + for i := 0; i < 5; i++ { + msg := &pb.WakuMessage{ + Payload: []byte{1, 2, 3, 4, 5}, + ContentTopic: "test", + Version: proto.Uint32(0), + Timestamp: utils.GetUnixEpoch(timesource.NewDefaultClock()), + } + _, err := wakuRelay.Publish(ctx, msg, relay.WithDefaultPubsubTopic()) + require.NoError(t, err) + + messages = append(messages, msg) + time.Sleep(20 * time.Millisecond) + } + endTime := utils.GetUnixEpoch(timesource.NewDefaultClock()) + + time.Sleep(1 * time.Second) + + // Check for message existence + exists, err := wakuStore.Exists(ctx, messages[0].Hash(relay.DefaultWakuTopic), WithPeer(storenode.ID)) + require.NoError(t, err) + require.True(t, exists) + + // Message should not exist + exists, err = wakuStore.Exists(ctx, pb.MessageHash{1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2}, WithPeer(storenode.ID)) + require.NoError(t, err) + require.False(t, exists) + + // Query messages with forward pagination + response, err := wakuStore.Query(ctx, FilterCriteria{ContentFilter: protocol.NewContentFilter(relay.DefaultWakuTopic, "test"), TimeStart: startTime, TimeEnd: endTime}, WithPaging(true, 2)) + require.NoError(t, err) + + // -- First page: + hasNext, err := response.Next(ctx) + require.NoError(t, err) + require.True(t, hasNext) + require.False(t, response.IsComplete()) + require.Len(t, response.messages, 2) + require.Equal(t, response.messages[0].Message.GetTimestamp(), messages[0].GetTimestamp()) + require.Equal(t, response.messages[1].Message.GetTimestamp(), messages[1].GetTimestamp()) + + // -- Second page: + hasNext, err = response.Next(ctx) + require.NoError(t, err) + require.True(t, hasNext) + require.False(t, response.IsComplete()) + require.Len(t, response.messages, 2) + require.Equal(t, response.messages[0].Message.GetTimestamp(), messages[2].GetTimestamp()) + require.Equal(t, response.messages[1].Message.GetTimestamp(), messages[3].GetTimestamp()) + + // -- Third page: + hasNext, err = response.Next(ctx) + require.NoError(t, err) + require.False(t, hasNext) + require.True(t, response.IsComplete()) + require.Len(t, response.messages, 1) + require.Equal(t, response.messages[0].Message.GetTimestamp(), messages[4].GetTimestamp()) + + // -- Trying to continue a completed cursor + hasNext, err = response.Next(ctx) + require.NoError(t, err) + require.False(t, hasNext) + require.True(t, response.IsComplete()) + require.Len(t, response.messages, 0) + + // Query messages with backward pagination + response, err = wakuStore.Query(ctx, FilterCriteria{ContentFilter: protocol.NewContentFilter(relay.DefaultWakuTopic, "test"), TimeStart: startTime, TimeEnd: endTime}, WithPaging(false, 2)) + require.NoError(t, err) + + // -- First page: + hasNext, err = response.Next(ctx) + require.NoError(t, err) + require.True(t, hasNext) + require.False(t, response.IsComplete()) + require.Len(t, response.messages, 2) + require.Equal(t, response.messages[0].Message.GetTimestamp(), messages[3].GetTimestamp()) + require.Equal(t, response.messages[1].Message.GetTimestamp(), messages[4].GetTimestamp()) + + // -- Second page: + hasNext, err = response.Next(ctx) + require.NoError(t, err) + require.True(t, hasNext) + require.False(t, response.IsComplete()) + require.Len(t, response.messages, 2) + require.Equal(t, response.messages[0].Message.GetTimestamp(), messages[1].GetTimestamp()) + require.Equal(t, response.messages[1].Message.GetTimestamp(), messages[2].GetTimestamp()) + + // -- Third page: + hasNext, err = response.Next(ctx) + require.NoError(t, err) + require.False(t, hasNext) + require.True(t, response.IsComplete()) + require.Len(t, response.messages, 1) + require.Equal(t, response.messages[0].Message.GetTimestamp(), messages[0].GetTimestamp()) + + // -- Trying to continue a completed cursor + hasNext, err = response.Next(ctx) + require.NoError(t, err) + require.False(t, hasNext) + require.True(t, response.IsComplete()) + require.Len(t, response.messages, 0) + + // No cursor should be returned if there are no messages that match the criteria + response, err = wakuStore.Query(ctx, FilterCriteria{ContentFilter: protocol.NewContentFilter(relay.DefaultWakuTopic, "no-messages"), TimeStart: startTime, TimeEnd: endTime}, WithPaging(true, 2)) + require.NoError(t, err) + require.Len(t, response.messages, 0) + require.Empty(t, response.Cursor()) + + // If the page size is larger than the number of existing messages, it should not return a cursor + response, err = wakuStore.Query(ctx, FilterCriteria{ContentFilter: protocol.NewContentFilter(relay.DefaultWakuTopic, "test"), TimeStart: startTime, TimeEnd: endTime}, WithPaging(true, 100)) + require.NoError(t, err) + require.Len(t, response.messages, 5) + require.Empty(t, response.Cursor()) + + // Invalid cursors should fail + // TODO: nwaku does not support this feature yet + //_, err = wakuStore.Query(ctx, FilterCriteria{ContentFilter: protocol.NewContentFilter(relay.DefaultWakuTopic, "test"), TimeStart: startTime, TimeEnd: endTime}, WithCursor([]byte{1, 2, 3, 4, 5, 6})) + //require.Error(t, err) + + // Inexistent cursors should return an empty response + // TODO: nwaku does not support this feature yet + //response, err = wakuStore.Query(ctx, FilterCriteria{ContentFilter: protocol.NewContentFilter(relay.DefaultWakuTopic, "test"), TimeStart: startTime, TimeEnd: endTime}, WithCursor(make([]byte, 32))) // Requesting cursor 0x00...00 + //require.NoError(t, err) + //require.Len(t, response.messages, 0) + //require.Empty(t, response.Cursor()) + + // Handle temporal history query with an invalid time window + _, err = wakuStore.Query(ctx, FilterCriteria{ContentFilter: protocol.NewContentFilter(relay.DefaultWakuTopic, "test"), TimeStart: endTime, TimeEnd: startTime}) + require.NotNil(t, err) + + // Handle temporal history query with a zero-size time window + response, err = wakuStore.Query(ctx, FilterCriteria{ContentFilter: protocol.NewContentFilter(relay.DefaultWakuTopic, "test"), TimeStart: startTime, TimeEnd: startTime}) + require.NoError(t, err) + require.Len(t, response.messages, 0) + require.Empty(t, response.Cursor()) + + // Should not include data + response, err = wakuStore.Request(ctx, MessageHashCriteria{MessageHashes: []pb.MessageHash{messages[0].Hash(relay.DefaultWakuTopic)}}, IncludeData(false), WithPeer(storenode.ID)) + require.NoError(t, err) + require.Len(t, response.messages, 1) + require.Nil(t, response.messages[0].Message) + + response, err = wakuStore.Request(ctx, FilterCriteria{ContentFilter: protocol.NewContentFilter(relay.DefaultWakuTopic, "test")}, IncludeData(false)) + require.NoError(t, err) + require.GreaterOrEqual(t, len(response.messages), 1) + require.Nil(t, response.messages[0].Message) +} diff --git a/waku/v2/protocol/store/criteria.go b/waku/v2/protocol/store/criteria.go new file mode 100644 index 000000000..f62de764c --- /dev/null +++ b/waku/v2/protocol/store/criteria.go @@ -0,0 +1,36 @@ +package store + +import ( + "github.com/waku-org/go-waku/waku/v2/protocol" + wpb "github.com/waku-org/go-waku/waku/v2/protocol/pb" + "github.com/waku-org/go-waku/waku/v2/protocol/store/pb" + "google.golang.org/protobuf/proto" +) + +type Criteria interface { + PopulateStoreRequest(request *pb.StoreQueryRequest) +} + +type FilterCriteria struct { + protocol.ContentFilter + TimeStart *int64 + TimeEnd *int64 +} + +func (f FilterCriteria) PopulateStoreRequest(request *pb.StoreQueryRequest) { + request.ContentTopics = f.ContentTopicsList() + request.PubsubTopic = proto.String(f.PubsubTopic) + request.TimeStart = f.TimeStart + request.TimeEnd = f.TimeEnd +} + +type MessageHashCriteria struct { + MessageHashes []wpb.MessageHash +} + +func (m MessageHashCriteria) PopulateStoreRequest(request *pb.StoreQueryRequest) { + request.MessageHashes = make([][]byte, len(m.MessageHashes)) + for i := range m.MessageHashes { + request.MessageHashes[i] = m.MessageHashes[i][:] + } +} diff --git a/waku/v2/protocol/store/options.go b/waku/v2/protocol/store/options.go new file mode 100644 index 000000000..b38afd53a --- /dev/null +++ b/waku/v2/protocol/store/options.go @@ -0,0 +1,126 @@ +package store + +import ( + "errors" + + "github.com/libp2p/go-libp2p/core/peer" + "github.com/multiformats/go-multiaddr" + "github.com/waku-org/go-waku/waku/v2/peermanager" + "github.com/waku-org/go-waku/waku/v2/protocol" +) + +type Parameters struct { + selectedPeer peer.ID + peerAddr multiaddr.Multiaddr + peerSelectionType peermanager.PeerSelection + preferredPeers peer.IDSlice + requestID []byte + cursor []byte + pageLimit uint64 + forward bool + includeData bool +} + +type RequestOption func(*Parameters) error + +// WithPeer is an option used to specify the peerID to request the message history. +// Note that this option is mutually exclusive to WithPeerAddr, only one of them can be used. +func WithPeer(p peer.ID) RequestOption { + return func(params *Parameters) error { + params.selectedPeer = p + if params.peerAddr != nil { + return errors.New("WithPeer and WithPeerAddr options are mutually exclusive") + } + return nil + } +} + +// WithPeerAddr is an option used to specify a peerAddress to request the message history. +// This new peer will be added to peerStore. +// Note that this option is mutually exclusive to WithPeerAddr, only one of them can be used. +func WithPeerAddr(pAddr multiaddr.Multiaddr) RequestOption { + return func(params *Parameters) error { + params.peerAddr = pAddr + if params.selectedPeer != "" { + return errors.New("WithPeerAddr and WithPeer options are mutually exclusive") + } + return nil + } +} + +// WithAutomaticPeerSelection is an option used to randomly select a peer from the peer store +// to request the message history. If a list of specific peers is passed, the peer will be chosen +// from that list assuming it supports the chosen protocol, otherwise it will chose a peer +// from the node peerstore +// Note: This option is avaiable only with peerManager +func WithAutomaticPeerSelection(fromThesePeers ...peer.ID) RequestOption { + return func(params *Parameters) error { + params.peerSelectionType = peermanager.Automatic + params.preferredPeers = fromThesePeers + return nil + } +} + +// WithFastestPeerSelection is an option used to select a peer from the peer store +// with the lowest ping. If a list of specific peers is passed, the peer will be chosen +// from that list assuming it supports the chosen protocol, otherwise it will chose a peer +// from the node peerstore +// Note: This option is avaiable only with peerManager +func WithFastestPeerSelection(fromThesePeers ...peer.ID) RequestOption { + return func(params *Parameters) error { + params.peerSelectionType = peermanager.LowestRTT + return nil + } +} + +// WithRequestID is an option to set a specific request ID to be used when +// creating a store request +func WithRequestID(requestID []byte) RequestOption { + return func(params *Parameters) error { + params.requestID = requestID + return nil + } +} + +// WithAutomaticRequestID is an option to automatically generate a request ID +// when creating a store request +func WithAutomaticRequestID() RequestOption { + return func(params *Parameters) error { + params.requestID = protocol.GenerateRequestID() + return nil + } +} + +func WithCursor(cursor []byte) RequestOption { + return func(params *Parameters) error { + params.cursor = cursor + return nil + } +} + +// WithPaging is an option used to specify the order and maximum number of records to return +func WithPaging(forward bool, limit uint64) RequestOption { + return func(params *Parameters) error { + params.forward = forward + params.pageLimit = limit + return nil + } +} + +// IncludeData is an option used to indicate whether you want to return the message content or not +func IncludeData(v bool) RequestOption { + return func(params *Parameters) error { + params.includeData = v + return nil + } +} + +// Default options to be used when querying a store node for results +func DefaultOptions() []RequestOption { + return []RequestOption{ + WithAutomaticRequestID(), + WithAutomaticPeerSelection(), + WithPaging(true, DefaultPageSize), + IncludeData(true), + } +} diff --git a/waku/v2/protocol/store/pb/generate.go b/waku/v2/protocol/store/pb/generate.go index 31462bdac..c7e957821 100644 --- a/waku/v2/protocol/store/pb/generate.go +++ b/waku/v2/protocol/store/pb/generate.go @@ -1,3 +1,3 @@ package pb -//go:generate protoc -I./../../waku-proto/waku/store/v2beta4//. -I./../../waku-proto/ --go_opt=paths=source_relative --go_opt=Mstore.proto=github.com/waku-org/go-waku/waku/v2/protocol/store/pb --go_opt=Mwaku/message/v1/message.proto=github.com/waku-org/go-waku/waku/v2/protocol/pb --go_out=. ./../../waku-proto/waku/store/v2beta4/store.proto +//go:generate protoc -I. -I./../../waku-proto/ --go_opt=paths=source_relative --go_opt=Mstorev3.proto=github.com/waku-org/go-waku/waku/v2/protocol/store/pb --go_opt=Mwaku/message/v1/message.proto=github.com/waku-org/go-waku/waku/v2/protocol/pb --go_out=. ./storev3.proto diff --git a/waku/v2/protocol/store/pb/hash.go b/waku/v2/protocol/store/pb/hash.go new file mode 100644 index 000000000..600b5cafb --- /dev/null +++ b/waku/v2/protocol/store/pb/hash.go @@ -0,0 +1,9 @@ +package pb + +import ( + pb "github.com/waku-org/go-waku/waku/v2/protocol/pb" +) + +func (x *WakuMessageKeyValue) WakuMessageHash() pb.MessageHash { + return pb.ToMessageHash(x.MessageHash) +} diff --git a/waku/v2/protocol/store/pb/storev3.pb.go b/waku/v2/protocol/store/pb/storev3.pb.go new file mode 100644 index 000000000..10f90e0b1 --- /dev/null +++ b/waku/v2/protocol/store/pb/storev3.pb.go @@ -0,0 +1,445 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v3.21.12 +// source: storev3.proto + +// Protocol identifier: /vac/waku/store/3.0.0 + +package pb + +import ( + pb "github.com/waku-org/go-waku/waku/v2/protocol/pb" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type WakuMessageKeyValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MessageHash []byte `protobuf:"bytes,1,opt,name=message_hash,json=messageHash,proto3,oneof" json:"message_hash,omitempty"` // Globally unique key for a Waku Message + Message *pb.WakuMessage `protobuf:"bytes,2,opt,name=message,proto3,oneof" json:"message,omitempty"` // Full message content as value +} + +func (x *WakuMessageKeyValue) Reset() { + *x = WakuMessageKeyValue{} + if protoimpl.UnsafeEnabled { + mi := &file_storev3_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WakuMessageKeyValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WakuMessageKeyValue) ProtoMessage() {} + +func (x *WakuMessageKeyValue) ProtoReflect() protoreflect.Message { + mi := &file_storev3_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WakuMessageKeyValue.ProtoReflect.Descriptor instead. +func (*WakuMessageKeyValue) Descriptor() ([]byte, []int) { + return file_storev3_proto_rawDescGZIP(), []int{0} +} + +func (x *WakuMessageKeyValue) GetMessageHash() []byte { + if x != nil { + return x.MessageHash + } + return nil +} + +func (x *WakuMessageKeyValue) GetMessage() *pb.WakuMessage { + if x != nil { + return x.Message + } + return nil +} + +type StoreQueryRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` + IncludeData bool `protobuf:"varint,2,opt,name=include_data,json=includeData,proto3" json:"include_data,omitempty"` // Response should include full message content + // Filter criteria for content-filtered queries + PubsubTopic *string `protobuf:"bytes,10,opt,name=pubsub_topic,json=pubsubTopic,proto3,oneof" json:"pubsub_topic,omitempty"` + ContentTopics []string `protobuf:"bytes,11,rep,name=content_topics,json=contentTopics,proto3" json:"content_topics,omitempty"` + TimeStart *int64 `protobuf:"zigzag64,12,opt,name=time_start,json=timeStart,proto3,oneof" json:"time_start,omitempty"` + TimeEnd *int64 `protobuf:"zigzag64,13,opt,name=time_end,json=timeEnd,proto3,oneof" json:"time_end,omitempty"` + // List of key criteria for lookup queries + MessageHashes [][]byte `protobuf:"bytes,20,rep,name=message_hashes,json=messageHashes,proto3" json:"message_hashes,omitempty"` // Message hashes (keys) to lookup + // Pagination info. 50 Reserved + PaginationCursor []byte `protobuf:"bytes,51,opt,name=pagination_cursor,json=paginationCursor,proto3,oneof" json:"pagination_cursor,omitempty"` // Message hash (key) from where to start query (exclusive) + PaginationForward bool `protobuf:"varint,52,opt,name=pagination_forward,json=paginationForward,proto3" json:"pagination_forward,omitempty"` + PaginationLimit *uint64 `protobuf:"varint,53,opt,name=pagination_limit,json=paginationLimit,proto3,oneof" json:"pagination_limit,omitempty"` +} + +func (x *StoreQueryRequest) Reset() { + *x = StoreQueryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_storev3_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StoreQueryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StoreQueryRequest) ProtoMessage() {} + +func (x *StoreQueryRequest) ProtoReflect() protoreflect.Message { + mi := &file_storev3_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StoreQueryRequest.ProtoReflect.Descriptor instead. +func (*StoreQueryRequest) Descriptor() ([]byte, []int) { + return file_storev3_proto_rawDescGZIP(), []int{1} +} + +func (x *StoreQueryRequest) GetRequestId() string { + if x != nil { + return x.RequestId + } + return "" +} + +func (x *StoreQueryRequest) GetIncludeData() bool { + if x != nil { + return x.IncludeData + } + return false +} + +func (x *StoreQueryRequest) GetPubsubTopic() string { + if x != nil && x.PubsubTopic != nil { + return *x.PubsubTopic + } + return "" +} + +func (x *StoreQueryRequest) GetContentTopics() []string { + if x != nil { + return x.ContentTopics + } + return nil +} + +func (x *StoreQueryRequest) GetTimeStart() int64 { + if x != nil && x.TimeStart != nil { + return *x.TimeStart + } + return 0 +} + +func (x *StoreQueryRequest) GetTimeEnd() int64 { + if x != nil && x.TimeEnd != nil { + return *x.TimeEnd + } + return 0 +} + +func (x *StoreQueryRequest) GetMessageHashes() [][]byte { + if x != nil { + return x.MessageHashes + } + return nil +} + +func (x *StoreQueryRequest) GetPaginationCursor() []byte { + if x != nil { + return x.PaginationCursor + } + return nil +} + +func (x *StoreQueryRequest) GetPaginationForward() bool { + if x != nil { + return x.PaginationForward + } + return false +} + +func (x *StoreQueryRequest) GetPaginationLimit() uint64 { + if x != nil && x.PaginationLimit != nil { + return *x.PaginationLimit + } + return 0 +} + +type StoreQueryResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` + StatusCode *uint32 `protobuf:"varint,10,opt,name=status_code,json=statusCode,proto3,oneof" json:"status_code,omitempty"` + StatusDesc *string `protobuf:"bytes,11,opt,name=status_desc,json=statusDesc,proto3,oneof" json:"status_desc,omitempty"` + Messages []*WakuMessageKeyValue `protobuf:"bytes,20,rep,name=messages,proto3" json:"messages,omitempty"` + PaginationCursor []byte `protobuf:"bytes,51,opt,name=pagination_cursor,json=paginationCursor,proto3,oneof" json:"pagination_cursor,omitempty"` +} + +func (x *StoreQueryResponse) Reset() { + *x = StoreQueryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_storev3_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StoreQueryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StoreQueryResponse) ProtoMessage() {} + +func (x *StoreQueryResponse) ProtoReflect() protoreflect.Message { + mi := &file_storev3_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StoreQueryResponse.ProtoReflect.Descriptor instead. +func (*StoreQueryResponse) Descriptor() ([]byte, []int) { + return file_storev3_proto_rawDescGZIP(), []int{2} +} + +func (x *StoreQueryResponse) GetRequestId() string { + if x != nil { + return x.RequestId + } + return "" +} + +func (x *StoreQueryResponse) GetStatusCode() uint32 { + if x != nil && x.StatusCode != nil { + return *x.StatusCode + } + return 0 +} + +func (x *StoreQueryResponse) GetStatusDesc() string { + if x != nil && x.StatusDesc != nil { + return *x.StatusDesc + } + return "" +} + +func (x *StoreQueryResponse) GetMessages() []*WakuMessageKeyValue { + if x != nil { + return x.Messages + } + return nil +} + +func (x *StoreQueryResponse) GetPaginationCursor() []byte { + if x != nil { + return x.PaginationCursor + } + return nil +} + +var File_storev3_proto protoreflect.FileDescriptor + +var file_storev3_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x76, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x0d, 0x77, 0x61, 0x6b, 0x75, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x1a, 0x1d, + 0x77, 0x61, 0x6b, 0x75, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2f, 0x76, 0x31, 0x2f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x97, 0x01, + 0x0a, 0x13, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0b, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x61, 0x73, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x77, 0x61, 0x6b, 0x75, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x01, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xf8, 0x03, 0x0a, 0x11, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x26, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x54, + 0x6f, 0x70, 0x69, 0x63, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x22, + 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x12, 0x48, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x12, 0x48, 0x02, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x11, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x33, + 0x20, 0x01, 0x28, 0x0c, 0x48, 0x03, 0x52, 0x10, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x12, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x18, 0x34, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x35, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, + 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x22, 0xa7, 0x02, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, + 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, + 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x73, + 0x63, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x61, 0x6b, 0x75, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x11, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0c, 0x48, + 0x02, 0x52, 0x10, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_storev3_proto_rawDescOnce sync.Once + file_storev3_proto_rawDescData = file_storev3_proto_rawDesc +) + +func file_storev3_proto_rawDescGZIP() []byte { + file_storev3_proto_rawDescOnce.Do(func() { + file_storev3_proto_rawDescData = protoimpl.X.CompressGZIP(file_storev3_proto_rawDescData) + }) + return file_storev3_proto_rawDescData +} + +var file_storev3_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_storev3_proto_goTypes = []interface{}{ + (*WakuMessageKeyValue)(nil), // 0: waku.store.v3.WakuMessageKeyValue + (*StoreQueryRequest)(nil), // 1: waku.store.v3.StoreQueryRequest + (*StoreQueryResponse)(nil), // 2: waku.store.v3.StoreQueryResponse + (*pb.WakuMessage)(nil), // 3: waku.message.v1.WakuMessage +} +var file_storev3_proto_depIdxs = []int32{ + 3, // 0: waku.store.v3.WakuMessageKeyValue.message:type_name -> waku.message.v1.WakuMessage + 0, // 1: waku.store.v3.StoreQueryResponse.messages:type_name -> waku.store.v3.WakuMessageKeyValue + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_storev3_proto_init() } +func file_storev3_proto_init() { + if File_storev3_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_storev3_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WakuMessageKeyValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_storev3_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StoreQueryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_storev3_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StoreQueryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_storev3_proto_msgTypes[0].OneofWrappers = []interface{}{} + file_storev3_proto_msgTypes[1].OneofWrappers = []interface{}{} + file_storev3_proto_msgTypes[2].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_storev3_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_storev3_proto_goTypes, + DependencyIndexes: file_storev3_proto_depIdxs, + MessageInfos: file_storev3_proto_msgTypes, + }.Build() + File_storev3_proto = out.File + file_storev3_proto_rawDesc = nil + file_storev3_proto_goTypes = nil + file_storev3_proto_depIdxs = nil +} diff --git a/waku/v2/protocol/store/pb/storev3.proto b/waku/v2/protocol/store/pb/storev3.proto new file mode 100644 index 000000000..c828a713f --- /dev/null +++ b/waku/v2/protocol/store/pb/storev3.proto @@ -0,0 +1,41 @@ +syntax = "proto3"; + +// Protocol identifier: /vac/waku/store/3.0.0 +package waku.store.v3; + +import "waku/message/v1/message.proto"; + +message WakuMessageKeyValue { + optional bytes message_hash = 1; // Globally unique key for a Waku Message + optional waku.message.v1.WakuMessage message = 2; // Full message content as value +} + +message StoreQueryRequest { + string request_id = 1; + bool include_data = 2; // Response should include full message content + + // Filter criteria for content-filtered queries + optional string pubsub_topic = 10; + repeated string content_topics = 11; + optional sint64 time_start = 12; + optional sint64 time_end = 13; + + // List of key criteria for lookup queries + repeated bytes message_hashes = 20; // Message hashes (keys) to lookup + + // Pagination info. 50 Reserved + optional bytes pagination_cursor = 51; // Message hash (key) from where to start query (exclusive) + bool pagination_forward = 52; + optional uint64 pagination_limit = 53; +} + +message StoreQueryResponse { + string request_id = 1; + + optional uint32 status_code = 10; + optional string status_desc = 11; + + repeated WakuMessageKeyValue messages = 20; + + optional bytes pagination_cursor = 51; +} \ No newline at end of file diff --git a/waku/v2/protocol/store/pb/validation.go b/waku/v2/protocol/store/pb/validation.go index 740b58086..40bdfade6 100644 --- a/waku/v2/protocol/store/pb/validation.go +++ b/waku/v2/protocol/store/pb/validation.go @@ -4,44 +4,70 @@ import ( "errors" ) -// MaxContentFilters is the maximum number of allowed content filters in a query -const MaxContentFilters = 10 +// MaxContentTopics is the maximum number of allowed contenttopics in a query +const MaxContentTopics = 10 var ( - errMissingRequestID = errors.New("missing RequestId field") - errMissingQuery = errors.New("missing Query field") - errRequestIDMismatch = errors.New("requestID in response does not match request") - errMaxContentFilters = errors.New("exceeds the maximum number of content filters allowed") - errEmptyContentTopics = errors.New("one or more content topics specified is empty") + errMissingRequestID = errors.New("missing RequestId field") + errMessageHashOtherFields = errors.New("cannot use MessageHashes with ContentTopics/PubsubTopic") + errRequestIDMismatch = errors.New("requestID in response does not match request") + errMaxContentTopics = errors.New("exceeds the maximum number of ContentTopics allowed") + errEmptyContentTopic = errors.New("one or more content topics specified is empty") + errMissingPubsubTopic = errors.New("missing PubsubTopic field") + errMissingContentTopics = errors.New("missing ContentTopics field") + errMissingStatusCode = errors.New("missing StatusCode field") + errInvalidTimeRange = errors.New("invalid time range") + errInvalidMessageHash = errors.New("invalid message hash") ) -func (x *HistoryQuery) Validate() error { - if len(x.ContentFilters) > MaxContentFilters { - return errMaxContentFilters +func (x *StoreQueryRequest) Validate() error { + if x.RequestId == "" { + return errMissingRequestID } - for _, m := range x.ContentFilters { - if m.ContentTopic == "" { - return errEmptyContentTopics + if len(x.MessageHashes) != 0 { + if len(x.ContentTopics) != 0 || x.GetPubsubTopic() != "" { + return errMessageHashOtherFields + } + + for _, x := range x.MessageHashes { + if len(x) != 32 { + return errInvalidMessageHash + } + } + } else { + if x.GetPubsubTopic() == "" { + return errMissingPubsubTopic + } + + if len(x.ContentTopics) == 0 { + return errMissingContentTopics + } else if len(x.ContentTopics) > MaxContentTopics { + return errMaxContentTopics + } else { + for _, m := range x.ContentTopics { + if m == "" { + return errEmptyContentTopic + } + } } - } + if x.GetTimeStart() > 0 && x.GetTimeEnd() > 0 && x.GetTimeStart() > x.GetTimeEnd() { + return errInvalidTimeRange + } + } return nil } -func (x *HistoryRPC) ValidateQuery() error { - if x.RequestId == "" { - return errMissingRequestID +func (x *StoreQueryResponse) Validate(requestID string) error { + if x.RequestId != "" && x.RequestId != requestID { + return errRequestIDMismatch } - if x.Query == nil { - return errMissingQuery + if x.StatusCode == nil { + return errMissingStatusCode } - return x.Query.Validate() -} - -func (x *HistoryResponse) Validate() error { for _, m := range x.Messages { if err := m.Validate(); err != nil { return err @@ -51,17 +77,13 @@ func (x *HistoryResponse) Validate() error { return nil } -func (x *HistoryRPC) ValidateResponse(requestID string) error { - if x.RequestId == "" { - return errMissingRequestID - } - - if x.RequestId != requestID { - return errRequestIDMismatch +func (x *WakuMessageKeyValue) Validate() error { + if len(x.MessageHash) != 32 { + return errInvalidMessageHash } - if x.Response != nil { - return x.Response.Validate() + if x.Message != nil { + return x.Message.Validate() } return nil diff --git a/waku/v2/protocol/store/result.go b/waku/v2/protocol/store/result.go new file mode 100644 index 000000000..be67671ec --- /dev/null +++ b/waku/v2/protocol/store/result.go @@ -0,0 +1,68 @@ +package store + +import ( + "context" + + "github.com/libp2p/go-libp2p/core/peer" + "github.com/waku-org/go-waku/waku/v2/protocol/store/pb" +) + +// Result represents a valid response from a store node +type Result struct { + started bool + messages []*pb.WakuMessageKeyValue + store *WakuStore + storeRequest *pb.StoreQueryRequest + cursor []byte + peerID peer.ID +} + +func (r *Result) Cursor() []byte { + return r.cursor +} + +func (r *Result) IsComplete() bool { + return r.cursor == nil +} + +func (r *Result) PeerID() peer.ID { + return r.peerID +} + +func (r *Result) Query() *pb.StoreQueryRequest { + return r.storeRequest +} + +func (r *Result) PubsubTopic() string { + return r.storeRequest.GetPubsubTopic() +} + +func (r *Result) Next(ctx context.Context) (bool, error) { + if !r.started { + r.started = true + return len(r.messages) != 0, nil + } + + if r.IsComplete() { + r.cursor = nil + r.messages = nil + return false, nil + } + + newResult, err := r.store.next(ctx, r) + if err != nil { + return false, err + } + + r.cursor = newResult.cursor + r.messages = newResult.messages + + return !r.IsComplete(), nil +} + +func (r *Result) Messages() []*pb.WakuMessageKeyValue { + if !r.started { + return nil + } + return r.messages +} From 268b53ce83485ee63b0b6eb419037b0609cb7765 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 19 Mar 2024 18:12:47 +0800 Subject: [PATCH 50/97] test: node with static sharding and multiple pubSubTopics --- waku/v2/node/wakunode2_test.go | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 1912fc781..3d887a976 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -319,3 +319,38 @@ func TestDecoupledStoreFromRelay(t *testing.T) { require.Len(t, result.Messages, 1) require.Equal(t, msg.Timestamp, result.Messages[0].Timestamp) } + +func TestStaticShardingMultiplePubSubTopics(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // NODE1: Relay Node + Filter Server + hostAddr1, err := net.ResolveTCPAddr("tcp", "0.0.0.0:0") + require.NoError(t, err) + wakuNode1, err := New( + WithHostAddress(hostAddr1), + WithWakuRelay(), + WithWakuFilterFullNode(), + ) + require.NoError(t, err) + err = wakuNode1.Start(ctx) + require.NoError(t, err) + defer wakuNode1.Stop() + + pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(0)) + pubSubTopic1Str := pubSubTopic1.String() + + pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(10)) + pubSubTopic2Str := pubSubTopic2.String() + + subs1, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str)) + require.NoError(t, err) + + subs2, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic2Str)) + require.NoError(t, err) + + require.NotEqual(t, subs1[0].ID, subs2[0].ID) + defer subs1[0].Unsubscribe() + defer subs2[0].Unsubscribe() + +} From 561d00a5ec132dcd41f4656532dc00d50d2b8101 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 20 Mar 2024 15:00:01 +0800 Subject: [PATCH 51/97] test: remove Unsubscribe() calls --- waku/v2/node/wakunode2_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 3d887a976..e9420ad8e 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -350,7 +350,7 @@ func TestStaticShardingMultiplePubSubTopics(t *testing.T) { require.NoError(t, err) require.NotEqual(t, subs1[0].ID, subs2[0].ID) - defer subs1[0].Unsubscribe() - defer subs2[0].Unsubscribe() + //defer subs1[0].Unsubscribe() + //defer subs2[0].Unsubscribe() } From f1ecedb8f1807c91a44a2308217f26dddf76edc9 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 20 Mar 2024 17:45:34 +0800 Subject: [PATCH 52/97] fix: add content topics to TestStaticShardingMultipleTopics --- waku/v2/node/wakunode2_test.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index e9420ad8e..e8fe50fdf 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -320,17 +320,16 @@ func TestDecoupledStoreFromRelay(t *testing.T) { require.Equal(t, msg.Timestamp, result.Messages[0].Timestamp) } -func TestStaticShardingMultiplePubSubTopics(t *testing.T) { +func TestStaticShardingMultipleTopics(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() - // NODE1: Relay Node + Filter Server + // Node1 with Relay hostAddr1, err := net.ResolveTCPAddr("tcp", "0.0.0.0:0") require.NoError(t, err) wakuNode1, err := New( WithHostAddress(hostAddr1), WithWakuRelay(), - WithWakuFilterFullNode(), ) require.NoError(t, err) err = wakuNode1.Start(ctx) @@ -339,18 +338,25 @@ func TestStaticShardingMultiplePubSubTopics(t *testing.T) { pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(0)) pubSubTopic1Str := pubSubTopic1.String() + contentTopic1 := "/test/2/my-app" pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(10)) pubSubTopic2Str := pubSubTopic2.String() + contentTopic2 := "/test/3/my-app" - subs1, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str)) + subs1, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str, contentTopic1)) require.NoError(t, err) - subs2, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic2Str)) + subs2, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic2Str, contentTopic2)) require.NoError(t, err) require.NotEqual(t, subs1[0].ID, subs2[0].ID) - //defer subs1[0].Unsubscribe() - //defer subs2[0].Unsubscribe() + + s1, err := wakuNode1.Relay().GetSubscriptionWithPubsubTopic(pubSubTopic1Str, contentTopic1) + require.NoError(t, err) + s2, err := wakuNode1.Relay().GetSubscriptionWithPubsubTopic(pubSubTopic2Str, contentTopic2) + require.NoError(t, err) + require.Equal(t, s1.ID, subs1[0].ID) + require.Equal(t, s2.ID, subs2[0].ID) } From 6b1646d125d83bdb974f77508a5b02facdc3da72 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 20 Mar 2024 17:58:32 +0800 Subject: [PATCH 53/97] fix: add IsSubscribed() test --- waku/v2/node/wakunode2_test.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index e8fe50fdf..a58588acb 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -344,17 +344,22 @@ func TestStaticShardingMultipleTopics(t *testing.T) { pubSubTopic2Str := pubSubTopic2.String() contentTopic2 := "/test/3/my-app" - subs1, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str, contentTopic1)) + r := wakuNode1.Relay() + + subs1, err := r.Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str, contentTopic1)) require.NoError(t, err) - subs2, err := wakuNode1.Relay().Subscribe(ctx, protocol.NewContentFilter(pubSubTopic2Str, contentTopic2)) + subs2, err := r.Subscribe(ctx, protocol.NewContentFilter(pubSubTopic2Str, contentTopic2)) require.NoError(t, err) require.NotEqual(t, subs1[0].ID, subs2[0].ID) - s1, err := wakuNode1.Relay().GetSubscriptionWithPubsubTopic(pubSubTopic1Str, contentTopic1) + require.True(t, r.IsSubscribed(pubSubTopic1Str)) + require.True(t, r.IsSubscribed(pubSubTopic2Str)) + + s1, err := r.GetSubscriptionWithPubsubTopic(pubSubTopic1Str, contentTopic1) require.NoError(t, err) - s2, err := wakuNode1.Relay().GetSubscriptionWithPubsubTopic(pubSubTopic2Str, contentTopic2) + s2, err := r.GetSubscriptionWithPubsubTopic(pubSubTopic2Str, contentTopic2) require.NoError(t, err) require.Equal(t, s1.ID, subs1[0].ID) require.Equal(t, s2.ID, subs2[0].ID) From a48ae3b8f6497fa5efcc8826050bc411acab3717 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 21 Mar 2024 18:36:45 +0800 Subject: [PATCH 54/97] fix: switch to use GetSubscription instead of GetSubscriptionWithPubsubTopic --- waku/v2/node/wakunode2_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index a58588acb..a6a4e3ee9 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -338,11 +338,11 @@ func TestStaticShardingMultipleTopics(t *testing.T) { pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(0)) pubSubTopic1Str := pubSubTopic1.String() - contentTopic1 := "/test/2/my-app" + contentTopic1 := "/test/2/my-app/sharded" pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(10)) pubSubTopic2Str := pubSubTopic2.String() - contentTopic2 := "/test/3/my-app" + contentTopic2 := "/test/3/my-app/sharded" r := wakuNode1.Relay() @@ -357,9 +357,9 @@ func TestStaticShardingMultipleTopics(t *testing.T) { require.True(t, r.IsSubscribed(pubSubTopic1Str)) require.True(t, r.IsSubscribed(pubSubTopic2Str)) - s1, err := r.GetSubscriptionWithPubsubTopic(pubSubTopic1Str, contentTopic1) + s1, err := r.GetSubscription(contentTopic1) require.NoError(t, err) - s2, err := r.GetSubscriptionWithPubsubTopic(pubSubTopic2Str, contentTopic2) + s2, err := r.GetSubscription(contentTopic2) require.NoError(t, err) require.Equal(t, s1.ID, subs1[0].ID) require.Equal(t, s2.ID, subs2[0].ID) From 157717c88eaab9b34d4c2b8b89fc14267e556e47 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 21 Mar 2024 22:11:32 +0800 Subject: [PATCH 55/97] fix: switch back to use GetSubscriptionWithPubsubTopic --- waku/v2/node/wakunode2_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index a6a4e3ee9..2f79c0d60 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -357,9 +357,9 @@ func TestStaticShardingMultipleTopics(t *testing.T) { require.True(t, r.IsSubscribed(pubSubTopic1Str)) require.True(t, r.IsSubscribed(pubSubTopic2Str)) - s1, err := r.GetSubscription(contentTopic1) + s1, err := r.GetSubscriptionWithPubsubTopic(pubSubTopic1Str, contentTopic1) require.NoError(t, err) - s2, err := r.GetSubscription(contentTopic2) + s2, err := r.GetSubscriptionWithPubsubTopic(pubSubTopic2Str, contentTopic2) require.NoError(t, err) require.Equal(t, s1.ID, subs1[0].ID) require.Equal(t, s2.ID, subs2[0].ID) From b7e6ecf46af2f8f625960a9cf5dbb5a62cde4fb4 Mon Sep 17 00:00:00 2001 From: Roman Date: Sat, 23 Mar 2024 13:15:19 +0800 Subject: [PATCH 56/97] fix: validate with messages --- waku/v2/node/wakunode2_test.go | 63 ++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 2f79c0d60..d1b19a3d3 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -344,6 +344,10 @@ func TestStaticShardingMultipleTopics(t *testing.T) { pubSubTopic2Str := pubSubTopic2.String() contentTopic2 := "/test/3/my-app/sharded" + log := utils.Logger() + + log.Info("pubsub1", zap.String("pb1", pubSubTopic1Str)) + r := wakuNode1.Relay() subs1, err := r.Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str, contentTopic1)) @@ -364,4 +368,63 @@ func TestStaticShardingMultipleTopics(t *testing.T) { require.Equal(t, s1.ID, subs1[0].ID) require.Equal(t, s2.ID, subs2[0].ID) + // Wait for subscriptions + time.Sleep(1 * time.Second) + + // Send message to subscribed topic + msg := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message") + + _, err = r.Publish(ctx, msg, relay.WithPubSubTopic(pubSubTopic1Str)) + require.NoError(t, err) + + time.Sleep(500 * time.Millisecond) + + var wg sync.WaitGroup + wg.Add(1) + // Message msg could be retrieved + go func() { + defer wg.Done() + env, ok := <-subs1[0].Ch + require.True(t, ok, "no message retrieved") + require.Equal(t, msg.Timestamp, env.Message().Timestamp) + }() + + wg.Wait() + + // Send another message to non-subscribed pubsub topic, but subscribed content topic + msg2 := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message 2") + + _, err = r.Publish(ctx, msg2, relay.WithPubSubTopic("/waku/2/rs/0/321")) + require.NoError(t, err) + + time.Sleep(500 * time.Millisecond) + + // No message could be retrieved + wg.Add(1) + go func() { + defer wg.Done() + _, ok := <-subs1[0].Ch + require.False(t, ok) + }() + + wg.Wait() + + // Send another message to subscribed pubsub topic, but not subscribed content topic - mix it up + msg3 := tests.CreateWakuMessage(contentTopic2, utils.GetUnixEpoch(), "test message 3") + + _, err = r.Publish(ctx, msg3, relay.WithPubSubTopic(pubSubTopic1Str)) + require.NoError(t, err) + + time.Sleep(500 * time.Millisecond) + + // No message could be retrieved + wg.Add(1) + go func() { + defer wg.Done() + _, ok := <-subs1[0].Ch + require.False(t, ok) + }() + + wg.Wait() + } From a3f4be7d3cac826b31156dcc927e706ecbd8405a Mon Sep 17 00:00:00 2001 From: Roman Date: Sat, 23 Mar 2024 13:25:08 +0800 Subject: [PATCH 57/97] fix: extend deadline for context --- waku/v2/node/wakunode2_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index d1b19a3d3..050aa8eaf 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -321,7 +321,7 @@ func TestDecoupledStoreFromRelay(t *testing.T) { } func TestStaticShardingMultipleTopics(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) defer cancel() // Node1 with Relay From e056bdab938b9a0a7a1abcec367dfdbc0b3f76ad Mon Sep 17 00:00:00 2001 From: Roman Date: Sat, 23 Mar 2024 13:42:52 +0800 Subject: [PATCH 58/97] fix: use select for timeout wait --- waku/v2/node/wakunode2_test.go | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 050aa8eaf..4953cad82 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -321,7 +321,7 @@ func TestDecoupledStoreFromRelay(t *testing.T) { } func TestStaticShardingMultipleTopics(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() // Node1 with Relay @@ -344,10 +344,6 @@ func TestStaticShardingMultipleTopics(t *testing.T) { pubSubTopic2Str := pubSubTopic2.String() contentTopic2 := "/test/3/my-app/sharded" - log := utils.Logger() - - log.Info("pubsub1", zap.String("pb1", pubSubTopic1Str)) - r := wakuNode1.Relay() subs1, err := r.Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str, contentTopic1)) @@ -377,7 +373,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { _, err = r.Publish(ctx, msg, relay.WithPubSubTopic(pubSubTopic1Str)) require.NoError(t, err) - time.Sleep(500 * time.Millisecond) + time.Sleep(100 * time.Millisecond) var wg sync.WaitGroup wg.Add(1) @@ -397,14 +393,20 @@ func TestStaticShardingMultipleTopics(t *testing.T) { _, err = r.Publish(ctx, msg2, relay.WithPubSubTopic("/waku/2/rs/0/321")) require.NoError(t, err) - time.Sleep(500 * time.Millisecond) + time.Sleep(100 * time.Millisecond) // No message could be retrieved wg.Add(1) go func() { defer wg.Done() - _, ok := <-subs1[0].Ch - require.False(t, ok) + select { + case _, ok := <-subs1[0].Ch: + require.False(t, ok, "should not retrieve message") + case <-time.After(1 * time.Second): + // All good + case <-ctx.Done(): + require.Fail(t, "test exceeded allocated time") + } }() wg.Wait() @@ -415,14 +417,20 @@ func TestStaticShardingMultipleTopics(t *testing.T) { _, err = r.Publish(ctx, msg3, relay.WithPubSubTopic(pubSubTopic1Str)) require.NoError(t, err) - time.Sleep(500 * time.Millisecond) + time.Sleep(100 * time.Millisecond) // No message could be retrieved wg.Add(1) go func() { defer wg.Done() - _, ok := <-subs1[0].Ch - require.False(t, ok) + select { + case _, ok := <-subs1[0].Ch: + require.False(t, ok, "should not retrieve message") + case <-time.After(1 * time.Second): + // All good + case <-ctx.Done(): + require.Fail(t, "test exceeded allocated time") + } }() wg.Wait() From 548870b5cb7516ec824185dc32423d615c351e6e Mon Sep 17 00:00:00 2001 From: Roman Date: Sat, 23 Mar 2024 13:54:14 +0800 Subject: [PATCH 59/97] fix: refactor repeated code into waitForTimeout --- waku/v2/node/wakunode2_test.go | 47 ++++++++++++++-------------------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 4953cad82..f9cf11fec 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -38,6 +38,23 @@ func createTestMsg(version uint32) *pb.WakuMessage { return message } +func waitForTimeout(t *testing.T, ctx context.Context, wg *sync.WaitGroup, ch chan *protocol.Envelope) { + wg.Add(1) + go func() { + defer wg.Done() + select { + case _, ok := <-ch: + require.False(t, ok, "should not retrieve message") + case <-time.After(1 * time.Second): + // All good + case <-ctx.Done(): + require.Fail(t, "test exceeded allocated time") + } + }() + + wg.Wait() +} + func TestWakuNode2(t *testing.T) { hostAddr, _ := net.ResolveTCPAddr("tcp", "0.0.0.0:0") @@ -396,20 +413,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { time.Sleep(100 * time.Millisecond) // No message could be retrieved - wg.Add(1) - go func() { - defer wg.Done() - select { - case _, ok := <-subs1[0].Ch: - require.False(t, ok, "should not retrieve message") - case <-time.After(1 * time.Second): - // All good - case <-ctx.Done(): - require.Fail(t, "test exceeded allocated time") - } - }() - - wg.Wait() + waitForTimeout(t, ctx, &wg, subs1[0].Ch) // Send another message to subscribed pubsub topic, but not subscribed content topic - mix it up msg3 := tests.CreateWakuMessage(contentTopic2, utils.GetUnixEpoch(), "test message 3") @@ -420,19 +424,6 @@ func TestStaticShardingMultipleTopics(t *testing.T) { time.Sleep(100 * time.Millisecond) // No message could be retrieved - wg.Add(1) - go func() { - defer wg.Done() - select { - case _, ok := <-subs1[0].Ch: - require.False(t, ok, "should not retrieve message") - case <-time.After(1 * time.Second): - // All good - case <-ctx.Done(): - require.Fail(t, "test exceeded allocated time") - } - }() - - wg.Wait() + waitForTimeout(t, ctx, &wg, subs1[0].Ch) } From b71305b4f05f4c8f301b34f33ec541352184ae12 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 27 Mar 2024 18:13:20 +0800 Subject: [PATCH 60/97] test: Waku store with static sharding --- .../legacy_store/waku_store_protocol_test.go | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/waku/v2/protocol/legacy_store/waku_store_protocol_test.go b/waku/v2/protocol/legacy_store/waku_store_protocol_test.go index b0b315fcb..e89d698a8 100644 --- a/waku/v2/protocol/legacy_store/waku_store_protocol_test.go +++ b/waku/v2/protocol/legacy_store/waku_store_protocol_test.go @@ -426,3 +426,86 @@ func TestWakuStoreStart(t *testing.T) { defer s2.Stop() } + +func TestWakuStoreWithStaticSharding(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + host1, err := libp2p.New(libp2p.DefaultTransports, libp2p.ListenAddrStrings("/ip4/0.0.0.0/tcp/0")) + require.NoError(t, err) + + s1 := NewWakuStore(MemoryDB(t), nil, timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) + s1.SetHost(host1) + + // Prepare pubsub topics for static sharding + pubSubTopics := protocol.ShardsToTopics(20, []int{1, 2, 3}) + + // Prepare test messages + now := *utils.GetUnixEpoch() + msg1 := tests.CreateWakuMessage("hello", proto.Int64(now)) + + nowPlusOne := proto.Int64(now + 1) + msg2 := tests.CreateWakuMessage("/test/2/my-app/sharded", nowPlusOne) + + nowPlusTwo := proto.Int64(now + 2) + msg3 := tests.CreateWakuMessage("/test/2/my-app/sharded", nowPlusTwo) + + // Subscribe to pubSubtopics and start store1 + host1 with them + sub := SimulateSubscription([]*protocol.Envelope{ + protocol.NewEnvelope(msg1, *utils.GetUnixEpoch(), pubSubTopics[0]), + protocol.NewEnvelope(msg2, *utils.GetUnixEpoch(), pubSubTopics[1]), + protocol.NewEnvelope(msg3, *utils.GetUnixEpoch(), pubSubTopics[2]), + }) + err = s1.Start(ctx, sub) + require.NoError(t, err) + defer s1.Stop() + + host2, err := libp2p.New(libp2p.DefaultTransports, libp2p.ListenAddrStrings("/ip4/0.0.0.0/tcp/0")) + require.NoError(t, err) + + host2.Peerstore().AddAddr(host1.ID(), tests.GetHostAddress(host1), peerstore.PermanentAddrTTL) + err = host2.Peerstore().AddProtocols(host1.ID(), StoreID_v20beta4) + require.NoError(t, err) + + s2 := NewWakuStore(MemoryDB(t), nil, timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) + s2.SetHost(host2) + + // Subscribe to DefaultWakuTopic at store2 + host2 + sub1 := relay.NewSubscription(protocol.NewContentFilter(relay.DefaultWakuTopic)) + + err = s2.Start(ctx, sub1) + require.NoError(t, err) + defer s2.Stop() + + q1 := Query{ + PubsubTopic: pubSubTopics[0], + } + + fn1 := func(msg *pb.WakuMessage) (bool, error) { + return msg.ContentTopic == "hello", nil + } + + // Find msg1 on the second host2+s2 + foundMsg, err := s2.Find(ctx, q1, fn1, WithPeer(host1.ID()), WithAutomaticRequestID(), WithPaging(true, 2)) + require.NoError(t, err) + require.NotNil(t, foundMsg) + require.Equal(t, "hello", foundMsg.ContentTopic) + + q2 := Query{ + PubsubTopic: pubSubTopics[1], + } + + // Find msg2 on the second host2+s2; No other messages (msg3) should be found + result, err := s2.Query(ctx, q2, WithPeer(host1.ID()), WithAutomaticRequestID(), WithPaging(true, 2)) + require.NoError(t, err) + + for i, m := range result.Messages { + if i == 0 { + require.Equal(t, "/test/2/my-app/sharded", m.ContentTopic) + require.Equal(t, nowPlusOne, m.Timestamp) + } else { + require.Fail(t, "Unexpected message found") + } + } + +} From 061f9f890ffe1b9066552e8b7044fb7f2a923177 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 28 Mar 2024 10:36:28 +0800 Subject: [PATCH 61/97] fix: add WithClusterID to see its effect --- waku/v2/node/wakunode2_test.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index f9cf11fec..170bd4a1b 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -347,20 +347,23 @@ func TestStaticShardingMultipleTopics(t *testing.T) { wakuNode1, err := New( WithHostAddress(hostAddr1), WithWakuRelay(), + WithClusterID(uint16(20)), ) require.NoError(t, err) err = wakuNode1.Start(ctx) require.NoError(t, err) defer wakuNode1.Stop() - pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(0)) + pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(uint16(21), uint16(0)) pubSubTopic1Str := pubSubTopic1.String() contentTopic1 := "/test/2/my-app/sharded" - pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(uint16(0), uint16(10)) + pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(uint16(21), uint16(10)) pubSubTopic2Str := pubSubTopic2.String() contentTopic2 := "/test/3/my-app/sharded" + require.Equal(t, uint16(20), wakuNode1.ClusterID()) + r := wakuNode1.Relay() subs1, err := r.Subscribe(ctx, protocol.NewContentFilter(pubSubTopic1Str, contentTopic1)) From 2b5592e9679870053161085282a9f3a2081a5cfc Mon Sep 17 00:00:00 2001 From: Roman Date: Mon, 1 Apr 2024 18:43:22 +0800 Subject: [PATCH 62/97] test: static sharding for lightPush --- .../protocol/lightpush/waku_lightpush_test.go | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/waku/v2/protocol/lightpush/waku_lightpush_test.go b/waku/v2/protocol/lightpush/waku_lightpush_test.go index 08c134eee..251554101 100644 --- a/waku/v2/protocol/lightpush/waku_lightpush_test.go +++ b/waku/v2/protocol/lightpush/waku_lightpush_test.go @@ -58,6 +58,23 @@ func waitForMsg(t *testing.T, wg *sync.WaitGroup, ch chan *protocol.Envelope) { wg.Wait() } +func waitForTimeout(t *testing.T, ctx context.Context, wg *sync.WaitGroup, ch chan *protocol.Envelope) { + wg.Add(1) + go func() { + defer wg.Done() + select { + case _, ok := <-ch: + require.False(t, ok, "should not retrieve message") + case <-time.After(1 * time.Second): + // All good + case <-ctx.Done(): + require.Fail(t, "test exceeded allocated time") + } + }() + + wg.Wait() +} + // Node1: Relay // Node2: Relay+Lightpush // Client that will lightpush a message @@ -332,3 +349,64 @@ func TestWakuLightPushCornerCases(t *testing.T) { // Test situation when cancel func is nil lightPushNode2.cancel = nil } + +func TestWakuLightPushWithStaticSharding(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Prepare pubsub topics for static sharding + pubSubTopic := protocol.NewStaticShardingPubsubTopic(uint16(25), uint16(0)).String() + testContentTopic := "/test/10/my-lp-app/proto" + + node1, sub1, host1 := makeWakuRelay(t, pubSubTopic) + defer node1.Stop() + defer sub1.Unsubscribe() + + node2, sub2, host2 := makeWakuRelay(t, pubSubTopic) + defer node2.Stop() + defer sub2.Unsubscribe() + + lightPushNode2 := NewWakuLightPush(node2, nil, prometheus.DefaultRegisterer, utils.Logger()) + lightPushNode2.SetHost(host2) + err := lightPushNode2.Start(ctx) + require.NoError(t, err) + defer lightPushNode2.Stop() + + host2.Peerstore().AddAddr(host1.ID(), tests.GetHostAddress(host1), peerstore.PermanentAddrTTL) + err = host2.Peerstore().AddProtocols(host1.ID(), relay.WakuRelayID_v200) + require.NoError(t, err) + + err = host2.Connect(ctx, host2.Peerstore().PeerInfo(host1.ID())) + require.NoError(t, err) + + port, err := tests.FindFreePort(t, "", 5) + require.NoError(t, err) + + clientHost, err := tests.MakeHost(context.Background(), port, rand.Reader) + require.NoError(t, err) + client := NewWakuLightPush(nil, nil, prometheus.DefaultRegisterer, utils.Logger()) + client.SetHost(clientHost) + + clientHost.Peerstore().AddAddr(host2.ID(), tests.GetHostAddress(host2), peerstore.PermanentAddrTTL) + err = clientHost.Peerstore().AddProtocols(host2.ID(), LightPushID_v20beta1) + require.NoError(t, err) + + msg := tests.CreateWakuMessage(testContentTopic, utils.GetUnixEpoch()) + msg2 := tests.CreateWakuMessage(testContentTopic, utils.GetUnixEpoch()) + + // Wait for the mesh connection to happen between node1 and node2 + time.Sleep(2 * time.Second) + + var wg sync.WaitGroup + + // Check that msg publish has led to message deliver for existing topic + _, err = client.Publish(ctx, msg, WithPubSubTopic(pubSubTopic), WithPeer(host2.ID())) + require.NoError(t, err) + waitForMsg(t, &wg, sub1.Ch) + + // Check that msg2 publish finished without message delivery for unconfigured topic + _, err = client.Publish(ctx, msg2, WithPubSubTopic("/waku/2/rsv/25/0"), WithPeer(host2.ID())) + require.NoError(t, err) + waitForTimeout(t, ctx, &wg, sub1.Ch) + +} From 2e77516077accafc8bcfdd3d97c3886e34496638 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 2 Apr 2024 15:10:20 +0800 Subject: [PATCH 63/97] test: static sharding for Filter --- waku/v2/protocol/filter/filter_test.go | 64 ++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/waku/v2/protocol/filter/filter_test.go b/waku/v2/protocol/filter/filter_test.go index e5dac7182..62dd3825d 100644 --- a/waku/v2/protocol/filter/filter_test.go +++ b/waku/v2/protocol/filter/filter_test.go @@ -543,3 +543,67 @@ func (s *FilterTestSuite) BeforeTest(suiteName, testName string) { func (s *FilterTestSuite) AfterTest(suiteName, testName string) { s.log.Info("Finished executing ", zap.String("testName", testName)) } + +func (s *FilterTestSuite) TestStaticSharding() { + log := utils.Logger() + s.log = log + s.wg = &sync.WaitGroup{} + + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) // Test can't exceed 10 seconds + s.ctx = ctx + s.ctxCancel = cancel + + // Gen pubsub topic "/waku/2/rs/1024/0" + s.testTopic = protocol.NewStaticShardingPubsubTopic(uint16(1024), uint16(100)).String() + + // Pubsub topics for neg. test cases + testTopics := []string{ + "/waku/2/rs/100/1024", + "/waku/2/rs/1024/101", + } + s.testContentTopic = "/test/10/my-filter-app/proto" + + // Prepare new nodes + s.lightNode = s.makeWakuFilterLightNode(true, true) + s.relayNode, s.fullNode = s.makeWakuFilterFullNode(s.testTopic, false, true) + + // Connect nodes + s.lightNodeHost.Peerstore().AddAddr(s.fullNodeHost.ID(), tests.GetHostAddress(s.fullNodeHost), peerstore.PermanentAddrTTL) + err := s.lightNodeHost.Peerstore().AddProtocols(s.fullNodeHost.ID(), FilterSubscribeID_v20beta1) + s.Require().NoError(err) + + s.subDetails = s.subscribe(s.testTopic, s.testContentTopic, s.fullNodeHost.ID()) + + msg := tests.CreateWakuMessage(s.testContentTopic, utils.GetUnixEpoch()) + msg2 := tests.CreateWakuMessage(s.testContentTopic, utils.GetUnixEpoch()) + + // Test positive case for static shard pubsub topic - message gets received + s.waitForMsg(func() { + _, err := s.relayNode.Publish(s.ctx, msg, relay.WithPubSubTopic(s.testTopic)) + s.Require().NoError(err) + + }, s.subDetails[0].C) + + // Test two negative cases for static shard pubsub topic - message times out + s.waitForTimeout(func() { + _, err := s.relayNode.Publish(s.ctx, msg2, relay.WithPubSubTopic(testTopics[0])) + s.Require().NoError(err) + + }, s.subDetails[0].C) + + s.waitForTimeout(func() { + _, err := s.relayNode.Publish(s.ctx, msg2, relay.WithPubSubTopic(testTopics[1])) + s.Require().NoError(err) + + }, s.subDetails[0].C) + + // Cleanup + _, err = s.lightNode.Unsubscribe(s.ctx, protocol.ContentFilter{ + PubsubTopic: s.testTopic, + ContentTopics: protocol.NewContentTopicSet(s.testContentTopic), + }) + s.Require().NoError(err) + + _, err = s.lightNode.UnsubscribeAll(s.ctx) + s.Require().NoError(err) +} From 658311d451ccdce82f1a87a954ed20a64c8d87c4 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 2 Apr 2024 15:17:31 +0800 Subject: [PATCH 64/97] fix: reuse tests.WaitForTimeout --- tests/utils.go | 20 +++++++++++++++++++ waku/v2/node/wakunode2_test.go | 2 +- .../protocol/lightpush/waku_lightpush_test.go | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/tests/utils.go b/tests/utils.go index 10c99be63..465cdac6f 100644 --- a/tests/utils.go +++ b/tests/utils.go @@ -9,6 +9,7 @@ import ( "encoding/hex" "encoding/json" "fmt" + "github.com/waku-org/go-waku/waku/v2/protocol" "io" "math" "math/big" @@ -16,7 +17,9 @@ import ( "net/url" "strconv" "strings" + "sync" "testing" + "time" "unicode/utf8" gcrypto "github.com/ethereum/go-ethereum/crypto" @@ -385,3 +388,20 @@ func GenerateRandomSQLInsert(maxLength int) (string, error) { return query, nil } + +func WaitForTimeout(t *testing.T, ctx context.Context, wg *sync.WaitGroup, ch chan *protocol.Envelope) { + wg.Add(1) + go func() { + defer wg.Done() + select { + case _, ok := <-ch: + require.False(t, ok, "should not retrieve message") + case <-time.After(1 * time.Second): + // All good + case <-ctx.Done(): + require.Fail(t, "test exceeded allocated time") + } + }() + + wg.Wait() +} diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 170bd4a1b..ff5b5e215 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -427,6 +427,6 @@ func TestStaticShardingMultipleTopics(t *testing.T) { time.Sleep(100 * time.Millisecond) // No message could be retrieved - waitForTimeout(t, ctx, &wg, subs1[0].Ch) + tests.WaitForTimeout(t, ctx, &wg, subs1[0].Ch) } diff --git a/waku/v2/protocol/lightpush/waku_lightpush_test.go b/waku/v2/protocol/lightpush/waku_lightpush_test.go index 251554101..2a3c64a91 100644 --- a/waku/v2/protocol/lightpush/waku_lightpush_test.go +++ b/waku/v2/protocol/lightpush/waku_lightpush_test.go @@ -407,6 +407,6 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { // Check that msg2 publish finished without message delivery for unconfigured topic _, err = client.Publish(ctx, msg2, WithPubSubTopic("/waku/2/rsv/25/0"), WithPeer(host2.ID())) require.NoError(t, err) - waitForTimeout(t, ctx, &wg, sub1.Ch) + tests.WaitForTimeout(t, ctx, &wg, sub1.Ch) } From 70ff74e7ceb051c6bb1f395b6d14390ee7074880 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 2 Apr 2024 15:22:38 +0800 Subject: [PATCH 65/97] fix: reuse tests.WaitForMsg --- waku/v2/node/wakunode2_test.go | 19 +-------- .../protocol/lightpush/waku_lightpush_test.go | 41 ++----------------- 2 files changed, 4 insertions(+), 56 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index ff5b5e215..eb329b113 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -38,23 +38,6 @@ func createTestMsg(version uint32) *pb.WakuMessage { return message } -func waitForTimeout(t *testing.T, ctx context.Context, wg *sync.WaitGroup, ch chan *protocol.Envelope) { - wg.Add(1) - go func() { - defer wg.Done() - select { - case _, ok := <-ch: - require.False(t, ok, "should not retrieve message") - case <-time.After(1 * time.Second): - // All good - case <-ctx.Done(): - require.Fail(t, "test exceeded allocated time") - } - }() - - wg.Wait() -} - func TestWakuNode2(t *testing.T) { hostAddr, _ := net.ResolveTCPAddr("tcp", "0.0.0.0:0") @@ -416,7 +399,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { time.Sleep(100 * time.Millisecond) // No message could be retrieved - waitForTimeout(t, ctx, &wg, subs1[0].Ch) + tests.WaitForTimeout(t, ctx, &wg, subs1[0].Ch) // Send another message to subscribed pubsub topic, but not subscribed content topic - mix it up msg3 := tests.CreateWakuMessage(contentTopic2, utils.GetUnixEpoch(), "test message 3") diff --git a/waku/v2/protocol/lightpush/waku_lightpush_test.go b/waku/v2/protocol/lightpush/waku_lightpush_test.go index 2a3c64a91..e2c602508 100644 --- a/waku/v2/protocol/lightpush/waku_lightpush_test.go +++ b/waku/v2/protocol/lightpush/waku_lightpush_test.go @@ -7,14 +7,12 @@ import ( "testing" "time" - "github.com/waku-org/go-waku/waku/v2/peermanager" - "go.uber.org/zap" - "github.com/libp2p/go-libp2p/core/host" "github.com/libp2p/go-libp2p/core/peerstore" "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" "github.com/waku-org/go-waku/tests" + "github.com/waku-org/go-waku/waku/v2/peermanager" "github.com/waku-org/go-waku/waku/v2/protocol" "github.com/waku-org/go-waku/waku/v2/protocol/relay" "github.com/waku-org/go-waku/waku/v2/timesource" @@ -42,39 +40,6 @@ func makeWakuRelay(t *testing.T, pusubTopic string) (*relay.WakuRelay, *relay.Su return relay, sub[0], host } -func waitForMsg(t *testing.T, wg *sync.WaitGroup, ch chan *protocol.Envelope) { - wg.Add(1) - log := utils.Logger() - go func() { - defer wg.Done() - select { - case env := <-ch: - msg := env.Message() - log.Info("Received ", zap.String("msg", msg.String())) - case <-time.After(2 * time.Second): - require.Fail(t, "Message timeout") - } - }() - wg.Wait() -} - -func waitForTimeout(t *testing.T, ctx context.Context, wg *sync.WaitGroup, ch chan *protocol.Envelope) { - wg.Add(1) - go func() { - defer wg.Done() - select { - case _, ok := <-ch: - require.False(t, ok, "should not retrieve message") - case <-time.After(1 * time.Second): - // All good - case <-ctx.Done(): - require.Fail(t, "test exceeded allocated time") - } - }() - - wg.Wait() -} - // Node1: Relay // Node2: Relay+Lightpush // Client that will lightpush a message @@ -322,7 +287,7 @@ func TestWakuLightPushCornerCases(t *testing.T) { require.NoError(t, err) // Wait for the nominal case message at node1 - waitForMsg(t, &wg, sub1.Ch) + tests.WaitForMsg(t, &wg, sub1.Ch) // Test error case with nil message _, err = client.Publish(ctx, nil, lpOptions...) @@ -402,7 +367,7 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { // Check that msg publish has led to message deliver for existing topic _, err = client.Publish(ctx, msg, WithPubSubTopic(pubSubTopic), WithPeer(host2.ID())) require.NoError(t, err) - waitForMsg(t, &wg, sub1.Ch) + tests.WaitForMsg(t, &wg, sub1.Ch) // Check that msg2 publish finished without message delivery for unconfigured topic _, err = client.Publish(ctx, msg2, WithPubSubTopic("/waku/2/rsv/25/0"), WithPeer(host2.ID())) From e8f9dca9646ca583768bb0b139fed0ff310bc00b Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 2 Apr 2024 15:23:30 +0800 Subject: [PATCH 66/97] fix: forgot to add utils.go --- tests/utils.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/utils.go b/tests/utils.go index 465cdac6f..acb76708f 100644 --- a/tests/utils.go +++ b/tests/utils.go @@ -389,6 +389,22 @@ func GenerateRandomSQLInsert(maxLength int) (string, error) { return query, nil } +func WaitForMsg(t *testing.T, wg *sync.WaitGroup, ch chan *protocol.Envelope) { + wg.Add(1) + log := utils.Logger() + go func() { + defer wg.Done() + select { + case env := <-ch: + msg := env.Message() + log.Info("Received ", zap.String("msg", msg.String())) + case <-time.After(2 * time.Second): + require.Fail(t, "Message timeout") + } + }() + wg.Wait() +} + func WaitForTimeout(t *testing.T, ctx context.Context, wg *sync.WaitGroup, ch chan *protocol.Envelope) { wg.Add(1) go func() { From 2904f568f740b3685081502bcbab2232ade80d83 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 2 Apr 2024 19:11:30 +0800 Subject: [PATCH 67/97] test: static sharding for Relay --- waku/v2/protocol/relay/waku_relay_test.go | 74 +++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/waku/v2/protocol/relay/waku_relay_test.go b/waku/v2/protocol/relay/waku_relay_test.go index 7dc848581..4c5b93c5a 100644 --- a/waku/v2/protocol/relay/waku_relay_test.go +++ b/waku/v2/protocol/relay/waku_relay_test.go @@ -355,3 +355,77 @@ func TestInvalidMessagePublish(t *testing.T) { ctxCancel() } + +func TestWakuRelayStaticSharding(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Follow spec /waku/2/rs// + testTopic := "/waku/2/rs/64/0" + testContentTopic := "/test/10/my-relay" + + // Host1 + port, err := tests.FindFreePort(t, "", 5) + require.NoError(t, err) + + host1, err := tests.MakeHost(context.Background(), port, rand.Reader) + require.NoError(t, err) + bcaster1 := NewBroadcaster(10) + relay1 := NewWakuRelay(bcaster1, 0, timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) + relay1.SetHost(host1) + err = relay1.Start(context.Background()) + require.NoError(t, err) + + err = bcaster1.Start(context.Background()) + require.NoError(t, err) + defer relay1.Stop() + + // Host2 + port, err = tests.FindFreePort(t, "", 5) + require.NoError(t, err) + + host2, err := tests.MakeHost(context.Background(), port, rand.Reader) + require.NoError(t, err) + bcaster2 := NewBroadcaster(10) + relay2 := NewWakuRelay(bcaster2, 0, timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) + relay2.SetHost(host2) + err = relay2.Start(context.Background()) + require.NoError(t, err) + + err = bcaster2.Start(context.Background()) + require.NoError(t, err) + defer relay2.Stop() + + // Connect nodes + host2.Peerstore().AddAddr(host1.ID(), tests.GetHostAddress(host1), peerstore.PermanentAddrTTL) + err = host2.Peerstore().AddProtocols(host1.ID(), WakuRelayID_v200) + require.NoError(t, err) + + // Wait for the mesh connection to happen between node1 and node2 + time.Sleep(2 * time.Second) + + // Subscribe to valid static shard topic on both hosts + subs1, err := relay2.subscribe(context.Background(), protocol.NewContentFilter(testTopic, testContentTopic)) + require.NoError(t, err) + + subs2, err := relay2.subscribe(context.Background(), protocol.NewContentFilter(testTopic, testContentTopic)) + require.NoError(t, err) + require.True(t, relay2.IsSubscribed(testTopic)) + require.Equal(t, testContentTopic, subs2[0].contentFilter.ContentTopics.ToList()[0]) + + msg := tests.CreateWakuMessage(testContentTopic, utils.GetUnixEpoch(), "test_payload") + + // Test publish from host2 using autosharding -> should fail on topic format + _, err = relay2.Publish(ctx, msg) + require.Error(t, err) + + // Test publish from host2 using static sharding -> should succeed + _, err = relay2.Publish(ctx, msg, WithPubSubTopic(testTopic)) + require.NoError(t, err) + + var wg sync.WaitGroup + + // Msg should get received on host1 + tests.WaitForMsg(t, &wg, subs1[0].Ch) + +} From e764fcb96294ed16199a4ca38d902052dc75939e Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 3 Apr 2024 19:08:30 +0800 Subject: [PATCH 68/97] test: static sharding limits --- waku/v2/node/wakunode2_test.go | 73 ++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index eb329b113..4a2ad3711 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -3,6 +3,7 @@ package node import ( "bytes" "context" + "fmt" "math/big" "net" "sync" @@ -99,6 +100,7 @@ func TestUpAndDown(t *testing.T) { WithWakuRelay(), WithDiscoveryV5(0, bootnodes, true), ) + require.NoError(t, err) for i := 0; i < 5; i++ { @@ -413,3 +415,74 @@ func TestStaticShardingMultipleTopics(t *testing.T) { tests.WaitForTimeout(t, ctx, &wg, subs1[0].Ch) } + +func TestStaticShardingLimits(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 140*time.Second) + defer cancel() + + // Node1 with Relay + hostAddr1, err := net.ResolveTCPAddr("tcp", "0.0.0.0:0") + require.NoError(t, err) + discv5UDPPort1, err := tests.FindFreeUDPPort(t, "0.0.0.0", 3) + require.NoError(t, err) + wakuNode1, err := New( + WithHostAddress(hostAddr1), + WithWakuRelay(), + WithClusterID(uint16(21)), + WithDiscoveryV5(uint(discv5UDPPort1), nil, true), + ) + require.NoError(t, err) + err = wakuNode1.Start(ctx) + require.NoError(t, err) + defer wakuNode1.Stop() + + // Node2 with Relay + hostAddr2, err := net.ResolveTCPAddr("tcp", "0.0.0.0:0") + require.NoError(t, err) + discv5UDPPort2, err := tests.FindFreeUDPPort(t, "0.0.0.0", 3) + require.NoError(t, err) + wakuNode2, err := New( + WithHostAddress(hostAddr2), + WithWakuRelay(), + WithClusterID(uint16(21)), + WithDiscoveryV5(uint(discv5UDPPort2), []*enode.Node{wakuNode1.localNode.Node()}, true), + ) + require.NoError(t, err) + err = wakuNode2.Start(ctx) + require.NoError(t, err) + defer wakuNode2.Stop() + + err = wakuNode1.DiscV5().Start(ctx) + require.NoError(t, err) + err = wakuNode2.DiscV5().Start(ctx) + require.NoError(t, err) + + // Wait for discovery + time.Sleep(3 * time.Second) + + contentTopic1 := "/test/2/my-app/sharded" + + r1 := wakuNode1.Relay() + + var shardedPubSubTopics, nonShardedPubSubTopics []string + for i := 0; i < 1024; i++ { + nonShardedPubSubTopics = append(nonShardedPubSubTopics, fmt.Sprintf("/waku/2/my-app/21/%d", i)) + shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/21/%d", i)) + } + + // Subscribe topics not related to static sharding + for i := 0; i < 1024; i++ { + _, err = r1.Subscribe(ctx, protocol.NewContentFilter(nonShardedPubSubTopics[i], contentTopic1)) + require.NoError(t, err) + time.Sleep(10 * time.Millisecond) + } + + // Subscribe topics related to static sharding + for i := 0; i < 1024; i++ { + _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) + require.NoError(t, err) + time.Sleep(100 * time.Millisecond) + } + + time.Sleep(1 * time.Second) +} From 5357773188e4aaee992dc684be125ee09eca8a6f Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 4 Apr 2024 13:53:01 +0800 Subject: [PATCH 69/97] fix: remove named shards --- waku/v2/node/wakunode2_test.go | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 4a2ad3711..5dcfa3af8 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -464,19 +464,11 @@ func TestStaticShardingLimits(t *testing.T) { r1 := wakuNode1.Relay() - var shardedPubSubTopics, nonShardedPubSubTopics []string + var shardedPubSubTopics []string for i := 0; i < 1024; i++ { - nonShardedPubSubTopics = append(nonShardedPubSubTopics, fmt.Sprintf("/waku/2/my-app/21/%d", i)) shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/21/%d", i)) } - // Subscribe topics not related to static sharding - for i := 0; i < 1024; i++ { - _, err = r1.Subscribe(ctx, protocol.NewContentFilter(nonShardedPubSubTopics[i], contentTopic1)) - require.NoError(t, err) - time.Sleep(10 * time.Millisecond) - } - // Subscribe topics related to static sharding for i := 0; i < 1024; i++ { _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) From 64e27d30bafb7df939a72df91a2de7f14f47116f Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 5 Apr 2024 07:46:13 +0800 Subject: [PATCH 70/97] fix: change subscription to every 10ms --- waku/v2/node/wakunode2_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 5dcfa3af8..6b9f9ef84 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -473,7 +473,7 @@ func TestStaticShardingLimits(t *testing.T) { for i := 0; i < 1024; i++ { _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) - time.Sleep(100 * time.Millisecond) + time.Sleep(10 * time.Millisecond) } time.Sleep(1 * time.Second) From 134efd736e46e9ad944bc6ae3ab6e88290fcef02 Mon Sep 17 00:00:00 2001 From: Roman Date: Mon, 8 Apr 2024 10:24:09 +0800 Subject: [PATCH 71/97] fix: add ENR shard info comparison --- waku/v2/node/wakunode2_test.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 6b9f9ef84..46634650a 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -4,6 +4,7 @@ import ( "bytes" "context" "fmt" + wenr "github.com/waku-org/go-waku/waku/v2/protocol/enr" "math/big" "net" "sync" @@ -420,6 +421,8 @@ func TestStaticShardingLimits(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 140*time.Second) defer cancel() + testClusterID := uint16(21) + // Node1 with Relay hostAddr1, err := net.ResolveTCPAddr("tcp", "0.0.0.0:0") require.NoError(t, err) @@ -428,7 +431,7 @@ func TestStaticShardingLimits(t *testing.T) { wakuNode1, err := New( WithHostAddress(hostAddr1), WithWakuRelay(), - WithClusterID(uint16(21)), + WithClusterID(testClusterID), WithDiscoveryV5(uint(discv5UDPPort1), nil, true), ) require.NoError(t, err) @@ -444,7 +447,7 @@ func TestStaticShardingLimits(t *testing.T) { wakuNode2, err := New( WithHostAddress(hostAddr2), WithWakuRelay(), - WithClusterID(uint16(21)), + WithClusterID(testClusterID), WithDiscoveryV5(uint(discv5UDPPort2), []*enode.Node{wakuNode1.localNode.Node()}, true), ) require.NoError(t, err) @@ -464,9 +467,14 @@ func TestStaticShardingLimits(t *testing.T) { r1 := wakuNode1.Relay() - var shardedPubSubTopics []string + var ( + shardedPubSubTopics []string + expectedShardIDs []uint16 + ) + for i := 0; i < 1024; i++ { - shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/21/%d", i)) + shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) + expectedShardIDs = append(expectedShardIDs, uint16(i)) } // Subscribe topics related to static sharding @@ -476,5 +484,12 @@ func TestStaticShardingLimits(t *testing.T) { time.Sleep(10 * time.Millisecond) } + // Check ENR value after 1024 subscriptions + shardsENR, err := wenr.RelaySharding(wakuNode1.ENR().Record()) + require.NoError(t, err) + require.Equal(t, testClusterID, shardsENR.ClusterID) + require.Equal(t, 1024, len(shardsENR.ShardIDs)) + time.Sleep(1 * time.Second) + } From fd5cf3e4522e40a4713ab8758cc330b698f85259 Mon Sep 17 00:00:00 2001 From: Roman Date: Mon, 8 Apr 2024 10:30:28 +0800 Subject: [PATCH 72/97] fix: remove expected shardIDs array --- waku/v2/node/wakunode2_test.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 46634650a..49a2e9edd 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -467,14 +467,10 @@ func TestStaticShardingLimits(t *testing.T) { r1 := wakuNode1.Relay() - var ( - shardedPubSubTopics []string - expectedShardIDs []uint16 - ) + var shardedPubSubTopics []string for i := 0; i < 1024; i++ { shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) - expectedShardIDs = append(expectedShardIDs, uint16(i)) } // Subscribe topics related to static sharding From b2e9b964436e783c335f9d70ef35a99a53af8c6e Mon Sep 17 00:00:00 2001 From: Roman Date: Mon, 8 Apr 2024 19:08:52 +0800 Subject: [PATCH 73/97] fix: reset subscriptions back to 1 per 100ms --- waku/v2/node/wakunode2_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 49a2e9edd..b9f130f86 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -477,7 +477,7 @@ func TestStaticShardingLimits(t *testing.T) { for i := 0; i < 1024; i++ { _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) - time.Sleep(10 * time.Millisecond) + time.Sleep(100 * time.Millisecond) } // Check ENR value after 1024 subscriptions From 63f2957d1cc14c8908bc4e9405003f3b80add2c3 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 10 Apr 2024 20:41:15 +0800 Subject: [PATCH 74/97] fix: add message publish to test - shorten subscription rate back to 1/10ms --- waku/v2/node/wakunode2_test.go | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index b9f130f86..7c4eb99ce 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -6,6 +6,7 @@ import ( "fmt" wenr "github.com/waku-org/go-waku/waku/v2/protocol/enr" "math/big" + "math/rand" "net" "sync" "testing" @@ -418,7 +419,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { } func TestStaticShardingLimits(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 140*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second) defer cancel() testClusterID := uint16(21) @@ -466,26 +467,46 @@ func TestStaticShardingLimits(t *testing.T) { contentTopic1 := "/test/2/my-app/sharded" r1 := wakuNode1.Relay() + r2 := wakuNode1.Relay() var shardedPubSubTopics []string - for i := 0; i < 1024; i++ { - shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) - } - // Subscribe topics related to static sharding for i := 0; i < 1024; i++ { + shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) + _, err = r2.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) - time.Sleep(100 * time.Millisecond) + time.Sleep(10 * time.Millisecond) } + // Let ENR updates to finish + time.Sleep(3 * time.Second) + // Check ENR value after 1024 subscriptions shardsENR, err := wenr.RelaySharding(wakuNode1.ENR().Record()) require.NoError(t, err) require.Equal(t, testClusterID, shardsENR.ClusterID) require.Equal(t, 1024, len(shardsENR.ShardIDs)) + // Prepare message + msg1 := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message") + + // Select shard to publish to + randomShard := rand.Intn(1024) + + // Publish on node1 + _, err = r1.Publish(ctx, msg1, relay.WithPubSubTopic(shardedPubSubTopics[randomShard])) + require.NoError(t, err) + time.Sleep(1 * time.Second) + s, err := r2.GetSubscriptionWithPubsubTopic(shardedPubSubTopics[randomShard], contentTopic1) + require.NoError(t, err) + + var wg sync.WaitGroup + + // Retrieve on node2 + tests.WaitForMsg(t, &wg, s.Ch) + } From ce6ff45f35233648787549de04877f3e8dec32b1 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 10 Apr 2024 20:47:11 +0800 Subject: [PATCH 75/97] fix: add missing error check --- waku/v2/node/wakunode2_test.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 7c4eb99ce..05e17db97 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -475,6 +475,7 @@ func TestStaticShardingLimits(t *testing.T) { for i := 0; i < 1024; i++ { shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) + require.NoError(t, err) _, err = r2.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) time.Sleep(10 * time.Millisecond) @@ -492,7 +493,7 @@ func TestStaticShardingLimits(t *testing.T) { // Prepare message msg1 := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message") - // Select shard to publish to + // Select shard to publish randomShard := rand.Intn(1024) // Publish on node1 @@ -501,12 +502,12 @@ func TestStaticShardingLimits(t *testing.T) { time.Sleep(1 * time.Second) - s, err := r2.GetSubscriptionWithPubsubTopic(shardedPubSubTopics[randomShard], contentTopic1) + s2, err := r2.GetSubscriptionWithPubsubTopic(shardedPubSubTopics[randomShard], contentTopic1) require.NoError(t, err) var wg sync.WaitGroup // Retrieve on node2 - tests.WaitForMsg(t, &wg, s.Ch) + tests.WaitForMsg(t, &wg, s2.Ch) } From daf9ac027caf505a251813bc613bc1d5801bd1c6 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 10 Apr 2024 20:59:34 +0800 Subject: [PATCH 76/97] fix: missed assigment for relay2 - subscribe to both relays with a breath time --- waku/v2/node/wakunode2_test.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 05e17db97..053ee406f 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -419,7 +419,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { } func TestStaticShardingLimits(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 40*time.Second) defer cancel() testClusterID := uint16(21) @@ -467,7 +467,7 @@ func TestStaticShardingLimits(t *testing.T) { contentTopic1 := "/test/2/my-app/sharded" r1 := wakuNode1.Relay() - r2 := wakuNode1.Relay() + r2 := wakuNode2.Relay() var shardedPubSubTopics []string @@ -476,6 +476,14 @@ func TestStaticShardingLimits(t *testing.T) { shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) + time.Sleep(10 * time.Millisecond) + } + + // Let ENR updates to finish + time.Sleep(3 * time.Second) + + // Subscribe topics related to static sharding + for i := 0; i < 1024; i++ { _, err = r2.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) time.Sleep(10 * time.Millisecond) From aa4a3f584fd4fe10b6d0d49ff8b270c7e0459ee0 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 10 Apr 2024 21:13:00 +0800 Subject: [PATCH 77/97] fix: add IsSubscribed check --- waku/v2/node/wakunode2_test.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 053ee406f..543c6b140 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -419,7 +419,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { } func TestStaticShardingLimits(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 40*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second) defer cancel() testClusterID := uint16(21) @@ -504,6 +504,10 @@ func TestStaticShardingLimits(t *testing.T) { // Select shard to publish randomShard := rand.Intn(1024) + // Check both nodes are subscribed + require.True(t, r1.IsSubscribed(shardedPubSubTopics[randomShard])) + require.True(t, r2.IsSubscribed(shardedPubSubTopics[randomShard])) + // Publish on node1 _, err = r1.Publish(ctx, msg1, relay.WithPubSubTopic(shardedPubSubTopics[randomShard])) require.NoError(t, err) From efbcfaf7444384af41f5e83b60903085db4b30ec Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 11 Apr 2024 10:10:17 +0800 Subject: [PATCH 78/97] test: log peerstore content before subscribing to topics --- waku/v2/node/wakunode2_test.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 543c6b140..0bd467084 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -419,9 +419,11 @@ func TestStaticShardingMultipleTopics(t *testing.T) { } func TestStaticShardingLimits(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 1000*time.Second) defer cancel() + log := utils.Logger() + testClusterID := uint16(21) // Node1 with Relay @@ -464,6 +466,21 @@ func TestStaticShardingLimits(t *testing.T) { // Wait for discovery time.Sleep(3 * time.Second) + log.Info("Node1 has", zap.String("peer ID", wakuNode1.ID())) + log.Info("Node2 has", zap.String("peer ID", wakuNode2.ID())) + + knownPeers := wakuNode1.peerstore.Peers() + for _, peer := range knownPeers { + log.Info("Peers known to Node1", zap.String("ID", peer.String())) + } + + knownPeers = wakuNode2.peerstore.Peers() + for _, peer := range knownPeers { + log.Info("Peers known to Node2", zap.String("ID", peer.String())) + } + + log.Info("No peers for the topic yet") + contentTopic1 := "/test/2/my-app/sharded" r1 := wakuNode1.Relay() @@ -508,6 +525,8 @@ func TestStaticShardingLimits(t *testing.T) { require.True(t, r1.IsSubscribed(shardedPubSubTopics[randomShard])) require.True(t, r2.IsSubscribed(shardedPubSubTopics[randomShard])) + time.Sleep(120 * time.Second) + // Publish on node1 _, err = r1.Publish(ctx, msg1, relay.WithPubSubTopic(shardedPubSubTopics[randomShard])) require.NoError(t, err) From a812491196d047ae2132e4170d179dd2da08afed Mon Sep 17 00:00:00 2001 From: Roman Date: Mon, 15 Apr 2024 14:27:21 +0800 Subject: [PATCH 79/97] test: reduce number of topics to one --- waku/v2/node/wakunode2_test.go | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 0bd467084..39c3ca3fd 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -6,7 +6,6 @@ import ( "fmt" wenr "github.com/waku-org/go-waku/waku/v2/protocol/enr" "math/big" - "math/rand" "net" "sync" "testing" @@ -419,7 +418,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { } func TestStaticShardingLimits(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 1000*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second) defer cancel() log := utils.Logger() @@ -489,7 +488,7 @@ func TestStaticShardingLimits(t *testing.T) { var shardedPubSubTopics []string // Subscribe topics related to static sharding - for i := 0; i < 1024; i++ { + for i := 0; i < 1; i++ { shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) @@ -500,7 +499,7 @@ func TestStaticShardingLimits(t *testing.T) { time.Sleep(3 * time.Second) // Subscribe topics related to static sharding - for i := 0; i < 1024; i++ { + for i := 0; i < 1; i++ { _, err = r2.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) time.Sleep(10 * time.Millisecond) @@ -513,19 +512,19 @@ func TestStaticShardingLimits(t *testing.T) { shardsENR, err := wenr.RelaySharding(wakuNode1.ENR().Record()) require.NoError(t, err) require.Equal(t, testClusterID, shardsENR.ClusterID) - require.Equal(t, 1024, len(shardsENR.ShardIDs)) + require.Equal(t, 1, len(shardsENR.ShardIDs)) // Prepare message msg1 := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message") // Select shard to publish - randomShard := rand.Intn(1024) + randomShard := 0 // Check both nodes are subscribed require.True(t, r1.IsSubscribed(shardedPubSubTopics[randomShard])) require.True(t, r2.IsSubscribed(shardedPubSubTopics[randomShard])) - time.Sleep(120 * time.Second) + time.Sleep(1 * time.Second) // Publish on node1 _, err = r1.Publish(ctx, msg1, relay.WithPubSubTopic(shardedPubSubTopics[randomShard])) From 5f84d25e8e9bdd1eeb5e88eaa832fe6fe997e2b1 Mon Sep 17 00:00:00 2001 From: Roman Date: Mon, 22 Apr 2024 10:47:13 +0800 Subject: [PATCH 80/97] fix: add timeout param to WaitForTimeout and WaitForMsg - clarify intent for using different shardIDs - use clusterID other than 0 - to test unsubscribed topic --- tests/utils.go | 8 ++++---- waku/v2/node/wakunode2_test.go | 19 +++++++++++-------- .../protocol/lightpush/waku_lightpush_test.go | 6 +++--- waku/v2/protocol/relay/waku_relay_test.go | 2 +- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/tests/utils.go b/tests/utils.go index acb76708f..8b9dec223 100644 --- a/tests/utils.go +++ b/tests/utils.go @@ -389,7 +389,7 @@ func GenerateRandomSQLInsert(maxLength int) (string, error) { return query, nil } -func WaitForMsg(t *testing.T, wg *sync.WaitGroup, ch chan *protocol.Envelope) { +func WaitForMsg(t *testing.T, timeout time.Duration, wg *sync.WaitGroup, ch chan *protocol.Envelope) { wg.Add(1) log := utils.Logger() go func() { @@ -398,21 +398,21 @@ func WaitForMsg(t *testing.T, wg *sync.WaitGroup, ch chan *protocol.Envelope) { case env := <-ch: msg := env.Message() log.Info("Received ", zap.String("msg", msg.String())) - case <-time.After(2 * time.Second): + case <-time.After(timeout): require.Fail(t, "Message timeout") } }() wg.Wait() } -func WaitForTimeout(t *testing.T, ctx context.Context, wg *sync.WaitGroup, ch chan *protocol.Envelope) { +func WaitForTimeout(t *testing.T, ctx context.Context, timeout time.Duration, wg *sync.WaitGroup, ch chan *protocol.Envelope) { wg.Add(1) go func() { defer wg.Done() select { case _, ok := <-ch: require.False(t, ok, "should not retrieve message") - case <-time.After(1 * time.Second): + case <-time.After(timeout): // All good case <-ctx.Done(): require.Fail(t, "test exceeded allocated time") diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 39c3ca3fd..7bec6a83e 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -327,28 +327,31 @@ func TestStaticShardingMultipleTopics(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() + nodeNativeClusterID := uint16(20) + shardingClusterID := uint16(21) + // Node1 with Relay hostAddr1, err := net.ResolveTCPAddr("tcp", "0.0.0.0:0") require.NoError(t, err) wakuNode1, err := New( WithHostAddress(hostAddr1), WithWakuRelay(), - WithClusterID(uint16(20)), + WithClusterID(nodeNativeClusterID), ) require.NoError(t, err) err = wakuNode1.Start(ctx) require.NoError(t, err) defer wakuNode1.Stop() - pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(uint16(21), uint16(0)) + pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(shardingClusterID, uint16(0)) pubSubTopic1Str := pubSubTopic1.String() contentTopic1 := "/test/2/my-app/sharded" - pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(uint16(21), uint16(10)) + pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(shardingClusterID, uint16(10)) pubSubTopic2Str := pubSubTopic2.String() contentTopic2 := "/test/3/my-app/sharded" - require.Equal(t, uint16(20), wakuNode1.ClusterID()) + require.Equal(t, nodeNativeClusterID, wakuNode1.ClusterID()) r := wakuNode1.Relay() @@ -396,13 +399,13 @@ func TestStaticShardingMultipleTopics(t *testing.T) { // Send another message to non-subscribed pubsub topic, but subscribed content topic msg2 := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message 2") - _, err = r.Publish(ctx, msg2, relay.WithPubSubTopic("/waku/2/rs/0/321")) + _, err = r.Publish(ctx, msg2, relay.WithPubSubTopic("/waku/2/rs/100/321")) require.NoError(t, err) time.Sleep(100 * time.Millisecond) // No message could be retrieved - tests.WaitForTimeout(t, ctx, &wg, subs1[0].Ch) + tests.WaitForTimeout(t, ctx, 1*time.Second, &wg, subs1[0].Ch) // Send another message to subscribed pubsub topic, but not subscribed content topic - mix it up msg3 := tests.CreateWakuMessage(contentTopic2, utils.GetUnixEpoch(), "test message 3") @@ -413,7 +416,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { time.Sleep(100 * time.Millisecond) // No message could be retrieved - tests.WaitForTimeout(t, ctx, &wg, subs1[0].Ch) + tests.WaitForTimeout(t, ctx, 1*time.Second, &wg, subs1[0].Ch) } @@ -538,6 +541,6 @@ func TestStaticShardingLimits(t *testing.T) { var wg sync.WaitGroup // Retrieve on node2 - tests.WaitForMsg(t, &wg, s2.Ch) + tests.WaitForMsg(t, 2*time.Second, &wg, s2.Ch) } diff --git a/waku/v2/protocol/lightpush/waku_lightpush_test.go b/waku/v2/protocol/lightpush/waku_lightpush_test.go index e2c602508..151e05308 100644 --- a/waku/v2/protocol/lightpush/waku_lightpush_test.go +++ b/waku/v2/protocol/lightpush/waku_lightpush_test.go @@ -287,7 +287,7 @@ func TestWakuLightPushCornerCases(t *testing.T) { require.NoError(t, err) // Wait for the nominal case message at node1 - tests.WaitForMsg(t, &wg, sub1.Ch) + tests.WaitForMsg(t, 2*time.Second, &wg, sub1.Ch) // Test error case with nil message _, err = client.Publish(ctx, nil, lpOptions...) @@ -367,11 +367,11 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { // Check that msg publish has led to message deliver for existing topic _, err = client.Publish(ctx, msg, WithPubSubTopic(pubSubTopic), WithPeer(host2.ID())) require.NoError(t, err) - tests.WaitForMsg(t, &wg, sub1.Ch) + tests.WaitForMsg(t, 2*time.Second, &wg, sub1.Ch) // Check that msg2 publish finished without message delivery for unconfigured topic _, err = client.Publish(ctx, msg2, WithPubSubTopic("/waku/2/rsv/25/0"), WithPeer(host2.ID())) require.NoError(t, err) - tests.WaitForTimeout(t, ctx, &wg, sub1.Ch) + tests.WaitForTimeout(t, ctx, 1*time.Second, &wg, sub1.Ch) } diff --git a/waku/v2/protocol/relay/waku_relay_test.go b/waku/v2/protocol/relay/waku_relay_test.go index 4c5b93c5a..307d3ee3f 100644 --- a/waku/v2/protocol/relay/waku_relay_test.go +++ b/waku/v2/protocol/relay/waku_relay_test.go @@ -426,6 +426,6 @@ func TestWakuRelayStaticSharding(t *testing.T) { var wg sync.WaitGroup // Msg should get received on host1 - tests.WaitForMsg(t, &wg, subs1[0].Ch) + tests.WaitForMsg(t, 2*time.Second, &wg, subs1[0].Ch) } From 1c80aded677833033b9ab54cb892bf229b67f7ff Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 23 Apr 2024 10:33:09 +0800 Subject: [PATCH 81/97] fix: revert test to desired form and mark it flaky --- waku/v2/node/wakunode2_test.go | 35 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 7bec6a83e..5594a6110 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -6,7 +6,9 @@ import ( "fmt" wenr "github.com/waku-org/go-waku/waku/v2/protocol/enr" "math/big" + "math/rand" "net" + "os" "sync" "testing" "time" @@ -421,11 +423,19 @@ func TestStaticShardingMultipleTopics(t *testing.T) { } func TestStaticShardingLimits(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second) - defer cancel() log := utils.Logger() + if os.Getenv("RUN_FLAKY_TESTS") != "true" { + + log.Info("Skipping", zap.String("test", t.Name()), + zap.String("reason", "RUN_FLAKY_TESTS environment variable is not set to true")) + t.SkipNow() + } + + ctx, cancel := context.WithTimeout(context.Background(), 300*time.Second) + defer cancel() + testClusterID := uint16(21) // Node1 with Relay @@ -468,21 +478,6 @@ func TestStaticShardingLimits(t *testing.T) { // Wait for discovery time.Sleep(3 * time.Second) - log.Info("Node1 has", zap.String("peer ID", wakuNode1.ID())) - log.Info("Node2 has", zap.String("peer ID", wakuNode2.ID())) - - knownPeers := wakuNode1.peerstore.Peers() - for _, peer := range knownPeers { - log.Info("Peers known to Node1", zap.String("ID", peer.String())) - } - - knownPeers = wakuNode2.peerstore.Peers() - for _, peer := range knownPeers { - log.Info("Peers known to Node2", zap.String("ID", peer.String())) - } - - log.Info("No peers for the topic yet") - contentTopic1 := "/test/2/my-app/sharded" r1 := wakuNode1.Relay() @@ -491,7 +486,7 @@ func TestStaticShardingLimits(t *testing.T) { var shardedPubSubTopics []string // Subscribe topics related to static sharding - for i := 0; i < 1; i++ { + for i := 0; i < 1024; i++ { shardedPubSubTopics = append(shardedPubSubTopics, fmt.Sprintf("/waku/2/rs/%d/%d", testClusterID, i)) _, err = r1.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) @@ -502,7 +497,7 @@ func TestStaticShardingLimits(t *testing.T) { time.Sleep(3 * time.Second) // Subscribe topics related to static sharding - for i := 0; i < 1; i++ { + for i := 0; i < 1024; i++ { _, err = r2.Subscribe(ctx, protocol.NewContentFilter(shardedPubSubTopics[i], contentTopic1)) require.NoError(t, err) time.Sleep(10 * time.Millisecond) @@ -521,7 +516,7 @@ func TestStaticShardingLimits(t *testing.T) { msg1 := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message") // Select shard to publish - randomShard := 0 + randomShard := rand.Intn(1024) // Check both nodes are subscribed require.True(t, r1.IsSubscribed(shardedPubSubTopics[randomShard])) From 6778ecb5238bc0350517a8e32c89a52d7a79943b Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 2 May 2024 10:25:47 +0800 Subject: [PATCH 82/97] fix: keep same cluster ID for topics - TestStaticSharding --- waku/v2/protocol/filter/filter_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/waku/v2/protocol/filter/filter_test.go b/waku/v2/protocol/filter/filter_test.go index 62dd3825d..be5a0e2cf 100644 --- a/waku/v2/protocol/filter/filter_test.go +++ b/waku/v2/protocol/filter/filter_test.go @@ -553,13 +553,13 @@ func (s *FilterTestSuite) TestStaticSharding() { s.ctx = ctx s.ctxCancel = cancel - // Gen pubsub topic "/waku/2/rs/1024/0" - s.testTopic = protocol.NewStaticShardingPubsubTopic(uint16(1024), uint16(100)).String() + // Gen pubsub topic "/waku/2/rs/100/100" + s.testTopic = protocol.NewStaticShardingPubsubTopic(uint16(100), uint16(100)).String() // Pubsub topics for neg. test cases testTopics := []string{ "/waku/2/rs/100/1024", - "/waku/2/rs/1024/101", + "/waku/2/rs/100/101", } s.testContentTopic = "/test/10/my-filter-app/proto" From 3ff86db2338687f0b9f00e6d556e73804240757d Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 2 May 2024 15:23:33 +0800 Subject: [PATCH 83/97] fix: start s2 store with different sharded topic --- waku/v2/protocol/legacy_store/waku_store_protocol_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/waku/v2/protocol/legacy_store/waku_store_protocol_test.go b/waku/v2/protocol/legacy_store/waku_store_protocol_test.go index e89d698a8..e240541ac 100644 --- a/waku/v2/protocol/legacy_store/waku_store_protocol_test.go +++ b/waku/v2/protocol/legacy_store/waku_store_protocol_test.go @@ -438,7 +438,7 @@ func TestWakuStoreWithStaticSharding(t *testing.T) { s1.SetHost(host1) // Prepare pubsub topics for static sharding - pubSubTopics := protocol.ShardsToTopics(20, []int{1, 2, 3}) + pubSubTopics := protocol.ShardsToTopics(20, []int{1, 2, 3, 4}) // Prepare test messages now := *utils.GetUnixEpoch() @@ -470,8 +470,8 @@ func TestWakuStoreWithStaticSharding(t *testing.T) { s2 := NewWakuStore(MemoryDB(t), nil, timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) s2.SetHost(host2) - // Subscribe to DefaultWakuTopic at store2 + host2 - sub1 := relay.NewSubscription(protocol.NewContentFilter(relay.DefaultWakuTopic)) + // Subscribe to different pubSubTopics[3] at store2 + host2 + sub1 := relay.NewSubscription(protocol.NewContentFilter(pubSubTopics[3])) err = s2.Start(ctx, sub1) require.NoError(t, err) From 401e8aabddf1ecf8335169e4ad5ae751de1ea7b3 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 2 May 2024 17:30:38 +0800 Subject: [PATCH 84/97] fix: change node2 to lightpush receiver --- .../protocol/lightpush/waku_lightpush_test.go | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/waku/v2/protocol/lightpush/waku_lightpush_test.go b/waku/v2/protocol/lightpush/waku_lightpush_test.go index 151e05308..010a128dd 100644 --- a/waku/v2/protocol/lightpush/waku_lightpush_test.go +++ b/waku/v2/protocol/lightpush/waku_lightpush_test.go @@ -40,6 +40,19 @@ func makeWakuRelay(t *testing.T, pusubTopic string) (*relay.WakuRelay, *relay.Su return relay, sub[0], host } +func makeWakuLightPush(t *testing.T, relay *relay.WakuRelay, pm *peermanager.PeerManager) (*WakuLightPush, host.Host) { + port, err := tests.FindFreePort(t, "", 5) + require.NoError(t, err) + + host, err := tests.MakeHost(context.Background(), port, rand.Reader) + require.NoError(t, err) + + lightPushNode := NewWakuLightPush(relay, pm, prometheus.DefaultRegisterer, utils.Logger()) + lightPushNode.SetHost(host) + + return lightPushNode, host +} + // Node1: Relay // Node2: Relay+Lightpush // Client that will lightpush a message @@ -327,30 +340,16 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { defer node1.Stop() defer sub1.Unsubscribe() - node2, sub2, host2 := makeWakuRelay(t, pubSubTopic) - defer node2.Stop() - defer sub2.Unsubscribe() - - lightPushNode2 := NewWakuLightPush(node2, nil, prometheus.DefaultRegisterer, utils.Logger()) - lightPushNode2.SetHost(host2) - err := lightPushNode2.Start(ctx) - require.NoError(t, err) - defer lightPushNode2.Stop() + _, host2 := makeWakuLightPush(t, nil, nil) host2.Peerstore().AddAddr(host1.ID(), tests.GetHostAddress(host1), peerstore.PermanentAddrTTL) - err = host2.Peerstore().AddProtocols(host1.ID(), relay.WakuRelayID_v200) + err := host2.Peerstore().AddProtocols(host1.ID(), relay.WakuRelayID_v200) require.NoError(t, err) err = host2.Connect(ctx, host2.Peerstore().PeerInfo(host1.ID())) require.NoError(t, err) - port, err := tests.FindFreePort(t, "", 5) - require.NoError(t, err) - - clientHost, err := tests.MakeHost(context.Background(), port, rand.Reader) - require.NoError(t, err) - client := NewWakuLightPush(nil, nil, prometheus.DefaultRegisterer, utils.Logger()) - client.SetHost(clientHost) + client, clientHost := makeWakuLightPush(t, nil, nil) clientHost.Peerstore().AddAddr(host2.ID(), tests.GetHostAddress(host2), peerstore.PermanentAddrTTL) err = clientHost.Peerstore().AddProtocols(host2.ID(), LightPushID_v20beta1) From 281e6cf994b9b40aefba31148ec0084c49d555b3 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 2 May 2024 19:02:27 +0800 Subject: [PATCH 85/97] fix: returned node2 to support lightpush and relay --- .../protocol/lightpush/waku_lightpush_test.go | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/waku/v2/protocol/lightpush/waku_lightpush_test.go b/waku/v2/protocol/lightpush/waku_lightpush_test.go index 010a128dd..35bde1d9a 100644 --- a/waku/v2/protocol/lightpush/waku_lightpush_test.go +++ b/waku/v2/protocol/lightpush/waku_lightpush_test.go @@ -40,19 +40,6 @@ func makeWakuRelay(t *testing.T, pusubTopic string) (*relay.WakuRelay, *relay.Su return relay, sub[0], host } -func makeWakuLightPush(t *testing.T, relay *relay.WakuRelay, pm *peermanager.PeerManager) (*WakuLightPush, host.Host) { - port, err := tests.FindFreePort(t, "", 5) - require.NoError(t, err) - - host, err := tests.MakeHost(context.Background(), port, rand.Reader) - require.NoError(t, err) - - lightPushNode := NewWakuLightPush(relay, pm, prometheus.DefaultRegisterer, utils.Logger()) - lightPushNode.SetHost(host) - - return lightPushNode, host -} - // Node1: Relay // Node2: Relay+Lightpush // Client that will lightpush a message @@ -340,16 +327,30 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { defer node1.Stop() defer sub1.Unsubscribe() - _, host2 := makeWakuLightPush(t, nil, nil) + node2, sub2, host2 := makeWakuRelay(t, pubSubTopic) + defer node2.Stop() + defer sub2.Unsubscribe() + + lightPushNode2 := NewWakuLightPush(node2, nil, prometheus.DefaultRegisterer, utils.Logger()) + lightPushNode2.SetHost(host2) + err := lightPushNode2.Start(ctx) + require.NoError(t, err) + defer lightPushNode2.Stop() host2.Peerstore().AddAddr(host1.ID(), tests.GetHostAddress(host1), peerstore.PermanentAddrTTL) - err := host2.Peerstore().AddProtocols(host1.ID(), relay.WakuRelayID_v200) + err = host2.Peerstore().AddProtocols(host1.ID(), relay.WakuRelayID_v200) require.NoError(t, err) err = host2.Connect(ctx, host2.Peerstore().PeerInfo(host1.ID())) require.NoError(t, err) - client, clientHost := makeWakuLightPush(t, nil, nil) + port, err := tests.FindFreePort(t, "", 5) + require.NoError(t, err) + + clientHost, err := tests.MakeHost(context.Background(), port, rand.Reader) + require.NoError(t, err) + client := NewWakuLightPush(nil, nil, prometheus.DefaultRegisterer, utils.Logger()) + client.SetHost(clientHost) clientHost.Peerstore().AddAddr(host2.ID(), tests.GetHostAddress(host2), peerstore.PermanentAddrTTL) err = clientHost.Peerstore().AddProtocols(host2.ID(), LightPushID_v20beta1) @@ -372,5 +373,4 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { _, err = client.Publish(ctx, msg2, WithPubSubTopic("/waku/2/rsv/25/0"), WithPeer(host2.ID())) require.NoError(t, err) tests.WaitForTimeout(t, ctx, 1*time.Second, &wg, sub1.Ch) - } From 4b124014fea5de4157598faf8fd8ad79dc9b69ca Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 2 May 2024 19:18:29 +0800 Subject: [PATCH 86/97] fix: added comment and improved readability - TestWakuLightPushWithStaticSharding --- .../protocol/lightpush/waku_lightpush_test.go | 47 +++++++++++-------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/waku/v2/protocol/lightpush/waku_lightpush_test.go b/waku/v2/protocol/lightpush/waku_lightpush_test.go index 35bde1d9a..189c21c82 100644 --- a/waku/v2/protocol/lightpush/waku_lightpush_test.go +++ b/waku/v2/protocol/lightpush/waku_lightpush_test.go @@ -319,47 +319,54 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() - // Prepare pubsub topics for static sharding + // Prepare pubsub topic for static sharding pubSubTopic := protocol.NewStaticShardingPubsubTopic(uint16(25), uint16(0)).String() testContentTopic := "/test/10/my-lp-app/proto" - node1, sub1, host1 := makeWakuRelay(t, pubSubTopic) - defer node1.Stop() - defer sub1.Unsubscribe() + // Node topology: clientNode (lightpush client) <-> node2(relay+lightpush server) <-> node3(relay) + // ClientNode + port, err := tests.FindFreePort(t, "", 5) + require.NoError(t, err) + + clientHost, err := tests.MakeHost(context.Background(), port, rand.Reader) + require.NoError(t, err) + client := NewWakuLightPush(nil, nil, prometheus.DefaultRegisterer, utils.Logger()) + client.SetHost(clientHost) + // Node2 node2, sub2, host2 := makeWakuRelay(t, pubSubTopic) defer node2.Stop() defer sub2.Unsubscribe() lightPushNode2 := NewWakuLightPush(node2, nil, prometheus.DefaultRegisterer, utils.Logger()) lightPushNode2.SetHost(host2) - err := lightPushNode2.Start(ctx) + err = lightPushNode2.Start(ctx) require.NoError(t, err) defer lightPushNode2.Stop() - host2.Peerstore().AddAddr(host1.ID(), tests.GetHostAddress(host1), peerstore.PermanentAddrTTL) - err = host2.Peerstore().AddProtocols(host1.ID(), relay.WakuRelayID_v200) - require.NoError(t, err) - - err = host2.Connect(ctx, host2.Peerstore().PeerInfo(host1.ID())) - require.NoError(t, err) + // Node3 + node3, sub3, host3 := makeWakuRelay(t, pubSubTopic) + defer node3.Stop() + defer sub3.Unsubscribe() - port, err := tests.FindFreePort(t, "", 5) + // Add path clientNode (lightpush client) -> node2(relay+lightpush server) + clientHost.Peerstore().AddAddr(host2.ID(), tests.GetHostAddress(host2), peerstore.PermanentAddrTTL) + err = clientHost.Peerstore().AddProtocols(host2.ID(), LightPushID_v20beta1) require.NoError(t, err) - clientHost, err := tests.MakeHost(context.Background(), port, rand.Reader) + // Add path node2(relay+lightpush server) -> node3(relay) + host2.Peerstore().AddAddr(host3.ID(), tests.GetHostAddress(host3), peerstore.PermanentAddrTTL) + err = host2.Peerstore().AddProtocols(host3.ID(), relay.WakuRelayID_v200) require.NoError(t, err) - client := NewWakuLightPush(nil, nil, prometheus.DefaultRegisterer, utils.Logger()) - client.SetHost(clientHost) - clientHost.Peerstore().AddAddr(host2.ID(), tests.GetHostAddress(host2), peerstore.PermanentAddrTTL) - err = clientHost.Peerstore().AddProtocols(host2.ID(), LightPushID_v20beta1) + err = host2.Connect(ctx, host2.Peerstore().PeerInfo(host3.ID())) require.NoError(t, err) + // Create messages msg := tests.CreateWakuMessage(testContentTopic, utils.GetUnixEpoch()) msg2 := tests.CreateWakuMessage(testContentTopic, utils.GetUnixEpoch()) - // Wait for the mesh connection to happen between node1 and node2 + // Wait for the mesh connection to happen between nodes time.Sleep(2 * time.Second) var wg sync.WaitGroup @@ -367,10 +374,10 @@ func TestWakuLightPushWithStaticSharding(t *testing.T) { // Check that msg publish has led to message deliver for existing topic _, err = client.Publish(ctx, msg, WithPubSubTopic(pubSubTopic), WithPeer(host2.ID())) require.NoError(t, err) - tests.WaitForMsg(t, 2*time.Second, &wg, sub1.Ch) + tests.WaitForMsg(t, 2*time.Second, &wg, sub3.Ch) // Check that msg2 publish finished without message delivery for unconfigured topic _, err = client.Publish(ctx, msg2, WithPubSubTopic("/waku/2/rsv/25/0"), WithPeer(host2.ID())) require.NoError(t, err) - tests.WaitForTimeout(t, ctx, 1*time.Second, &wg, sub1.Ch) + tests.WaitForTimeout(t, ctx, 1*time.Second, &wg, sub3.Ch) } From c7883d892d9261667685a576441e7d086239d112 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 14:41:28 +0800 Subject: [PATCH 87/97] fix: align clusterID with valid pubsub topics --- waku/v2/node/wakunode2_test.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index 5594a6110..fd176850f 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -329,8 +329,7 @@ func TestStaticShardingMultipleTopics(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() - nodeNativeClusterID := uint16(20) - shardingClusterID := uint16(21) + testClusterID := uint16(20) // Node1 with Relay hostAddr1, err := net.ResolveTCPAddr("tcp", "0.0.0.0:0") @@ -338,22 +337,22 @@ func TestStaticShardingMultipleTopics(t *testing.T) { wakuNode1, err := New( WithHostAddress(hostAddr1), WithWakuRelay(), - WithClusterID(nodeNativeClusterID), + WithClusterID(testClusterID), ) require.NoError(t, err) err = wakuNode1.Start(ctx) require.NoError(t, err) defer wakuNode1.Stop() - pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(shardingClusterID, uint16(0)) + pubSubTopic1 := protocol.NewStaticShardingPubsubTopic(testClusterID, uint16(0)) pubSubTopic1Str := pubSubTopic1.String() contentTopic1 := "/test/2/my-app/sharded" - pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(shardingClusterID, uint16(10)) + pubSubTopic2 := protocol.NewStaticShardingPubsubTopic(testClusterID, uint16(10)) pubSubTopic2Str := pubSubTopic2.String() contentTopic2 := "/test/3/my-app/sharded" - require.Equal(t, nodeNativeClusterID, wakuNode1.ClusterID()) + require.Equal(t, testClusterID, wakuNode1.ClusterID()) r := wakuNode1.Relay() From 90863975ee5601f0b16a515f3e28a6f2338f092b Mon Sep 17 00:00:00 2001 From: Prem Chaitanya Prathi Date: Fri, 3 May 2024 15:29:29 +0530 Subject: [PATCH 88/97] chore: fix test to use same shard --- waku/v2/node/wakunode2_test.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/waku/v2/node/wakunode2_test.go b/waku/v2/node/wakunode2_test.go index fd176850f..d4ca453c9 100644 --- a/waku/v2/node/wakunode2_test.go +++ b/waku/v2/node/wakunode2_test.go @@ -4,7 +4,6 @@ import ( "bytes" "context" "fmt" - wenr "github.com/waku-org/go-waku/waku/v2/protocol/enr" "math/big" "math/rand" "net" @@ -13,6 +12,8 @@ import ( "testing" "time" + wenr "github.com/waku-org/go-waku/waku/v2/protocol/enr" + "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/p2p/enode" "github.com/prometheus/client_golang/prometheus" @@ -399,8 +400,9 @@ func TestStaticShardingMultipleTopics(t *testing.T) { // Send another message to non-subscribed pubsub topic, but subscribed content topic msg2 := tests.CreateWakuMessage(contentTopic1, utils.GetUnixEpoch(), "test message 2") - - _, err = r.Publish(ctx, msg2, relay.WithPubSubTopic("/waku/2/rs/100/321")) + pubSubTopic3 := protocol.NewStaticShardingPubsubTopic(testClusterID, uint16(321)) + pubSubTopic3Str := pubSubTopic3.String() + _, err = r.Publish(ctx, msg2, relay.WithPubSubTopic(pubSubTopic3Str)) require.NoError(t, err) time.Sleep(100 * time.Millisecond) From 1b7d246e13416e8e0da1ce5623dde221d60f6f5e Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 18:59:13 +0800 Subject: [PATCH 89/97] test: ci test --- .github/workflows/ci_test.yml | 168 ++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 .github/workflows/ci_test.yml diff --git a/.github/workflows/ci_test.yml b/.github/workflows/ci_test.yml new file mode 100644 index 000000000..60fafbe9a --- /dev/null +++ b/.github/workflows/ci_test.yml @@ -0,0 +1,168 @@ +name: ci + +on: + pull_request: + push: + branches: + - chore-sharding-tests-update + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + changes: # changes detection + runs-on: ubuntu-latest + permissions: + pull-requests: read + steps: + - uses: actions/checkout@v3 + name: Checkout code + id: checkout + + - uses: dorny/paths-filter@v2 + id: filter + with: + filters: | + common: + - '.github/workflows/**' + - 'Makefile' + - 'libs/**' + - 'go.mod' + - 'go.sum' + - 'flake.nix' + - 'examples/**' + + v2: + - 'waku/**' + - 'cmd/**' + - 'library/**' + - 'tests/**' + + docker: + - 'docker/**' + - 'Dockerfile' + + outputs: + common: ${{ steps.filter.outputs.common }} + v2: ${{ steps.filter.outputs.v2 }} + docker: ${{ steps.filter.outputs.docker }} + + env: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - uses: xom9ikk/dotenv@v2 + with: + path: ".github/" + - run: | + echo "go_version=${{ env.GO_VERSION }}" >> $GITHUB_OUTPUT + + - run: | + VERSION=$(cat ./VERSION) + echo "waku_version=$VERSION" >> $GITHUB_OUTPUT + + golangci: + name: lint + needs: [changes, env] + if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Install Go + uses: actions/setup-go@v4 + with: + go-version: ${{ needs.env.outputs.go_version }} + cache: false + + - name: Execute golangci-lint + uses: golangci/golangci-lint-action@v3 + with: + version: v1.55.2 + args: --deadline=5m + + build: + needs: [changes, env] + if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest] + runs-on: ${{ matrix.os }} + timeout-minutes: 60 + + name: build-${{ matrix.os }} + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Get submodules hash + id: submodules + run: | + echo "hash=$(git submodule status | awk '{print $1}' | sort | shasum -a 256 | sed 's/[ -]*//g')" >> $GITHUB_OUTPUT + + - name: Cache submodules + uses: actions/cache@v3 + with: + path: | + vendor/ + .git/modules + key: ${{ runner.os }}-vendor-modules-${{ steps.submodules.outputs.hash }} + + - name: Install Go + uses: actions/setup-go@v4 + with: + go-version: ${{ needs.env.outputs.go_version }} + cache: false + + - name: Build binary + run: make + + - name: Build library + run: make static-library dynamic-library + + - name: Build examples + run: make build-example + + test: + needs: [changes, env] + if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} + strategy: + matrix: + tests: [test-ci, test-with-race] + runs-on: ubuntu-latest + timeout-minutes: 60 + + name: ${{ matrix.tests }} + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Get submodules hash + id: submodules + run: | + echo "hash=$(git submodule status | awk '{print $1}' | sort | shasum -a 256 | sed 's/[ -]*//g')" >> $GITHUB_OUTPUT + + - name: Cache submodules + uses: actions/cache@v3 + with: + path: | + vendor/ + .git/modules + key: ${{ runner.os }}-vendor-modules-${{ steps.submodules.outputs.hash }} + + - name: Install Go + uses: actions/setup-go@v4 + with: + go-version: ${{ needs.env.outputs.go_version }} + cache: false + + - name: "Run tests" + run: make ${{ matrix.tests }} + + - name: "Run onchain-tests" + run: | + docker compose -f .github/docker-compose/ganache.yml up -d + make test-onchain${{ matrix.tests == 'test-with-race' && '-with-race' || '' }} From 1d263a8cafc2ff0f67a70f6d5a012ab7b33e24b8 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:11:11 +0800 Subject: [PATCH 90/97] test: ci test - try without mac os --- .github/workflows/ci_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_test.yml b/.github/workflows/ci_test.yml index 60fafbe9a..77babeaa4 100644 --- a/.github/workflows/ci_test.yml +++ b/.github/workflows/ci_test.yml @@ -89,7 +89,7 @@ jobs: if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} strategy: matrix: - os: [ubuntu-latest, macos-latest] + os: [ubuntu-latest] runs-on: ${{ matrix.os }} timeout-minutes: 60 From 8a8e660251798a1be7e9be6aeb150f391e7e1fb0 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:27:09 +0800 Subject: [PATCH 91/97] test: copy go mod from PR1091 --- go.mod | 65 +++++++++++++++++++++++++++------------------------------- 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/go.mod b/go.mod index a9996f5cc..32f07116d 100644 --- a/go.mod +++ b/go.mod @@ -1,31 +1,30 @@ module github.com/waku-org/go-waku -go 1.20 +go 1.21 require ( github.com/btcsuite/btcd/btcec/v2 v2.2.1 github.com/cruxic/go-hmac-drbg v0.0.0-20170206035330-84c46983886d github.com/ethereum/go-ethereum v1.11.6 github.com/golang-migrate/migrate/v4 v4.15.2 - github.com/golang/protobuf v1.5.3 // indirect github.com/ipfs/go-ds-sql v0.3.0 github.com/ipfs/go-log/v2 v2.5.1 - github.com/libp2p/go-libp2p v0.32.2 + github.com/libp2p/go-libp2p v0.33.2 github.com/libp2p/go-libp2p-pubsub v0.10.0 github.com/libp2p/go-msgio v0.3.0 github.com/mattn/go-sqlite3 v1.14.17 - github.com/multiformats/go-multiaddr v0.12.0 + github.com/multiformats/go-multiaddr v0.12.3 github.com/stretchr/testify v1.8.4 github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a // indirect github.com/urfave/cli/v2 v2.24.4 go.opencensus.io v0.24.0 - go.uber.org/zap v1.26.0 - golang.org/x/sync v0.4.0 // indirect + go.uber.org/zap v1.27.0 + golang.org/x/sync v0.6.0 // indirect ) require ( github.com/waku-org/go-discover v0.0.0-20240321122731-fe708039d53f - golang.org/x/text v0.13.0 // indirect + golang.org/x/text v0.14.0 // indirect ) require ( @@ -47,7 +46,7 @@ require ( github.com/deckarep/golang-set/v2 v2.1.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b // indirect + github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 // indirect github.com/hashicorp/golang-lru/arc/v2 v2.0.5 // indirect github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c // indirect @@ -61,18 +60,16 @@ require ( github.com/jackc/pgtype v1.6.2 // indirect github.com/jackc/pgx/v4 v4.10.1 // indirect github.com/lib/pq v1.10.4 // indirect - github.com/onsi/ginkgo/v2 v2.13.0 // indirect + github.com/onsi/ginkgo/v2 v2.15.0 // indirect github.com/quic-go/qpack v0.4.0 // indirect - github.com/quic-go/qtls-go1-20 v0.3.4 // indirect - github.com/quic-go/quic-go v0.39.4 // indirect + github.com/quic-go/quic-go v0.42.0 // indirect github.com/quic-go/webtransport-go v0.6.0 // indirect - github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/waku-org/go-zerokit-rln-apple v0.0.0-20230916172309-ee0ee61dde2b // indirect github.com/waku-org/go-zerokit-rln-arm v0.0.0-20230916171929-1dd9494ff065 // indirect github.com/waku-org/go-zerokit-rln-x86_64 v0.0.0-20230916171518-2a77c3734dd1 // indirect go.uber.org/dig v1.17.1 // indirect go.uber.org/fx v1.20.1 // indirect - go.uber.org/mock v0.3.0 // indirect + go.uber.org/mock v0.4.0 // indirect golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect ) @@ -90,7 +87,7 @@ require ( github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/elastic/gosigar v0.14.2 // indirect - github.com/flynn/noise v1.0.0 // indirect + github.com/flynn/noise v1.1.0 // indirect github.com/francoispqt/gojay v1.2.13 // indirect github.com/go-ole/go-ole v1.2.1 // indirect github.com/go-stack/stack v1.8.1 // indirect @@ -99,8 +96,8 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/gopacket v1.1.19 // indirect - github.com/google/uuid v1.3.0 - github.com/gorilla/websocket v1.5.0 // indirect + github.com/google/uuid v1.4.0 + github.com/gorilla/websocket v1.5.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d @@ -110,13 +107,12 @@ require ( github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect github.com/jbenet/goprocess v0.1.4 // indirect - github.com/klauspost/compress v1.17.2 // indirect - github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/klauspost/compress v1.17.6 // indirect + github.com/klauspost/cpuid/v2 v2.2.7 // indirect github.com/koron/go-ssdp v0.0.4 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/libp2p/go-cidranger v1.1.0 // indirect github.com/libp2p/go-flow-metrics v0.1.0 // indirect - github.com/libp2p/go-libp2p-asn-util v0.3.0 // indirect + github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect github.com/libp2p/go-mplex v0.7.0 // indirect github.com/libp2p/go-nat v0.2.0 // indirect github.com/libp2p/go-netroute v0.2.1 // indirect @@ -124,8 +120,7 @@ require ( github.com/libp2p/go-yamux/v4 v4.0.1 // indirect github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect - github.com/miekg/dns v1.1.56 // indirect + github.com/miekg/dns v1.1.58 // indirect github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect github.com/minio/sha256-simd v1.0.1 // indirect @@ -139,14 +134,14 @@ require ( github.com/multiformats/go-multihash v0.2.3 // indirect github.com/multiformats/go-multistream v0.5.0 github.com/multiformats/go-varint v0.0.7 // indirect - github.com/opencontainers/runtime-spec v1.1.0 // indirect + github.com/opencontainers/runtime-spec v1.2.0 // indirect github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.14.0 - github.com/prometheus/client_model v0.4.0 - github.com/prometheus/common v0.42.0 // indirect - github.com/prometheus/procfs v0.9.0 // indirect + github.com/prometheus/client_golang v1.18.0 + github.com/prometheus/client_model v0.6.0 + github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect github.com/raulk/go-watchdog v1.3.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect @@ -156,14 +151,14 @@ require ( github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.14.0 // indirect - golang.org/x/exp v0.0.0-20231006140011-7918f672742d - golang.org/x/mod v0.13.0 // indirect - golang.org/x/net v0.17.0 // indirect - golang.org/x/sys v0.13.0 - golang.org/x/time v0.0.0-20220922220347-f3bd1da661af - golang.org/x/tools v0.14.0 // indirect - google.golang.org/protobuf v1.31.0 + golang.org/x/crypto v0.19.0 // indirect + golang.org/x/exp v0.0.0-20240213143201-ec583247a57a + golang.org/x/mod v0.15.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sys v0.17.0 + golang.org/x/time v0.5.0 + golang.org/x/tools v0.18.0 // indirect + google.golang.org/protobuf v1.32.0 gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect From ce0d31637291f0b964067a7b96445b067d0627df Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:29:42 +0800 Subject: [PATCH 92/97] test: copy go sum from PR1091 --- go.sum | 165 ++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 98 insertions(+), 67 deletions(-) diff --git a/go.sum b/go.sum index 0ebdd1254..22f222f9a 100644 --- a/go.sum +++ b/go.sum @@ -59,6 +59,7 @@ gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zum git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M= +github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-storage-blob-go v0.14.0/go.mod h1:SMqIBi+SuiQH32bvyjngEewEeXoPfKMgWlBDaYf6fck= @@ -86,6 +87,7 @@ github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= +github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= @@ -121,6 +123,7 @@ github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:H github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c3fqvvgKm5o= +github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -218,6 +221,7 @@ github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= +github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -255,10 +259,14 @@ github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:z github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= +github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811 h1:ytcWPaNPhNoGMWEhDvS3zToKcDpRsLuRolQJBVGdozk= +github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811/go.mod h1:Nb5lgvnQ2+oGlE/EyZy4+2/CxRh9KfvCXnag1vtpxVM= github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= +github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= @@ -405,12 +413,15 @@ github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6Uh github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI= github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/denisenkom/go-mssqldb v0.10.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= +github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= github.com/dgraph-io/ristretto v0.0.2 h1:a5WaUrDa0qm0YrAAS1tUykT5El3kt62KNZZeMxQn3po= +github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= @@ -445,6 +456,7 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= @@ -469,9 +481,10 @@ github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQL github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= +github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= -github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= +github.com/flynn/noise v1.1.0 h1:KjPQoQCEFdZDiP03phOvGi11+SVVhBG2wOWAorLsstg= +github.com/flynn/noise v1.1.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= @@ -491,8 +504,10 @@ github.com/gabriel-vasile/mimetype v1.3.1/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmx github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= +github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= @@ -520,7 +535,8 @@ github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTg github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E= @@ -582,6 +598,7 @@ github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= @@ -597,6 +614,7 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= +github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-migrate/migrate/v4 v4.15.2 h1:vU+M05vs6jWHKDdmE1Ecwj0BznygFc4QsdRe2E/L7kc= github.com/golang-migrate/migrate/v4 v4.15.2/go.mod h1:f2toGLkYqD3JH+Todi4aZ2ZdbeUNx4sIwiOK96rE9Lw= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= @@ -661,7 +679,8 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-github/v39 v39.2.0/go.mod h1:C1s8C5aCC9L+JXIYpJM5GYytdX52vC1bLvHEF1IhBrE= @@ -691,15 +710,16 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b h1:RMpPgZTSApbPf7xaVel+QkoGPRLFLrwFO89uDUHEGf0= -github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= +github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 h1:E/LAvt58di64hlYjx7AsNS6C/ysHWYo+2qPCZKTQhRo= +github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -718,8 +738,8 @@ github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB7 github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= @@ -737,6 +757,7 @@ github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brv github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= +github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= @@ -764,6 +785,7 @@ github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0m github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= +github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c h1:DZfsyhDK1hnSS5lH8l+JggqzEleHteTYfutAiVlSUM8= github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -787,7 +809,9 @@ github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8 github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= github.com/ipfs/go-ds-badger v0.3.0 h1:xREL3V0EH9S219kFFueOYJJTcjgNSZ2HY1iSvN7U1Ro= +github.com/ipfs/go-ds-badger v0.3.0/go.mod h1:1ke6mXNqeV8K3y5Ak2bAA0osoTfmxUdupVCGm4QUIek= github.com/ipfs/go-ds-leveldb v0.5.0 h1:s++MEBbD3ZKc9/8/njrn4flZLnCuY9I79v94gBUNumo= +github.com/ipfs/go-ds-leveldb v0.5.0/go.mod h1:d3XG9RUDzQ6V4SHi8+Xgj9j1XuEk1z82lquxrVbml/Q= github.com/ipfs/go-ds-sql v0.3.0 h1:PLBbl0Rt0tBwWhQ0b3GCQbH+Bgd6aj2srKG6vJ7nYl4= github.com/ipfs/go-ds-sql v0.3.0/go.mod h1:jE3bhmuUnMPXFftc4NEAiPUfgiwiv7fIdjozuX+m1/E= github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= @@ -905,10 +929,10 @@ github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdY github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= -github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= -github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= +github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= +github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -920,6 +944,7 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= @@ -929,6 +954,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/ktrysmt/go-bitbucket v0.6.4/go.mod h1:9u0v3hsd2rqCHRIpbir1oP7F58uo5dq19sBYvuMoyQ4= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -939,19 +965,18 @@ github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk= github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= -github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c= -github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= -github.com/libp2p/go-libp2p v0.32.2 h1:s8GYN4YJzgUoyeYNPdW7JZeZ5Ee31iNaIBfGYMAY4FQ= -github.com/libp2p/go-libp2p v0.32.2/go.mod h1:E0LKe+diV/ZVJVnOJby8VC5xzHF0660osg71skcxJvk= -github.com/libp2p/go-libp2p-asn-util v0.3.0 h1:gMDcMyYiZKkocGXDQ5nsUQyquC9+H+iLEQHwOCZ7s8s= -github.com/libp2p/go-libp2p-asn-util v0.3.0/go.mod h1:B1mcOrKUE35Xq/ASTmQ4tN3LNzVVaMNmq2NACuqyB9w= +github.com/libp2p/go-libp2p v0.33.2 h1:vCdwnFxoGOXMKmaGHlDSnL4bM3fQeW8pgIa9DECnb40= +github.com/libp2p/go-libp2p v0.33.2/go.mod h1:zTeppLuCvUIkT118pFVzA8xzP/p2dJYOMApCkFh0Yww= +github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94= +github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8= github.com/libp2p/go-libp2p-mplex v0.9.0 h1:R58pDRAmuBXkYugbSSXR9wrTX3+1pFM1xP2bLuodIq8= github.com/libp2p/go-libp2p-mplex v0.9.0/go.mod h1:ro1i4kuwiFT+uMPbIDIFkcLs1KRbNp0QwnUXM+P64Og= github.com/libp2p/go-libp2p-pubsub v0.10.0 h1:wS0S5FlISavMaAbxyQn3dxMOe2eegMfswM471RuHJwA= github.com/libp2p/go-libp2p-pubsub v0.10.0/go.mod h1:1OxbaT/pFRO5h+Dpze8hdHQ63R0ke55XTs6b6NwLLkw= github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= +github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg= github.com/libp2p/go-mplex v0.7.0 h1:BDhFZdlk5tbr0oyFq/xv/NPGfjbnrsDam1EvutpBDbY= github.com/libp2p/go-mplex v0.7.0/go.mod h1:rW8ThnRcYWft/Jb2jeORBmPd6xuG3dGxWN/W168L9EU= github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0= @@ -986,6 +1011,7 @@ github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcncea github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= @@ -999,6 +1025,7 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= @@ -1010,14 +1037,12 @@ github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6 github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.56 h1:5imZaSeoRNvpM9SzWNhEcP9QliKiz20/dA2QabIGVnE= -github.com/miekg/dns v1.1.56/go.mod h1:cRm6Oo2C8TY9ZS/TqsSrseAcncm74lfK5G+ikN2SWWY= +github.com/miekg/dns v1.1.58 h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4= +github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c h1:bzE/A84HN25pxAuk9Eej1Kz9OUelF97nAc82bDquQI8= github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= @@ -1040,8 +1065,10 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= +github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= @@ -1072,8 +1099,8 @@ github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9 github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= -github.com/multiformats/go-multiaddr v0.12.0 h1:1QlibTFkoXJuDjjYsMHhE73TnzJQl8FSWatk/0gxGzE= -github.com/multiformats/go-multiaddr v0.12.0/go.mod h1:WmZXgObOQOYp9r3cslLlppkrz1FYSHmE834dfz/lWu8= +github.com/multiformats/go-multiaddr v0.12.3 h1:hVBXvPRcKG0w80VinQ23P5t7czWgg65BmIvQKjDydU8= +github.com/multiformats/go-multiaddr v0.12.3/go.mod h1:sBXrNzucqkFJhvKOiwwLyqamGa/P5EIXNPLovyhQCII= github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= @@ -1108,6 +1135,7 @@ github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+ github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -1124,8 +1152,8 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4= -github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= +github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= +github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -1138,7 +1166,8 @@ github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDs github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= +github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -1163,8 +1192,8 @@ github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.m github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg= -github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= +github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= @@ -1204,15 +1233,15 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= -github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= +github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= -github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= @@ -1222,8 +1251,8 @@ github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+ github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= +github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1237,15 +1266,13 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= -github.com/quic-go/qtls-go1-20 v0.3.4 h1:MfFAPULvst4yoMgY9QmtpYmfij/em7O8UUi+bNVm7Cg= -github.com/quic-go/qtls-go1-20 v0.3.4/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= -github.com/quic-go/quic-go v0.39.4 h1:PelfiuG7wXEffUT2yceiqz5V6Pc0TA5ruOd1LcmFc1s= -github.com/quic-go/quic-go v0.39.4/go.mod h1:T09QsDQWjLiQ74ZmacDfqZmhY/NLnw5BC40MANNNZ1Q= +github.com/quic-go/quic-go v0.42.0 h1:uSfdap0eveIl8KXnipv9K7nlwZ5IqLlYOpJ58u5utpM= +github.com/quic-go/quic-go v0.42.0/go.mod h1:132kz4kL3F9vxhW3CtQJLDVwcFe5wdWeJXXijhsO57M= github.com/quic-go/webtransport-go v0.6.0 h1:CvNsKqc4W2HljHJnoT+rMmbRJybShZ0YPFDD3NxaZLY= github.com/quic-go/webtransport-go v0.6.0/go.mod h1:9KjU4AEBqEQidGHNDkZrb8CAa1abRaosM2yGOyiikEc= github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= @@ -1260,6 +1287,7 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= @@ -1346,6 +1374,7 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= +github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -1385,6 +1414,7 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= +github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= @@ -1500,9 +1530,10 @@ go.uber.org/fx v1.20.1/go.mod h1:iSYNbHf2y55acNCwCXKx7LbWb5WG1Bnue5RDXz1OREg= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= -go.uber.org/mock v0.3.0 h1:3mUxI1No2/60yUYax92Pt8eNOEecx2D3lcXZh2NEZJo= -go.uber.org/mock v0.3.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= +go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= @@ -1513,8 +1544,8 @@ go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1545,8 +1576,8 @@ golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1561,8 +1592,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= +golang.org/x/exp v0.0.0-20240213143201-ec583247a57a h1:HinSgX1tJRX3KsL//Gxynpw5CTOAIPhgL4W8PNiIpVE= +golang.org/x/exp v0.0.0-20240213143201-ec583247a57a/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1597,8 +1628,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1669,8 +1700,8 @@ golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220111093109-d55c255bac03/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/oauth2 v0.0.0-20180227000427-d7d64896b5ff/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1704,8 +1735,8 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180224232135-f6cff0780e54/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1837,8 +1868,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1853,8 +1884,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1864,8 +1895,8 @@ golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220922220347-f3bd1da661af h1:Yx9k8YCG3dvF87UAn2tu2HQLf2dt/eR1bXxpLMWeH+Y= -golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1946,8 +1977,8 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2134,8 +2165,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From cd3f1f9ae9f968fde27902dc25b092ef378466ee Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:37:16 +0800 Subject: [PATCH 93/97] Revert "test: copy go sum from PR1091" This reverts commit 3a1a7e6c9311857638c51ef0e193af6c3bb223ea. --- go.sum | 165 +++++++++++++++++++++++---------------------------------- 1 file changed, 67 insertions(+), 98 deletions(-) diff --git a/go.sum b/go.sum index 22f222f9a..0ebdd1254 100644 --- a/go.sum +++ b/go.sum @@ -59,7 +59,6 @@ gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zum git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M= -github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-storage-blob-go v0.14.0/go.mod h1:SMqIBi+SuiQH32bvyjngEewEeXoPfKMgWlBDaYf6fck= @@ -87,7 +86,6 @@ github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= -github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= @@ -123,7 +121,6 @@ github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:H github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c3fqvvgKm5o= -github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -221,7 +218,6 @@ github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= -github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -259,14 +255,10 @@ github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:z github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= -github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= -github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811 h1:ytcWPaNPhNoGMWEhDvS3zToKcDpRsLuRolQJBVGdozk= -github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811/go.mod h1:Nb5lgvnQ2+oGlE/EyZy4+2/CxRh9KfvCXnag1vtpxVM= github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= -github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= @@ -413,15 +405,12 @@ github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6Uh github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI= github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= -github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/denisenkom/go-mssqldb v0.10.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= -github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= github.com/dgraph-io/ristretto v0.0.2 h1:a5WaUrDa0qm0YrAAS1tUykT5El3kt62KNZZeMxQn3po= -github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= @@ -456,7 +445,6 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= @@ -481,10 +469,9 @@ github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQL github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/flynn/noise v1.1.0 h1:KjPQoQCEFdZDiP03phOvGi11+SVVhBG2wOWAorLsstg= -github.com/flynn/noise v1.1.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= +github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= +github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= @@ -504,10 +491,8 @@ github.com/gabriel-vasile/mimetype v1.3.1/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmx github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= -github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= @@ -535,8 +520,7 @@ github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTg github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= -github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E= @@ -598,7 +582,6 @@ github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= -github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= @@ -614,7 +597,6 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= -github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-migrate/migrate/v4 v4.15.2 h1:vU+M05vs6jWHKDdmE1Ecwj0BznygFc4QsdRe2E/L7kc= github.com/golang-migrate/migrate/v4 v4.15.2/go.mod h1:f2toGLkYqD3JH+Todi4aZ2ZdbeUNx4sIwiOK96rE9Lw= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= @@ -679,8 +661,7 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-github/v39 v39.2.0/go.mod h1:C1s8C5aCC9L+JXIYpJM5GYytdX52vC1bLvHEF1IhBrE= @@ -710,16 +691,15 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 h1:E/LAvt58di64hlYjx7AsNS6C/ysHWYo+2qPCZKTQhRo= -github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= +github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b h1:RMpPgZTSApbPf7xaVel+QkoGPRLFLrwFO89uDUHEGf0= +github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -738,8 +718,8 @@ github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB7 github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= -github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= @@ -757,7 +737,6 @@ github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brv github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= -github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= @@ -785,7 +764,6 @@ github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0m github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= -github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c h1:DZfsyhDK1hnSS5lH8l+JggqzEleHteTYfutAiVlSUM8= github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -809,9 +787,7 @@ github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8 github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= github.com/ipfs/go-ds-badger v0.3.0 h1:xREL3V0EH9S219kFFueOYJJTcjgNSZ2HY1iSvN7U1Ro= -github.com/ipfs/go-ds-badger v0.3.0/go.mod h1:1ke6mXNqeV8K3y5Ak2bAA0osoTfmxUdupVCGm4QUIek= github.com/ipfs/go-ds-leveldb v0.5.0 h1:s++MEBbD3ZKc9/8/njrn4flZLnCuY9I79v94gBUNumo= -github.com/ipfs/go-ds-leveldb v0.5.0/go.mod h1:d3XG9RUDzQ6V4SHi8+Xgj9j1XuEk1z82lquxrVbml/Q= github.com/ipfs/go-ds-sql v0.3.0 h1:PLBbl0Rt0tBwWhQ0b3GCQbH+Bgd6aj2srKG6vJ7nYl4= github.com/ipfs/go-ds-sql v0.3.0/go.mod h1:jE3bhmuUnMPXFftc4NEAiPUfgiwiv7fIdjozuX+m1/E= github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= @@ -929,10 +905,10 @@ github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdY github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= -github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= -github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= +github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -944,7 +920,6 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= @@ -954,7 +929,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/ktrysmt/go-bitbucket v0.6.4/go.mod h1:9u0v3hsd2rqCHRIpbir1oP7F58uo5dq19sBYvuMoyQ4= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -965,18 +939,19 @@ github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk= github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c= +github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= -github.com/libp2p/go-libp2p v0.33.2 h1:vCdwnFxoGOXMKmaGHlDSnL4bM3fQeW8pgIa9DECnb40= -github.com/libp2p/go-libp2p v0.33.2/go.mod h1:zTeppLuCvUIkT118pFVzA8xzP/p2dJYOMApCkFh0Yww= -github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94= -github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8= +github.com/libp2p/go-libp2p v0.32.2 h1:s8GYN4YJzgUoyeYNPdW7JZeZ5Ee31iNaIBfGYMAY4FQ= +github.com/libp2p/go-libp2p v0.32.2/go.mod h1:E0LKe+diV/ZVJVnOJby8VC5xzHF0660osg71skcxJvk= +github.com/libp2p/go-libp2p-asn-util v0.3.0 h1:gMDcMyYiZKkocGXDQ5nsUQyquC9+H+iLEQHwOCZ7s8s= +github.com/libp2p/go-libp2p-asn-util v0.3.0/go.mod h1:B1mcOrKUE35Xq/ASTmQ4tN3LNzVVaMNmq2NACuqyB9w= github.com/libp2p/go-libp2p-mplex v0.9.0 h1:R58pDRAmuBXkYugbSSXR9wrTX3+1pFM1xP2bLuodIq8= github.com/libp2p/go-libp2p-mplex v0.9.0/go.mod h1:ro1i4kuwiFT+uMPbIDIFkcLs1KRbNp0QwnUXM+P64Og= github.com/libp2p/go-libp2p-pubsub v0.10.0 h1:wS0S5FlISavMaAbxyQn3dxMOe2eegMfswM471RuHJwA= github.com/libp2p/go-libp2p-pubsub v0.10.0/go.mod h1:1OxbaT/pFRO5h+Dpze8hdHQ63R0ke55XTs6b6NwLLkw= github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= -github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg= github.com/libp2p/go-mplex v0.7.0 h1:BDhFZdlk5tbr0oyFq/xv/NPGfjbnrsDam1EvutpBDbY= github.com/libp2p/go-mplex v0.7.0/go.mod h1:rW8ThnRcYWft/Jb2jeORBmPd6xuG3dGxWN/W168L9EU= github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0= @@ -1011,7 +986,6 @@ github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcncea github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= @@ -1025,7 +999,6 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= @@ -1037,12 +1010,14 @@ github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6 github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.58 h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4= -github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY= +github.com/miekg/dns v1.1.56 h1:5imZaSeoRNvpM9SzWNhEcP9QliKiz20/dA2QabIGVnE= +github.com/miekg/dns v1.1.56/go.mod h1:cRm6Oo2C8TY9ZS/TqsSrseAcncm74lfK5G+ikN2SWWY= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c h1:bzE/A84HN25pxAuk9Eej1Kz9OUelF97nAc82bDquQI8= github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= @@ -1065,10 +1040,8 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= -github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= @@ -1099,8 +1072,8 @@ github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9 github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= -github.com/multiformats/go-multiaddr v0.12.3 h1:hVBXvPRcKG0w80VinQ23P5t7czWgg65BmIvQKjDydU8= -github.com/multiformats/go-multiaddr v0.12.3/go.mod h1:sBXrNzucqkFJhvKOiwwLyqamGa/P5EIXNPLovyhQCII= +github.com/multiformats/go-multiaddr v0.12.0 h1:1QlibTFkoXJuDjjYsMHhE73TnzJQl8FSWatk/0gxGzE= +github.com/multiformats/go-multiaddr v0.12.0/go.mod h1:WmZXgObOQOYp9r3cslLlppkrz1FYSHmE834dfz/lWu8= github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= @@ -1135,7 +1108,6 @@ github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+ github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -1152,8 +1124,8 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= -github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= +github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4= +github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -1166,8 +1138,7 @@ github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDs github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= -github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -1192,8 +1163,8 @@ github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.m github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= -github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg= +github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= @@ -1233,15 +1204,15 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= +github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= -github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= @@ -1251,8 +1222,8 @@ github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+ github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= +github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1266,13 +1237,15 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= +github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= -github.com/quic-go/quic-go v0.42.0 h1:uSfdap0eveIl8KXnipv9K7nlwZ5IqLlYOpJ58u5utpM= -github.com/quic-go/quic-go v0.42.0/go.mod h1:132kz4kL3F9vxhW3CtQJLDVwcFe5wdWeJXXijhsO57M= +github.com/quic-go/qtls-go1-20 v0.3.4 h1:MfFAPULvst4yoMgY9QmtpYmfij/em7O8UUi+bNVm7Cg= +github.com/quic-go/qtls-go1-20 v0.3.4/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= +github.com/quic-go/quic-go v0.39.4 h1:PelfiuG7wXEffUT2yceiqz5V6Pc0TA5ruOd1LcmFc1s= +github.com/quic-go/quic-go v0.39.4/go.mod h1:T09QsDQWjLiQ74ZmacDfqZmhY/NLnw5BC40MANNNZ1Q= github.com/quic-go/webtransport-go v0.6.0 h1:CvNsKqc4W2HljHJnoT+rMmbRJybShZ0YPFDD3NxaZLY= github.com/quic-go/webtransport-go v0.6.0/go.mod h1:9KjU4AEBqEQidGHNDkZrb8CAa1abRaosM2yGOyiikEc= github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= @@ -1287,7 +1260,6 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= -github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= @@ -1374,7 +1346,6 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= -github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -1414,7 +1385,6 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= -github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= @@ -1530,10 +1500,9 @@ go.uber.org/fx v1.20.1/go.mod h1:iSYNbHf2y55acNCwCXKx7LbWb5WG1Bnue5RDXz1OREg= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= -go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= -go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= +go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= +go.uber.org/mock v0.3.0 h1:3mUxI1No2/60yUYax92Pt8eNOEecx2D3lcXZh2NEZJo= +go.uber.org/mock v0.3.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= @@ -1544,8 +1513,8 @@ go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1576,8 +1545,8 @@ golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1592,8 +1561,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240213143201-ec583247a57a h1:HinSgX1tJRX3KsL//Gxynpw5CTOAIPhgL4W8PNiIpVE= -golang.org/x/exp v0.0.0-20240213143201-ec583247a57a/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1628,8 +1597,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= -golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1700,8 +1669,8 @@ golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220111093109-d55c255bac03/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180227000427-d7d64896b5ff/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1735,8 +1704,8 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180224232135-f6cff0780e54/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1868,8 +1837,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1884,8 +1853,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1895,8 +1864,8 @@ golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af h1:Yx9k8YCG3dvF87UAn2tu2HQLf2dt/eR1bXxpLMWeH+Y= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1977,8 +1946,8 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= -golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2165,8 +2134,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 3aef4a708798eef1ea9c7c5119c93502af9ba911 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:37:48 +0800 Subject: [PATCH 94/97] Revert "test: copy go mod from PR1091" This reverts commit 1afb587c15505e7045d069eb166f648385baa052. --- go.mod | 65 +++++++++++++++++++++++++++++++--------------------------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/go.mod b/go.mod index 32f07116d..a9996f5cc 100644 --- a/go.mod +++ b/go.mod @@ -1,30 +1,31 @@ module github.com/waku-org/go-waku -go 1.21 +go 1.20 require ( github.com/btcsuite/btcd/btcec/v2 v2.2.1 github.com/cruxic/go-hmac-drbg v0.0.0-20170206035330-84c46983886d github.com/ethereum/go-ethereum v1.11.6 github.com/golang-migrate/migrate/v4 v4.15.2 + github.com/golang/protobuf v1.5.3 // indirect github.com/ipfs/go-ds-sql v0.3.0 github.com/ipfs/go-log/v2 v2.5.1 - github.com/libp2p/go-libp2p v0.33.2 + github.com/libp2p/go-libp2p v0.32.2 github.com/libp2p/go-libp2p-pubsub v0.10.0 github.com/libp2p/go-msgio v0.3.0 github.com/mattn/go-sqlite3 v1.14.17 - github.com/multiformats/go-multiaddr v0.12.3 + github.com/multiformats/go-multiaddr v0.12.0 github.com/stretchr/testify v1.8.4 github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a // indirect github.com/urfave/cli/v2 v2.24.4 go.opencensus.io v0.24.0 - go.uber.org/zap v1.27.0 - golang.org/x/sync v0.6.0 // indirect + go.uber.org/zap v1.26.0 + golang.org/x/sync v0.4.0 // indirect ) require ( github.com/waku-org/go-discover v0.0.0-20240321122731-fe708039d53f - golang.org/x/text v0.14.0 // indirect + golang.org/x/text v0.13.0 // indirect ) require ( @@ -46,7 +47,7 @@ require ( github.com/deckarep/golang-set/v2 v2.1.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 // indirect + github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b // indirect github.com/hashicorp/golang-lru/arc/v2 v2.0.5 // indirect github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c // indirect @@ -60,16 +61,18 @@ require ( github.com/jackc/pgtype v1.6.2 // indirect github.com/jackc/pgx/v4 v4.10.1 // indirect github.com/lib/pq v1.10.4 // indirect - github.com/onsi/ginkgo/v2 v2.15.0 // indirect + github.com/onsi/ginkgo/v2 v2.13.0 // indirect github.com/quic-go/qpack v0.4.0 // indirect - github.com/quic-go/quic-go v0.42.0 // indirect + github.com/quic-go/qtls-go1-20 v0.3.4 // indirect + github.com/quic-go/quic-go v0.39.4 // indirect github.com/quic-go/webtransport-go v0.6.0 // indirect + github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/waku-org/go-zerokit-rln-apple v0.0.0-20230916172309-ee0ee61dde2b // indirect github.com/waku-org/go-zerokit-rln-arm v0.0.0-20230916171929-1dd9494ff065 // indirect github.com/waku-org/go-zerokit-rln-x86_64 v0.0.0-20230916171518-2a77c3734dd1 // indirect go.uber.org/dig v1.17.1 // indirect go.uber.org/fx v1.20.1 // indirect - go.uber.org/mock v0.4.0 // indirect + go.uber.org/mock v0.3.0 // indirect golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect ) @@ -87,7 +90,7 @@ require ( github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/elastic/gosigar v0.14.2 // indirect - github.com/flynn/noise v1.1.0 // indirect + github.com/flynn/noise v1.0.0 // indirect github.com/francoispqt/gojay v1.2.13 // indirect github.com/go-ole/go-ole v1.2.1 // indirect github.com/go-stack/stack v1.8.1 // indirect @@ -96,8 +99,8 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/gopacket v1.1.19 // indirect - github.com/google/uuid v1.4.0 - github.com/gorilla/websocket v1.5.1 // indirect + github.com/google/uuid v1.3.0 + github.com/gorilla/websocket v1.5.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d @@ -107,12 +110,13 @@ require ( github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect github.com/jbenet/goprocess v0.1.4 // indirect - github.com/klauspost/compress v1.17.6 // indirect - github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/klauspost/compress v1.17.2 // indirect + github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/koron/go-ssdp v0.0.4 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/libp2p/go-cidranger v1.1.0 // indirect github.com/libp2p/go-flow-metrics v0.1.0 // indirect - github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect + github.com/libp2p/go-libp2p-asn-util v0.3.0 // indirect github.com/libp2p/go-mplex v0.7.0 // indirect github.com/libp2p/go-nat v0.2.0 // indirect github.com/libp2p/go-netroute v0.2.1 // indirect @@ -120,7 +124,8 @@ require ( github.com/libp2p/go-yamux/v4 v4.0.1 // indirect github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/miekg/dns v1.1.58 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/miekg/dns v1.1.56 // indirect github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect github.com/minio/sha256-simd v1.0.1 // indirect @@ -134,14 +139,14 @@ require ( github.com/multiformats/go-multihash v0.2.3 // indirect github.com/multiformats/go-multistream v0.5.0 github.com/multiformats/go-varint v0.0.7 // indirect - github.com/opencontainers/runtime-spec v1.2.0 // indirect + github.com/opencontainers/runtime-spec v1.1.0 // indirect github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.18.0 - github.com/prometheus/client_model v0.6.0 - github.com/prometheus/common v0.47.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/client_golang v1.14.0 + github.com/prometheus/client_model v0.4.0 + github.com/prometheus/common v0.42.0 // indirect + github.com/prometheus/procfs v0.9.0 // indirect github.com/raulk/go-watchdog v1.3.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect @@ -151,14 +156,14 @@ require ( github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.19.0 // indirect - golang.org/x/exp v0.0.0-20240213143201-ec583247a57a - golang.org/x/mod v0.15.0 // indirect - golang.org/x/net v0.21.0 // indirect - golang.org/x/sys v0.17.0 - golang.org/x/time v0.5.0 - golang.org/x/tools v0.18.0 // indirect - google.golang.org/protobuf v1.32.0 + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/exp v0.0.0-20231006140011-7918f672742d + golang.org/x/mod v0.13.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 + golang.org/x/time v0.0.0-20220922220347-f3bd1da661af + golang.org/x/tools v0.14.0 // indirect + google.golang.org/protobuf v1.31.0 gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect From 3b2c0c6c669f0cc047d9c132d315323d9a1fcd64 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:52:02 +0800 Subject: [PATCH 95/97] test: update go mod --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index a9996f5cc..1e9fb8fad 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/waku-org/go-waku -go 1.20 +go 1.21 require ( github.com/btcsuite/btcd/btcec/v2 v2.2.1 From b0491b02f2e8c55808c91ce407fe2b1ae5ec7fa9 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:54:06 +0800 Subject: [PATCH 96/97] test: delete ci_test --- .github/workflows/ci_test.yml | 168 ---------------------------------- 1 file changed, 168 deletions(-) delete mode 100644 .github/workflows/ci_test.yml diff --git a/.github/workflows/ci_test.yml b/.github/workflows/ci_test.yml deleted file mode 100644 index 77babeaa4..000000000 --- a/.github/workflows/ci_test.yml +++ /dev/null @@ -1,168 +0,0 @@ -name: ci - -on: - pull_request: - push: - branches: - - chore-sharding-tests-update - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - changes: # changes detection - runs-on: ubuntu-latest - permissions: - pull-requests: read - steps: - - uses: actions/checkout@v3 - name: Checkout code - id: checkout - - - uses: dorny/paths-filter@v2 - id: filter - with: - filters: | - common: - - '.github/workflows/**' - - 'Makefile' - - 'libs/**' - - 'go.mod' - - 'go.sum' - - 'flake.nix' - - 'examples/**' - - v2: - - 'waku/**' - - 'cmd/**' - - 'library/**' - - 'tests/**' - - docker: - - 'docker/**' - - 'Dockerfile' - - outputs: - common: ${{ steps.filter.outputs.common }} - v2: ${{ steps.filter.outputs.v2 }} - docker: ${{ steps.filter.outputs.docker }} - - env: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: xom9ikk/dotenv@v2 - with: - path: ".github/" - - run: | - echo "go_version=${{ env.GO_VERSION }}" >> $GITHUB_OUTPUT - - - run: | - VERSION=$(cat ./VERSION) - echo "waku_version=$VERSION" >> $GITHUB_OUTPUT - - golangci: - name: lint - needs: [changes, env] - if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Install Go - uses: actions/setup-go@v4 - with: - go-version: ${{ needs.env.outputs.go_version }} - cache: false - - - name: Execute golangci-lint - uses: golangci/golangci-lint-action@v3 - with: - version: v1.55.2 - args: --deadline=5m - - build: - needs: [changes, env] - if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} - strategy: - matrix: - os: [ubuntu-latest] - runs-on: ${{ matrix.os }} - timeout-minutes: 60 - - name: build-${{ matrix.os }} - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Get submodules hash - id: submodules - run: | - echo "hash=$(git submodule status | awk '{print $1}' | sort | shasum -a 256 | sed 's/[ -]*//g')" >> $GITHUB_OUTPUT - - - name: Cache submodules - uses: actions/cache@v3 - with: - path: | - vendor/ - .git/modules - key: ${{ runner.os }}-vendor-modules-${{ steps.submodules.outputs.hash }} - - - name: Install Go - uses: actions/setup-go@v4 - with: - go-version: ${{ needs.env.outputs.go_version }} - cache: false - - - name: Build binary - run: make - - - name: Build library - run: make static-library dynamic-library - - - name: Build examples - run: make build-example - - test: - needs: [changes, env] - if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} - strategy: - matrix: - tests: [test-ci, test-with-race] - runs-on: ubuntu-latest - timeout-minutes: 60 - - name: ${{ matrix.tests }} - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Get submodules hash - id: submodules - run: | - echo "hash=$(git submodule status | awk '{print $1}' | sort | shasum -a 256 | sed 's/[ -]*//g')" >> $GITHUB_OUTPUT - - - name: Cache submodules - uses: actions/cache@v3 - with: - path: | - vendor/ - .git/modules - key: ${{ runner.os }}-vendor-modules-${{ steps.submodules.outputs.hash }} - - - name: Install Go - uses: actions/setup-go@v4 - with: - go-version: ${{ needs.env.outputs.go_version }} - cache: false - - - name: "Run tests" - run: make ${{ matrix.tests }} - - - name: "Run onchain-tests" - run: | - docker compose -f .github/docker-compose/ganache.yml up -d - make test-onchain${{ matrix.tests == 'test-with-race' && '-with-race' || '' }} From cbc3c4ac432ba8e2896d16ca573e7df6b17f0c40 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 3 May 2024 19:58:06 +0800 Subject: [PATCH 97/97] Revert "test: update go mod" This reverts commit 8968e593d87b3075a3687ec17dc537e40eb2cb7c. --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 1e9fb8fad..a9996f5cc 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/waku-org/go-waku -go 1.21 +go 1.20 require ( github.com/btcsuite/btcd/btcec/v2 v2.2.1