--- /dev/null
+package net.pterodactylus.sone.web.pages
+
+import com.codahale.metrics.*
+import net.pterodactylus.sone.main.*
+import net.pterodactylus.sone.web.*
+import net.pterodactylus.sone.web.page.*
+import net.pterodactylus.util.template.*
+import javax.inject.*
+
+@MenuName("Metrics")
+@TemplatePath("/templates/metrics.html")
+@ToadletPath("metrics.html")
+class MetricsPage @Inject constructor(webInterface: WebInterface, loaders: Loaders, templateRenderer: TemplateRenderer, private val metricsRegistry: MetricRegistry) : SoneTemplatePage(webInterface, loaders, templateRenderer, "Page.Metrics.Title") {
+
+ override fun handleRequest(soneRequest: SoneRequest, templateContext: TemplateContext) {
+ metricsRegistry.histogram("sone.parsing.duration").snapshot.also { snapshot ->
+ templateContext["soneParsingDurationCount"] = snapshot.size()
+ templateContext["soneParsingDurationMin"] = snapshot.min
+ templateContext["soneParsingDurationMax"] = snapshot.max
+ templateContext["soneParsingDurationMedian"] = snapshot.median
+ templateContext["soneParsingDurationMean"] = snapshot.mean
+ templateContext["soneParsingDurationPercentile75"] = snapshot.get75thPercentile()
+ templateContext["soneParsingDurationPercentile95"] = snapshot.get95thPercentile()
+ templateContext["soneParsingDurationPercentile98"] = snapshot.get98thPercentile()
+ templateContext["soneParsingDurationPercentile99"] = snapshot.get99thPercentile()
+ templateContext["soneParsingDurationPercentile999"] = snapshot.get999thPercentile()
+ }
+ }
+
+}