HADOOP-14091. AbstractFileSystem implementaion for 'wasbs' scheme. Contributed Varada Hemeswari.
(cherry picked from commit 82607fce39
)
This commit is contained in:
parent
920847edce
commit
b1ec790662
|
@ -0,0 +1,47 @@
|
|||
/**
|
||||
* 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.azure;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience;
|
||||
import org.apache.hadoop.classification.InterfaceStability;
|
||||
import org.apache.hadoop.conf.Configuration;
|
||||
import org.apache.hadoop.fs.DelegateToFileSystem;
|
||||
|
||||
/**
|
||||
* WASB implementation of AbstractFileSystem for wasbs scheme.
|
||||
* This impl delegates to the old FileSystem
|
||||
*/
|
||||
@InterfaceAudience.Public
|
||||
@InterfaceStability.Evolving
|
||||
public class Wasbs extends DelegateToFileSystem {
|
||||
|
||||
Wasbs(final URI theUri, final Configuration conf) throws IOException,
|
||||
URISyntaxException {
|
||||
super(theUri, new NativeAzureFileSystem(), conf, "wasbs", false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getUriDefaultPort() {
|
||||
return -1;
|
||||
}
|
||||
}
|
|
@ -45,6 +45,7 @@ import org.apache.hadoop.fs.AbstractFileSystem;
|
|||
import org.apache.hadoop.fs.FileContext;
|
||||
import org.apache.hadoop.fs.FileSystem;
|
||||
import org.apache.hadoop.fs.Path;
|
||||
import org.apache.hadoop.fs.UnsupportedFileSystemException;
|
||||
import org.apache.hadoop.fs.azure.AzureBlobStorageTestAccount.CreateOptions;
|
||||
import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
|
@ -458,6 +459,62 @@ public class TestWasbUriAndConfiguration {
|
|||
assertTrue(afs instanceof Wasb);
|
||||
assertEquals(-1, afs.getUri().getPort());
|
||||
} finally {
|
||||
testAccount.cleanup();
|
||||
FileSystem.closeAll();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the cases when the scheme specified is 'wasbs'.
|
||||
*/
|
||||
@Test
|
||||
public void testAbstractFileSystemImplementationForWasbsScheme() throws Exception {
|
||||
try {
|
||||
testAccount = AzureBlobStorageTestAccount.createMock();
|
||||
Configuration conf = testAccount.getFileSystem().getConf();
|
||||
String authority = testAccount.getFileSystem().getUri().getAuthority();
|
||||
URI defaultUri = new URI("wasbs", authority, null, null, null);
|
||||
conf.set(FS_DEFAULT_NAME_KEY, defaultUri.toString());
|
||||
conf.set("fs.AbstractFileSystem.wasbs.impl", "org.apache.hadoop.fs.azure.Wasbs");
|
||||
conf.addResource("azure-test.xml");
|
||||
|
||||
FileSystem fs = FileSystem.get(conf);
|
||||
assertTrue(fs instanceof NativeAzureFileSystem);
|
||||
assertEquals("wasbs", fs.getScheme());
|
||||
|
||||
AbstractFileSystem afs = FileContext.getFileContext(conf)
|
||||
.getDefaultFileSystem();
|
||||
assertTrue(afs instanceof Wasbs);
|
||||
assertEquals(-1, afs.getUri().getPort());
|
||||
assertEquals("wasbs", afs.getUri().getScheme());
|
||||
} finally {
|
||||
testAccount.cleanup();
|
||||
FileSystem.closeAll();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNoAbstractFileSystemImplementationSpecifiedForWasbsScheme() throws Exception {
|
||||
try {
|
||||
testAccount = AzureBlobStorageTestAccount.createMock();
|
||||
Configuration conf = testAccount.getFileSystem().getConf();
|
||||
String authority = testAccount.getFileSystem().getUri().getAuthority();
|
||||
URI defaultUri = new URI("wasbs", authority, null, null, null);
|
||||
conf.set(FS_DEFAULT_NAME_KEY, defaultUri.toString());
|
||||
|
||||
FileSystem fs = FileSystem.get(conf);
|
||||
assertTrue(fs instanceof NativeAzureFileSystem);
|
||||
assertEquals("wasbs", fs.getScheme());
|
||||
|
||||
// should throw if 'fs.AbstractFileSystem.wasbs.impl'' is not specified
|
||||
try{
|
||||
FileContext.getFileContext(conf).getDefaultFileSystem();
|
||||
fail("Should've thrown.");
|
||||
}catch(UnsupportedFileSystemException e){
|
||||
}
|
||||
|
||||
} finally {
|
||||
testAccount.cleanup();
|
||||
FileSystem.closeAll();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue