Skip to content

Commit

Permalink
ETCM-207: Use DiscoveryNetwork.Peer
Browse files Browse the repository at this point in the history
  • Loading branch information
aakoshh committed Oct 15, 2020
1 parent 947b2cb commit ffb5f84
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 17 deletions.
Expand Up @@ -42,18 +42,13 @@ trait DiscoveryService {

object DiscoveryService {
import DiscoveryRPC.{Call, Proc}
import DiscoveryNetwork.Peer

type ENRSeq = Long
type Timestamp = Long
type NodeId = PublicKey
type StateRef[A] = Ref[Task, State[A]]

type Peer[A] = (NodeId, A)
private implicit class PeerOps[A](peer: Peer[A]) {
def id: NodeId = peer._1
def address: A = peer._2
}

/** Implement the Discovery v4 protocol:
*
* https://github.com/ethereum/devp2p/blob/master/discv4.md
Expand Down Expand Up @@ -221,7 +216,7 @@ object DiscoveryService {
*/
protected[v4] def bond[A](
peer: Peer[A],
rpc: DiscoveryRPC[A],
rpc: DiscoveryRPC[Peer[A]],
bondExpiration: FiniteDuration,
// How long to wait for the remote peer to send a ping to us.
requestTimeout: FiniteDuration
Expand All @@ -237,7 +232,7 @@ object DiscoveryService {

case Right(enrSeq) =>
rpc
.ping(peer.address)(Some(enrSeq))
.ping(peer)(Some(enrSeq))
.recover {
case NonFatal(_) => None
}
Expand Down
Expand Up @@ -4,6 +4,7 @@ import cats.effect.concurrent.Ref
import io.iohk.scalanet.discovery.ethereum.{EthereumNodeRecord, Node}
import io.iohk.scalanet.discovery.ethereum.codecs.DefaultCodecs
import io.iohk.scalanet.discovery.ethereum.v4.mocks.MockSigAlg
import io.iohk.scalanet.discovery.ethereum.v4.DiscoveryNetwork.Peer
import io.iohk.scalanet.NetUtils.aRandomAddress
import java.net.InetSocketAddress
import monix.eval.Task
Expand All @@ -30,7 +31,7 @@ class DiscoveryServiceSpec extends AsyncFlatSpec with Matchers {
}

def setupState: State[InetSocketAddress] => State[InetSocketAddress] = identity
def peer: DiscoveryService.Peer[InetSocketAddress]
def peer: Peer[InetSocketAddress]
def expected: Boolean
}

Expand Down Expand Up @@ -81,11 +82,11 @@ class DiscoveryServiceSpec extends AsyncFlatSpec with Matchers {
}
it should "return false for nodes that changed their address" in test {
new IsBondedFixture {
override def peer = remotePublicKey -> aRandomAddress
override def peer = Peer(remotePublicKey, aRandomAddress)
override def expected = false
override def setupState =
_.withLastPongTimestamp(
remotePublicKey -> remoteAddress,
Peer(remotePublicKey, remoteAddress),
System.currentTimeMillis
)
}
Expand Down Expand Up @@ -373,13 +374,13 @@ object DiscoveryServiceSpec {
lazy val (localPublicKey, localPrivateKey) = randomKeyPair
lazy val localAddress = aRandomAddress()
lazy val localNode = makeNode(localPublicKey, localAddress)
lazy val localPeer = localPublicKey -> localAddress
lazy val localPeer = Peer(localPublicKey, localAddress)
lazy val localENR = EthereumNodeRecord.fromNode(localNode, localPrivateKey, seq = 1).require

lazy val remoteAddress = aRandomAddress()
lazy val (remotePublicKey, remotePrivateKey) = randomKeyPair
lazy val remoteNode = makeNode(remotePublicKey, remoteAddress)
lazy val remotePeer = remotePublicKey -> remoteAddress
lazy val remotePeer = Peer(remotePublicKey, remoteAddress)

implicit lazy val stateRef = Ref.unsafe[Task, DiscoveryService.State[InetSocketAddress]](
DiscoveryService.State[InetSocketAddress](localNode, localENR)
Expand All @@ -392,9 +393,9 @@ object DiscoveryServiceSpec {

/** Placeholder implementation that throws if any RPC method is called. */
case class StubDiscoveryRPC(
ping: DiscoveryRPC.Call[InetSocketAddress, DiscoveryRPC.Proc.Ping] = _ => ???,
findNode: DiscoveryRPC.Call[InetSocketAddress, DiscoveryRPC.Proc.FindNode] = _ => ???,
enrRequest: DiscoveryRPC.Call[InetSocketAddress, DiscoveryRPC.Proc.ENRRequest] = _ => ???
) extends DiscoveryRPC[InetSocketAddress]
ping: DiscoveryRPC.Call[Peer[InetSocketAddress], DiscoveryRPC.Proc.Ping] = _ => ???,
findNode: DiscoveryRPC.Call[Peer[InetSocketAddress], DiscoveryRPC.Proc.FindNode] = _ => ???,
enrRequest: DiscoveryRPC.Call[Peer[InetSocketAddress], DiscoveryRPC.Proc.ENRRequest] = _ => ???
) extends DiscoveryRPC[Peer[InetSocketAddress]]

}

0 comments on commit ffb5f84

Please sign in to comment.