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

Commit

Permalink
provide minorversion label on AppEngine (#237)
Browse files Browse the repository at this point in the history
  • Loading branch information
ofrobots authored Feb 8, 2017
1 parent 683448c commit f651b8e
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 1 deletion.
14 changes: 13 additions & 1 deletion src/agent/debuglet.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,14 @@ Debuglet.prototype.normalizeConfig_ = function(config) {
logLevel: process.env.GCLOUD_DEBUG_LOGLEVEL,
serviceContext: {
service: process.env.GAE_SERVICE || process.env.GAE_MODULE_NAME,
version: process.env.GAE_VERSION || process.env.GAE_MODULE_VERSION
version: process.env.GAE_VERSION || process.env.GAE_MODULE_VERSION,
// Debug UI expects GAE_MINOR_VERSION to be available for AppEngine, but
// AppEngine Flex doesn't have this environment variable. We provide a
// fake value as a work-around, but only on Flex (GAE_SERVICE will be
// defined on Flex).
minorVersion:
process.env.GAE_MINOR_VERSION ||
(process.env.GAE_SERVICE ? 'fake-minor-version' : undefined)
}
};

Expand Down Expand Up @@ -273,6 +280,11 @@ Debuglet.createDebuggee =
labels.version = serviceContext.version;
desc += ' version:' + serviceContext.version;
}

if (_.isString(serviceContext.minorVersion)) {
// v--- intentional lowercase
labels.minorversion = serviceContext.minorVersion;
}
}

if (description) {
Expand Down
75 changes: 75 additions & 0 deletions test/test-debuglet.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
'use strict';

var _ = require('lodash');
var assert = require('assert');
var defaultConfig = require('../src/agent/config.js');
var Debuglet = require('../src/agent/debuglet.js');
Expand Down Expand Up @@ -243,6 +244,80 @@ describe('Debuglet', function() {
assert.strictEqual(debuglet.config_.serviceContext.version,
'fake-gae-version');
});

it('should respect GAE_MINOR_VERSION env. var. when available',
function() {
process.env.GAE_MINOR_VERSION = 'some minor version';
var debug = require('../src/debug.js')();
var debuglet = new Debuglet(debug, defaultConfig);
assert.ok(debuglet.config_);
assert.ok(debuglet.config_.serviceContext);
assert.strictEqual(debuglet.config_.serviceContext.minorVersion,
'some minor version');
});

it('should conjure a fake minor version when running on flex',
function() {
process.env.GAE_SERVICE = 'fake-gae-service';
var debug = require('../src/debug.js')();
var debuglet = new Debuglet(debug, defaultConfig);
assert.ok(debuglet.config_);
assert.ok(debuglet.config_.serviceContext);
assert.ok(_.isString(debuglet.config_.serviceContext.minorVersion));
});

it('should not have minorVersion unless enviroment provides it',
function() {
var debug = require('../src/debug.js')();
var debuglet = new Debuglet(debug, defaultConfig);
assert.ok(debuglet.config_);
assert.ok(debuglet.config_.serviceContext);
assert.ok(
_.isUndefined(debuglet.config_.serviceContext.minorVersion));
});

it('should not provide minorversion upon registration on non flex',
function(done) {
var debug = require('../src/debug.js')(
{projectId: 'fake-project', credentials: fakeCredentials});
var debuglet = new Debuglet(debug, defaultConfig);

var scope =
nock(API).post(REGISTER_PATH, function(body) {
assert.ok(
_.isUndefined(body.debuggee.labels.minorversion));
return true;
}).once().reply(200, {debuggee: {id: DEBUGGEE_ID}});

debuglet.once('registered', function(id) {
debuglet.stop();
scope.done();
done();
});
debuglet.start();
});

it('should provide minorversion upon registration if on flex', function(
done) {
process.env.GAE_SERVICE = 'fake-service';
var debug = require('../src/debug.js')(
{projectId: 'fake-project', credentials: fakeCredentials});
var debuglet = new Debuglet(debug, defaultConfig);

nocks.oauth2();
var scope =
nock(API).post(REGISTER_PATH, function(body) {
assert.ok(_.isString(body.debuggee.labels.minorversion));
return true;
}).once().reply(200, {debuggee: {id: DEBUGGEE_ID}});

debuglet.once('registered', function(id) {
debuglet.stop();
scope.done();
done();
});
debuglet.start();
});
});


Expand Down

0 comments on commit f651b8e

Please sign in to comment.