[tor-commits] [metrics-lib/master] Change back how we treat xz-compressed files.

karsten at torproject.org karsten at torproject.org
Thu Apr 30 15:16:03 UTC 2020


commit d4bb28525f550ea72ab396f24d4fc101e9f48eae
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Thu Apr 30 17:08:44 2020 +0200

    Change back how we treat xz-compressed files.
    
    It seemed like a good idea to decompress xz-compressed files before
    handing over decompressed bytes to descriptor implementations.
    However, our web logs expect descriptor bytes to be in compressed
    form, and now they're unhappy about receiving uncompressed bytes.
    Changing this back and teaching OnionPerf analysis files to expect
    compressed bytes, too. Found by running CollecTor's unit tests.
---
 CHANGELOG.md                                                 |  4 ++++
 .../org/torproject/descriptor/impl/DescriptorReaderImpl.java |  2 --
 .../descriptor/onionperf/OnionPerfAnalysisConverter.java     | 12 +++++++++++-
 .../descriptor/onionperf/OnionPerfAnalysisConverterTest.java |  5 +----
 4 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 682980b..8fbc4bd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changes in version 2.??.? - 2020-??-??
 
+ * Minor changes
+   - Change back how we treat xz-compressed files by leaving
+     decompression to descriptor implementations.
+
 
 # Changes in version 2.12.0 - 2020-04-30
 
diff --git a/src/main/java/org/torproject/descriptor/impl/DescriptorReaderImpl.java b/src/main/java/org/torproject/descriptor/impl/DescriptorReaderImpl.java
index 0da32ad..8ec04a5 100644
--- a/src/main/java/org/torproject/descriptor/impl/DescriptorReaderImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/DescriptorReaderImpl.java
@@ -330,8 +330,6 @@ public class DescriptorReaderImpl implements DescriptorReader {
         InputStream is = fis;
         if (file.getName().endsWith(".gz")) {
           is = new GzipCompressorInputStream(fis);
-        } else if (file.getName().endsWith(".xz")) {
-          is = new XZCompressorInputStream(fis);
         }
         byte[] rawDescriptorBytes = IOUtils.toByteArray(is);
         if (rawDescriptorBytes.length > 0) {
diff --git a/src/main/java/org/torproject/descriptor/onionperf/OnionPerfAnalysisConverter.java b/src/main/java/org/torproject/descriptor/onionperf/OnionPerfAnalysisConverter.java
index 1f9b1f8..18adf8c 100644
--- a/src/main/java/org/torproject/descriptor/onionperf/OnionPerfAnalysisConverter.java
+++ b/src/main/java/org/torproject/descriptor/onionperf/OnionPerfAnalysisConverter.java
@@ -7,8 +7,13 @@ import org.torproject.descriptor.Descriptor;
 import org.torproject.descriptor.DescriptorParseException;
 import org.torproject.descriptor.impl.TorperfResultImpl;
 
+import org.apache.commons.compress.compressors.xz.XZCompressorInputStream;
+import org.apache.commons.compress.utils.IOUtils;
+
+import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -66,8 +71,13 @@ public class OnionPerfAnalysisConverter {
   public List<Descriptor> asTorperfResults() throws DescriptorParseException {
     ParsedOnionPerfAnalysis parsedOnionPerfAnalysis;
     try {
-      parsedOnionPerfAnalysis = ParsedOnionPerfAnalysis.fromBytes(
+      InputStream compressedInputStream = new ByteArrayInputStream(
           this.rawDescriptorBytes);
+      InputStream decompressedInputStream = new XZCompressorInputStream(
+          compressedInputStream);
+      byte[] decompressedBytes = IOUtils.toByteArray(decompressedInputStream);
+      parsedOnionPerfAnalysis = ParsedOnionPerfAnalysis.fromBytes(
+          decompressedBytes);
     } catch (IOException ioException) {
       throw new DescriptorParseException("Ran into an I/O error while "
           + "attempting to parse an OnionPerf analysis document.",
diff --git a/src/test/java/org/torproject/descriptor/onionperf/OnionPerfAnalysisConverterTest.java b/src/test/java/org/torproject/descriptor/onionperf/OnionPerfAnalysisConverterTest.java
index d840dd2..c921a2d 100644
--- a/src/test/java/org/torproject/descriptor/onionperf/OnionPerfAnalysisConverterTest.java
+++ b/src/test/java/org/torproject/descriptor/onionperf/OnionPerfAnalysisConverterTest.java
@@ -10,7 +10,6 @@ import org.torproject.descriptor.Descriptor;
 import org.torproject.descriptor.DescriptorParseException;
 import org.torproject.descriptor.TorperfResult;
 
-import org.apache.commons.compress.compressors.xz.XZCompressorInputStream;
 import org.apache.commons.compress.utils.IOUtils;
 import org.junit.Test;
 
@@ -88,9 +87,7 @@ public class OnionPerfAnalysisConverterTest {
     assertNotNull(resouce);
     InputStream compressedInputStream = resouce.openStream();
     assertNotNull(compressedInputStream);
-    InputStream uncompressedInputStream = new XZCompressorInputStream(
-        compressedInputStream);
-    byte[] rawDescriptorBytes = IOUtils.toByteArray(uncompressedInputStream);
+    byte[] rawDescriptorBytes = IOUtils.toByteArray(compressedInputStream);
     OnionPerfAnalysisConverter onionPerfAnalysisConverter
         = new OnionPerfAnalysisConverter(rawDescriptorBytes, null);
     for (Descriptor descriptor





More information about the tor-commits mailing list