Skip to content
This repository has been archived by the owner on Apr 3, 2024. It is now read-only.

Commit

Permalink
Removed dependency on @google/cloud-diagnostics-common (#215)
Browse files Browse the repository at this point in the history
PR-URL: #215
  • Loading branch information
kjin authored Jan 13, 2017
1 parent 90be573 commit d2d1d21
Show file tree
Hide file tree
Showing 14 changed files with 161 additions and 65 deletions.
3 changes: 1 addition & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@
"proxyquire": "^1.4.0"
},
"dependencies": {
"@google-cloud/common": "^0.9.0",
"@google/cloud-diagnostics-common": "0.3.0",
"@google-cloud/common": "^0.11.0",
"acorn": "^4.0.3",
"async": "^2.1.2",
"coffee-script": "^1.9.3",
Expand Down
56 changes: 48 additions & 8 deletions src/agent/debuglet.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,13 @@ var util = require('util');
var semver = require('semver');
var _ = require('lodash');
var metadata = require('gcp-metadata');
var common = require('@google-cloud/common');

var v8debugapi = require('./v8debugapi.js');
var Debuggee = require('../debuggee.js');
var DebugletApi = require('../controller.js');
var defaultConfig = require('./config.js');
var scanner = require('./scanner.js');
var common = require('@google/cloud-diagnostics-common');
var Logger = common.logger;
var StatusMessage = require('../status-message.js');
var SourceMapper = require('./sourcemapper.js');
var pjson = require('../../package.json');
Expand All @@ -44,6 +43,43 @@ var NODE_VERSION_MESSAGE = 'Node.js version not supported. Node.js 5.2.0 and ' +
var BREAKPOINT_ACTION_MESSAGE = 'The only currently supported breakpoint actions' +
' are CAPTURE and LOG.';

/**
* Formats a breakpoint object prefixed with a provided message as a string
* intended for logging.
* @param {string} msg The message that prefixes the formatted breakpoint.
* @param {Breakpoint} breakpoint The breakpoint to format.
* @return {string} A formatted string.
*/
var formatBreakpoint = function(msg, breakpoint) {
var text = msg + util.format('breakpoint id: %s,\n\tlocation: %s',
breakpoint.id, util.inspect(breakpoint.location));
if (breakpoint.createdTime) {
var unixTime = parseInt(breakpoint.createdTime.seconds, 10);
var date = new Date(unixTime * 1000); // to milliseconds.
text += '\n\tcreatedTime: ' + date.toString();
}
if (breakpoint.condition) {
text += '\n\tcondition: ' + util.inspect(breakpoint.condition);
}
if (breakpoint.expressions) {
text += '\n\texpressions: ' + util.inspect(breakpoint.expressions);
}
return text;
};

/**
* Formats a map of breakpoint objects prefixed with a provided message as a
* string intended for logging.
* @param {string} msg The message that prefixes the formatted breakpoint.
* @param {Object.<string, Breakpoint>} breakpoints A map of breakpoints.
* @return {string} A formatted string.
*/
var formatBreakpoints = function(msg, breakpoints) {
return msg + Object.keys(breakpoints).map(function (b) {
formatBreakpoint('', b);
}).join('\n');
};

module.exports = Debuglet;

/**
Expand Down Expand Up @@ -80,8 +116,11 @@ function Debuglet(debug, config) {
/** @private {boolean} */
this.fetcherActive_ = false;

/** @private {Logger} */
this.logger_ = Logger.create(this.config_.logLevel, '@google-cloud/debug');
/** @private {common.logger} */
this.logger_ = new common.logger({
level: common.logger.LEVELS[this.config_.logLevel],
tag: '@google-cloud/debug'
});

/** @private {DebugletApi} */
this.debugletApi_ = new DebugletApi(this.debug_);
Expand Down Expand Up @@ -274,7 +313,7 @@ Debuglet.prototype.getProjectId_ = function(callback) {
// to access the metadata service as a test for that.
// TODO: change this to getProjectId in the future.
metadata.project(
'numeric-project-id', function(err, response, metadataProject) {
'project-id', function(err, response, metadataProject) {
// We should get an error if we are not on GCP.
var onGCP = !err;

Expand Down Expand Up @@ -407,8 +446,8 @@ Debuglet.prototype.scheduleBreakpointFetch_ = function(seconds) {
});
that.updateActiveBreakpoints_(bps);
if (Object.keys(that.activeBreakpointMap_).length) {
that.logger_.breakpoints(Logger.INFO, 'Active Breakpoints:',
that.activeBreakpointMap_);
that.logger_.info(formatBreakpoint('Active Breakpoints: ',
that.activeBreakpointMap_));
}
that.scheduleBreakpointFetch_(that.config_.breakpointUpdateIntervalSec);
return;
Expand All @@ -427,7 +466,8 @@ Debuglet.prototype.updateActiveBreakpoints_ = function(breakpoints) {
var updatedBreakpointMap = this.convertBreakpointListToMap_(breakpoints);

if (breakpoints.length) {
that.logger_.breakpoints(Logger.INFO, 'Server breakpoints:', updatedBreakpointMap);
that.logger_.info(formatBreakpoints('Server breakpoints: ',
updatedBreakpointMap));
}

breakpoints.forEach(function(breakpoint) {
Expand Down
15 changes: 13 additions & 2 deletions src/agent/v8debugapi.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
/** @const */ var semver = require('semver');

/** @const */ var state = require('./state.js');
/** @const */ var logModule = require('@google/cloud-diagnostics-common').logger;
/** @const */ var StatusMessage = require('../status-message.js');

/** @const */ var messages = {
Expand All @@ -46,6 +45,18 @@
/** @const */ var MODULE_WRAP_PREFIX_LENGTH = require('module').wrap('☃')
.indexOf('☃');

/**
* Formats a provided message and a high-resolution interval of the format
* [seconds, nanoseconds] (for example, from process.hrtime()) prefixed with a
* provided message as a string intended for logging.
* @param {string} msg The mesage that prefixes the formatted interval.
* @param {number[]} interval The interval to format.
* @return {string} A formatted string.
*/
var formatInterval = function(msg, interval) {
return msg + (interval[0] * 1000 + interval[1] / 1000000) + 'ms';
};

var singleton;
module.exports.create = function(logger_, config_, jsFiles_, sourcemapper_) {
if (singleton) {
Expand Down Expand Up @@ -468,7 +479,7 @@ module.exports.create = function(logger_, config_, jsFiles_, sourcemapper_) {
messages.CAPTURE_BREAKPOINT_DATA + err);
}
var end = process.hrtime(start);
logger.interval(logModule.INFO, 'capture time', end);
logger.info(formatInterval('capture time: ', end));
callback(null);
}

Expand Down
5 changes: 5 additions & 0 deletions test/fixtures/fib.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ debug.startAgent({
breakpointUpdateIntervalSec: 1
});

// Make troubleshooting easier if run by itself
if (!process.send) {
process.send = console.log;
}

var timedOut = false;
var registrationTimeout = setTimeout(function() {
timedOut = true;
Expand Down
9 changes: 6 additions & 3 deletions test/nocks.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ function nockOAuth2(validator) {
validator = validator || accept;
return nock('https://accounts.google.com')
.post('/o/oauth2/token', validator)
.once()
.reply(200, {
refresh_token: 'hello',
access_token: 'goodbye',
Expand All @@ -37,17 +38,19 @@ function nockRegister(validator) {
validator = validator || accept;
return nock('https://clouddebugger.googleapis.com')
.post('/v2/controller/debuggees/register', validator)
.once()
.reply(200);
}

function nockNumericProjectId(reply) {
function nockProjectId(reply) {
return nock('http://metadata.google.internal')
.get('/computeMetadata/v1/project/numeric-project-id')
.get('/computeMetadata/v1/project/project-id')
.once()
.reply(reply);
}

module.exports = {
oauth2: nockOAuth2,
numericProjectId: nockNumericProjectId,
projectId: nockProjectId,
register: nockRegister
};
4 changes: 2 additions & 2 deletions test/standalone/test-duplicate-expressions.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ var breakpointInFoo = {
var assert = require('assert');
var extend = require('extend');
var v8debugapi = require('../../src/agent/v8debugapi.js');
var logModule = require('@google/cloud-diagnostics-common').logger;
var common = require('@google-cloud/common');
var defaultConfig = require('../../src/agent/config.js');
var SourceMapper = require('../../src/agent/sourcemapper.js');
var scanner = require('../../src/agent/scanner.js');
Expand All @@ -47,7 +47,7 @@ describe('v8debugapi', function() {
var config = extend({}, defaultConfig, {
workingDirectory: path.join(process.cwd(), 'test', 'standalone')
});
var logger = logModule.create(config.logLevel);
var logger = common.logger({ logLevel: config.logLevel });
var api = null;

beforeEach(function(done) {
Expand Down
4 changes: 2 additions & 2 deletions test/standalone/test-duplicate-nested-expressions.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
var assert = require('assert');
var extend = require('extend');
var v8debugapi = require('../../src/agent/v8debugapi.js');
var logModule = require('@google/cloud-diagnostics-common').logger;
var common = require('@google-cloud/common');
var defaultConfig = require('../../src/agent/config.js');
var SourceMapper = require('../../src/agent/sourcemapper.js');
var scanner = require('../../src/agent/scanner.js');
Expand All @@ -46,7 +46,7 @@ describe('v8debugapi', function() {
var config = extend({}, defaultConfig, {
workingDirectory: path.join(process.cwd(), 'test', 'standalone')
});
var logger = logModule.create(config.logLevel);
var logger = common.logger({ logLevel: config.logLevel });
var api = null;

beforeEach(function(done) {
Expand Down
4 changes: 2 additions & 2 deletions test/standalone/test-fat-arrow.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
var assert = require('assert');
var extend = require('extend');
var v8debugapi = require('../../src/agent/v8debugapi.js');
var logModule = require('@google/cloud-diagnostics-common').logger;
var common = require('@google-cloud/common');
var defaultConfig = require('../../src/agent/config.js');
var SourceMapper = require('../../src/agent/sourcemapper.js');
var scanner = require('../../src/agent/scanner.js');
Expand All @@ -39,7 +39,7 @@ describe('v8debugapi', function() {
var config = extend({}, defaultConfig, {
workingDirectory: path.join(process.cwd(), 'test')
});
var logger = logModule.create(config.logLevel);
var logger = common.logger({ logLevel: config.logLevel });
var api = null;
var foo;
before(function () {
Expand Down
4 changes: 2 additions & 2 deletions test/standalone/test-max-data-size.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ process.env.GCLOUD_DIAGNOSTICS_CONFIG = 'test/fixtures/test-config.js';

var assert = require('assert');
var extend = require('extend');
var logModule = require('@google/cloud-diagnostics-common').logger;
var common = require('@google-cloud/common');
var v8debugapi = require('../../src/agent/v8debugapi.js');
var SourceMapper = require('../../src/agent/sourcemapper.js');
var scanner = require('../../src/agent/scanner.js');
Expand All @@ -40,7 +40,7 @@ describe('maxDataSize', function() {

before(function(done) {
if (!api) {
var logger = logModule.create(config.logLevel);
var logger = common.logger({ logLevel: config.logLevel });
scanner.scan(true, config.workingDirectory, /.js$/,
function(err, fileStats, hash) {
assert(!err);
Expand Down
4 changes: 2 additions & 2 deletions test/standalone/test-this-context.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
var assert = require('assert');
var extend = require('extend');
var v8debugapi = require('../../src/agent/v8debugapi.js');
var logModule = require('@google/cloud-diagnostics-common').logger;
var common = require('@google-cloud/common');
var defaultConfig = require('../../src/agent/config.js');
var SourceMapper = require('../../src/agent/sourcemapper.js');
var scanner = require('../../src/agent/scanner.js');
Expand All @@ -46,7 +46,7 @@ describe('v8debugapi', function() {
var config = extend({}, defaultConfig, {
workingDirectory: path.join(process.cwd(), 'test', 'standalone')
});
var logger = logModule.create(config.logLevel);
var logger = common.logger({ logLevel: config.logLevel });
var api = null;

beforeEach(function(done) {
Expand Down
4 changes: 2 additions & 2 deletions test/standalone/test-try-catch.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
var assert = require('assert');
var extend = require('extend');
var v8debugapi = require('../../src/agent/v8debugapi.js');
var logModule = require('@google/cloud-diagnostics-common').logger;
var common = require('@google-cloud/common');
var defaultConfig = require('../../src/agent/config.js');
var SourceMapper = require('../../src/agent/sourcemapper.js');
var scanner = require('../../src/agent/scanner.js');
Expand All @@ -46,7 +46,7 @@ describe('v8debugapi', function() {
var config = extend({}, defaultConfig, {
workingDirectory: path.join(process.cwd(), 'test', 'standalone')
});
var logger = logModule.create(config.logLevel);
var logger = common.logger({ logLevel: config.logLevel });
var api = null;

beforeEach(function(done) {
Expand Down
4 changes: 2 additions & 2 deletions test/standalone/test-v8debugapi.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ var MAX_INT = 2147483647; // Max signed int32.
var assert = require('assert');
var extend = require('extend');
var v8debugapi = require('../../src/agent/v8debugapi.js');
var logModule = require('@google/cloud-diagnostics-common').logger;
var common = require('@google-cloud/common');
var defaultConfig = require('../../src/agent/config.js');
var StatusMessage = require('../../src/status-message.js');
var scanner = require('../../src/agent/scanner.js');
Expand Down Expand Up @@ -115,7 +115,7 @@ describe('v8debugapi', function() {
var config = extend({}, defaultConfig, {
workingDirectory: path.join(process.cwd(), 'test')
});
var logger = logModule.create(config.logLevel);
var logger = common.logger({ logLevel: config.logLevel });
var api = null;

beforeEach(function(done) {
Expand Down
Loading

0 comments on commit d2d1d21

Please sign in to comment.