diff --git a/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/sftp/SftpSourceTests.java b/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/sftp/SftpSourceTests.java index 44a10f05..f9517480 100644 --- a/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/sftp/SftpSourceTests.java +++ b/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/sftp/SftpSourceTests.java @@ -24,12 +24,16 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.testcontainers.containers.BindMode; import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.Network; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.utility.DockerImageName; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.stream.app.test.integration.AppLog; import org.springframework.cloud.stream.app.test.integration.OutputMatcher; import org.springframework.cloud.stream.app.test.integration.StreamAppContainer; import org.springframework.cloud.stream.app.test.integration.junit.jupiter.BaseContainerExtension; @@ -37,42 +41,59 @@ import org.springframework.cloud.stream.app.test.integration.junit.jupiter.BaseC import static org.awaitility.Awaitility.await; import static org.springframework.cloud.stream.app.integration.test.common.Configuration.DEFAULT_DURATION; +@SuppressWarnings({"rawtypes", "unchecked"}) @Tag("integration") @ExtendWith(BaseContainerExtension.class) abstract class SftpSourceTests { - + private static final Logger logger = LoggerFactory.getLogger(SftpSourceTests.class); private StreamAppContainer source; @Container private static final GenericContainer sftp = new GenericContainer(DockerImageName.parse("atmoz/sftp")) .withExposedPorts(22) + .withNetwork(Network.SHARED) .withNetworkAliases("sftp-host") .withCommand("user:pass:::remote") .withClasspathResourceMapping("sftp", "/home/user/remote", BindMode.READ_ONLY) - .withStartupTimeout(DEFAULT_DURATION); + .withStartupTimeout(DEFAULT_DURATION) + .withLogConsumer(AppLog.appLog("sftp-host")); @BeforeEach void configureSource() { await().atMost(DEFAULT_DURATION).until(sftp::isRunning); source = BaseContainerExtension.containerInstance() + .withNetwork(Network.SHARED) .withEnv("SFTP_SUPPLIER_FACTORY_ALLOW_UNKNOWN_KEYS", "true") .withEnv("SFTP_SUPPLIER_REMOTE_DIR", "/remote") .withEnv("SFTP_SUPPLIER_FACTORY_USERNAME", "user") .withEnv("SFTP_SUPPLIER_FACTORY_PASSWORD", "pass") - .withEnv("SFTP_SUPPLIER_FACTORY_PORT", String.valueOf(sftp.getMappedPort(22))) - .withEnv("SFTP_SUPPLIER_FACTORY_HOST", "sftp-host"); + .withEnv("SFTP_SUPPLIER_FACTORY_PORT", "22") + .withEnv("SFTP_SUPPLIER_FACTORY_HOST", "sftp-host") + .withEnv("LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_INTEGRATION", "DEBUG") + .withEnv("LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_CLOUD", "DEBUG") + .log(); } @Autowired private OutputMatcher outputMatcher; - // TODO: This fixture supports additional tests with different modes, etc. @Test - void test() { + void testRef() { startContainer(Collections.singletonMap("FILE_CONSUMER_MODE", "ref")); - await().atMost(DEFAULT_DURATION) - .until(outputMatcher.payloadMatches((String s) -> s.equals("\"/tmp/sftp-supplier/data.txt\""))); + await().atMost(DEFAULT_DURATION).until(outputMatcher.payloadMatches((String s) -> { + logger.info("payload:{}", s); + return s.equals("\"/tmp/sftp-supplier/data.txt\""); + })); + } + @Test + void testLines() { + startContainer(Collections.singletonMap("FILE_CONSUMER_MODE", "lines")); + + await().atMost(DEFAULT_DURATION).until(outputMatcher.payloadMatches((String s) -> { + logger.info("payload:{}", s); + return s.contains("Bart Simpson"); + })); } private void startContainer(Map environment) { @@ -82,7 +103,7 @@ abstract class SftpSourceTests { } @AfterEach - private void cleanUp() { + public void cleanUp() { source.stop(); }