@@ -94,8 +94,9 @@ class PendingChannelsRateLimiterSpec extends ScalaTestWithActorTestKit(ConfigFac
9494 case p => router.expectMessageType[GetNode ].replyTo ! UnknownNode (p._1)
9595 }
9696 router.expectNoMessage(10 millis)
97+ val requests = TestProbe [Int ]()
9798
98- withFixture(test.toNoArgTest(FixtureParam (router, nodeParams, probe, limiter, Seq (peerAtLimit1, peerAtLimit2), Seq (peerBelowLimit1, peerBelowLimit2), Seq (peerOnWhitelist, peerOnWhitelistAtLimit), Seq (privatePeer1, privatePeer2))))
99+ withFixture(test.toNoArgTest(FixtureParam (router, nodeParams, probe, limiter, Seq (peerAtLimit1, peerAtLimit2), Seq (peerBelowLimit1, peerBelowLimit2), Seq (peerOnWhitelist, peerOnWhitelistAtLimit), Seq (privatePeer1, privatePeer2), requests )))
99100 }
100101
101102 def announcement (nodeId : PublicKey ): NodeAnnouncement = NodeAnnouncement (randomBytes64(), Features .empty, 1 unixsec, nodeId, Color (100 .toByte, 200 .toByte, 300 .toByte), " node-alias" , NodeAddress .fromParts(" 1.2.3.4" , 42000 ).get :: Nil )
@@ -105,7 +106,7 @@ class PendingChannelsRateLimiterSpec extends ScalaTestWithActorTestKit(ConfigFac
105106 commitments.copy(params = commitments.params.copy(channelId = channelId))
106107 }
107108
108- case class FixtureParam (router : TestProbe [Router .GetNode ], nodeParams : NodeParams , probe : TestProbe [PendingChannelsRateLimiter .Response ], limiter : ActorRef [PendingChannelsRateLimiter .Command ], peersAtLimit : Seq [PublicKey ], peersBelowLimit : Seq [PublicKey ], peersOnWhitelist : Seq [PublicKey ], privatePeers : Seq [PublicKey ])
109+ case class FixtureParam (router : TestProbe [Router .GetNode ], nodeParams : NodeParams , probe : TestProbe [PendingChannelsRateLimiter .Response ], limiter : ActorRef [PendingChannelsRateLimiter .Command ], peersAtLimit : Seq [PublicKey ], peersBelowLimit : Seq [PublicKey ], peersOnWhitelist : Seq [PublicKey ], privatePeers : Seq [PublicKey ], requests : TestProbe [ Int ] )
109110
110111 test(" always accept requests from nodes on white list" ) { f =>
111112 import f ._
@@ -175,9 +176,15 @@ class PendingChannelsRateLimiterSpec extends ScalaTestWithActorTestKit(ConfigFac
175176 }
176177
177178 // stop tracking channels that are confirmed/closed/aborted for a public peer
179+ limiter ! PendingChannelsRateLimiter .CountOpenChannelRequests (requests.ref, publicPeers = true )
180+ requests.expectMessage(10 )
178181 system.eventStream ! Publish (ChannelOpened (null , peersAtLimit.head, channelIdAtLimit1))
179182 system.eventStream ! Publish (ChannelClosed (null , newChannelId1, null , commitments(peersBelowLimit.head, newChannelId1)))
180183 system.eventStream ! Publish (ChannelAborted (null , peersBelowLimit.last, newChannelId2))
184+ eventually {
185+ limiter ! PendingChannelsRateLimiter .CountOpenChannelRequests (requests.ref, publicPeers = true )
186+ requests.expectMessage(7 )
187+ }
181188
182189 // new channel requests for peers below limit are accepted after matching confirmed/closed/aborted
183190 (peersBelowLimit :+ peersAtLimit.head).foreach { peer =>
@@ -236,8 +243,14 @@ class PendingChannelsRateLimiterSpec extends ScalaTestWithActorTestKit(ConfigFac
236243 probe.expectMessage(PendingChannelsRateLimiter .ChannelRateLimited )
237244
238245 // stop tracking channels that are confirmed/closed/aborted for a private peer
246+ limiter ! PendingChannelsRateLimiter .CountOpenChannelRequests (requests.ref, publicPeers = false )
247+ requests.expectMessage(2 )
239248 system.eventStream ! Publish (ChannelOpened (null , privatePeers.head, newChannelIdPrivate1))
240249 system.eventStream ! Publish (ChannelClosed (null , channelIdPrivate2, null , commitments(privatePeers.last, channelIdPrivate2)))
250+ eventually {
251+ limiter ! PendingChannelsRateLimiter .CountOpenChannelRequests (requests.ref, publicPeers = false )
252+ requests.expectMessage(0 )
253+ }
241254
242255 // new channel requests for peers below limit are accepted after matching confirmed/closed/aborted
243256 limiter ! PendingChannelsRateLimiter .AddOrRejectChannel (probe.ref, privatePeers.head, channelIdPrivate1)
@@ -251,6 +264,10 @@ class PendingChannelsRateLimiterSpec extends ScalaTestWithActorTestKit(ConfigFac
251264
252265 // abort the reused channel id for one private node; private channels now under the limit by one
253266 system.eventStream ! Publish (ChannelAborted (null , privatePeers.head, channelIdPrivate1))
267+ eventually {
268+ limiter ! PendingChannelsRateLimiter .CountOpenChannelRequests (requests.ref, publicPeers = false )
269+ requests.expectMessage(1 )
270+ }
254271
255272 // new channels requests for untracked public peers do not increase the limit for private peers
256273 limiter ! PendingChannelsRateLimiter .AddOrRejectChannel (probe.ref, randomKey().publicKey, channelIdPrivate1)
0 commit comments