HADOOP-12608. Fix exception message in WASB when connecting with anonymous credential. Contributed by Dushyanth.

(cherry picked from commit 007a8decc61750720033e06b6d08861ac3788e41)
This commit is contained in:
Xiaoyu Yao 2015-12-30 11:10:50 -08:00
parent a48fdc1907
commit c16e126d16
3 changed files with 84 additions and 2 deletions

View File

@ -892,6 +892,9 @@ Release 2.8.0 - UNRELEASED
HADOOP-12682. Fix TestKMS#testKMSRestart* failure.
(Wei-Chiu Chuang via xyao)
HADOOP-12608. Fix exception message in WASB when connecting with anonymous
credential. (Dushyanth via xyao)
Release 2.7.3 - UNRELEASED
INCOMPATIBLE CHANGES

View File

@ -730,8 +730,9 @@ private void connectUsingAnonymousCredentials(final URI uri)
try {
if (!container.exists(getInstrumentedContext())) {
throw new AzureException("Container " + containerName + " in account "
+ accountName + " not found, and we can't create "
+ " it using anoynomous credentials.");
+ accountName + " not found, and we can't create"
+ " it using anoynomous credentials, and no credentials found for them"
+ " in the configuration.");
}
} catch (StorageException ex) {
throw new AzureException("Unable to access container " + containerName

View File

@ -0,0 +1,78 @@
/**
* 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.net.URI;
import java.util.UUID;
import org.apache.hadoop.conf.Configuration;
import org.junit.Assert;
import org.junit.Test;
public class TestFileSystemOperationExceptionMessage extends
NativeAzureFileSystemBaseTest {
@Test
public void testAnonymouseCredentialExceptionMessage() throws Throwable{
Configuration conf = AzureBlobStorageTestAccount.createTestConfiguration();
String testStorageAccount = conf.get("fs.azure.test.account.name");
conf = new Configuration();
conf.set("fs.AbstractFileSystem.wasb.impl", "org.apache.hadoop.fs.azure.Wasb");
conf.set("fs.azure.skip.metrics", "true");
String testContainer = UUID.randomUUID().toString();
String wasbUri = String.format("wasb://%s@%s",
testContainer, testStorageAccount);
String expectedErrorMessage =
String.format("Container %s in account %s not found, and we can't create it "
+ "using anoynomous credentials, and no credentials found for "
+ "them in the configuration.", testContainer, testStorageAccount);
fs = new NativeAzureFileSystem();
try {
fs.initialize(new URI(wasbUri), conf);
} catch (Exception ex) {
Throwable innerException = ex.getCause();
while (innerException != null
&& !(innerException instanceof AzureException)) {
innerException = innerException.getCause();
}
if (innerException != null) {
String exceptionMessage = innerException.getMessage();
if (exceptionMessage == null
|| exceptionMessage.length() == 0) {
Assert.fail();}
else {
Assert.assertTrue(exceptionMessage.equals(expectedErrorMessage));
}
} else {
Assert.fail();
}
}
}
@Override
protected AzureBlobStorageTestAccount createTestAccount() throws Exception {
return AzureBlobStorageTestAccount.create();
}
}