| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.lucene.benchmark.byTask.utils; |
| |
| import java.io.BufferedReader; |
| import java.io.BufferedWriter; |
| import java.io.IOException; |
| import java.io.InputStream; |
| import java.io.InputStreamReader; |
| import java.io.OutputStream; |
| import java.io.OutputStreamWriter; |
| import java.nio.charset.StandardCharsets; |
| import java.nio.file.Files; |
| import java.nio.file.Path; |
| import org.apache.commons.compress.compressors.CompressorStreamFactory; |
| import org.apache.lucene.benchmark.BenchmarkTestCase; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| public class TestStreamUtils extends BenchmarkTestCase { |
| private static final String TEXT = "Some-Text..."; |
| private Path testDir; |
| |
| @Test |
| public void testGetInputStreamPlainText() throws Exception { |
| assertReadText(rawTextFile("txt")); |
| assertReadText(rawTextFile("TXT")); |
| } |
| |
| @Test |
| public void testGetInputStreamGzip() throws Exception { |
| assertReadText(rawGzipFile("gz")); |
| assertReadText(rawGzipFile("gzip")); |
| assertReadText(rawGzipFile("GZ")); |
| assertReadText(rawGzipFile("GZIP")); |
| } |
| |
| @Test |
| public void testGetInputStreamBzip2() throws Exception { |
| assertReadText(rawBzip2File("bz2")); |
| assertReadText(rawBzip2File("bzip")); |
| assertReadText(rawBzip2File("BZ2")); |
| assertReadText(rawBzip2File("BZIP")); |
| } |
| |
| @Test |
| public void testGetOutputStreamBzip2() throws Exception { |
| assertReadText(autoOutFile("bz2")); |
| assertReadText(autoOutFile("bzip")); |
| assertReadText(autoOutFile("BZ2")); |
| assertReadText(autoOutFile("BZIP")); |
| } |
| |
| @Test |
| public void testGetOutputStreamGzip() throws Exception { |
| assertReadText(autoOutFile("gz")); |
| assertReadText(autoOutFile("gzip")); |
| assertReadText(autoOutFile("GZ")); |
| assertReadText(autoOutFile("GZIP")); |
| } |
| |
| @Test |
| public void testGetOutputStreamPlain() throws Exception { |
| assertReadText(autoOutFile("txt")); |
| assertReadText(autoOutFile("text")); |
| assertReadText(autoOutFile("TXT")); |
| assertReadText(autoOutFile("TEXT")); |
| } |
| |
| private Path rawTextFile(String ext) throws Exception { |
| Path f = testDir.resolve("testfile." + ext); |
| BufferedWriter w = Files.newBufferedWriter(f, StandardCharsets.UTF_8); |
| w.write(TEXT); |
| w.newLine(); |
| w.close(); |
| return f; |
| } |
| |
| private Path rawGzipFile(String ext) throws Exception { |
| Path f = testDir.resolve("testfile." + ext); |
| OutputStream os = |
| new CompressorStreamFactory() |
| .createCompressorOutputStream(CompressorStreamFactory.GZIP, Files.newOutputStream(f)); |
| writeText(os); |
| return f; |
| } |
| |
| private Path rawBzip2File(String ext) throws Exception { |
| Path f = testDir.resolve("testfile." + ext); |
| OutputStream os = |
| new CompressorStreamFactory() |
| .createCompressorOutputStream(CompressorStreamFactory.BZIP2, Files.newOutputStream(f)); |
| writeText(os); |
| return f; |
| } |
| |
| private Path autoOutFile(String ext) throws Exception { |
| Path f = testDir.resolve("testfile." + ext); |
| OutputStream os = StreamUtils.outputStream(f); |
| writeText(os); |
| return f; |
| } |
| |
| private void writeText(OutputStream os) throws IOException { |
| BufferedWriter w = new BufferedWriter(new OutputStreamWriter(os, StandardCharsets.UTF_8)); |
| w.write(TEXT); |
| w.newLine(); |
| w.close(); |
| } |
| |
| private void assertReadText(Path f) throws Exception { |
| InputStream ir = StreamUtils.inputStream(f); |
| InputStreamReader in = new InputStreamReader(ir, StandardCharsets.UTF_8); |
| BufferedReader r = new BufferedReader(in); |
| String line = r.readLine(); |
| assertEquals("Wrong text found in " + f.getFileName(), TEXT, line); |
| r.close(); |
| } |
| |
| @Override |
| @Before |
| public void setUp() throws Exception { |
| super.setUp(); |
| testDir = createTempDir("ContentSourceTest"); |
| } |
| } |