@@ -136,6 +136,46 @@ describe('Debuglet', function() {
136136 } ) ;
137137 } ) ;
138138
139+ describe ( 'getClusterNameFromMetadata' , ( ) => {
140+ let savedInstance ;
141+ before ( ( ) => {
142+ savedInstance = metadata . instance ;
143+ } ) ;
144+ after ( ( ) => {
145+ metadata . instance = savedInstance ;
146+ } ) ;
147+
148+ it ( 'should return project retrived from metadata' , ( done ) => {
149+ const FAKE_CLUSTER_NAME = 'fake-cluster-name-from-metadata' ;
150+ var debug = require ( '../build/src/debug.js' ) . Debug ( ) ;
151+ var debuglet = new Debuglet ( debug , defaultConfig ) ;
152+
153+ metadata . instance = ( path , cb ) => {
154+ setImmediate ( ( ) => {
155+ cb ( null , { } , FAKE_CLUSTER_NAME ) ;
156+ } ) ;
157+ }
158+
159+ Debuglet . getClusterNameFromMetadata ( ) . then ( ( clusterName ) => {
160+ assert . strictEqual ( clusterName , FAKE_CLUSTER_NAME ) ;
161+ done ( ) ;
162+ } ) ;
163+ } ) ;
164+
165+ it ( 'should return null on error' , ( done ) => {
166+ var debug = require ( '../build/src/debug.js' ) . Debug ( ) ;
167+ var debuglet = new Debuglet ( debug , defaultConfig ) ;
168+
169+ metadata . instance = ( path , cb ) => {
170+ setImmediate ( ( ) => { cb ( new Error ( ) ) ; } ) ;
171+ }
172+
173+ Debuglet . getClusterNameFromMetadata ( ) . catch ( ( err ) => {
174+ done ( ) ;
175+ } ) ;
176+ } ) ;
177+ } ) ;
178+
139179 describe ( 'getProjectId' , ( ) => {
140180 let savedGetProjectIdFromMetadata ;
141181
@@ -502,8 +542,6 @@ describe('Debuglet', function() {
502542 } ) ;
503543 } ) ;
504544
505-
506-
507545 it ( 'should retry on failed registration' , function ( done ) {
508546 this . timeout ( 10000 ) ;
509547 var debug = require ( '../build/src/debug.js' ) . Debug (
@@ -563,6 +601,37 @@ describe('Debuglet', function() {
563601 debuglet . start ( ) ;
564602 } ) ;
565603
604+ it ( 'should attempt to retrieve cluster name if needed' , ( done ) => {
605+ const savedRunningOnGCP = Debuglet . runningOnGCP ;
606+ Debuglet . runningOnGCP = ( ) => {
607+ return Promise . resolve ( true ) ;
608+ } ;
609+ const clusterScope =
610+ nock ( 'http://metadata.google.internal' )
611+ . get ( '/computeMetadata/v1/instance/attributes/cluster-name' )
612+ . once ( )
613+ . reply ( 200 , 'cluster-name-from-metadata' ) ;
614+
615+ var debug = require ( '../build/src/debug.js' ) . Debug (
616+ { projectId : 'fake-project' , credentials : fakeCredentials } ) ;
617+ var debuglet = new Debuglet ( debug , defaultConfig ) ;
618+
619+ nocks . oauth2 ( ) ;
620+ var scope = nock ( API )
621+ . post ( REGISTER_PATH )
622+ . reply ( 200 , { debuggee : { id : DEBUGGEE_ID } } ) ;
623+
624+ debuglet . once ( 'registered' , function ( id ) {
625+ assert . equal ( id , DEBUGGEE_ID ) ;
626+ debuglet . stop ( ) ;
627+ clusterScope . done ( ) ;
628+ scope . done ( ) ;
629+ Debuglet . runningOnGCP = savedRunningOnGCP ;
630+ done ( ) ;
631+ } ) ;
632+
633+ debuglet . start ( ) ;
634+ } ) ;
566635
567636 it ( 'should pass source context to api if present' , function ( done ) {
568637 var debug = require ( '../build/src/debug.js' ) . Debug (
0 commit comments