view mock-api/endpoints/jvm-memory.endpoint.js @ 270:4023b79e4d58

Load historical jvm-memory data at controller init Reviewed-by: jkang Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2017-October/025371.html
author Andrew Azores <aazores@redhat.com>
date Wed, 11 Oct 2017 14:59:09 -0400
parents 8fea191dbff0
children b35a283eb016
line wrap: on
line source

var _ = require('lodash');

function jvmMemory (server) {
  server.init('jvmMemory');
  server.app.get('/jvm-memory/0.0.3/jvms/:jvmId', function (req, res) {
    server.logRequest('jvm-memory', req);

    var jvmId = req.params.jvmId;
    var query = req.query.query;

    var now = Date.now();
    var since = query.split('timeStamp>=')[1];
    var elapsed = now - since;
    var count = _.floor(elapsed / 1000);

    var response = [];
    for (var i = count; i >= 0; i--) {
      response.push(makeSample(jvmId, now - (i * 1000)));
    }

    res.setHeader('Content-Type', 'application/json');
    res.send(JSON.stringify({ response: response }));
  });
}

function makeSample (jvmId, timestamp) {
  return {
    agentId: 'foo-agentId',
    jvmId: jvmId,
    timeStamp: { $numberLong: timestamp.toString() },
    metaspaceMaxCapacity: { $numberLong: '0' },
    metaspaceMinCapacity: { $numberLong: '0' },
    metaspaceCapacity: { $numberLong: (4096 * 1024 * 1024).toString() },
    metaspaceUsed: { $numberLong: _.round(4096 * 1024 * 1024 * Math.random()).toString() },
    generations: [
      {
        capacity: { $numberLong: (100 * 1024 * 1024).toString() },
        collector: 'Shenandoah',
        maxCapacity: { $numberLong: (200 * 1024 * 1024).toString() },
        name: 'old',
        spaces: [
          {
            capacity: { $numberLong: (50 * 1024 * 1024).toString() },
            index: 0,
            maxCapacity: { $numberLong: (100 * 1024 * 1024).toString() },
            name: 'Gen 0 Space 0',
            used: { $numberLong: _.round(50 * 1024 * 1024 * Math.random()).toString() }
          },
          {
            capacity: { $numberLong: (50 * 1024 * 1024).toString() },
            index: 1,
            maxCapacity: { $numberLong: (100 * 1024 * 1024).toString() },
            name: 'Gen 0 Space 1',
            used: { $numberLong: _.round(50 * 1024 * 1024 * Math.random()).toString() }
          }
        ]
      },
      {
        capacity: { $numberLong: (200 * 1024 * 1024).toString() },
        collector: 'Shenandoah',
        maxCapacity: { $numberLong: (400 * 1024 * 1024).toString() },
        name: 'new',
        spaces: [
          {
            capacity: { $numberLong: (200 * 1024 * 1024).toString() },
            index: 0,
            maxCapacity: { $numberLong: (400 * 1024 * 1024).toString() },
            name: 'Gen 1 Space 0',
            used: { $numberLong: _.round(200 * 1024 * 1024 * Math.random()).toString() }
          }
        ]
      },
      {
        capacity: { $numberLong: (400 * 1024 * 1024).toString() },
        collector: 'G1',
        maxCapacity: { $numberLong: (1600 * 1024 * 1024).toString() },
        name: 'newest',
        spaces: [
          {
            capacity: { $numberLong: (50 * 1024 * 1024).toString() },
            index: 0,
            maxCapacity: { $numberLong: (400 * 1024 * 1024).toString() },
            name: 'Gen 2 Space 0',
            used: { $numberLong: _.round(50 * 1024 * 1024 * Math.random()).toString() }
          },
          {
            capacity: { $numberLong: (100 * 1024 * 1024).toString() },
            index: 1,
            maxCapacity: { $numberLong: (200 * 1024 * 1024).toString() },
            name: 'Gen 2 Space 1',
            used: { $numberLong: _.round(100 * 1024 * 1024 * Math.random()).toString() }
          },
          {
            capacity: { $numberLong: (250 * 1024 * 1024).toString() },
            index: 2,
            maxCapacity: { $numberLong: (1000 * 1024 * 1024).toString() },
            name: 'Gen 2 Space 2',
            used: { $numberLong: _.round(250 * 1024 * 1024 * Math.random()).toString() }
          }
        ]
      }
    ]
  }
}

module.exports = jvmMemory;