GH-3076: NioFileLocker: add file existence check
Fixes spring-projects/spring-integration#3076 * Return `null` instead of throwing an exception * Fix license header * Add missing `@since` * Avoid over-engineered test logic * Fix code style * Test non-existent file does not get created * Fix: remove unused import
This commit is contained in:
committed by
Artem Bilan
parent
1e50707370
commit
c420c414d3
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright 2019 the original author or authors.
|
||||
*
|
||||
* Licensed 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
|
||||
*
|
||||
* https://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.springframework.integration.file.locking;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TemporaryFolder;
|
||||
|
||||
/**
|
||||
* @author Emmanuel Roux
|
||||
* @since 4.3.22
|
||||
*/
|
||||
public class FileChannelCacheTests {
|
||||
|
||||
@Rule
|
||||
public TemporaryFolder temp = new TemporaryFolder();
|
||||
|
||||
@Test
|
||||
public void throwsExceptionWhenFileNotExists() throws IOException {
|
||||
File testFile = new File(temp.getRoot(), "test0");
|
||||
assertThat(testFile.exists()).isFalse();
|
||||
assertThat(FileChannelCache.tryLockFor(testFile)).isNull();
|
||||
assertThat(testFile.exists()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fileLocked() throws IOException {
|
||||
File testFile = temp.newFile("test1");
|
||||
testFile.createNewFile();
|
||||
assertThat(testFile.exists()).isTrue();
|
||||
assertThat(FileChannelCache.tryLockFor(testFile)).isNotNull();
|
||||
FileChannelCache.closeChannelFor(testFile);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -34,6 +34,7 @@ import org.springframework.integration.test.util.TestUtils;
|
||||
/**
|
||||
* @author Iwein Fuld
|
||||
* @author Gary Russell
|
||||
* @author Emmanuel Roux
|
||||
*/
|
||||
public class NioFileLockerTests {
|
||||
|
||||
@@ -76,4 +77,21 @@ public class NioFileLockerTests {
|
||||
filter1.unlock(testFile);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fileLockedWhenNotAlreadyLockedAndExists() throws IOException {
|
||||
NioFileLocker locker = new NioFileLocker();
|
||||
File testFile = new File(workdir, "test2");
|
||||
testFile.createNewFile();
|
||||
assertThat(locker.lock(testFile)).isTrue();
|
||||
locker.unlock(testFile);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fileNotLockedWhenNotExists() throws IOException {
|
||||
NioFileLocker locker = new NioFileLocker();
|
||||
File testFile = new File(workdir, "test3");
|
||||
assertThat(locker.lock(testFile)).isFalse();
|
||||
assertThat(testFile.exists()).isFalse();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user