in jetbrains-core/it/software/aws/toolkits/jetbrains/services/clouddebug/python/PythonDebugEndToEndTest.kt [37:109]
fun testEndToEnd() {
// setup project workspace
val testScript = addPythonFile(
"test.py",
"""
import hello
import folderNoTrailingSlash.hello
import folderTrailingSlash.hello
""".trimIndent()
)
val file = addPythonFile("hello.py")
projectRule.addBreakpoint()
val folderNoTrailingSlash = addPythonFile("folderNoTrailingSlash/hello.py")
projectRule.addBreakpoint()
projectRule.fixture.addFileToProject("folderNoTrailingSlash/__init__.py", "")
val folderTrailingSlash = addPythonFile("folderTrailingSlash/hello.py")
projectRule.addBreakpoint()
projectRule.fixture.addFileToProject("folderTrailingSlash/__init__.py", "")
// set breakpoint
val countDown = CountDownLatch(3)
checkBreakPointHit(projectRule.project) {
countDown.countDown()
}
setUpMocks()
// run a run configuration
val configuration = EcsCloudDebugRunConfiguration(
projectRule.project,
EcsCloudDebugRunConfigurationProducer.getFactory()
).apply {
clusterArn(service.clusterArn())
// TODO: remove this once we fix the UX around which service is debugged
serviceArn(
service.serviceArn().let {
// replace service name with instrumented service name
val instrumentedServiceName = "cloud-debug-${EcsUtils.serviceArnToName(service.serviceArn())}"
it.replace(EcsUtils.serviceArnToName(it), instrumentedServiceName)
}
)
containerOptions(
mapOf(
"ContainerName" to ContainerOptions().apply {
platform = CloudDebuggingPlatform.PYTHON
startCommand = "python /${testScript.fileName}"
artifactMappings = listOf(
ArtifactMapping(testScript.toString(), "/test.py"),
ArtifactMapping(file.toString(), "/hello.py"),
ArtifactMapping(folderNoTrailingSlash.parent.toString().trimEnd('/'), "/"),
ArtifactMapping(folderTrailingSlash.parent.toString().trimEnd('/') + '/', "/folderTrailingSlash")
)
}
)
)
}
runUnderRealCredentials(projectRule.project) {
try {
configuration.regionId(projectRule.project.activeRegion().id)
configuration.credentialProviderId(projectRule.project.activeCredentialProvider().id)
configuration.checkConfiguration()
} catch (_: RuntimeConfigurationWarning) {
// ignore warnings because we know what we're doing
}
executeRunConfigurationAndWait(configuration, DefaultDebugExecutor.EXECUTOR_ID)
}
// check breakpoint hit
assertThat(countDown.count).isEqualTo(0)
}