view mock-api/endpoints/jvm-byteman.endpoint.js @ 225:fc747d2c2f6a

Add Byteman metrics view Reviewed-by: jkang Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2017-September/025171.html
author Andrew Azores <aazores@redhat.com>
date Mon, 25 Sep 2017 10:31:21 -0400
parents 0e10eacbeeb7
children 84d4e3e9d77a
line wrap: on
line source

function jvmByteman (server) {
  // web-gateway
  var _ = require('lodash');
  server.init('jvmByteman');
  server.app.get('/jvm-byteman/0.0.1/status/jvms/:jvmId', function (req, res) {
    server.logRequest('jvm-byteman', req);

    var jvmId = req.params.jvmId;

    var response = [];
    var data = {
      agentId: 'foo-agentId',
      jvmId: jvmId,
      timeStamp: { $numberLong: Date.now().toString() },
      rule: '',
      listenPort: 9999
    };
    response.push(data);

    res.setHeader('Content-Type', 'application/json');
    res.send(JSON.stringify(
      {
        response: response
      }
    ));
  });
  server.app.get('/jvm-byteman/0.0.1/metrics/jvms/:jvmId', function (req, res) {
    server.logRequest('jvm-byteman', req);

    var jvmId = req.params.jvmId;

    var response = [];
    response.push({
      agentId: 'foo-agentId',
      jvmId: jvmId,
      timeStamp: { $numberLong: Date.now().toString() },
      marker: 'foo-marker',
      payload: '{"action":"ExampleClass.method() called"}'
    });
    response.push({
      agentId: 'foo-agentId',
      jvmId: jvmId,
      timeStamp: { $numberLong: Date.now().toString() },
      marker: 'rand-marker',
      payload: { doubleKey: Math.random() }
    });

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

  // command channel
  server.init('byteman-command');
  server.app.ws('/commands/v1/actions/byteman/systems/:systemId/agents/:agentId/jvms/:jvmId/sequence/:seqId', function (ws, req) {
    server.logRequest('byteman-command', req);
    ws.on('message', function (msg) {
      ws.send(JSON.stringify(
        {
          payload: {
            respType: 'OK'
          }
        }
      ));
    });
  });
}

module.exports = jvmByteman;