[or-cvs] [ernie/master 3/4] No need to make stats directory configurable.

karsten at torproject.org karsten at torproject.org
Sat Feb 27 21:39:02 UTC 2010


Author: Karsten Loesing <karsten.loesing at gmx.net>
Date: Sat, 27 Feb 2010 11:23:38 +0100
Subject: No need to make stats directory configurable.
Commit: 8b493d2d1e8bc190efa1607bcf91d55eb2035386

---
 src/ArchiveWriter.java             |   45 ++++++++---------
 src/BridgeSnapshotReader.java      |   24 ++++-----
 src/BridgeStatsFileHandler.java    |   85 ++++++++++++++++----------------
 src/ConsensusStatsFileHandler.java |   93 ++++++++++++++++++------------------
 src/DirreqStatsFileHandler.java    |   47 ++++++++----------
 src/GetTorProcessor.java           |   12 ++--
 src/Main.java                      |   21 ++++-----
 src/RelayDescriptorParser.java     |   54 +++++++++++----------
 src/TorperfProcessor.java          |   48 +++++++++---------
 9 files changed, 210 insertions(+), 219 deletions(-)

diff --git a/src/ArchiveWriter.java b/src/ArchiveWriter.java
index 4d971e7..f13e8e8 100644
--- a/src/ArchiveWriter.java
+++ b/src/ArchiveWriter.java
@@ -6,18 +6,15 @@ import org.apache.commons.codec.digest.*;
 import org.apache.commons.codec.binary.*;
 
 public class ArchiveWriter {
-  private String statsDir;
   private SortedSet<String> v3DirectoryAuthorities;
   private File missingDescriptorsFile;
   private SortedSet<String> missingDescriptors;
   private boolean missingDescriptorsFileModified = false;
   private Logger logger;
-  public ArchiveWriter(String statsDir,
-      SortedSet<String> v3DirectoryAuthorities) {
-    this.statsDir = statsDir;
+  public ArchiveWriter(SortedSet<String> v3DirectoryAuthorities) {
     this.v3DirectoryAuthorities = v3DirectoryAuthorities;
-    this.missingDescriptorsFile = new File(statsDir
-        + "/archive-writer-parse-history");
+    this.missingDescriptorsFile = new File(
+        "stats/archive-writer-parse-history");
     this.logger = Logger.getLogger(RelayDescriptorParser.class.getName());
     SimpleDateFormat parseFormat =
         new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -30,8 +27,8 @@ public class ArchiveWriter {
         new SimpleDateFormat("yyyy/MM/");
     descriptorFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
     if (this.missingDescriptorsFile.exists()) {
-      this.logger.info("Reading file " + statsDir
-          + "/archive-writer-parse-history...");
+      this.logger.info("Reading file "
+          + this.missingDescriptorsFile.getAbsolutePath() + "...");
       try {
         BufferedReader br = new BufferedReader(new FileReader(
             this.missingDescriptorsFile));
@@ -108,16 +105,18 @@ public class ArchiveWriter {
           }
         }
         br.close();
-        this.logger.info("Finished reading file " + statsDir
-            + "/archive-writer-parse-history");
+        this.logger.info("Finished reading file "
+            + this.missingDescriptorsFile.getAbsolutePath() + ".");
       } catch (ParseException e) {
-        this.logger.log(Level.WARNING, "Failed reading file " + statsDir
-            + "/archive-writer-parse-history! This means that we might "
-            + "forget to dowload descriptors we are missing.", e);
+        this.logger.log(Level.WARNING, "Failed reading file "
+            + this.missingDescriptorsFile.getAbsolutePath()
+            + "! This means that we might forget to dowload descriptors "
+            + "we are missing.", e);
       } catch (IOException e) {
-        this.logger.log(Level.WARNING, "Failed reading file " + statsDir
-            + "/archive-writer-parse-history! This means that we might "
-            + "forget to dowload descriptors we are missing.", e);
+        this.logger.log(Level.WARNING, "Failed reading file "
+            + this.missingDescriptorsFile.getAbsolutePath()
+            + "! This means that we might forget to dowload descriptors "
+            + "we are missing.", e);
       }
     }
     // add current consensus and votes to list
@@ -467,20 +466,20 @@ public class ArchiveWriter {
   public void writeFile() {
     if (this.missingDescriptorsFileModified) {
       try {
-        this.logger.info("Writing file " + this.statsDir
-            + "/archive-writer-parse-history...");
-        new File(this.statsDir).mkdirs();
+        this.logger.info("Writing file "
+            + this.missingDescriptorsFile.getAbsolutePath() + "...");
+        this.missingDescriptorsFile.getParentFile().mkdirs();
         BufferedWriter bw = new BufferedWriter(new FileWriter(
             this.missingDescriptorsFile));
         for (String line : this.missingDescriptors) {
           bw.write(line + "\n");
         }
         bw.close();
-        this.logger.info("Finished writing file " + this.statsDir
-            + "/archive-writer-parse-history.");
+        this.logger.info("Finished writing file "
+            + this.missingDescriptorsFile.getAbsolutePath() + ".");
       } catch (IOException e) {
-        this.logger.log(Level.WARNING, "Failed writing " + this.statsDir
-            + "/archive-writer-parse-history!", e);
+        this.logger.log(Level.WARNING, "Failed writing "
+            + this.missingDescriptorsFile.getAbsolutePath() + "!", e);
       }
     }
   }
diff --git a/src/BridgeSnapshotReader.java b/src/BridgeSnapshotReader.java
index 1f87b44..8c47bee 100644
--- a/src/BridgeSnapshotReader.java
+++ b/src/BridgeSnapshotReader.java
@@ -10,19 +10,16 @@ import org.apache.commons.compress.archivers.tar.*;
  */
 public class BridgeSnapshotReader {
   public BridgeSnapshotReader(BridgeDescriptorParser bdp,
-      String bridgeDirectoriesDir, String statsDirectory,
-      Set<String> countries) {
+      String bridgeDirectoriesDir, Set<String> countries) {
     Logger logger =
         Logger.getLogger(BridgeSnapshotReader.class.getName());
     SortedSet<String> parsed = new TreeSet<String>();
     File bdDir = new File(bridgeDirectoriesDir);
-    File pbdFile = new File(statsDirectory
-         + "/parsed-bridge-directories");
+    File pbdFile = new File("stats/parsed-bridge-directories");
     boolean modified = false;
     if (bdDir.exists()) {
       if (pbdFile.exists()) {
-        logger.info("Reading file " + statsDirectory
-            + "/parsed-bridge-directories...");
+        logger.info("Reading file " + pbdFile.getAbsolutePath() + "...");
         try {
           BufferedReader br = new BufferedReader(new FileReader(pbdFile));
           String line = null;
@@ -30,11 +27,11 @@ public class BridgeSnapshotReader {
             parsed.add(line);
           }
           br.close();
-          logger.info("Finished reading file " + statsDirectory
-              + "/parsed-bridge-directories.");
+          logger.info("Finished reading file "
+              + pbdFile.getAbsolutePath() + ".");
         } catch (IOException e) {
           logger.log(Level.WARNING, "Failed reading file "
-              + statsDirectory + "/parsed-bridge-directories!", e);
+              + pbdFile.getAbsolutePath() + "!", e);
           return;
         }
       }
@@ -100,18 +97,19 @@ public class BridgeSnapshotReader {
         logger.warning(sb.toString());
       }
       if (!parsed.isEmpty() && modified) {
-        logger.info("Writing file " + pbdFile + "...");
+        logger.info("Writing file " + pbdFile.getAbsolutePath() + "...");
         try {
-          new File(statsDirectory).mkdirs();
+          pbdFile.getParentFile().mkdirs();
           BufferedWriter bw = new BufferedWriter(new FileWriter(pbdFile));
           for (String f : parsed) {
             bw.append(f + "\n");
           }
           bw.close();
-          logger.info("Finished writing file " + pbdFile + ".");
+          logger.info("Finished writing file " + pbdFile.getAbsolutePath()
+              + ".");
         } catch (IOException e) {
           logger.log(Level.WARNING, "Failed writing file "
-              + pbdFile + "!", e);
+              + pbdFile.getAbsolutePath() + "!", e);
         }
       }
     }
diff --git a/src/BridgeStatsFileHandler.java b/src/BridgeStatsFileHandler.java
index fa957e0..2d1fa88 100644
--- a/src/BridgeStatsFileHandler.java
+++ b/src/BridgeStatsFileHandler.java
@@ -6,9 +6,8 @@ import java.util.logging.*;
  *
  */
 public class BridgeStatsFileHandler {
-  private String statsDir;
+  private File bridgeStatsRawFile;
   private File bridgeStatsFile;
-  private File bridgeStatsDateFile;
   private File hashedRelayIdentitiesFile;
   private SortedSet<String> countries;
   private SortedSet<String> hashedRelays = new TreeSet<String>();
@@ -16,23 +15,21 @@ public class BridgeStatsFileHandler {
   private boolean hashedRelaysModified;
   private boolean observationsModified;
   private Logger logger;
-  public BridgeStatsFileHandler(String statsDir,
-      SortedSet<String> countries) {
-    this.statsDir = statsDir;
+  public BridgeStatsFileHandler(SortedSet<String> countries) {
+    this.bridgeStatsRawFile = new File("stats/bridge-stats-raw");
+    this.bridgeStatsFile = new File("stats/bridge-stats");
+    this.hashedRelayIdentitiesFile = new File(
+        "stats/hashed-relay-identities");
     this.countries = countries;
-    this.bridgeStatsFile = new File(statsDir + "/bridge-stats-raw");
-    this.bridgeStatsDateFile = new File(statsDir + "/bridge-stats");
     this.observations = new TreeMap<String, String>();
-    this.hashedRelayIdentitiesFile = new File(statsDir
-        + "/hashed-relay-identities");
     this.logger =
         Logger.getLogger(BridgeStatsFileHandler.class.getName());
-    if (this.bridgeStatsFile.exists()) {
-      this.logger.info("Reading file " + statsDir
-          + "/bridge-stats-raw...");
+    if (this.bridgeStatsRawFile.exists()) {
+      this.logger.info("Reading file "
+          + this.bridgeStatsRawFile.getAbsolutePath() + "...");
       try {
         BufferedReader br = new BufferedReader(new FileReader(
-            this.bridgeStatsFile));
+            this.bridgeStatsRawFile));
         String line = br.readLine();
         if (line != null) {
           String[] headers = line.split(",");
@@ -53,16 +50,16 @@ public class BridgeStatsFileHandler {
         }
         br.close();
         this.observationsModified = false;
-        this.logger.info("Finished reading file " + statsDir
-            + "/bridge-stats-raw.");
+        this.logger.info("Finished reading file "
+            + this.bridgeStatsRawFile.getAbsolutePath() + ".");
       } catch (IOException e) {
-        this.logger.log(Level.WARNING, "Failed reading file " + statsDir
-            + "/bridge-stats-raw!", e);
+        this.logger.log(Level.WARNING, "Failed reading file "
+            + this.bridgeStatsRawFile.getAbsolutePath() + "!", e);
       }
     }
     if (this.hashedRelayIdentitiesFile.exists()) {
-      this.logger.info("Reading file " + statsDir
-          + "/hashed-relay-identities...");
+      this.logger.info("Reading file "
+          + this.hashedRelayIdentitiesFile.getAbsolutePath() + "...");
       try {
         BufferedReader br = new BufferedReader(new FileReader(
             this.hashedRelayIdentitiesFile));
@@ -72,11 +69,11 @@ public class BridgeStatsFileHandler {
         }
         br.close();
         this.hashedRelaysModified = false;
-        this.logger.info("Finished reading file " + statsDir
-            + "/hashed-relay-identities.");
+        this.logger.info("Finished reading file "
+            + this.hashedRelayIdentitiesFile.getAbsolutePath() + ".");
       } catch (IOException e) {
-        this.logger.log(Level.WARNING, "Failed reading file " + statsDir
-            + "/hashed-relay-identities!", e);
+        this.logger.log(Level.WARNING, "Failed reading file "
+            + this.hashedRelayIdentitiesFile.getAbsolutePath() + "!", e);
       }
     }
   }
@@ -107,29 +104,29 @@ public class BridgeStatsFileHandler {
   public void writeFile() {
     if (!this.hashedRelays.isEmpty() && this.hashedRelaysModified) {
       try {
-        this.logger.info("Writing file " + this.statsDir
-            + "/hashed-relay-identities...");
-        new File(this.statsDir).mkdirs();
+        this.logger.info("Writing file "
+            + this.hashedRelayIdentitiesFile.getAbsolutePath() + "...");
+        this.hashedRelayIdentitiesFile.getParentFile().mkdirs();
         BufferedWriter bwRelayIdentities = new BufferedWriter(
             new FileWriter(this.hashedRelayIdentitiesFile));
         for (String hashedRelay : this.hashedRelays) {
           bwRelayIdentities.append(hashedRelay + "\n");
         }
         bwRelayIdentities.close();
-        this.logger.info("Finished writing file " + this.statsDir
-            + "/hashed-relay-identities.");
+        this.logger.info("Finished writing file "
+            + this.hashedRelayIdentitiesFile.getAbsolutePath() + ".");
       } catch (IOException e) {
-        this.logger.log(Level.WARNING, "Failed writing " + this.statsDir
-            + "/hashed-relay-identities!", e);
+        this.logger.log(Level.WARNING, "Failed writing "
+            + this.hashedRelayIdentitiesFile.getAbsolutePath() + "!", e);
       }
     }
     if (!this.observations.isEmpty() && this.observationsModified) {
       try {
-        this.logger.info("Writing file " + this.statsDir
-            + "/bridge-stats-raw...");
-        new File(this.statsDir).mkdirs();
+        this.logger.info("Writing file "
+            + this.bridgeStatsRawFile.getAbsolutePath() + "...");
+        this.bridgeStatsRawFile.getParentFile().mkdirs();
         BufferedWriter bwBridgeStats = new BufferedWriter(
-            new FileWriter(this.bridgeStatsFile));
+            new FileWriter(this.bridgeStatsRawFile));
         bwBridgeStats.append("bridge,date,time");
         for (String c : this.countries) {
           bwBridgeStats.append("," + c);
@@ -156,12 +153,13 @@ public class BridgeStatsFileHandler {
           }
         }
         bwBridgeStats.close();
-        this.logger.info("Finished writing file " + this.statsDir
-            + "/bridge-stats-raw.");
-        this.logger.info("Writing file " + this.statsDir
-            + "/bridge-stats...");
+        this.logger.info("Finished writing file "
+            + this.bridgeStatsRawFile.getAbsolutePath() + ".");
+        this.logger.info("Writing file "
+            + this.bridgeStatsRawFile.getAbsolutePath() + "...");
+        this.bridgeStatsFile.getParentFile().mkdirs();
         BufferedWriter bwBridgeStatsDate = new BufferedWriter(
-            new FileWriter(this.bridgeStatsDateFile));
+            new FileWriter(this.bridgeStatsFile));
         bwBridgeStatsDate.append("date");
         for (String c : this.countries) {
           bwBridgeStatsDate.append("," + c);
@@ -188,11 +186,12 @@ public class BridgeStatsFileHandler {
           bwBridgeStatsDate.append("\n");
         }
         bwBridgeStatsDate.close();
-        this.logger.info("Finished writing file " + this.statsDir
-            + "/bridge-stats.");
+        this.logger.info("Finished writing file "
+            + this.bridgeStatsFile.getAbsolutePath() + ".");
       } catch (IOException e) {
-        this.logger.log(Level.WARNING, "Failed writing " + this.statsDir
-            + "/bridge-stats[-raw]!", e);
+        this.logger.log(Level.WARNING, "Failed writing "
+            + this.bridgeStatsRawFile.getAbsolutePath() + " or "
+            + this.bridgeStatsFile.getAbsolutePath() + "!", e);
       }
     }
   }
diff --git a/src/ConsensusStatsFileHandler.java b/src/ConsensusStatsFileHandler.java
index 15f9169..e86d1b8 100644
--- a/src/ConsensusStatsFileHandler.java
+++ b/src/ConsensusStatsFileHandler.java
@@ -7,7 +7,6 @@ import java.util.logging.*;
  *
  */
 public class ConsensusStatsFileHandler {
-  private String statsDir;
   private File consensusStatsRawFile;
   private File bridgeConsensusStatsRawFile;
   private File consensusStatsFile;
@@ -20,20 +19,18 @@ public class ConsensusStatsFileHandler {
   private boolean consensusResultsModified;
   private boolean bridgeConsensusResultsModified;
   private Logger logger;
-  public ConsensusStatsFileHandler(String statsDir) {
-    this.statsDir = statsDir;
+  public ConsensusStatsFileHandler() {
+    this.consensusStatsRawFile = new File("stats/consensus-stats-raw");
+    this.bridgeConsensusStatsRawFile = new File(
+        "stats/bridge-consensus-stats-raw");
+    this.consensusStatsFile = new File("stats/consensus-stats");
     this.consensusResults = new TreeMap<String, String>();
-    this.consensusStatsRawFile = new File(statsDir
-        + "/consensus-stats-raw");
     this.bridgeConsensusResults = new TreeMap<String, String>();
-    this.bridgeConsensusStatsRawFile = new File(statsDir
-        + "/bridge-consensus-stats-raw");
-    this.consensusStatsFile = new File(statsDir + "/consensus-stats");
     this.logger =
         Logger.getLogger(ConsensusStatsFileHandler.class.getName());
     if (this.consensusStatsRawFile.exists()) {
-      this.logger.info("Reading file " + statsDir
-          + "/consensus-stats-raw...");
+      this.logger.info("Reading file "
+          + this.consensusStatsRawFile.getAbsolutePath() + "...");
       try {
         BufferedReader br = new BufferedReader(new FileReader(
             this.consensusStatsRawFile));
@@ -42,16 +39,16 @@ public class ConsensusStatsFileHandler {
           this.consensusResults.put(line.split(",")[0], line);
         }
         br.close();
-        this.logger.info("Finished reading file " + statsDir
-            + "/consensus-stats-raw.");
+        this.logger.info("Finished reading file "
+            + this.consensusStatsRawFile.getAbsolutePath() + ".");
       } catch (IOException e) {
-        this.logger.log(Level.WARNING, "Failed reading file " + statsDir
-            + "/consensus-stats-raw!", e);
+        this.logger.log(Level.WARNING, "Failed reading file "
+            + this.consensusStatsRawFile.getAbsolutePath() + "!", e);
       }
     }
     if (this.bridgeConsensusStatsRawFile.exists()) {
-      this.logger.info("Reading file " + statsDir
-          + "/bridge-consensus-stats-raw...");
+      this.logger.info("Reading file "
+          + this.bridgeConsensusStatsRawFile.getAbsolutePath() + "...");
       try {
         BufferedReader br = new BufferedReader(new FileReader(
             this.bridgeConsensusStatsRawFile));
@@ -60,16 +57,17 @@ public class ConsensusStatsFileHandler {
           bridgeConsensusResults.put(line.split(",")[0], line);
         }
         br.close();
-        this.logger.info("Finished reading file " + statsDir
-            + "/bridge-consensus-stats-raw.");
+        this.logger.info("Finished reading file "
+            + this.bridgeConsensusStatsRawFile.getAbsolutePath() + ".");
       } catch (IOException e) {
-        this.logger.log(Level.WARNING, "Failed reading file " + statsDir
-            + "/bridge-consensus-stats-raw!", e);
+        this.logger.log(Level.WARNING, "Failed reading file "
+            + this.bridgeConsensusStatsRawFile.getAbsolutePath() + "!",
+            e);
       }
     }
     if (this.consensusStatsFile.exists()) {
-      this.logger.info("Reading file " + statsDir
-          + "/consensus-stats...");
+      this.logger.info("Reading file "
+          + this.consensusStatsFile.getAbsolutePath() + "...");
       try {
         BufferedReader br = new BufferedReader(new FileReader(
             this.consensusStatsFile));
@@ -92,18 +90,18 @@ public class ConsensusStatsFileHandler {
           }
         }
         br.close();
-        this.logger.info("Finished reading file " + statsDir
-            + "/consensus-stats.");
+        this.logger.info("Finished reading file "
+            + this.consensusStatsFile.getAbsolutePath() + ".");
       } catch (IOException e) {
-        this.logger.log(Level.WARNING, "Failed reading file " + statsDir
-            + "/consensus-stats.", e);
+        this.logger.log(Level.WARNING, "Failed reading file "
+            + this.consensusStatsFile.getAbsolutePath() + "!", e);
       }
     }
   }
   public void addConsensusResults(String validAfter, int exit, int fast,
       int guard, int running, int stable) throws IOException {
-    this.consensusResults.put(validAfter, validAfter + "," + exit + "," + fast
-        + "," + guard + "," + running + "," + stable);
+    this.consensusResults.put(validAfter, validAfter + "," + exit + ","
+        + fast + "," + guard + "," + running + "," + stable);
     this.consensusResultsModified = true;
   }
   public void addBridgeConsensusResults(String published, int running)
@@ -119,10 +117,10 @@ public class ConsensusStatsFileHandler {
       BufferedWriter bwConsensusStatsRaw = null;
       if (!this.consensusResults.isEmpty()) {
         if (this.consensusResultsModified) {
-          this.logger.info("Writing file " + this.statsDir
-              + "/consensus-stats-raw...");
+          this.logger.info("Writing file "
+              + this.consensusStatsRawFile.getAbsolutePath() + "...");
           writeConsensusStatsRaw = true;
-          new File(this.statsDir).mkdirs();
+          this.consensusStatsRawFile.getParentFile().mkdirs();
           bwConsensusStatsRaw = new BufferedWriter(
               new FileWriter(this.consensusStatsRawFile));
         }
@@ -174,23 +172,24 @@ public class ConsensusStatsFileHandler {
         }
         if (writeConsensusStatsRaw) {
           bwConsensusStatsRaw.close();
-          this.logger.info("Finished writing file " + this.statsDir
-              + "/consensus-stats-raw.");
+          this.logger.info("Finished writing file "
+              + this.consensusStatsRawFile.getAbsolutePath() + ".");
         }
       }
     } catch (IOException e) {
       this.logger.log(Level.WARNING, "Failed writing file "
-          + this.statsDir + "/consensus-stats-raw!", e);
+          + this.consensusStatsRawFile.getAbsolutePath() + "!", e);
       return;
     }
     try {
       BufferedWriter bwBridgeConsensusStatsRaw = null;
       if (!this.bridgeConsensusResults.isEmpty()) {
         if (this.bridgeConsensusResultsModified) {
-          this.logger.info("Writing file " + this.statsDir
-              + "/bridge-consensus-stats-raw...");
+          this.logger.info("Writing file "
+              + this.bridgeConsensusStatsRawFile.getAbsolutePath()
+              + "...");
           writeBridgeConsensusStatsRaw = true;
-          new File(this.statsDir).mkdirs();
+          this.bridgeConsensusStatsRawFile.getParentFile().mkdirs();
           bwBridgeConsensusStatsRaw = new BufferedWriter(
               new FileWriter(this.bridgeConsensusStatsRawFile));
         }
@@ -227,20 +226,20 @@ public class ConsensusStatsFileHandler {
         }
         if (writeBridgeConsensusStatsRaw) {
           bwBridgeConsensusStatsRaw.close();
-          this.logger.info("Finished writing file " + this.statsDir
-              + "/bridge-consensus-stats-raw.");
+          this.logger.info("Finished writing file "
+              + this.bridgeConsensusStatsRawFile.getAbsolutePath() + ".");
         }
       }
     } catch (IOException e) {
       this.logger.log(Level.WARNING, "Failed writing file "
-          + this.statsDir + "/bridge-consensus-stats-raw!", e);
+          + this.bridgeConsensusStatsRawFile.getAbsolutePath() + "!", e);
     }
     if (writeConsensusStats &&
         !(this.csAggr.isEmpty() && this.bcsAggr.isEmpty())) {
-      this.logger.info("Writing file " + this.statsDir
-          + "/consensus-stats...");
+      this.logger.info("Writing file "
+          + this.consensusStatsFile.getAbsolutePath() + "...");
       try {
-        new File(this.statsDir).mkdirs();
+        this.consensusStatsFile.getParentFile().mkdirs();
         BufferedWriter bwConsensusStats = new BufferedWriter(
             new FileWriter(this.consensusStatsFile));
         bwConsensusStats.append("date,exit,fast,guard,running,stable,"
@@ -278,14 +277,14 @@ public class ConsensusStatsFileHandler {
           currentDate += 86400000L;
         }
         bwConsensusStats.close();
-        this.logger.info("Finished writing file " + this.statsDir
-            + "/consensus-stats.");
+        this.logger.info("Finished writing file "
+            + this.consensusStatsFile.getAbsolutePath() + ".");
       } catch (IOException e) {
         this.logger.log(Level.WARNING, "Failed writing file "
-            + this.statsDir + "/consensus-stats!", e);
+            + this.consensusStatsFile.getAbsolutePath() + "!", e);
       } catch (ParseException e) {
         this.logger.log(Level.WARNING, "Failed writing file "
-            + this.statsDir + "/consensus-stats!", e);
+            + this.consensusStatsFile.getAbsolutePath() + "!", e);
       }
     }
   }
diff --git a/src/DirreqStatsFileHandler.java b/src/DirreqStatsFileHandler.java
index c9eba5e..a815701 100644
--- a/src/DirreqStatsFileHandler.java
+++ b/src/DirreqStatsFileHandler.java
@@ -7,22 +7,20 @@ import java.text.*;
  *
  */
 public class DirreqStatsFileHandler {
-  private String statsDir;
   private SortedSet<String> countries;
   private File dirreqStatsFile;
   private SortedMap<String, String> observations;
   private boolean modified;
   private Logger logger;
-  public DirreqStatsFileHandler(String statsDir,
-      SortedSet<String> countries) {
-    this.statsDir = statsDir;
+  public DirreqStatsFileHandler(SortedSet<String> countries) {
+    this.dirreqStatsFile = new File("stats/dirreq-stats");
     this.countries = countries;
-    this.dirreqStatsFile = new File(statsDir + "/dirreq-stats");
     this.observations = new TreeMap<String, String>();
     this.logger =
         Logger.getLogger(DirreqStatsFileHandler.class.getName());
     if (this.dirreqStatsFile.exists()) {
-      this.logger.info("Reading file " + statsDir + "/dirreq-stats...");
+      this.logger.info("Reading file "
+          + this.dirreqStatsFile.getAbsolutePath() + "...");
       try {
         BufferedReader br = new BufferedReader(new FileReader(
             this.dirreqStatsFile));
@@ -47,11 +45,11 @@ public class DirreqStatsFileHandler {
           }
         }
         br.close();
-        this.logger.info("Finished reading file " + statsDir
-            + "/dirreq-stats...");
+        this.logger.info("Finished reading file "
+            + this.dirreqStatsFile.getAbsolutePath() + ".");
       } catch (IOException e) {
-        this.logger.log(Level.WARNING, "Failed reading file " + statsDir
-            + "/dirreq-stats!", e);
+        this.logger.log(Level.WARNING, "Failed reading file "
+            + this.dirreqStatsFile.getAbsolutePath() + "!", e);
       }
     }
   }
@@ -67,14 +65,11 @@ public class DirreqStatsFileHandler {
     this.modified = true;
   }
   public void writeFile() {
-    if (!this.modified) {
-      return;
-    }
-    try {
-      if (!this.observations.isEmpty()) {
-        this.logger.info("Writing file " + this.statsDir
-            + "/dirreq-stats...");
-        new File(this.statsDir).mkdirs();
+    if (this.modified && !this.observations.isEmpty()) {
+      try {
+        this.logger.info("Writing file "
+            + this.dirreqStatsFile.getAbsolutePath() + "...");
+        this.dirreqStatsFile.getParentFile().mkdirs();
         BufferedWriter bwDirreqStats = new BufferedWriter(
             new FileWriter(this.dirreqStatsFile));
         bwDirreqStats.append("directory,date");
@@ -105,15 +100,15 @@ public class DirreqStatsFileHandler {
           bwDirreqStats.append(observation + "\n");
         }
         bwDirreqStats.close();
-        this.logger.info("Finished writing file " + this.statsDir
-            + "/dirreq-stats.");
+        this.logger.info("Finished writing file "
+            + this.dirreqStatsFile.getAbsolutePath() + ".");
+      } catch (IOException e) {
+        this.logger.log(Level.WARNING, "Failed writing file "
+            + this.dirreqStatsFile.getAbsolutePath() + "!", e);
+      } catch (ParseException e) {
+        this.logger.log(Level.WARNING, "Failed writing file "
+            + this.dirreqStatsFile.getAbsolutePath() + "!", e);
       }
-    } catch (IOException e) {
-      this.logger.log(Level.WARNING, "Failed writing file "
-          + this.statsDir + "/dirreq-stats!", e);
-    } catch (ParseException e) {
-      this.logger.log(Level.WARNING, "Failed writing file "
-          + this.statsDir + "/dirreq-stats!", e);
     }
   }
 }
diff --git a/src/GetTorProcessor.java b/src/GetTorProcessor.java
index 910eea4..e8a6558 100644
--- a/src/GetTorProcessor.java
+++ b/src/GetTorProcessor.java
@@ -4,7 +4,7 @@ import java.util.*;
 import java.util.logging.*;
 
 public class GetTorProcessor {
-  public GetTorProcessor(String statsDirectory, String gettorStatsUrl) {
+  public GetTorProcessor(String gettorStatsUrl) {
     Logger logger = Logger.getLogger(TorperfProcessor.class.getName());
     String unparsed = null;
     try {
@@ -60,10 +60,10 @@ public class GetTorProcessor {
       return;
     }
 
-    logger.info("Writing file " + statsDirectory + "/gettor-stats...");
+    File statsFile = new File("stats/gettor-stats");
+    logger.info("Writing file " + statsFile.getAbsolutePath() + "...");
     try {
-      File statsFile = new File(statsDirectory + "/gettor-stats");
-      new File(statsDirectory).mkdirs();
+      statsFile.getParentFile().mkdirs();
       BufferedWriter bw = new BufferedWriter(new FileWriter(statsFile));
       bw.write("date");
       for (String column : columns) {
@@ -80,8 +80,8 @@ public class GetTorProcessor {
       }
       bw.close();
     } catch (IOException e) {
-      logger.log(Level.WARNING, "Failed writing " + statsDirectory
-          + "/gettor-stats!", e);
+      logger.log(Level.WARNING, "Failed writing "
+          + statsFile.getAbsolutePath() + "!", e);
     }
   }
 }
diff --git a/src/Main.java b/src/Main.java
index cc05614..6bacca9 100644
--- a/src/Main.java
+++ b/src/Main.java
@@ -29,25 +29,23 @@ public class Main {
     SortedSet<String> directories = config.getDirreqDirectories();
 
     // Prepare stats file handlers (only if we are writing stats)
-    String statsDirectory = "stats";
     ConsensusStatsFileHandler csfh = config.getWriteConsensusStats() ?
-        new ConsensusStatsFileHandler(statsDirectory) : null;
+        new ConsensusStatsFileHandler() : null;
     BridgeStatsFileHandler bsfh = config.getWriteBridgeStats() ?
-        new BridgeStatsFileHandler(statsDirectory, countries) : null;
+        new BridgeStatsFileHandler(countries) : null;
     DirreqStatsFileHandler dsfh = config.getWriteDirreqStats() ?
-        new DirreqStatsFileHandler(statsDirectory, countries) : null;
+        new DirreqStatsFileHandler(countries) : null;
 
     // Prepare relay descriptor parser (only if we are writing the
     // stats)
     RelayDescriptorParser rdp = config.getWriteConsensusStats() &&
         config.getWriteBridgeStats() && config.getWriteDirreqStats() ?
-        new RelayDescriptorParser(statsDirectory, csfh, bsfh, dsfh,
-        countries, directories) : null;
+        new RelayDescriptorParser(csfh, bsfh, dsfh, countries,
+        directories) : null;
 
     // Prepare writing relay descriptor archive to disk
     ArchiveWriter aw = config.getWriteDirectoryArchives() ?
-        new ArchiveWriter(statsDirectory,
-        config.getV3DirectoryAuthorities()) : null;
+        new ArchiveWriter(config.getV3DirectoryAuthorities()) : null;
 
     // Import/download relay descriptors from the various sources
     if (config.getImportCachedRelayDescriptors()) {
@@ -86,8 +84,7 @@ public class Main {
       new SanitizedBridgesReader(bdp, "bridges", countries);
     }
     if (config.getImportBridgeSnapshots()) {
-      new BridgeSnapshotReader(bdp, "bridge-directories",
-          statsDirectory, countries);
+      new BridgeSnapshotReader(bdp, "bridge-directories", countries);
     }
 
     // Write updated stats files to disk
@@ -102,12 +99,12 @@ public class Main {
 
     // Import and process torperf stats
     if (config.getImportWriteTorperfStats()) {
-      new TorperfProcessor(statsDirectory, "torperf");
+      new TorperfProcessor("torperf");
     }
 
     // Download and process GetTor stats
     if (config.getDownloadProcessGetTorStats()) {
-      new GetTorProcessor(statsDirectory, config.getGetTorStatsUrl());
+      new GetTorProcessor(config.getGetTorStatsUrl());
     }
 
     // Download exit list and store it to disk
diff --git a/src/RelayDescriptorParser.java b/src/RelayDescriptorParser.java
index b466103..c285d6c 100644
--- a/src/RelayDescriptorParser.java
+++ b/src/RelayDescriptorParser.java
@@ -10,8 +10,7 @@ import org.apache.commons.codec.binary.*;
  * relevant contents to the stats file handlers.
  */
 public class RelayDescriptorParser {
-  private String statsDir;
-  private File relayDescriptorParseHistory;
+  private File relayDescriptorParseHistoryFile;
   private SortedMap<String, String> lastParsedExtraInfos;
   private String lastParsedConsensus;
   private boolean relayDescriptorParseHistoryModified = false;
@@ -21,13 +20,11 @@ public class RelayDescriptorParser {
   private SortedSet<String> countries;
   private SortedSet<String> directories;
   private Logger logger;
-  public RelayDescriptorParser(String statsDir,
-      ConsensusStatsFileHandler csfh, BridgeStatsFileHandler bsfh,
-      DirreqStatsFileHandler dsfh, SortedSet<String> countries,
-      SortedSet<String> directories) {
-    this.statsDir = statsDir;
-    this.relayDescriptorParseHistory = new File(statsDir
-        + "/relay-descriptor-parse-history");
+  public RelayDescriptorParser(ConsensusStatsFileHandler csfh,
+      BridgeStatsFileHandler bsfh, DirreqStatsFileHandler dsfh,
+      SortedSet<String> countries, SortedSet<String> directories) {
+    this.relayDescriptorParseHistoryFile = new File(
+        "stats/relay-descriptor-parse-history");
     this.csfh = csfh;
     this.bsfh = bsfh;
     this.dsfh = dsfh;
@@ -36,12 +33,13 @@ public class RelayDescriptorParser {
     this.logger = Logger.getLogger(RelayDescriptorParser.class.getName());
     this.lastParsedConsensus = null;
     this.lastParsedExtraInfos = new TreeMap<String, String>();
-    if (this.relayDescriptorParseHistory.exists()) {
-      this.logger.info("Reading file " + statsDir
-          + "/relay-descriptor-parse-history...");
+    if (this.relayDescriptorParseHistoryFile.exists()) {
+      this.logger.info("Reading file "
+          + this.relayDescriptorParseHistoryFile.getAbsolutePath()
+          + "...");
       try {
         BufferedReader br = new BufferedReader(new FileReader(
-            this.relayDescriptorParseHistory));
+            this.relayDescriptorParseHistoryFile));
         String line = null;
         while ((line = br.readLine()) != null) {
           if (line.startsWith("consensus")) {
@@ -52,11 +50,13 @@ public class RelayDescriptorParser {
           }
         }
         br.close();
-        this.logger.info("Finished reading file " + statsDir
-            + "/relay-descriptor-parse-history");
+        this.logger.info("Finished reading file "
+            + this.relayDescriptorParseHistoryFile.getAbsolutePath()
+            + ".");
       } catch (IOException e) {
         this.logger.log(Level.WARNING, "Failed reading file "
-            + statsDir + "/relay-descriptor-parse-history!", e);
+            + this.relayDescriptorParseHistoryFile.getAbsolutePath()
+            + "!", e);
       }
     }
   }
@@ -175,7 +175,8 @@ public class RelayDescriptorParser {
           }
         } catch (ParseException e) {
           this.logger.log(Level.WARNING, "Failed parsing timestamp in "
-              + this.statsDir + "/relay-descriptor-parse-history!", e);
+              + this.relayDescriptorParseHistoryFile.getAbsolutePath()
+              + "!", e);
         }
       }
     }
@@ -184,11 +185,12 @@ public class RelayDescriptorParser {
   public void writeFile() {
     if (this.relayDescriptorParseHistoryModified) {
       try {
-        this.logger.info("Writing file " + this.statsDir
-            + "/relay-descriptor-parse-history...");
-        new File(this.statsDir).mkdirs();
+        this.logger.info("Writing file "
+            + this.relayDescriptorParseHistoryFile.getAbsolutePath()
+            + "...");
+        this.relayDescriptorParseHistoryFile.getParentFile().mkdirs();
         BufferedWriter bw = new BufferedWriter(new FileWriter(
-            this.relayDescriptorParseHistory));
+            this.relayDescriptorParseHistoryFile));
         bw.write("type,source,published\n");
         if (this.lastParsedConsensus != null) {
           bw.write("consensus,NA," + this.lastParsedConsensus + "\n");
@@ -199,11 +201,13 @@ public class RelayDescriptorParser {
               + "\n");
         }
         bw.close();
-        this.logger.info("Finished writing file " + this.statsDir
-            + "/relay-descriptor-parse-history.");
+        this.logger.info("Finished writing file "
+            + this.relayDescriptorParseHistoryFile.getAbsolutePath()
+            + ".");
       } catch (IOException e) {
-        this.logger.log(Level.WARNING, "Failed writing " + this.statsDir
-            + "/relay-descriptor-parse-history!", e);
+        this.logger.log(Level.WARNING, "Failed writing "
+            + this.relayDescriptorParseHistoryFile.getAbsolutePath()
+            + "!", e);
       }
     }
   }
diff --git a/src/TorperfProcessor.java b/src/TorperfProcessor.java
index b7ac752..c99d75b 100644
--- a/src/TorperfProcessor.java
+++ b/src/TorperfProcessor.java
@@ -4,35 +4,34 @@ import java.util.*;
 import java.util.logging.*;
 
 public class TorperfProcessor {
-  public TorperfProcessor(String statsDirectory,
-      String torperfDirectory) {
+  public TorperfProcessor(String torperfDirectory) {
     Logger logger = Logger.getLogger(TorperfProcessor.class.getName());
-    File rawFile = new File(statsDirectory + "/torperf-raw");
-    File statsFile = new File(statsDirectory + "/torperf-stats");
+    File rawFile = new File("stats/torperf-raw");
+    File statsFile = new File("stats/torperf-stats");
     File torperfDir = new File(torperfDirectory);
     SortedMap<String, String> rawObs = new TreeMap<String, String>();
     SortedMap<String, String> stats = new TreeMap<String, String>();
     try {
       if (rawFile.exists()) {
-        logger.info("Reading file " + statsDirectory + "/torperf-raw...");
+        logger.info("Reading file " + rawFile.getAbsolutePath() + "...");
         BufferedReader br = new BufferedReader(new FileReader(rawFile));
         String line = br.readLine(); // ignore header
         while ((line = br.readLine()) != null) {
           if (line.split(",").length != 4) {
-            logger.warning("Corrupt line in " + statsDirectory
-                + "/torperf-raw!");
+            logger.warning("Corrupt line in " + rawFile.getAbsolutePath()
+                + "!");
             break;
           }
           String key = line.substring(0, line.lastIndexOf(","));
           rawObs.put(key, line);
         }
         br.close();
-        logger.info("Finished reading file " + statsDirectory
-            + "/torperf-raw.");
+        logger.info("Finished reading file " + rawFile.getAbsolutePath()
+            + ".");
       }
       if (statsFile.exists()) {
-        logger.info("Reading file " + statsDirectory
-            + "/torperf-stats...");
+        logger.info("Reading file " + statsFile.getAbsolutePath()
+            + "...");
         BufferedReader br = new BufferedReader(new FileReader(statsFile));
         String line = br.readLine(); // ignore header
         while ((line = br.readLine()) != null) {
@@ -40,8 +39,8 @@ public class TorperfProcessor {
           stats.put(key, line);
         }
         br.close();
-        logger.info("Finished reading file " + statsDirectory
-            + "/torperf-stats.");
+        logger.info("Finished reading file " + statsFile.getAbsolutePath()
+            + ".");
       }
       if (torperfDir.exists()) {
         logger.info("Importing files in " + torperfDirectory + "/...");
@@ -89,8 +88,8 @@ public class TorperfProcessor {
             + "/.");
       }
       if (rawObs.size() > 0) {
-        logger.info("Writing file " + statsDirectory + "/torperf-raw...");
-        new File(statsDirectory).mkdirs();
+        logger.info("Writing file " + rawFile.getAbsolutePath() + "...");
+        rawFile.getParentFile().mkdirs();
         BufferedWriter bw = new BufferedWriter(new FileWriter(rawFile));
         bw.append("source,date,start,completemillis\n");
         String tempSourceDate = null;
@@ -124,13 +123,13 @@ public class TorperfProcessor {
           }
         }
         bw.close();
-        logger.info("Finished writing file " + statsDirectory
-            + "/torperf-raw.");
+        logger.info("Finished writing file " + rawFile.getAbsolutePath()
+            + ".");
       }
       if (stats.size() > 0) {
-        logger.info("Writing file " + statsDirectory
-            + "/torperf-stats...");
-        new File(statsDirectory).mkdirs();
+        logger.info("Writing file " + statsFile.getAbsolutePath()
+            + "...");
+        statsFile.getParentFile().mkdirs();
         BufferedWriter bw = new BufferedWriter(new FileWriter(statsFile));
         bw.append("source,date,q1,md,q3\n");
         // TODO should we handle missing days?
@@ -138,12 +137,13 @@ public class TorperfProcessor {
           bw.append(s + "\n");
         }
         bw.close();
-        logger.info("Finished writing file " + statsDirectory
-            + "/torperf-stats.");
+        logger.info("Finished writing file " + statsFile.getAbsolutePath()
+            + ".");
       }
     } catch (IOException e) {
-      logger.log(Level.WARNING, "Failed writing " + statsDirectory
-          + "/torperf-{raw|stats}!", e);
+      logger.log(Level.WARNING, "Failed writing "
+          + rawFile.getAbsolutePath() + " or "
+          + statsFile.getAbsolutePath() + "!", e);
     }
   }
 }
-- 
1.6.5




More information about the tor-commits mailing list