/* * 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.hadoop.fs.swift; import org.apache.hadoop.fs.BlockLocation; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.Path; import org.junit.Test; import java.io.EOFException; import java.io.IOException; import static org.apache.hadoop.fs.swift.util.SwiftTestUtils.readBytesToString; import static org.apache.hadoop.fs.swift.util.SwiftTestUtils.writeTextFile; /** * Test filesystem read operations */ public class TestSwiftFileSystemRead extends SwiftFileSystemBaseTest { /** * Read past the end of a file: expect the operation to fail * @throws IOException */ @Test(timeout = SWIFT_TEST_TIMEOUT) public void testOverRead() throws IOException { final String message = "message"; final Path filePath = new Path("/test/file.txt"); writeTextFile(fs, filePath, message, false); try { readBytesToString(fs, filePath, 20); fail("expected an exception"); } catch (EOFException e) { //expected } } /** * Read and write some JSON * @throws IOException */ @Test(timeout = SWIFT_TEST_TIMEOUT) public void testRWJson() throws IOException { final String message = "{" + " 'json': { 'i':43, 'b':true}," + " 's':'string'" + "}"; final Path filePath = new Path("/test/file.json"); writeTextFile(fs, filePath, message, false); String readJson = readBytesToString(fs, filePath, message.length()); assertEquals(message,readJson); //now find out where it is FileStatus status = fs.getFileStatus(filePath); BlockLocation[] locations = fs.getFileBlockLocations(status, 0, 10); } /** * Read and write some XML * @throws IOException */ @Test(timeout = SWIFT_TEST_TIMEOUT) public void testRWXML() throws IOException { final String message = "<x>" + " <json i='43' 'b'=true/>" + " string" + "</x>"; final Path filePath = new Path("/test/file.xml"); writeTextFile(fs, filePath, message, false); String read = readBytesToString(fs, filePath, message.length()); assertEquals(message,read); } }