@@ -20,26 +20,54 @@ const path = require('path');
2020const assert = require ( 'node:assert/strict' ) ;
2121const { describe, it} = require ( 'mocha' ) ;
2222const cp = require ( 'child_process' ) ;
23+ const { TpuClient} = require ( '@google-cloud/tpu' ) . v2alpha1 ;
2324
2425const execSync = cmd => cp . execSync ( cmd , { encoding : 'utf-8' } ) ;
2526const cwd = path . join ( __dirname , '..' ) ;
2627
27- describe ( 'TPU queued resource' , async ( ) => {
28+ async function waitForTPUCreation ( nodeName , zone ) {
29+ const tpuClient = new TpuClient ( ) ;
30+ const projectId = await tpuClient . getProjectId ( ) ;
31+
32+ // Give a time to start process of creating TPU Node
33+ await new Promise ( resolve => setTimeout ( resolve , 60000 ) ) ;
34+
35+ const getNodeRequest = {
36+ name : `projects/${ projectId } /locations/${ zone } /nodes/${ nodeName } ` ,
37+ } ;
38+
39+ console . log ( `Waiting for TPU node ${ nodeName } to become ready...` ) ;
40+
41+ let state ;
42+
43+ while ( state !== 'READY' ) {
44+ try {
45+ state = ( await tpuClient . getNode ( getNodeRequest ) ) [ 0 ] . state ;
46+ // Wait another minute to try
47+ await new Promise ( resolve => setTimeout ( resolve , 60000 ) ) ;
48+ } catch ( err ) {
49+ console . log ( 'TPU node not ready' ) ;
50+ // Wait another minute to try
51+ await new Promise ( resolve => setTimeout ( resolve , 60000 ) ) ;
52+ }
53+ }
54+ }
55+
56+ describe ( 'TPU queued resource' , ( ) => {
2857 const queuedResourceName = `queued-resource-name-1a2sdf${ Math . floor ( Math . random ( ) * 1000 + 1 ) } ` ;
2958 const nodePrefix = 'node-name-2a2b3c' ;
3059 const nodeName = `${ nodePrefix } ${ Math . floor ( Math . random ( ) * 1000 + 1 ) } ` ;
31- const zone = 'europe-west4-a ' ;
60+ const zone = 'us-central1-f ' ;
3261 const tpuType = 'v2-8' ;
3362 const tpuSoftwareVersion = 'tpu-vm-tf-2.14.1' ;
3463
35- it ( 'should create a new queued resource' , ( ) => {
64+ it ( 'should create a new queued resource' , async ( ) => {
3665 const response = execSync (
3766 `node ./queuedResource/createQueuedResource.js ${ nodeName } ${ queuedResourceName } ${ zone } ${ tpuType } ${ tpuSoftwareVersion } ` ,
3867 {
3968 cwd,
4069 }
4170 ) ;
42-
4371 assert ( response . includes ( `Queued resource ${ queuedResourceName } created.` ) ) ;
4472 } ) ;
4573
@@ -50,20 +78,20 @@ describe('TPU queued resource', async () => {
5078 cwd,
5179 }
5280 ) ;
53-
5481 assert (
5582 response . includes ( `Queued resource ${ queuedResourceName } retrived.` )
5683 ) ;
5784 } ) ;
5885
59- it ( 'should delete queued resource' , ( ) => {
86+ it ( 'should delete queued resource' , async ( ) => {
87+ // Wait until queued resource is ready to delete.
88+ await waitForTPUCreation ( nodeName , zone ) ;
6089 const response = execSync (
6190 `node ./queuedResource/deleteQueuedResource.js ${ queuedResourceName } ${ zone } ` ,
6291 {
6392 cwd,
6493 }
6594 ) ;
66-
6795 assert ( response . includes ( `Queued resource ${ queuedResourceName } deleted.` ) ) ;
6896 } ) ;
6997} ) ;
0 commit comments