.splitMultilinedString(Language.INSTANCE.localizeWithReplace("tools.networkcheckerpopup",
App.settings.getServers().size() * 20 + " MB.<br/><br/>"), 75, "<br>") + "</p></html>",
Language.INSTANCE.localize("tools.networkchecker"), JOptionPane.DEFAULT_OPTION,
JOptionPane.ERROR_MESSAGE, null, options, options[0]);
if (ret == 0) {
final ProgressDialog dialog = new ProgressDialog(Language.INSTANCE.localize("tools.networkchecker"),
App.settings.getServers().size(), Language.INSTANCE.localize("tools.networkchecker" + "" +
".running"), "Network Checker Tool Cancelled!");
dialog.addThread(new Thread() {
@Override
public void run() {
dialog.setTotalTasksToDo(App.settings.getServers().size() * 5);
StringBuilder results = new StringBuilder();
// Ping Test
for (Server server : App.settings.getServers()) {
results.append("Ping results to " + server.getHost() + " was " + Utils.pingAddress(server
.getHost()) + "\n\n----------------\n\n");
dialog.doneTask();
results.append("Tracert to " + server.getHost() + " was " + Utils.traceRoute("www.creeperrepo.net"));
dialog.doneTask();
}
// Response Code Test
for (Server server : App.settings.getServers()) {
Downloadable download = new Downloadable(server.getFileURL("launcher/json/hashes.json"), false);
results.append(String.format("Response code to %s was %d\n\n----------------\n\n",
server.getHost(), download.getResponseCode()));
dialog.doneTask();
}
// Ping Pong Test
for (Server server : App.settings.getServers()) {
Downloadable download = new Downloadable(server.getFileURL("ping"), false);
results.append(String.format("Response to ping on %s was %s\n\n----------------\n\n",
server.getHost(), download.getContents()));
dialog.doneTask();
}
// Speed Test
for (Server server : App.settings.getServers()) {
File file = new File(App.settings.getTempDir(), "20MB.test");
if (file.exists()) {
Utils.delete(file);
}
long started = System.currentTimeMillis();
Downloadable download = new Downloadable(server.getFileURL("20MB.test"), file);
download.download(false);
long timeTaken = System.currentTimeMillis() - started;
float bps = file.length() / (timeTaken / 1000);
float kbps = bps / 1024;
float mbps = kbps / 1024;
String speed = (mbps < 1 ? (kbps < 1 ? String.format("%.2f B/s",
bps) : String.format("%.2f KB/s", kbps)) : String.format("%.2f MB/s", mbps));
results.append(String.format("Download speed to %s was %s, " +
"" + "taking %.2f seconds to download 20MB\n\n----------------\n\n",
server.getHost(), speed, (timeTaken / 1000.0)));
dialog.doneTask();
}
String result = Utils.uploadPaste("ATLauncher Network Test Log", results.toString());
if (result.contains(Constants.PASTE_CHECK_URL)) {
LogManager.info("Network Test has finished running, you can view the results at " + result);
} else {
LogManager.error("Network Test failed to submit to ATLauncher!");
dialog.setReturnValue(false);
}
dialog.doneTask();
dialog.setReturnValue(true);
dialog.close();
}
});
dialog.start();
if (dialog.getReturnValue() == null || !(Boolean) dialog.getReturnValue()) {
LogManager.error("Network Test failed to run!");
} else {
LogManager.info("Network Test ran and submitted to ATLauncher!");
String[] options2 = {Language.INSTANCE.localize("common.ok")};
JOptionPane.showOptionDialog(App.settings.getParent(), "<html><p align=\"center\">" + Language