Updated SFTP Integration test with file.consumer.mode=lines
This commit is contained in:
@@ -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<String, String> environment) {
|
||||
@@ -82,7 +103,7 @@ abstract class SftpSourceTests {
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
private void cleanUp() {
|
||||
public void cleanUp() {
|
||||
source.stop();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user