FintrospectBenchmarkServer.scala 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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.renderers.simplejson.SimpleJson
  10. import org.apache.commons.lang.time.FastDateFormat.getInstance
  11. object FintrospectBenchmarkServer extends App {
  12. private val dateFormat = getInstance("EEE, dd MMM yyyy HH:mm:ss 'GMT'", getTimeZone("GMT"))
  13. val addServerAndDate = Filter.mk[Request, Response, Request, Response] { (req, svc) =>
  14. svc(req).map(resp => {
  15. resp.headerMap("Server") = "Example"
  16. resp.headerMap("Date") = dateFormat.format(System.currentTimeMillis())
  17. resp
  18. })
  19. }
  20. val database = Database()
  21. val module = ModuleSpec(Root, SimpleJson(), addServerAndDate)
  22. .withRoute(JsonRoute())
  23. .withRoute(PlainTextRoute())
  24. .withRoute(FortunesRoute(database))
  25. .withRoutes(DatabaseRoutes(database))
  26. Await.ready(
  27. Http.server
  28. .withCompressionLevel(0)
  29. .withStatsReceiver(NullStatsReceiver)
  30. .withTracer(NullTracer)
  31. .withMonitor(NullMonitor)
  32. .serve(":9000", module.toService)
  33. )
  34. }