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

Commit f651b8e

Browse files
authored
provide minorversion label on AppEngine (#237)
1 parent 683448c commit f651b8e

File tree

2 files changed

+88
-1
lines changed

2 files changed

+88
-1
lines changed

src/agent/debuglet.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,14 @@ Debuglet.prototype.normalizeConfig_ = function(config) {
144144
logLevel: process.env.GCLOUD_DEBUG_LOGLEVEL,
145145
serviceContext: {
146146
service: process.env.GAE_SERVICE || process.env.GAE_MODULE_NAME,
147-
version: process.env.GAE_VERSION || process.env.GAE_MODULE_VERSION
147+
version: process.env.GAE_VERSION || process.env.GAE_MODULE_VERSION,
148+
// Debug UI expects GAE_MINOR_VERSION to be available for AppEngine, but
149+
// AppEngine Flex doesn't have this environment variable. We provide a
150+
// fake value as a work-around, but only on Flex (GAE_SERVICE will be
151+
// defined on Flex).
152+
minorVersion:
153+
process.env.GAE_MINOR_VERSION ||
154+
(process.env.GAE_SERVICE ? 'fake-minor-version' : undefined)
148155
}
149156
};
150157

@@ -273,6 +280,11 @@ Debuglet.createDebuggee =
273280
labels.version = serviceContext.version;
274281
desc += ' version:' + serviceContext.version;
275282
}
283+
284+
if (_.isString(serviceContext.minorVersion)) {
285+
// v--- intentional lowercase
286+
labels.minorversion = serviceContext.minorVersion;
287+
}
276288
}
277289

278290
if (description) {

test/test-debuglet.js

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
'use strict';
1717

18+
var _ = require('lodash');
1819
var assert = require('assert');
1920
var defaultConfig = require('../src/agent/config.js');
2021
var Debuglet = require('../src/agent/debuglet.js');
@@ -243,6 +244,80 @@ describe('Debuglet', function() {
243244
assert.strictEqual(debuglet.config_.serviceContext.version,
244245
'fake-gae-version');
245246
});
247+
248+
it('should respect GAE_MINOR_VERSION env. var. when available',
249+
function() {
250+
process.env.GAE_MINOR_VERSION = 'some minor version';
251+
var debug = require('../src/debug.js')();
252+
var debuglet = new Debuglet(debug, defaultConfig);
253+
assert.ok(debuglet.config_);
254+
assert.ok(debuglet.config_.serviceContext);
255+
assert.strictEqual(debuglet.config_.serviceContext.minorVersion,
256+
'some minor version');
257+
});
258+
259+
it('should conjure a fake minor version when running on flex',
260+
function() {
261+
process.env.GAE_SERVICE = 'fake-gae-service';
262+
var debug = require('../src/debug.js')();
263+
var debuglet = new Debuglet(debug, defaultConfig);
264+
assert.ok(debuglet.config_);
265+
assert.ok(debuglet.config_.serviceContext);
266+
assert.ok(_.isString(debuglet.config_.serviceContext.minorVersion));
267+
});
268+
269+
it('should not have minorVersion unless enviroment provides it',
270+
function() {
271+
var debug = require('../src/debug.js')();
272+
var debuglet = new Debuglet(debug, defaultConfig);
273+
assert.ok(debuglet.config_);
274+
assert.ok(debuglet.config_.serviceContext);
275+
assert.ok(
276+
_.isUndefined(debuglet.config_.serviceContext.minorVersion));
277+
});
278+
279+
it('should not provide minorversion upon registration on non flex',
280+
function(done) {
281+
var debug = require('../src/debug.js')(
282+
{projectId: 'fake-project', credentials: fakeCredentials});
283+
var debuglet = new Debuglet(debug, defaultConfig);
284+
285+
var scope =
286+
nock(API).post(REGISTER_PATH, function(body) {
287+
assert.ok(
288+
_.isUndefined(body.debuggee.labels.minorversion));
289+
return true;
290+
}).once().reply(200, {debuggee: {id: DEBUGGEE_ID}});
291+
292+
debuglet.once('registered', function(id) {
293+
debuglet.stop();
294+
scope.done();
295+
done();
296+
});
297+
debuglet.start();
298+
});
299+
300+
it('should provide minorversion upon registration if on flex', function(
301+
done) {
302+
process.env.GAE_SERVICE = 'fake-service';
303+
var debug = require('../src/debug.js')(
304+
{projectId: 'fake-project', credentials: fakeCredentials});
305+
var debuglet = new Debuglet(debug, defaultConfig);
306+
307+
nocks.oauth2();
308+
var scope =
309+
nock(API).post(REGISTER_PATH, function(body) {
310+
assert.ok(_.isString(body.debuggee.labels.minorversion));
311+
return true;
312+
}).once().reply(200, {debuggee: {id: DEBUGGEE_ID}});
313+
314+
debuglet.once('registered', function(id) {
315+
debuglet.stop();
316+
scope.done();
317+
done();
318+
});
319+
debuglet.start();
320+
});
246321
});
247322

248323

0 commit comments

Comments
 (0)