forked from Qortal/qortal
Added automated test to ensure that the core's default bootstrap hosts are functional.
Whilst not strictly a unit test, this should allow issues with the core's bootstrap servers to be caught quickly.
This commit is contained in:
parent
13eff43b87
commit
268f02b5c3
@ -17,6 +17,8 @@ import org.qortal.utils.NTP;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.NoSuchFileException;
|
import java.nio.file.NoSuchFileException;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
@ -206,6 +208,37 @@ public class BootstrapTests extends Common {
|
|||||||
assertEquals(uniqueHosts.size(), Arrays.asList(bootstrapHosts).size());
|
assertEquals(uniqueHosts.size(), Arrays.asList(bootstrapHosts).size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testBootstrapHosts() throws IOException {
|
||||||
|
String[] bootstrapHosts = Settings.getInstance().getBootstrapHosts();
|
||||||
|
String[] bootstrapTypes = { "archive", "toponly" };
|
||||||
|
|
||||||
|
for (String host : bootstrapHosts) {
|
||||||
|
for (String type : bootstrapTypes) {
|
||||||
|
String bootstrapFilename = String.format("bootstrap-%s.7z", type);
|
||||||
|
String bootstrapUrl = String.format("%s/%s", host, bootstrapFilename);
|
||||||
|
|
||||||
|
// Make a HEAD request to check the status of each bootstrap file
|
||||||
|
URL url = new URL(bootstrapUrl);
|
||||||
|
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||||
|
connection.setRequestMethod("HEAD");
|
||||||
|
connection.connect();
|
||||||
|
long fileSize = connection.getContentLengthLong();
|
||||||
|
long lastModified = connection.getLastModified();
|
||||||
|
connection.disconnect();
|
||||||
|
|
||||||
|
// Ensure the bootstrap exists and has a size greated than 100MiB
|
||||||
|
System.out.println(String.format("%s %s size is %d bytes", host, type, fileSize));
|
||||||
|
assertTrue("Bootstrap size must be at least 100MiB", fileSize > 100*1024*1024L);
|
||||||
|
|
||||||
|
// Ensure the bootstrap has been published recently (in the last 3 days)
|
||||||
|
long minimumLastMofifiedTimestamp = NTP.getTime() - (3 * 24 * 60 * 60 * 1000L);
|
||||||
|
System.out.println(String.format("%s %s last modified timestamp is %d", host, type, lastModified));
|
||||||
|
assertTrue("Bootstrap last modified date must be in the last 3 days", lastModified > minimumLastMofifiedTimestamp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void deleteBootstraps() throws IOException {
|
private void deleteBootstraps() throws IOException {
|
||||||
try {
|
try {
|
||||||
Path archivePath = Paths.get(String.format("%s%s", Settings.getInstance().getBootstrapFilenamePrefix(), "bootstrap-archive.7z"));
|
Path archivePath = Paths.get(String.format("%s%s", Settings.getInstance().getBootstrapFilenamePrefix(), "bootstrap-archive.7z"));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user