Loading build.xml +1 −1 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ <property name="release.version" value="1.9.0-dev" /> <property name="project-main-class" value="org.torproject.metrics.collector.Main" /> <property name="name" value="collector"/> <property name="metricslibversion" value="2.6.1" /> <property name="metricslibversion" value="2.6.2" /> <property name="jarincludes" value="collector.properties logback.xml" /> <patternset id="runtime" > Loading src/main/java/org/torproject/metrics/collector/persist/BandwidthFilePersistence.java 0 → 100644 +65 −0 Original line number Diff line number Diff line /* Copyright 2016--2018 The Tor Project * See LICENSE for licensing information */ package org.torproject.metrics.collector.persist; import org.torproject.descriptor.BandwidthFile; import org.torproject.metrics.collector.conf.Annotation; import org.apache.commons.codec.digest.DigestUtils; import java.nio.file.Paths; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; public class BandwidthFilePersistence extends DescriptorPersistence<BandwidthFile> { private static final String BANDWIDTH = "bandwidth"; private static final String BANDWIDTHS = "bandwidths"; public BandwidthFilePersistence(BandwidthFile desc) { super(desc, Annotation.BandwidthFile.bytes()); calculatePaths(); } private void calculatePaths() { LocalDateTime fileCreatedOrTimestamp = this.desc.fileCreated() .orElse(this.desc.timestamp()); DateTimeFormatter directoriesFormatter = DateTimeFormatter .ofPattern("uuuu/MM/dd").withZone(ZoneOffset.UTC); String[] directories = fileCreatedOrTimestamp.format(directoriesFormatter) .split("/"); DateTimeFormatter fileFormatter = DateTimeFormatter .ofPattern("uuuu-MM-dd-HH-mm-ss").withZone(ZoneOffset.UTC); String bandwidthFileDigest = calcDigestFromBytes( this.desc.getRawDescriptorBytes()); String fileOut = fileCreatedOrTimestamp.format(fileFormatter) + "-bandwidth-" + bandwidthFileDigest; this.recentPath = Paths.get(RELAYDESCS, BANDWIDTHS, fileOut).toString(); this.storagePath = Paths.get(RELAYDESCS, BANDWIDTH, directories[0], directories[1], directories[2], fileOut).toString(); } /** Calculate a digest for bandwidth files. */ private static String calcDigestFromBytes(byte[] bytes) { String digest = ""; int start = 0; while (start < bytes.length && bytes[start] == (byte) '@') { do { start++; } while (start < bytes.length && bytes[start] != (byte) '\n'); start++; } if (start < bytes.length) { byte[] forDigest = new byte[bytes.length - start]; System.arraycopy(bytes, start, forDigest, 0, forDigest.length); digest = DigestUtils.sha256Hex(forDigest).toUpperCase(); } else { log.error("No digest calculation possible. Returning empty string."); } return digest; } } src/main/java/org/torproject/metrics/collector/sync/SyncPersistence.java +5 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ package org.torproject.metrics.collector.sync; import org.torproject.descriptor.BandwidthFile; import org.torproject.descriptor.BridgeExtraInfoDescriptor; import org.torproject.descriptor.BridgeNetworkStatus; import org.torproject.descriptor.BridgeServerDescriptor; Loading @@ -17,6 +18,7 @@ import org.torproject.descriptor.WebServerAccessLog; import org.torproject.metrics.collector.conf.Configuration; import org.torproject.metrics.collector.conf.ConfigurationException; import org.torproject.metrics.collector.conf.Key; import org.torproject.metrics.collector.persist.BandwidthFilePersistence; import org.torproject.metrics.collector.persist.BridgeExtraInfoPersistence; import org.torproject.metrics.collector.persist.BridgeServerDescriptorPersistence; import org.torproject.metrics.collector.persist.ConsensusPersistence; Loading Loading @@ -138,6 +140,9 @@ public class SyncPersistence { descPersist = new WebServerAccessLogPersistence( (WebServerAccessLog) desc); break; case "BandwidthFile": descPersist = new BandwidthFilePersistence((BandwidthFile) desc); break; default: log.trace("Invalid descriptor type {} for sync-merge.", clazz.getName()); Loading Loading
build.xml +1 −1 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ <property name="release.version" value="1.9.0-dev" /> <property name="project-main-class" value="org.torproject.metrics.collector.Main" /> <property name="name" value="collector"/> <property name="metricslibversion" value="2.6.1" /> <property name="metricslibversion" value="2.6.2" /> <property name="jarincludes" value="collector.properties logback.xml" /> <patternset id="runtime" > Loading
src/main/java/org/torproject/metrics/collector/persist/BandwidthFilePersistence.java 0 → 100644 +65 −0 Original line number Diff line number Diff line /* Copyright 2016--2018 The Tor Project * See LICENSE for licensing information */ package org.torproject.metrics.collector.persist; import org.torproject.descriptor.BandwidthFile; import org.torproject.metrics.collector.conf.Annotation; import org.apache.commons.codec.digest.DigestUtils; import java.nio.file.Paths; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; public class BandwidthFilePersistence extends DescriptorPersistence<BandwidthFile> { private static final String BANDWIDTH = "bandwidth"; private static final String BANDWIDTHS = "bandwidths"; public BandwidthFilePersistence(BandwidthFile desc) { super(desc, Annotation.BandwidthFile.bytes()); calculatePaths(); } private void calculatePaths() { LocalDateTime fileCreatedOrTimestamp = this.desc.fileCreated() .orElse(this.desc.timestamp()); DateTimeFormatter directoriesFormatter = DateTimeFormatter .ofPattern("uuuu/MM/dd").withZone(ZoneOffset.UTC); String[] directories = fileCreatedOrTimestamp.format(directoriesFormatter) .split("/"); DateTimeFormatter fileFormatter = DateTimeFormatter .ofPattern("uuuu-MM-dd-HH-mm-ss").withZone(ZoneOffset.UTC); String bandwidthFileDigest = calcDigestFromBytes( this.desc.getRawDescriptorBytes()); String fileOut = fileCreatedOrTimestamp.format(fileFormatter) + "-bandwidth-" + bandwidthFileDigest; this.recentPath = Paths.get(RELAYDESCS, BANDWIDTHS, fileOut).toString(); this.storagePath = Paths.get(RELAYDESCS, BANDWIDTH, directories[0], directories[1], directories[2], fileOut).toString(); } /** Calculate a digest for bandwidth files. */ private static String calcDigestFromBytes(byte[] bytes) { String digest = ""; int start = 0; while (start < bytes.length && bytes[start] == (byte) '@') { do { start++; } while (start < bytes.length && bytes[start] != (byte) '\n'); start++; } if (start < bytes.length) { byte[] forDigest = new byte[bytes.length - start]; System.arraycopy(bytes, start, forDigest, 0, forDigest.length); digest = DigestUtils.sha256Hex(forDigest).toUpperCase(); } else { log.error("No digest calculation possible. Returning empty string."); } return digest; } }
src/main/java/org/torproject/metrics/collector/sync/SyncPersistence.java +5 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ package org.torproject.metrics.collector.sync; import org.torproject.descriptor.BandwidthFile; import org.torproject.descriptor.BridgeExtraInfoDescriptor; import org.torproject.descriptor.BridgeNetworkStatus; import org.torproject.descriptor.BridgeServerDescriptor; Loading @@ -17,6 +18,7 @@ import org.torproject.descriptor.WebServerAccessLog; import org.torproject.metrics.collector.conf.Configuration; import org.torproject.metrics.collector.conf.ConfigurationException; import org.torproject.metrics.collector.conf.Key; import org.torproject.metrics.collector.persist.BandwidthFilePersistence; import org.torproject.metrics.collector.persist.BridgeExtraInfoPersistence; import org.torproject.metrics.collector.persist.BridgeServerDescriptorPersistence; import org.torproject.metrics.collector.persist.ConsensusPersistence; Loading Loading @@ -138,6 +140,9 @@ public class SyncPersistence { descPersist = new WebServerAccessLogPersistence( (WebServerAccessLog) desc); break; case "BandwidthFile": descPersist = new BandwidthFilePersistence((BandwidthFile) desc); break; default: log.trace("Invalid descriptor type {} for sync-merge.", clazz.getName()); Loading