// ĠCopyright Ġ 2 0 1 9 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ // ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ċ package Ġsoftware . aws . tool k its . jetbrains . services . cloud debug . java Ċ Ċ import Ġcom . intellij . execution . Before Run Task Ċ import Ġcom . intellij . execution . exec utors . Default Debug Executor Ċ import Ġcom . intellij . execution . exec utors . Default Run Executor Ċ import Ġcom . intellij . openapi . external System . model . execution . External System Task Execution Settings Ċ import Ġcom . intellij . openapi . external System . service . execution . Progress Execution Mode Ċ import Ġcom . intellij . openapi . external System . task . Task Callback Ċ import Ġcom . intellij . openapi . external System . util . External System Util Ċ import Ġcom . intellij . test Framework . run In Ed t And Wait Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . jetbrains . plugins . gradle . util . Gradle Constants Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Mockito Ċ import Ġsoftware . aws . tool k its . jetbrains . core . credentials . active Credential Provider Ċ import Ġsoftware . aws . tool k its . jetbrains . core . credentials . active Region Ċ import Ġsoftware . aws . tool k its . jetbrains . core . credentials . run Under Real Credentials Ċ import Ġsoftware . aws . tool k its . jetbrains . services . cloud debug . Cloud Debug TestCase Ċ import Ġsoftware . aws . tool k its . jetbrains . services . cloud debug . Cloud Debugging Platform Ċ import Ġsoftware . aws . tool k its . jetbrains . services . ecs . E cs Utils Ċ import Ġsoftware . aws . tool k its . jetbrains . services . ecs . execution . Artifact Mapping Ċ import Ġsoftware . aws . tool k its . jetbrains . services . ecs . execution . Container Options Ċ import Ġsoftware . aws . tool k its . jetbrains . services . ecs . execution . E cs Cloud Debug Run Configuration Ċ import Ġsoftware . aws . tool k its . jetbrains . services . ecs . execution . E cs Cloud Debug Run Configuration Producer Ċ import Ġsoftware . aws . tool k its . jetbrains . utils . add Breakpoint Ċ import Ġsoftware . aws . tool k its . jetbrains . utils . check Break Point Hit Ċ import Ġsoftware . aws . tool k its . jetbrains . utils . execute Run Configuration Ċ import Ġsoftware . aws . tool k its . jetbrains . utils . rules . He avy Java Code Insight TestFixture Rule Ċ import Ġsoftware . aws . tool k its . jetbrains . utils . rules . addClass Ċ import Ġsoftware . aws . tool k its . jetbrains . utils . rules . add Module Ċ import Ġsoftware . aws . tool k its . jetbrains . utils . setUp Gradle Project Ċ import Ġjava . nio . file . Paths Ċ import Ġjava . util . concurrent . Comp letableFuture Ċ Ċ class ĠJava Debug End ToEnd Test Ġ: ĠCloud Debug TestCase (" Cloud Debug Test EC SC l uster Task Definition With Java ") Ġ{ ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġval Ġproject Rule Ġ= ĠHe avy Java Code Insight TestFixture Rule () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest End ToEnd () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup Ġproject Ġworkspace ĊĠĠĠĠĠĠĠ Ġadd Java File () ĊĠĠĠĠĠĠĠ Ġval ĠbasePath Ġ= ĠPaths . get ( project Rule . module . module FilePath ). parent ĊĠĠĠĠĠĠĠ Ġval Ġjar File Ġ= ĠbasePath . resolve ( Paths . get (" build ", Ġ" libs ", Ġ" main . jar ")) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġfigure Ġout Ġhow Ġto Ġturn Ġthis Ġinto Ġa Ġbefore Ġtask ĊĠĠĠĠĠĠĠ Ġ// Ġ./ gradle w Ġjar ĊĠĠĠĠĠĠĠ Ġval Ġbuild Settings Ġ= ĠExternal System Task Execution Settings (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexternal System Id String Ġ= Ġ" GRAD LE " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexternal Project Path Ġ= ĠbasePath . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Names Ġ= ĠlistOf (" jar ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfuture Ġ= ĠCompletableFuture < Nothing >() ĊĠĠĠĠĠĠĠ ĠExternal System Util . run Task ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Settings , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Run Executor . EXECUT OR _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject Rule . project , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGradle Constants . SYSTEM _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠTask Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfuture . complete ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfuture . complete Exception ally ( RuntimeException (" Jar Ġtask Ġfailed ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProgress Execution Mode . IN _ BACKGROUND _ ASYNC , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfuture . join () ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġbreakpoint ĊĠĠĠĠĠĠĠ Ġproject Rule . add Breakpoint () ĊĠĠĠĠĠĠĠ Ġval Ġdebugger Is Hit Ġ= Ġcheck Break Point Hit ( project Rule . project ) ĊĊĠĠĠĠĠĠĠ ĠsetUp Mocks () ĊĊĠĠĠĠĠĠĠ Ġ// Ġrun Ġa Ġrun Ġconfiguration ĊĠĠĠĠĠĠĠ Ġval Ġconfiguration Ġ= ĠE cs Cloud Debug Run Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject Rule . project , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE cs Cloud Debug Run Configuration Producer . get Factory () ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbefore Run Tasks Ġ= Ġmutable ListOf ( Mockito . mock ( Before Run Task :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcluster Arn ( service . cluster Arn ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġremove Ġthis Ġonce Ġwe Ġfix Ġthe ĠUX Ġaround Ġwhich Ġservice Ġis Ġdebug ged ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Arn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . service Arn (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġreplace Ġservice Ġname Ġwith Ġinstrument ed Ġservice Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstrument ed ServiceName Ġ= Ġ" cloud - debug -${ E cs Utils . service Arn To Name ( service . service Arn ()) }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . replace ( E cs Utils . service Arn To Name ( it ), Ġinstrument ed ServiceName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Container Name " Ġto ĠContainer Options (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplatform Ġ= ĠCloud Debugging Platform . JVM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Command Ġ= Ġ" java Ġ- cp Ġ/ main . jar ĠMain " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Mappings Ġ= ĠlistOf ( Artifact Mapping ( jar File . toString (), Ġ"/ main . jar ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Under Real Credentials ( project Rule . project ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . region Id ( project Rule . project . active Region (). id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . credential Provider Id ( project Rule . project . active Credential Provider (). id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . check Configuration () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Run Configuration ( configuration , ĠDefault Debug Executor . EXECUT OR _ ID ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġbreakpoint Ġhit ĊĠĠĠĠĠĠĠ ĠassertThat ( debugger Is Hit . get ()). isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Java File () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfixture Ġ= Ġproject Rule . fixture ĊĠĠĠĠĠĠĠ Ġval Ġmodule Ġ= Ġfixture . add Module (" main ") ĊĠĠĠĠĠĠĠ Ġval Ġpsi Class Ġ= Ġfixture . addClass ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodule , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠMain Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic Ġvoid Ġmain ( String [] Ġargs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . println (" Hello ĠWorld !"); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrun In Ed t And Wait Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . open File In Editor ( psi Class . containing File . virtual File ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject Rule . setUp Gradle Project () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Project () Ġ= Ġproject Rule . project Ċ } Ċ