Skip to content
This repository has been archived by the owner on Apr 13, 2022. It is now read-only.

Commit

Permalink
last-seen test improved
Browse files Browse the repository at this point in the history
  • Loading branch information
kushti committed Oct 15, 2020
1 parent a05971e commit b9ab7ae
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 6 deletions.
6 changes: 4 additions & 2 deletions src/main/scala/scorex/core/api/http/PeersApiRoute.scala
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,13 @@ case class PeersApiRoute(peerManager: ActorRef,

/**
* Get status of P2P layer
*
* @return time of last incoming message and network time (got from NTP server)
*/
def peersStatus: Route = (path("status") & get) {
def peersStatus: Route = (path("status") & get) {
val result = askActor[PeersStatus](networkController, GetPeersStatus).map {
case PeersStatus(lastIncomingMessage,currentNetworkTime) => PeersStatusResponse(lastIncomingMessage,currentNetworkTime)
case PeersStatus(lastIncomingMessage, currentNetworkTime) =>
PeersStatusResponse(lastIncomingMessage, currentNetworkTime)
}
ApiResponse(result)
}
Expand Down
4 changes: 4 additions & 0 deletions src/main/scala/scorex/core/network/peer/PeerDatabase.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ trait PeerDatabase {

def isEmpty: Boolean

/**
* Add peer to the database, or update it
* @param peerInfo - peer record
*/
def addOrUpdateKnownPeer(peerInfo: PeerInfo): Unit

def knownPeers: Map[InetSocketAddress, PeerInfo]
Expand Down
13 changes: 9 additions & 4 deletions src/test/scala/scorex/network/NetworkControllerSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,12 @@ import org.scalatest.EitherValues._
import org.scalatest.Matchers
import org.scalatest.OptionValues._
import org.scalatest.TryValues._
import scorex.core.api.http.PeersApiRoute.PeersStatusResponse
import scorex.core.app.{ScorexContext, Version}
import scorex.core.network.NetworkController.ReceivableMessages.GetConnectedPeers
import scorex.core.network.NetworkController.ReceivableMessages.{GetConnectedPeers, GetPeersStatus}
import scorex.core.network._
import scorex.core.network.message.{PeersSpec, _}
import scorex.core.network.peer.{LocalAddressPeerFeature, LocalAddressPeerFeatureSerializer, PeerInfo, PeerManagerRef}
import scorex.core.network.peer.{LocalAddressPeerFeature, LocalAddressPeerFeatureSerializer, PeerInfo, PeerManagerRef, PeersStatus}
import scorex.core.settings.ScorexSettings
import scorex.core.utils.LocalTimeProvider

Expand Down Expand Up @@ -292,13 +293,17 @@ class NetworkControllerSpec extends NetworkTests {
val ls0 = data0(0).lastSeen

Thread.sleep(1000)
testPeer.sendGetPeers()
testPeer.sendGetPeers() // send a message to see node's status update then

p.send(networkControllerRef, GetConnectedPeers)
val data = p.expectMsgClass(classOf[Seq[PeerInfo]])
val ls = data(0).lastSeen

ls should not be ls0

p.send(networkControllerRef, GetPeersStatus)
val status = p.expectMsgClass(classOf[PeersStatusResponse])
status.lastIncomingMessage shouldBe ls

system.terminate()
}

Expand Down

0 comments on commit b9ab7ae

Please sign in to comment.