Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Bug 522766 - Implement timing collection for the Node server and endp…
…oints (#198)
  • Loading branch information
mrennie committed Sep 26, 2017
1 parent 5ba04be commit 83a652a
Show file tree
Hide file tree
Showing 29 changed files with 242 additions and 175 deletions.
7 changes: 5 additions & 2 deletions modules/orionode/index.js
Expand Up @@ -17,7 +17,8 @@ var express = require('express'),
api = require('./lib/api'),
checkRights = require('./lib/accessRights').checkRights,
log4js = require('log4js'),
logger = log4js.getLogger("response");
logger = log4js.getLogger("response"),
responseTime = require('response-time');

var LIBS = path.normalize(path.join(__dirname, 'lib/')),
MINIFIED_ORION_CLIENT = path.normalize(path.join(__dirname, "lib/orion.client")),
Expand Down Expand Up @@ -74,14 +75,16 @@ function startServer(options) {

options.app = app;

app.use(responseTime({digits: 2, header: "X-Total-Response-Time", suffix: true}));

Object.assign(options, {
sharedWorkspaceFileRoot: contextPath + '/sharedWorkspace/tree/file',
taskRoot: contextPath + '/task',
workspaceRoot: contextPath + '/workspace',
fileRoot: contextPath + '/file',
gitRoot: contextPath + '/gitapi'
});

function checkAuthenticated(req, res, next) {
if (!req.user) {
api.writeError(401, res, "Not authenticated");
Expand Down
4 changes: 3 additions & 1 deletion modules/orionode/lib/cf.js
Expand Up @@ -17,7 +17,8 @@ var express = require('express'),
plans = require('./cf/plans'),
routes = require('./cf/routes'),
services = require('./cf/services'),
target = require('./cf/target');
target = require('./cf/target'),
responseTime = require('response-time');

/**
* @description Class for setting up cloud foundry support
Expand All @@ -39,6 +40,7 @@ class CloudFoundry {
throw new Error('options.fileRoot is required');
}
let router = express.Router();
router.use(responseTime({digits: 2, header: "X-CFapi-Response-Time", suffix: true}))
router.use("/apps", apps.router(options));
router.use("/domains", domains.router(options));
router.use("/logz", logz.router(options));
Expand Down
4 changes: 3 additions & 1 deletion modules/orionode/lib/file.js
Expand Up @@ -20,7 +20,8 @@ var express = require('express'),
writeError = api.writeError,
fileUtil = require('./fileUtil'),
log4js = require('log4js'),
logger = log4js.getLogger("file");
logger = log4js.getLogger("file"),
responseTime = require('response-time');

module.exports = function(options) {
var fileRoot = options.fileRoot;
Expand All @@ -30,6 +31,7 @@ module.exports = function(options) {

var router = express.Router({mergeParams: true});
var jsonParser = bodyParser.json({"limit":"10mb"});
router.use(responseTime({digits: 2, header: "X-File-Response-Time", suffix: true}));
router.get('*', jsonParser, getFile);
router.put('*', putFile);
router.post('*', jsonParser, postFile);
Expand Down
14 changes: 8 additions & 6 deletions modules/orionode/lib/git.js
Expand Up @@ -9,11 +9,12 @@
* IBM Corporation - initial API and implementation
*******************************************************************************/
/*eslint-env node*/
var fileUtil = require('./fileUtil');
var express = require('express');
var api = require("./api");
var log4js = require('log4js');
var logger = log4js.getLogger("git");
var fileUtil = require('./fileUtil'),
express = require('express'),
api = require("./api"),
log4js = require('log4js'),
logger = log4js.getLogger("git"),
responseTime = require('response-time');

// Handle optional nodegit dependency
var hasNodegit = true;
Expand Down Expand Up @@ -82,7 +83,8 @@ function Git(options) {
}
req.user.checkRights(req.user.username, uri, req, res, next);
};

//TODO should we propagate timing collection into sub-sub-git handlers?
router.use(responseTime({digits: 2, header: "X-Gitapi-Response-Time", suffix: true}));
router.use("/clone", clone.router(options));
router.use("/status", status.router(options));
router.use("/commit", commit.router(options));
Expand Down
19 changes: 10 additions & 9 deletions modules/orionode/lib/git/blame.js
Expand Up @@ -9,13 +9,13 @@
* IBM Corporation - initial API and implementation
*******************************************************************************/
/*eslint-env node */
var api = require('../api'), writeError = api.writeError, writeResponse = api.writeResponse;
var path = require('path');
var git = require('nodegit');
var express = require('express');
var bodyParser = require('body-parser');
var clone = require('./clone');
var commitm = require('./commit');
var api = require('../api'),
git = require('nodegit'),
express = require('express'),
bodyParser = require('body-parser'),
clone = require('./clone'),
commitm = require('./commit'),
responseTime = require('response-time');

module.exports = {};

Expand All @@ -30,6 +30,7 @@ module.exports.router = function(options) {

return express.Router()
.use(bodyParser.json())
.use(responseTime({digits: 2, header: "X-GitapiBlame-Response-Time", suffix: true}))
.use(options.checkUserAccess)
.get('/:refName'+ fileRoot + "/*", getBlame);

Expand Down Expand Up @@ -59,10 +60,10 @@ function getBlame(req, res) {
"Location": gitRoot + "/blame/"+ req.params.refName + fileDir + fileRelativePath,
"Type" : "Blame"
};
writeResponse(200, res, null, sendingBlamejason, true);
api.writeResponse(200, res, null, sendingBlamejason, true);
});
}).catch(function(err){
writeError(403, res, err);
api.writeError(403, res, err);
});
}

Expand Down
20 changes: 12 additions & 8 deletions modules/orionode/lib/git/branches.js
Expand Up @@ -9,14 +9,17 @@
* IBM Corporation - initial API and implementation
*******************************************************************************/
/*eslint-env node */
var api = require('../api'), writeError = api.writeError, writeResponse = api.writeResponse;
var git = require('nodegit');
var async = require('async');
var mRemotes = require('./remotes');
var clone = require('./clone');
var express = require('express');
var bodyParser = require('body-parser');
var args = require('../args');
var api = require('../api'),
writeError = api.writeError,
writeResponse = api.writeResponse,
git = require('nodegit'),
async = require('async'),
mRemotes = require('./remotes'),
clone = require('./clone'),
express = require('express'),
bodyParser = require('body-parser'),
args = require('../args'),
responseTime = require('response-time');

module.exports = {};

Expand All @@ -35,6 +38,7 @@ module.exports.router = function(options) {

return express.Router()
.use(bodyParser.json())
.use(responseTime({digits: 2, header: "X-GitapiBranches-Response-Time", suffix: true}))
.use(options.checkUserAccess)
.get(fileRoot + '*', getBranches)
.get('/:branchName*', getBranches)
Expand Down
4 changes: 3 additions & 1 deletion modules/orionode/lib/git/clone.js
Expand Up @@ -23,7 +23,8 @@ var api = require('../api'), writeError = api.writeError, writeResponse = api.wr
bodyParser = require('body-parser'),
rmdir = require('rimraf'),
prefs = require('../prefs'),
credentialsProvider = require('./credentials');
credentialsProvider = require('./credentials'),
responseTime = require('response-time');

module.exports = {};

Expand Down Expand Up @@ -66,6 +67,7 @@ module.exports.router = function(options) {

return express.Router()
.use(bodyParser.json())
.use(responseTime({digits: 2, header: "X-GitapiClone-Response-Time", suffix: true}))
.use(checkUserAccess) // Use specified checkUserAceess implementation instead of the common one from options
.get(workspaceRoot + '*', getClone)
.get(fileRoot + '*', getClone)
Expand Down
30 changes: 16 additions & 14 deletions modules/orionode/lib/git/commit.js
Expand Up @@ -9,20 +9,21 @@
* IBM Corporation - initial API and implementation
*******************************************************************************/
/*eslint-env node */
var api = require('../api'), writeError = api.writeError, writeResponse = api.writeResponse;
var path = require('path');
var diff = require("./diff");
var mTags = require("./tags");
var clone = require("./clone");
var git = require('nodegit');
var url = require('url');
var crypto = require('crypto');
var async = require('async');
var express = require('express');
var bodyParser = require('body-parser');
var remotes = require('./remotes');
var branches = require('./branches');
var tasks = require('../tasks');
var api = require('../api'), writeError = api.writeError, writeResponse = api.writeResponse,
path = require('path'),
diff = require("./diff"),
mTags = require("./tags"),
clone = require("./clone"),
git = require('nodegit'),
url = require('url'),
crypto = require('crypto'),
async = require('async'),
express = require('express'),
bodyParser = require('body-parser'),
remotes = require('./remotes'),
branches = require('./branches'),
tasks = require('../tasks'),
responseTime = require('response-time');

module.exports = {};

Expand All @@ -41,6 +42,7 @@ module.exports.router = function(options) {

return express.Router()
.use(bodyParser.json())
.use(responseTime({digits: 2, header: "X-GitapiCommit-Response-Time", suffix: true}))
.use(options.checkUserAccess)
.get('/:scope'+ fileRoot + '*', getCommit)
.put('/:commit'+ fileRoot + '*', putCommit)
Expand Down
18 changes: 10 additions & 8 deletions modules/orionode/lib/git/config.js
Expand Up @@ -10,14 +10,15 @@
*******************************************************************************/
/*eslint-env node */
/*globals configs:true val:true*/
var api = require('../api'), writeError = api.writeError, writeResponse = api.writeResponse;
var args = require('../args');
var clone = require('./clone');
var express = require('express');
var bodyParser = require('body-parser');
var git = require('nodegit');
var log4js = require('log4js');
var logger = log4js.getLogger("git");
var api = require('../api'), writeError = api.writeError, writeResponse = api.writeResponse,
args = require('../args'),
clone = require('./clone'),
express = require('express'),
bodyParser = require('body-parser'),
git = require('nodegit'),
log4js = require('log4js'),
logger = log4js.getLogger("git"),
responseTime = require('response-time');

module.exports = {};

Expand Down Expand Up @@ -45,6 +46,7 @@ module.exports.router = function(options) {

return express.Router()
.use(bodyParser.json())
.use(responseTime({digits: 2, header: "X-GitapiConfig-Response-Time", suffix: true}))
.use(checkUserAccess) // Use specified checkUserAceess implementation instead of the common one from options
.get('/clone'+ fileRoot + '*', getConfig)
.get('/:key/clone'+ fileRoot + '*', getAConfig)
Expand Down
28 changes: 15 additions & 13 deletions modules/orionode/lib/git/diff.js
Expand Up @@ -9,19 +9,20 @@
* IBM Corporation - initial API and implementation
*******************************************************************************/
/*eslint-env node */
var git = require('nodegit');
var url = require('url');
var api = require('../api'), writeError = api.writeError, writeResponse = api.writeResponse;
var clone = require('./clone');
var fs = require('fs');
var path = require('path');
var mkdirp = require('mkdirp');
var mDiff = require('diff');
var request = require('request');
var multiparty = require('multiparty');
var express = require('express');
var bodyParser = require('body-parser');
var async = require('async');
var git = require('nodegit'),
url = require('url'),
api = require('../api'), writeError = api.writeError, writeResponse = api.writeResponse,
clone = require('./clone'),
fs = require('fs'),
path = require('path'),
mkdirp = require('mkdirp'),
mDiff = require('diff'),
request = require('request'),
multiparty = require('multiparty'),
express = require('express'),
bodyParser = require('body-parser'),
async = require('async'),
responseTime = require('response-time');

module.exports = {};

Expand All @@ -38,6 +39,7 @@ module.exports.router = function(options) {

return express.Router()
.use(bodyParser.json())
.use(responseTime({digits: 2, header: "X-GitapiDiff-Response-Time", suffix: true}))
.use(options.checkUserAccess)
.get(fileRoot + '*', getDiff)
.get('/:scope'+ fileRoot + '*', getDiff)
Expand Down
16 changes: 9 additions & 7 deletions modules/orionode/lib/git/index.js
Expand Up @@ -9,13 +9,14 @@
* IBM Corporation - initial API and implementation
*******************************************************************************/
/*eslint-env node */
var api = require('../api'), writeError = api.writeError, writeResponse = api.writeResponse;
var git = require('nodegit');
var clone = require('./clone');
var path = require('path');
var fs = require('fs');
var express = require('express');
var bodyParser = require('body-parser');
var api = require('../api'), writeError = api.writeError, writeResponse = api.writeResponse,
git = require('nodegit'),
clone = require('./clone'),
path = require('path'),
fs = require('fs'),
express = require('express'),
bodyParser = require('body-parser'),
responseTime = require('response-time');

module.exports = {};

Expand All @@ -28,6 +29,7 @@ module.exports.router = function(options) {

return express.Router()
.use(bodyParser.json())
.use(responseTime({digits: 2, header: "X-GitapiIndex-Response-Time", suffix: true}))
.use(options.checkUserAccess)
.get(fileRoot + '*', getIndex)
.put(fileRoot + '*', putIndex)
Expand Down
16 changes: 9 additions & 7 deletions modules/orionode/lib/git/pullrequest.js
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2012, 2016, 2017 IBM Corporation and others.
* Copyright (c) 2012, 2017 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials are made
* available under the terms of the Eclipse Public License v1.0
* (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
Expand All @@ -9,12 +9,13 @@
* IBM Corporation - initial API and implementation
*******************************************************************************/
/*eslint-env node */
var clone = require('./clone');
var express = require('express');
var request = require('request');
var bodyParser = require('body-parser');
var url = require("url");
var tasks = require('../tasks');
var clone = require('./clone'),
express = require('express'),
request = require('request'),
bodyParser = require('body-parser'),
url = require("url"),
tasks = require('../tasks'),
responseTime = require('response-time');

module.exports = {};

Expand All @@ -29,6 +30,7 @@ module.exports.router = function(options) {

return express.Router()
.use(bodyParser.json())
.use(responseTime({digits: 2, header: "X-GitapiPullrequest-Response-Time", suffix: true}))
.use(options.checkUserAccess)
.post(fileRoot + '*', getPullRequest);

Expand Down
5 changes: 2 additions & 3 deletions modules/orionode/lib/git/remotes.js
Expand Up @@ -13,14 +13,12 @@ var api = require('../api'), writeError = api.writeError, writeResponse = api.wr
args = require('../args'),
async = require('async'),
git = require('nodegit'),
url = require('url'),
tasks = require('../tasks'),
clone = require('./clone'),
mConfig = require('./config'),
express = require('express'),
bodyParser = require('body-parser'),
log4js = require('log4js'),
logger = log4js.getLogger("git");
responseTime = require('response-time');

module.exports = {};

Expand Down Expand Up @@ -51,6 +49,7 @@ module.exports.router = function(options) {

return express.Router()
.use(bodyParser.json())
.use(responseTime({digits: 2, header: "X-GitapiRemotes-Response-Time", suffix: true}))
.use(checkUserAccess) // Use specified checkUserAceess implementation instead of the common one from options
.get(fileRoot + '*', getRemotes)
.get('/:remoteName'+ fileRoot + '*', getRemotes)
Expand Down

0 comments on commit 83a652a

Please sign in to comment.