From 8034780ca48e13cdffbe3240f0acacb3fa73cc4f Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Tue, 15 Aug 2017 17:56:19 -0700 Subject: [PATCH] autopilot: fix chanID collision test flake by instead using atomic counter This commit fixes a prior occasional test flake caused by the collision of the randomly selected 64-bit integers. In order to get around this, we now instead have a atomic monotonically increasing counter for each channel ID used within the tests. --- autopilot/graph.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/autopilot/graph.go b/autopilot/graph.go index 27dae73d..d4d04603 100644 --- a/autopilot/graph.go +++ b/autopilot/graph.go @@ -3,8 +3,8 @@ package autopilot import ( "bytes" "math/big" - prand "math/rand" "net" + "sync/atomic" "time" "github.com/boltdb/bolt" @@ -21,6 +21,8 @@ var ( } _, _ = testSig.R.SetString("63724406601629180062774974542967536251589935445068131219452686511677818569431", 10) _, _ = testSig.S.SetString("18801056069249825825291287104931333862866033135609736119018462340006816851118", 10) + + chanIdCounter uint64 = 0 ) // databaseChannelGraph wraps a channeldb.ChannelGraph instance with the @@ -297,7 +299,8 @@ func (m memChannelGraph) ForEachNode(cb func(Node) error) error { // randChanID generates a new random channel ID. func randChanID() lnwire.ShortChannelID { - return lnwire.NewShortChanIDFromInt(uint64(prand.Int63())) + id := atomic.AddUint64(&chanIdCounter, 1) + return lnwire.NewShortChanIDFromInt(id) } // randKey returns a random public key.