From 64a4c0117345a9b00c49b7ad9fba926c43544539 Mon Sep 17 00:00:00 2001 From: gammazero <11790789+gammazero@users.noreply.github.com> Date: Mon, 12 Jan 2026 09:04:36 -1000 Subject: [PATCH 1/3] replace go-clock with synctest --- go.mod | 3 +- go.sum | 2 - peertracker/peertracker.go | 6 +- peertracker/peertracker_test.go | 104 +++++++++++++++----------------- 4 files changed, 53 insertions(+), 62 deletions(-) diff --git a/go.mod b/go.mod index c2b521f..653939e 100644 --- a/go.mod +++ b/go.mod @@ -1,9 +1,8 @@ module github.com/ipfs/go-peertaskqueue -go 1.24.0 +go 1.25 require ( - github.com/filecoin-project/go-clock v0.1.0 github.com/ipfs/go-ipfs-pq v0.0.3 github.com/libp2p/go-libp2p v0.43.0 ) diff --git a/go.sum b/go.sum index 303ce59..3ce74b0 100644 --- a/go.sum +++ b/go.sum @@ -4,8 +4,6 @@ github.com/decred/dcrd/crypto/blake256 v1.1.0 h1:zPMNGQCm0g4QTY27fOCorQW7EryeQ/U github.com/decred/dcrd/crypto/blake256 v1.1.0/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40= -github.com/filecoin-project/go-clock v0.1.0 h1:SFbYIM75M8NnFm1yMHhN9Ahy3W5bEZV9gd6MPfXbKVU= -github.com/filecoin-project/go-clock v0.1.0/go.mod h1:4uB/O4PvOjlx1VCMdZ9MyDZXRm//gkj1ELEbxfI1AZs= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/ipfs/go-cid v0.5.0 h1:goEKKhaGm0ul11IHA7I6p1GmKz8kEYniqFopaB5Otwg= diff --git a/peertracker/peertracker.go b/peertracker/peertracker.go index 0f755a4..7d0c3e7 100644 --- a/peertracker/peertracker.go +++ b/peertracker/peertracker.go @@ -4,15 +4,13 @@ import ( "math" "math/bits" "sync" + "time" - "github.com/filecoin-project/go-clock" pq "github.com/ipfs/go-ipfs-pq" "github.com/ipfs/go-peertaskqueue/peertask" "github.com/libp2p/go-libp2p/core/peer" ) -var clockInstance = clock.New() - // TaskMerger is an interface that is used to merge new tasks into the active // and pending queues type TaskMerger interface { @@ -214,7 +212,7 @@ func (p *PeerTracker) PushTasks(tasks ...peertask.Task) { // When truncation happen we will keep older tasks in the queue to avoid some infinite // tasks rotations if we are continously receiving work faster than we process it. func (p *PeerTracker) PushTasksTruncated(n uint, tasks ...peertask.Task) { - now := clockInstance.Now() + now := time.Now() p.activelk.Lock() defer p.activelk.Unlock() diff --git a/peertracker/peertracker_test.go b/peertracker/peertracker_test.go index 5e4958c..c4aa7a6 100644 --- a/peertracker/peertracker_test.go +++ b/peertracker/peertracker_test.go @@ -4,9 +4,9 @@ import ( "reflect" "sort" "testing" + "testing/synctest" "time" - "github.com/filecoin-project/go-clock" "github.com/ipfs/go-peertaskqueue/peertask" "github.com/ipfs/go-peertaskqueue/testutil" ) @@ -670,58 +670,54 @@ func TestRemoveActive(t *testing.T) { } func TestPushPopEqualTaskPriorities(t *testing.T) { - partner := testutil.GeneratePeers(1)[0] - clock := clock.NewMock() - oldClock := clockInstance - clockInstance = clock - t.Cleanup(func() { - clockInstance = oldClock + synctest.Test(t, func(t *testing.T) { + partner := testutil.GeneratePeers(1)[0] + tracker := New(partner, &DefaultTaskMerger{}, 1) + + tasks := []peertask.Task{ + { + Topic: "1", + Priority: 10, + Work: 1, + }, + { + Topic: "2", + Priority: 10, + Work: 1, + }, + { + Topic: "3", + Priority: 10, + Work: 1, + }, + } + tracker.PushTasks(tasks[0]) + time.Sleep(10 * time.Millisecond) + tracker.PushTasks(tasks[1]) + time.Sleep(10 * time.Millisecond) + tracker.PushTasks(tasks[2]) + popped, _ := tracker.PopTasks(1) + if len(popped) != 1 { + t.Fatal("Expected 1 task") + } + if popped[0].Topic != "1" { + t.Fatal("Expected first task") + } + tracker.TaskDone(popped[0]) + popped, _ = tracker.PopTasks(1) + if len(popped) != 1 { + t.Fatal("Expected 1 task") + } + if popped[0].Topic != "2" { + t.Fatal("Expected second task") + } + tracker.TaskDone(popped[0]) + popped, _ = tracker.PopTasks(1) + if len(popped) != 1 { + t.Fatal("Expected 1 task") + } + if popped[0].Topic != "3" { + t.Fatal("Expected third task") + } }) - tracker := New(partner, &DefaultTaskMerger{}, 1) - - tasks := []peertask.Task{ - { - Topic: "1", - Priority: 10, - Work: 1, - }, - { - Topic: "2", - Priority: 10, - Work: 1, - }, - { - Topic: "3", - Priority: 10, - Work: 1, - }, - } - tracker.PushTasks(tasks[0]) - clock.Add(10 * time.Millisecond) - tracker.PushTasks(tasks[1]) - clock.Add(10 * time.Millisecond) - tracker.PushTasks(tasks[2]) - popped, _ := tracker.PopTasks(1) - if len(popped) != 1 { - t.Fatal("Expected 1 task") - } - if popped[0].Topic != "1" { - t.Fatal("Expected first task") - } - tracker.TaskDone(popped[0]) - popped, _ = tracker.PopTasks(1) - if len(popped) != 1 { - t.Fatal("Expected 1 task") - } - if popped[0].Topic != "2" { - t.Fatal("Expected second task") - } - tracker.TaskDone(popped[0]) - popped, _ = tracker.PopTasks(1) - if len(popped) != 1 { - t.Fatal("Expected 1 task") - } - if popped[0].Topic != "3" { - t.Fatal("Expected third task") - } } From 7132ef4cba25ab2eb78b941131fdec778fa6a5e5 Mon Sep 17 00:00:00 2001 From: gammazero <11790789+gammazero@users.noreply.github.com> Date: Tue, 20 Jan 2026 08:30:09 -1000 Subject: [PATCH 2/3] use go1.25 or later for tests --- peertaskqueue_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/peertaskqueue_test.go b/peertaskqueue_test.go index e0f767b..575d1d5 100644 --- a/peertaskqueue_test.go +++ b/peertaskqueue_test.go @@ -1,3 +1,5 @@ +//go:build go1.25 + package peertaskqueue import ( From f6f71f2b89546a19665ac78d74f43a5330b421e6 Mon Sep 17 00:00:00 2001 From: gammazero <11790789+gammazero@users.noreply.github.com> Date: Tue, 20 Jan 2026 08:33:14 -1000 Subject: [PATCH 3/3] go1.25 for peertracker_test --- peertracker/peertracker_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/peertracker/peertracker_test.go b/peertracker/peertracker_test.go index c4aa7a6..c8db29c 100644 --- a/peertracker/peertracker_test.go +++ b/peertracker/peertracker_test.go @@ -1,3 +1,5 @@ +//go:build go1.25 + package peertracker import (