From 9e700a9e04f4d7d86060976947fea7733e52b9f3 Mon Sep 17 00:00:00 2001 From: Guillaume Bort Date: Thu, 9 Feb 2012 19:16:51 +0100 Subject: [PATCH] Clean rps sample --- .../{rps => comet-live-monitoring}/.gitignore | 0 samples/scala/comet-live-monitoring/README | 5 ++ .../app/assets/stylesheets/main.less | 0 .../app/controllers/Application.scala | 11 ++--- .../comet-live-monitoring/app/models/CPU.java | 42 +++++++++++++++++ .../app/views/main.scala.html | 0 .../app/views/monitor.scala.html | 1 + .../conf/application.conf | 0 .../conf/routes | 6 +-- .../project/Build.scala | 2 +- .../project/build.properties | 0 .../comet-live-monitoring/project/plugins.sbt | 8 ++++ .../public/images/background.png | Bin .../public/images/background@2x.png | Bin .../public/images/circle.png | Bin .../public/images/circle@2x.png | Bin .../public/images/favicon.png | Bin .../public/images/green-light.png | Bin .../public/images/green-light@2x.png | Bin .../public/images/icon.png | Bin .../public/images/icon@2x.png | Bin .../public/images/monitor.png | Bin .../public/images/monitor@2x.png | Bin .../public/images/needle.png | Bin .../public/images/needle@2x.png | Bin .../public/images/red-light.png | Bin .../public/images/red-light@2x.png | Bin .../public/images/wheel.png | Bin .../public/images/wheel@2x.png | Bin .../public/javascripts/main.js | 4 +- .../public/javascripts/vendor/zanimo.min.js | 0 .../public/stylesheets/retina.css | 0 samples/scala/rps/app/models/CPU.java | 43 ------------------ samples/scala/rps/app/views/index.scala.html | 5 -- samples/scala/rps/project/plugins.sbt | 6 --- samples/scala/rps/rps-screenshot.png | Bin 304216 -> 0 bytes 36 files changed, 67 insertions(+), 66 deletions(-) rename samples/scala/{rps => comet-live-monitoring}/.gitignore (100%) create mode 100644 samples/scala/comet-live-monitoring/README rename samples/scala/{rps => comet-live-monitoring}/app/assets/stylesheets/main.less (100%) rename samples/scala/{rps => comet-live-monitoring}/app/controllers/Application.scala (96%) create mode 100644 samples/scala/comet-live-monitoring/app/models/CPU.java rename samples/scala/{rps => comet-live-monitoring}/app/views/main.scala.html (100%) rename samples/scala/{rps => comet-live-monitoring}/app/views/monitor.scala.html (99%) rename samples/scala/{rps => comet-live-monitoring}/conf/application.conf (100%) rename samples/scala/{rps => comet-live-monitoring}/conf/routes (72%) rename samples/scala/{rps => comet-live-monitoring}/project/Build.scala (87%) rename samples/scala/{rps => comet-live-monitoring}/project/build.properties (100%) create mode 100644 samples/scala/comet-live-monitoring/project/plugins.sbt rename samples/scala/{rps => comet-live-monitoring}/public/images/background.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/background@2x.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/circle.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/circle@2x.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/favicon.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/green-light.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/green-light@2x.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/icon.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/icon@2x.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/monitor.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/monitor@2x.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/needle.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/needle@2x.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/red-light.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/red-light@2x.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/wheel.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/images/wheel@2x.png (100%) rename samples/scala/{rps => comet-live-monitoring}/public/javascripts/main.js (97%) rename samples/scala/{rps => comet-live-monitoring}/public/javascripts/vendor/zanimo.min.js (100%) rename samples/scala/{rps => comet-live-monitoring}/public/stylesheets/retina.css (100%) delete mode 100644 samples/scala/rps/app/models/CPU.java delete mode 100644 samples/scala/rps/app/views/index.scala.html delete mode 100644 samples/scala/rps/project/plugins.sbt delete mode 100644 samples/scala/rps/rps-screenshot.png diff --git a/samples/scala/rps/.gitignore b/samples/scala/comet-live-monitoring/.gitignore similarity index 100% rename from samples/scala/rps/.gitignore rename to samples/scala/comet-live-monitoring/.gitignore diff --git a/samples/scala/comet-live-monitoring/README b/samples/scala/comet-live-monitoring/README new file mode 100644 index 00000000000..1de48c48624 --- /dev/null +++ b/samples/scala/comet-live-monitoring/README @@ -0,0 +1,5 @@ +This app is designed to run on iPhone (but you can also load it in any modern browser). + +It display live application performance data. The simplest way to load the application is running: + +ab -k -c 100 -n 1000000 http://localhost:9000/load \ No newline at end of file diff --git a/samples/scala/rps/app/assets/stylesheets/main.less b/samples/scala/comet-live-monitoring/app/assets/stylesheets/main.less similarity index 100% rename from samples/scala/rps/app/assets/stylesheets/main.less rename to samples/scala/comet-live-monitoring/app/assets/stylesheets/main.less diff --git a/samples/scala/rps/app/controllers/Application.scala b/samples/scala/comet-live-monitoring/app/controllers/Application.scala similarity index 96% rename from samples/scala/rps/app/controllers/Application.scala rename to samples/scala/comet-live-monitoring/app/controllers/Application.scala index 329ddcd51db..b392a3fb4d0 100644 --- a/samples/scala/rps/app/controllers/Application.scala +++ b/samples/scala/comet-live-monitoring/app/controllers/Application.scala @@ -10,16 +10,16 @@ import scala.concurrent.stm._ object Application extends Controller { - def index = Action { + def load = Action { SpeedOMeter.countRequest() - Ok("from your shell ab -k -c 100 -n 1000000 http://localhost:9000/") + Ok("from your shell ab -k -c 100 -n 1000000 http://localhost:9000/load") } - def monitor = Action { + def index = Action { Ok(views.html.monitor(Runtime.getRuntime().totalMemory()/(1024*1024))) } - def speedMeter = Action { + def monitoring = Action { Ok.stream( Streams.getRequestsPerSecond >- Streams.getCPU >- @@ -29,7 +29,7 @@ object Application extends Controller { def gc = Action { Runtime.getRuntime().gc() - Ok("ok") + Ok("Done") } } @@ -73,7 +73,6 @@ object SpeedOMeter { } } - def getSpeed = { val current = java.lang.System.currentTimeMillis() val (precedent,(count,millis)) = counter.single() diff --git a/samples/scala/comet-live-monitoring/app/models/CPU.java b/samples/scala/comet-live-monitoring/app/models/CPU.java new file mode 100644 index 00000000000..9330f0ee95f --- /dev/null +++ b/samples/scala/comet-live-monitoring/app/models/CPU.java @@ -0,0 +1,42 @@ +package models; + +import com.sun.management.OperatingSystemMXBean; +import java.lang.management.*; + +public class CPU { + + private int availableProcessors = ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors(); + + private long lastSystemTime = 0; + private long lastProcessCpuTime = 0; + + public synchronized double getCpuUsage() { + if(lastSystemTime == 0) { + baselineCounters(); + return 0; + } + + long systemTime = System.nanoTime(); + long processCpuTime = 0; + + if(ManagementFactory.getOperatingSystemMXBean() instanceof OperatingSystemMXBean) { + processCpuTime = ((OperatingSystemMXBean)ManagementFactory.getOperatingSystemMXBean()).getProcessCpuTime(); + } + + double cpuUsage = (double) (processCpuTime - lastProcessCpuTime) / (systemTime - lastSystemTime); + + lastSystemTime = systemTime; + lastProcessCpuTime = processCpuTime; + + return cpuUsage / availableProcessors; + } + + private void baselineCounters() { + lastSystemTime = System.nanoTime(); + + if (ManagementFactory.getOperatingSystemMXBean() instanceof OperatingSystemMXBean) { + lastProcessCpuTime = ( (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean() ).getProcessCpuTime(); + } + } + +} \ No newline at end of file diff --git a/samples/scala/rps/app/views/main.scala.html b/samples/scala/comet-live-monitoring/app/views/main.scala.html similarity index 100% rename from samples/scala/rps/app/views/main.scala.html rename to samples/scala/comet-live-monitoring/app/views/main.scala.html diff --git a/samples/scala/rps/app/views/monitor.scala.html b/samples/scala/comet-live-monitoring/app/views/monitor.scala.html similarity index 99% rename from samples/scala/rps/app/views/monitor.scala.html rename to samples/scala/comet-live-monitoring/app/views/monitor.scala.html index 5b638736c15..a50605bfb67 100644 --- a/samples/scala/rps/app/views/monitor.scala.html +++ b/samples/scala/comet-live-monitoring/app/views/monitor.scala.html @@ -1,4 +1,5 @@ @(totalMemory: Long) + @main("RPS") {