Skip to content
This repository was archived by the owner on Feb 26, 2025. It is now read-only.

Commit 7c40458

Browse files
committed
Merge branch 'zivver-master' into hotfix/1.1.1
2 parents f909841 + c5e8037 commit 7c40458

File tree

3 files changed

+25
-7
lines changed

3 files changed

+25
-7
lines changed

src/main/java/com/upplication/s3fs/S3FileSystemProvider.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,9 +232,16 @@ protected String systemGetEnv(String key){
232232
return System.getenv(key);
233233
}
234234

235+
/**
236+
* Get existing filesystem based on a combination of URI and env settings. Create new filesystem otherwise.
237+
* @param uri URI of existing, or to be created filesystem.
238+
* @param env environment settings.
239+
* @return new or existing filesystem.
240+
*/
235241
public FileSystem getFileSystem(URI uri, Map<String, ?> env) {
236242
validateUri(uri);
237-
String key = this.getFileSystemKey(uri);
243+
Properties props = getProperties(uri, env);
244+
String key = this.getFileSystemKey(uri, props); // s3fs_access_key is part of the key here.
238245
if (fileSystems.containsKey(key))
239246
return fileSystems.get(key);
240247
return newFileSystem(uri, env);

src/test/java/com/upplication/s3fs/FileSystemProviderIT.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static com.upplication.s3fs.S3UnitTestBase.S3_GLOBAL_URI;
55
import static org.junit.Assert.assertEquals;
66
import static org.junit.Assert.assertNotNull;
7+
import static org.junit.Assert.assertSame;
78
import static org.mockito.Matchers.argThat;
89
import static org.mockito.Matchers.eq;
910
import static org.mockito.Mockito.*;
@@ -39,8 +40,6 @@ public void setup() throws IOException {
3940
}
4041
provider = spy(new S3FileSystemProvider());
4142
doReturn(buildFakeProps()).when(provider).loadAmazonProperties();
42-
doReturn(false).when(provider).overloadPropertiesWithSystemEnv(any(Properties.class), anyString());
43-
doReturn(false).when(provider).overloadPropertiesWithSystemProps(any(Properties.class), anyString());
4443
}
4544

4645
@Test
@@ -64,7 +63,7 @@ public void createsAuthenticatedByEnvOverridesProps() {
6463
verify(provider).createFileSystem(eq(S3_GLOBAL_URI), argThat(new ArgumentMatcher<Properties>() {
6564
@Override
6665
public boolean matches(Object argument) {
67-
Properties called = (Properties)argument;
66+
Properties called = (Properties) argument;
6867
assertEquals(env.get(ACCESS_KEY), called.get(ACCESS_KEY));
6968
assertEquals(env.get(SECRET_KEY), called.get(SECRET_KEY));
7069
return true;
@@ -139,10 +138,22 @@ public boolean matches(Object argument) {
139138

140139
@Test
141140
public void createsAnonymousNotPossible() {
142-
FileSystem fileSystem = provider.newFileSystem(S3_GLOBAL_URI, ImmutableMap.<String, Object> of());
141+
FileSystem fileSystem = provider.newFileSystem(S3_GLOBAL_URI, ImmutableMap.<String, Object>of());
143142
assertNotNull(fileSystem);
144143
verify(provider).createFileSystem(eq(S3_GLOBAL_URI), eq(buildFakeProps()));
145144
}
145+
146+
@Test
147+
public void getFileSystemWithSameEnvReturnSameFileSystem() {
148+
doCallRealMethod().when(provider).loadAmazonProperties();
149+
150+
Map<String, Object> env = ImmutableMap.<String, Object> of("s3fs_access_key", "a", "s3fs_secret_key", "b");
151+
FileSystem fileSystem = provider.getFileSystem(S3_GLOBAL_URI, env);
152+
assertNotNull(fileSystem);
153+
154+
FileSystem sameFileSystem = provider.getFileSystem(S3_GLOBAL_URI, env);
155+
assertSame(fileSystem, sameFileSystem);
156+
}
146157

147158
private Map<String, String> buildFakeEnv(){
148159
return ImmutableMap.<String, String> builder()
@@ -153,7 +164,7 @@ private Map<String, String> buildFakeEnv(){
153164
private Properties buildFakeProps() {
154165
try {
155166
Properties props = new Properties();
156-
props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("amazon-test-sample.properties"));
167+
props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("amazon-test.properties"));
157168
return props;
158169
}
159170
catch (IOException e){

src/test/java/com/upplication/s3fs/S3FileSystemProviderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class S3FileSystemProviderTest extends S3UnitTestBase {
4747
@Before
4848
public void setup() {
4949
s3fsProvider = spy(new S3FileSystemProvider());
50-
doReturn(false).when(s3fsProvider).overloadPropertiesWithSystemEnv(any(Properties.class), anyString());
50+
//doReturn(false).when(s3fsProvider).overloadPropertiesWithSystemEnv(any(Properties.class), anyString());
5151
doReturn(new Properties()).when(s3fsProvider).loadAmazonProperties();
5252
}
5353

0 commit comments

Comments
 (0)