FintrospectBenchmarkServer.scala 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import java.util.TimeZone.getTimeZone
  2. import com.twitter.finagle.http.path.Root
  3. import com.twitter.finagle.http.{Request, Response}
  4. import com.twitter.finagle.stats.NullStatsReceiver
  5. import com.twitter.finagle.tracing.NullTracer
  6. import com.twitter.finagle.{Filter, Http}
  7. import com.twitter.util.{Await, NullMonitor}
  8. import io.fintrospect.ModuleSpec
  9. import io.fintrospect.configuration.Host
  10. import io.fintrospect.renderers.simplejson.SimpleJson
  11. import org.apache.commons.lang.time.FastDateFormat.getInstance
  12. import scala.util.Properties
  13. object FintrospectBenchmarkServer extends App {
  14. val dateFormat = getInstance("EEE, d MMM yyyy HH:mm:ss 'GMT'", getTimeZone("GMT"))
  15. val addServerAndDate = Filter.mk[Request, Response, Request, Response] { (req, svc) =>
  16. svc(req).map(resp => {
  17. resp.headerMap("Server") = "Example"
  18. resp.headerMap("Date") = dateFormat.format(System.currentTimeMillis())
  19. resp
  20. })
  21. }
  22. val dbHost = Properties.envOrNone("DBHOST").map(Host(_)).getOrElse(Host.localhost)
  23. val database = Database(dbHost)
  24. val module = ModuleSpec(Root, SimpleJson())
  25. .withRoute(JsonRoute())
  26. .withRoute(PlainTextRoute())
  27. .withRoute(FortunesRoute(database))
  28. .withRoutes(DatabaseRoutes(database))
  29. Await.ready(
  30. Http.server
  31. .withCompressionLevel(0)
  32. .withStatsReceiver(NullStatsReceiver)
  33. .withTracer(NullTracer)
  34. .withMonitor(NullMonitor)
  35. .serve(":9000", addServerAndDate.andThen(module.toService))
  36. )
  37. }