/** * Create a new file writer policy instance. * <p> * The configuration is: * <ul> * <li>10 second time based active file flushing</li> * <li>1MB file size based active file cycling</li> * <li>10 file retention count</li> * </ul> * The active and final file pathname behavior is specified in * {@link #FileWriterPolicy(FileWriterFlushConfig, FileWriterCycleConfig, FileWriterRetentionConfig)} */ public FileWriterPolicy() { this(FileWriterFlushConfig.newTimeBasedConfig(TimeUnit.SECONDS.toMillis(10)), FileWriterCycleConfig.newFileSizeBasedConfig(1*1024*1024), FileWriterRetentionConfig.newFileCountBasedConfig(10)); }
@Test public void testCycleSizeBased() throws Exception { Topology t = newTopology("testCycleSizeBased"); // establish a base path Path basePath = createTempFile("test1", "txt", new String[0]); String[] lines = getLines(); // build expected results // net one tuple per file List<List<String>> expResults = buildExpResults(lines, tuple -> true); int fileSize = 2; TStream<String> s = t.strings(lines); IFileWriterPolicy<String> policy = new FileWriterPolicy<String>( FileWriterFlushConfig.newImplicitConfig(), FileWriterCycleConfig.newFileSizeBasedConfig(fileSize), FileWriterRetentionConfig.newFileCountBasedConfig(10) ); FileStreams.textFileWriter(s, () -> basePath.toString(), () -> policy); completeAndValidateWriter(t, TMO_SEC, basePath, expResults); }
Predicate<String> p = tuple -> tuple.equals("true"); cfg = FileWriterCycleConfig.newFileSizeBasedConfig(2); checkFileWriterConfig(cfg, 2, 0, 0, null, trueTuple, falseTuple); expectIAE(() -> FileWriterCycleConfig.newFileSizeBasedConfig(0));