Skip to content

Commit

Permalink
scalafmt
Browse files Browse the repository at this point in the history
  • Loading branch information
Roiocam committed Aug 21, 2024
1 parent 24977a8 commit d765993
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,13 @@ package org.apache.pekko.discovery.eureka

object EurekaResponse {
case class Application(name: String, instance: Seq[Instance])
case class Instance(hostName: String, app: String, vipAddress: String, secureVipAddress: String, ipAddr: String, status: String, port: PortWrapper, securePort: PortWrapper, healthCheckUrl: String, statusPageUrl: String, homePageUrl: String, appGroupName: String, dataCenterInfo: DataCenterInfo, lastDirtyTimestamp: String)
case class Instance(hostName: String, app: String, vipAddress: String, secureVipAddress: String, ipAddr: String,
status: String, port: PortWrapper, securePort: PortWrapper, healthCheckUrl: String, statusPageUrl: String,
homePageUrl: String, appGroupName: String, dataCenterInfo: DataCenterInfo, lastDirtyTimestamp: String)
case class Status()
case class PortWrapper(port: Int, enabled: Boolean)
case class DataCenterInfo(name: String = "MyOwn", clz : String = "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo")
case class DataCenterInfo(name: String = "MyOwn",
clz: String = "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo")
}

import EurekaResponse._
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@
package org.apache.pekko.discovery.eureka

import org.apache.pekko.actor.ActorSystem
import org.apache.pekko.discovery.ServiceDiscovery.{Resolved, ResolvedTarget}
import org.apache.pekko.discovery.eureka.EurekaServiceDiscovery.{pick, targets}
import org.apache.pekko.discovery.ServiceDiscovery.{ Resolved, ResolvedTarget }
import org.apache.pekko.discovery.eureka.EurekaServiceDiscovery.{ pick, targets }
import org.apache.pekko.discovery.eureka.JsonFormat._
import org.apache.pekko.discovery.{Lookup, ServiceDiscovery}
import org.apache.pekko.event.{LogSource, Logging}
import org.apache.pekko.discovery.{ Lookup, ServiceDiscovery }
import org.apache.pekko.event.{ LogSource, Logging }
import org.apache.pekko.http.scaladsl.Http
import org.apache.pekko.http.scaladsl.model.headers._
import org.apache.pekko.http.scaladsl.model.{HttpRequest, MediaRange, MediaTypes, Uri}
import org.apache.pekko.http.scaladsl.model.{ HttpRequest, MediaRange, MediaTypes, Uri }
import org.apache.pekko.http.scaladsl.unmarshalling.Unmarshal

import java.net.InetAddress
Expand All @@ -36,10 +36,11 @@ import scala.concurrent.duration.FiniteDuration
import scala.util.Try

object EurekaServiceDiscovery {
private[eureka] def pick(instances: Seq[EurekaResponse.Instance], group: String): Future[Seq[EurekaResponse.Instance]] = {
Future.successful(instances.collect({
private[eureka] def pick(
instances: Seq[EurekaResponse.Instance], group: String): Future[Seq[EurekaResponse.Instance]] = {
Future.successful(instances.collect {
case instance if instance.status == "UP" && instance.appGroupName == group => instance
}))
})
}

private[eureka] def targets(instances: Seq[EurekaResponse.Instance]): Seq[ResolvedTarget] = {
Expand All @@ -58,14 +59,16 @@ class EurekaServiceDiscovery(implicit system: ActorSystem) extends ServiceDiscov

private val log = Logging(system, getClass)(LogSource.fromClass)
private val settings = EurekaSettings(system)
private val (schema, host, port, path, group) = (settings.schema, settings.host, settings.port, settings.path, settings.groupName)
private val (schema, host, port, path, group) =
(settings.schema, settings.host, settings.port, settings.path, settings.groupName)
private val http = Http()

override def lookup(lookup: Lookup, resolveTimeout: FiniteDuration): Future[ServiceDiscovery.Resolved] = {

val uriPath = Uri.Path.Empty / path / "apps" / lookup.serviceName
val uri = Uri.from(scheme = schema, host = host, port = port).withPath(uriPath)
val request = HttpRequest(uri = uri, headers = Seq(`Accept-Encoding`(HttpEncodings.gzip), Accept(MediaRange(MediaTypes.`application/json`))))
val request = HttpRequest(uri = uri,
headers = Seq(`Accept-Encoding`(HttpEncodings.gzip), Accept(MediaRange(MediaTypes.`application/json`))))

log.info("Requesting seed nodes by: {}", request.uri)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import pekko.annotation.ApiMayChange
final class EurekaSettings(system: ExtendedActorSystem) extends Extension {
private val eurekaConfig = system.settings.config.getConfig("pekko.discovery.eureka")

val schema: String = eurekaConfig.getString("eureka-schema")
val schema: String = eurekaConfig.getString("eureka-schema")
val host: String = eurekaConfig.getString("eureka-host")
val port: Int = eurekaConfig.getInt("eureka-port")
val path: String = eurekaConfig.getString("eureka-path")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

package org.apache.pekko.discovery.eureka

import org.apache.pekko.discovery.eureka.EurekaResponse.{Application, DataCenterInfo, Instance, PortWrapper}
import org.apache.pekko.discovery.eureka.EurekaResponse.{ Application, DataCenterInfo, Instance, PortWrapper }
import org.apache.pekko.http.scaladsl.marshallers.sprayjson.SprayJsonSupport
import spray.json._

Expand All @@ -23,7 +23,7 @@ object JsonFormat extends SprayJsonSupport with DefaultJsonProtocol {
override def read(json: JsValue): PortWrapper = {
json.asJsObject.getFields("$", "@enabled") match {
case Seq(JsNumber(port), JsString(enabled)) => PortWrapper(port.toInt, enabled.toBoolean)
case _ => throw DeserializationException("PortWrapper expected")
case _ => throw DeserializationException("PortWrapper expected")
}
}

Expand All @@ -34,9 +34,9 @@ object JsonFormat extends SprayJsonSupport with DefaultJsonProtocol {
implicit val dataCenterInfoFormat: JsonFormat[DataCenterInfo] = new JsonFormat[DataCenterInfo] {

override def read(json: JsValue): DataCenterInfo = {
json.asJsObject.getFields("name","@class") match {
json.asJsObject.getFields("name", "@class") match {
case Seq(JsString(name), JsString(clz)) => DataCenterInfo(name, clz)
case _ => throw DeserializationException("DataCenterInfo expected")
case _ => throw DeserializationException("DataCenterInfo expected")
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,23 @@ package org.apache.pekko.discovery.eureka

import org.apache.pekko.actor.ActorSystem
import org.apache.pekko.discovery.ServiceDiscovery.ResolvedTarget
import org.apache.pekko.discovery.eureka.{EurekaServiceDiscovery, JsonFormat}
import org.apache.pekko.discovery.eureka.{ EurekaServiceDiscovery, JsonFormat }
import org.apache.pekko.testkit.TestKitBase
import org.scalatest.BeforeAndAfterAll
import org.scalatest.concurrent.ScalaFutures
import org.scalatest.matchers.should.Matchers
import org.scalatest.time.{Millis, Seconds, Span}
import org.scalatest.time.{ Millis, Seconds, Span }
import org.scalatest.wordspec.AnyWordSpecLike
import spray.json._

import java.net.InetAddress
import scala.concurrent.{ExecutionContext, Future}
import scala.concurrent.{ ExecutionContext, Future }
import scala.concurrent.duration.DurationInt
import scala.io.Source
import scala.util.Try

class EurekaServiceDiscoverySpec
extends AnyWordSpecLike
extends AnyWordSpecLike
with Matchers
with BeforeAndAfterAll
with TestKitBase
Expand Down Expand Up @@ -76,15 +76,15 @@ class EurekaServiceDiscoverySpec
ResolvedTarget(
host = "192.168.1.1",
port = Some(8558),
address = Try(InetAddress.getByName("192.168.1.1")).toOption),
address = Try(InetAddress.getByName("192.168.1.1")).toOption)
)

val result = for {
picked <- EurekaServiceDiscovery.pick(instances, "DEFAULT_GROUP")
resolved <- Future.successful(EurekaServiceDiscovery.targets(picked))
} yield resolved

result.futureValue should contain (
result.futureValue should contain(
ResolvedTarget(
host = "127.0.0.1",
port = Some(8558),
Expand Down

0 comments on commit d765993

Please sign in to comment.