Skip to content

Commit

Permalink
refactoring to introduce deleteOnExit() for temp files (PegaSysEng#920)
Browse files Browse the repository at this point in the history
  • Loading branch information
macfarla authored and tmohay committed Feb 20, 2019
1 parent e45ff79 commit 67cedcc
Show file tree
Hide file tree
Showing 11 changed files with 81 additions and 72 deletions.
Expand Up @@ -136,6 +136,7 @@ public void startNode(final PantheonNode node) {
private Path createGenesisFile(final PantheonNode node, final EthNetworkConfig ethNetworkConfig) {
try {
Path genesisFile = Files.createTempFile(node.homeDirectory(), "genesis", "");
genesisFile.toFile().deleteOnExit();
Files.write(genesisFile, ethNetworkConfig.getGenesisConfig().getBytes(UTF_8));
return genesisFile;
} catch (IOException e) {
Expand Down
Expand Up @@ -223,6 +223,7 @@ public PantheonNode createNodeWithNodesWhitelist(
PermissioningConfiguration.createDefault();
permissioningConfiguration.setNodeWhitelist(nodesWhitelist);
File tempFile = createTempPermissioningConfigurationFile();
tempFile.deleteOnExit();
permissioningConfiguration.setConfigurationFilePath(tempFile.getPath());
initPermissioningConfigurationFile(
WhitelistPersistor.WHITELIST_TYPE.NODES,
Expand Down
Expand Up @@ -46,6 +46,7 @@

import java.net.InetAddress;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
Expand Down Expand Up @@ -414,8 +415,10 @@ public void rejectIncomingConnectionFromNonWhitelistedPeer() throws Exception {
final PeerBlacklist localBlacklist = new PeerBlacklist();
final PeerBlacklist remoteBlacklist = new PeerBlacklist();
final PermissioningConfiguration config = PermissioningConfiguration.createDefault();
config.setConfigurationFilePath(
Files.createTempFile("test", "test").toAbsolutePath().toString());
final Path tempFile = Files.createTempFile("test", "test");
tempFile.toFile().deleteOnExit();
config.setConfigurationFilePath(tempFile.toAbsolutePath().toString());

final NodeWhitelistController localWhitelistController =
new NodeWhitelistController(config, Collections.emptyList());
// turn on whitelisting by adding a different node NOT remote node
Expand Down
Expand Up @@ -51,6 +51,7 @@
import java.io.IOException;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
Expand Down Expand Up @@ -1212,8 +1213,9 @@ private PeerDiscoveryController startPeerDiscoveryController(

private PermissioningConfiguration permissioningConfigurationWithTempFile() throws IOException {
final PermissioningConfiguration config = PermissioningConfiguration.createDefault();
config.setConfigurationFilePath(
Files.createTempFile("test", "test").toAbsolutePath().toString());
Path tempFile = Files.createTempFile("test", "test");
tempFile.toFile().deleteOnExit();
config.setConfigurationFilePath(tempFile.toAbsolutePath().toString());
return config;
}

Expand Down
Expand Up @@ -32,6 +32,7 @@
import tech.pegasys.pantheon.util.bytes.BytesValue;

import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
Expand Down Expand Up @@ -480,10 +481,11 @@ public void shouldNotBondWithNodesRejectedByWhitelist() throws Exception {
final DiscoveryPeer peerA = new DiscoveryPeer(createId(1), "127.0.0.1", 1, 1);
final DiscoveryPeer peerB = new DiscoveryPeer(createId(2), "127.0.0.2", 2, 2);

final Path tempFile = Files.createTempFile("test", "test");
tempFile.toFile().deleteOnExit();
final PermissioningConfiguration permissioningConfiguration =
PermissioningConfiguration.createDefault();
permissioningConfiguration.setConfigurationFilePath(
Files.createTempFile("test", "test").toAbsolutePath().toString());
permissioningConfiguration.setConfigurationFilePath(tempFile.toAbsolutePath().toString());

final NodeWhitelistController peerWhitelist =
new NodeWhitelistController(permissioningConfiguration, Collections.emptyList());
Expand Down
Expand Up @@ -234,6 +234,7 @@ public void accountThatDoesNotStartWith0xIsNotValid() {
private Path createPermissionsFileWithAccount(final String account) throws IOException {
final String nodePermissionsFileContent = "accounts-whitelist=[\"" + account + "\"]";
final Path permissionsFile = Files.createTempFile("account_permissions", "");
permissionsFile.toFile().deleteOnExit();
Files.write(permissionsFile, nodePermissionsFileContent.getBytes(StandardCharsets.UTF_8));
return permissionsFile;
}
Expand Down
Expand Up @@ -388,6 +388,7 @@ public void whenReloadingWhitelistAndNothingChangesShouldNotNotifyWhitelistModif
private Path createPermissionsFileWithNode(final String node) throws IOException {
final String nodePermissionsFileContent = "nodes-whitelist=[\"" + node + "\"]";
final Path permissionsFile = Files.createTempFile("node_permissions", "");
permissionsFile.toFile().deleteOnExit();
Files.write(permissionsFile, nodePermissionsFileContent.getBytes(StandardCharsets.UTF_8));
return permissionsFile;
}
Expand Down
Expand Up @@ -12,9 +12,11 @@
*/
package tech.pegasys.pantheon.ethereum.permissioning;

import static java.nio.charset.StandardCharsets.UTF_8;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.catchThrowable;

import java.io.IOException;
import java.net.URI;
import java.net.URL;
import java.nio.file.Files;
Expand Down Expand Up @@ -53,8 +55,7 @@ public void permissioningConfig() throws Exception {
final String uri2 = "enode://" + VALID_NODE_ID + "@192.169.0.9:4568";

final URL configFile = Resources.getResource(PERMISSIONING_CONFIG_VALID);
final Path toml = Files.createTempFile("toml", "");
Files.write(toml, Resources.toByteArray(configFile));
final Path toml = createTempFile("toml", Resources.toByteArray(configFile));

PermissioningConfiguration permissioningConfiguration = permissioningConfig(toml);

Expand All @@ -71,8 +72,7 @@ public void permissioningConfigWithOnlyNodeWhitelistSet() throws Exception {
final String uri = "enode://" + VALID_NODE_ID + "@192.168.0.9:4567";

final URL configFile = Resources.getResource(PERMISSIONING_CONFIG_NODE_WHITELIST_ONLY);
final Path toml = Files.createTempFile("toml", "");
Files.write(toml, Resources.toByteArray(configFile));
final Path toml = createTempFile("toml", Resources.toByteArray(configFile));

PermissioningConfiguration permissioningConfiguration =
PermissioningConfigurationBuilder.permissioningConfiguration(
Expand All @@ -86,8 +86,7 @@ public void permissioningConfigWithOnlyNodeWhitelistSet() throws Exception {
@Test
public void permissioningConfigWithOnlyAccountWhitelistSet() throws Exception {
final URL configFile = Resources.getResource(PERMISSIONING_CONFIG_ACCOUNT_WHITELIST_ONLY);
final Path toml = Files.createTempFile("toml", "");
Files.write(toml, Resources.toByteArray(configFile));
final Path toml = createTempFile("toml", Resources.toByteArray(configFile));

PermissioningConfiguration permissioningConfiguration =
PermissioningConfigurationBuilder.permissioningConfiguration(
Expand All @@ -102,8 +101,7 @@ public void permissioningConfigWithOnlyAccountWhitelistSet() throws Exception {
@Test
public void permissioningConfigWithInvalidAccount() throws Exception {
final URL configFile = Resources.getResource(PERMISSIONING_CONFIG_INVALID_ACCOUNT);
final Path toml = Files.createTempFile("toml", "");
Files.write(toml, Resources.toByteArray(configFile));
final Path toml = createTempFile("toml", Resources.toByteArray(configFile));

final Throwable thrown = catchThrowable(() -> permissioningConfig(toml));

Expand All @@ -115,8 +113,7 @@ public void permissioningConfigWithInvalidAccount() throws Exception {
@Test
public void permissioningConfigWithInvalidEnode() throws Exception {
final URL configFile = Resources.getResource(PERMISSIONING_CONFIG_INVALID_ENODE);
final Path toml = Files.createTempFile("toml", "");
Files.write(toml, Resources.toByteArray(configFile));
final Path toml = createTempFile("toml", Resources.toByteArray(configFile));

final Throwable thrown = catchThrowable(() -> permissioningConfig(toml));

Expand All @@ -128,8 +125,7 @@ public void permissioningConfigWithInvalidEnode() throws Exception {
@Test
public void permissioningConfigWithEmptyWhitelistMustNotError() throws Exception {
final URL configFile = Resources.getResource(PERMISSIONING_CONFIG_EMPTY_WHITELISTS);
final Path toml = Files.createTempFile("toml", "");
Files.write(toml, Resources.toByteArray(configFile));
final Path toml = createTempFile("toml", Resources.toByteArray(configFile));

PermissioningConfiguration permissioningConfiguration = permissioningConfig(toml);

Expand All @@ -142,8 +138,7 @@ public void permissioningConfigWithEmptyWhitelistMustNotError() throws Exception
@Test
public void permissioningConfigWithAbsentWhitelistMustThrowException() throws Exception {
final URL configFile = Resources.getResource(PERMISSIONING_CONFIG_ABSENT_WHITELISTS);
final Path toml = Files.createTempFile("toml", "");
Files.write(toml, Resources.toByteArray(configFile));
final Path toml = createTempFile("toml", Resources.toByteArray(configFile));

final Throwable thrown = catchThrowable(() -> permissioningConfig(toml));

Expand All @@ -153,8 +148,7 @@ public void permissioningConfigWithAbsentWhitelistMustThrowException() throws Ex
@Test
public void permissioningConfigWithUnrecognizedKeyMustThrowException() throws Exception {
final URL configFile = Resources.getResource(PERMISSIONING_CONFIG_UNRECOGNIZED_KEY);
final Path toml = Files.createTempFile("toml", "");
Files.write(toml, Resources.toByteArray(configFile));
final Path toml = createTempFile("toml", Resources.toByteArray(configFile));

final Throwable thrown = catchThrowable(() -> permissioningConfig(toml));

Expand All @@ -167,7 +161,7 @@ public void permissioningConfigWithUnrecognizedKeyMustThrowException() throws Ex
@Test
public void permissioningConfigWithEmptyFileMustThrowException() throws Exception {
// write an empty file
final Path toml = Files.createTempFile("toml", "");
final Path toml = createTempFile("toml", "".getBytes(UTF_8));

final Throwable thrown = catchThrowable(() -> permissioningConfig(toml));

Expand All @@ -177,8 +171,7 @@ public void permissioningConfigWithEmptyFileMustThrowException() throws Exceptio
@Test
public void permissioningConfigFromFileMustSetFilePath() throws Exception {
final URL configFile = Resources.getResource(PERMISSIONING_CONFIG_VALID);
final Path toml = Files.createTempFile("toml", "");
Files.write(toml, Resources.toByteArray(configFile));
final Path toml = createTempFile("toml", Resources.toByteArray(configFile));

PermissioningConfiguration permissioningConfiguration =
PermissioningConfigurationBuilder.permissioningConfigurationFromToml(
Expand Down Expand Up @@ -213,4 +206,11 @@ private PermissioningConfiguration permissioningConfig(final Path toml) throws E
return PermissioningConfigurationBuilder.permissioningConfiguration(
toml.toAbsolutePath().toString(), true, true);
}

private Path createTempFile(final String filename, final byte[] contents) throws IOException {
final Path file = Files.createTempFile(filename, "");
Files.write(file, contents);
file.toFile().deleteOnExit();
return file;
}
}
Expand Up @@ -43,6 +43,7 @@ public class WhitelistPersistorTest {
public void setUp() throws IOException {
List<String> lines = Lists.newArrayList(nodesWhitelist, accountsWhitelist);
tempFile = File.createTempFile("test", "test");
tempFile.deleteOnExit();
Files.write(tempFile.toPath(), lines, StandardOpenOption.WRITE, StandardOpenOption.CREATE);
whitelistPersistor = new WhitelistPersistor(tempFile.getAbsolutePath());
}
Expand Down

0 comments on commit 67cedcc

Please sign in to comment.