package Ġcom . do it intl . bl aster . test . tests ĊĊ Ċ import Ġcom . do it intl . bl aster . de le ters . G AE Service De leter Ċ import Ġcom . do it intl . bl aster . shared . Constants . SERVICE Ċ import Ġcom . do it intl . bl aster . shared . run Command Ċ import Ġcom . do it intl . bl aster . test . TestBase Ċ import Ġjava . io . File Ċ import Ġjava . io . FileWriter Ċ import Ġkotlin . system . measure Time Millis ĊĊ Ċ class ĠG AE Service Test ( project : ĠString ) Ġ: ĠTest Base ( project ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġasset Type Ids (): ĠList < String > Ġ= ĠlistOf (" appengine . googleapis . com / Service ") ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Assets ( s fx : ĠString , Ġproject : ĠString ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġasset Name (" appengine - standard ") ĊĠĠĠĠĠĠĠ Ġval Ġdir Ġ= ĠFile ("./ test - input / appengine - standard ") ĊĠĠĠĠĠĠĠ Ġassert ( dir . isDirectory ) Ġ{ Ġ"$ dir Ġis Ġnot Ġdirectory " Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtemplate Ġ= ĠFile ( dir , Ġ" app . yaml . template "). read Text () ĊĊĠĠĠĠĠĠĠ Ġval Ġapp Yaml Content Ġ= Ġtemplate . replace ( SERVICE . toUpperCase (), Ġname ) ĊĠĠĠĠĠĠĠ Ġval ĠoutputFile Ġ= ĠFile ( dir , Ġ" app . yaml ") ĊĠĠĠĠĠĠĠ ĠoutputFile . delete On Exit () ĊĠĠĠĠĠĠĠ ĠFile Writer ( outputFile ). use Ġ{ Ġfw Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfw . write ( app Yaml Content ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtime In Millis Ġ= Ġmeasure Time Millis Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Command ("./ deploy . sh Ġ$ project ", Ġdir ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln (" Deploy ed ĠApp ĠEngine ĠService Ġin Ġ${ time In Millis Ġ/ Ġ 1 0 0 0 } Ġs ") ĊĠĠĠĠĠĠĠ Ġval Ġpattern Ġ= ĠG AE Service De leter (). path Patterns [ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġg ae Svc Path Ġ= Ġpath For Asset ( pattern , Ġproject , Ġname ) ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( g ae Svc Path ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġidentifier Is FullPath (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊ Ċ } ĊĊĊ