commit e0b4e2d8bf6c0c31e64a167c2e96e845185ddff5 Author: Damian Johnson atagar@torproject.org Date: Sat Jul 6 15:38:04 2019 -0700
Test real CollecTor index
Adding a CollecTor index, truncated to three files per directory. Even with this truncation this is *way* too big for this unit test assertion, but starting with the whole shebang as I make sense of how I'm gonna work with it. --- test/unit/descriptor/collector.py | 539 +++++++++++++++++++++++++ test/unit/descriptor/data/collector_index.json | 1 + 2 files changed, 540 insertions(+)
diff --git a/test/unit/descriptor/collector.py b/test/unit/descriptor/collector.py index 260e246b..e1ff4bdb 100644 --- a/test/unit/descriptor/collector.py +++ b/test/unit/descriptor/collector.py @@ -9,6 +9,7 @@ import stem.prereq
from stem.descriptor import Compression from stem.descriptor.collector import CollecTor +from test.unit.descriptor import get_resource
try: # added in python 3.3 @@ -26,6 +27,535 @@ MINIMAL_INDEX = {
MINIMAL_INDEX_JSON = b'{"index_created":"2017-12-25 21:06","build_revision":"56a303e","path":"https://collector.torproject.org%22%7D'
+EXAMPLE_INDEX = { + 'index_created': '2019-07-06 01:54', + 'build_revision': 'df98ac79', + 'path': 'https://collector.torproject.org', + 'directories': [ + { + 'path': 'archive', + 'directories': [ + { + 'path': 'bridge-descriptors', + 'directories': [ + { + 'path': 'extra-infos', + 'files': [ + { + 'path': 'bridge-extra-infos-2008-05.tar.xz', + 'size': 377644, + 'last_modified': '2016-09-04 09:21' + }, { + 'path': 'bridge-extra-infos-2008-06.tar.xz', + 'size': 600484, + 'last_modified': '2016-09-04 09:21' + }, { + 'path': 'bridge-extra-infos-2008-07.tar.xz', + 'size': 716320, + 'last_modified': '2016-09-04 09:21' + } + ] + }, { + 'path': 'server-descriptors', + 'files': [ + { + 'path': 'bridge-server-descriptors-2008-05.tar.xz', + 'size': 205348, + 'last_modified': '2016-09-09 14:13' + }, { + 'path': 'bridge-server-descriptors-2008-06.tar.xz', + 'size': 342828, + 'last_modified': '2016-09-09 14:13' + }, { + 'path': 'bridge-server-descriptors-2008-07.tar.xz', + 'size': 374848, + 'last_modified': '2016-09-09 14:13' + } + ] + }, { + 'path': 'statuses', + 'files': [ + { + 'path': 'bridge-statuses-2008-05.tar.xz', + 'size': 74792, + 'last_modified': '2016-09-14 21:11' + }, { + 'path': 'bridge-statuses-2008-06.tar.xz', + 'size': 123488, + 'last_modified': '2016-09-14 21:11' + }, { + 'path': 'bridge-statuses-2008-07.tar.xz', + 'size': 143836, + 'last_modified': '2016-09-14 21:11' + } + ] + } + ] + }, { + 'path': 'bridge-pool-assignments', + 'files': [ + { + 'path': 'bridge-pool-assignments-2010-09.tar.xz', + 'size': 32804, + 'last_modified': '2012-05-31 10:21' + }, { + 'path': 'bridge-pool-assignments-2010-10.tar.xz', + 'size': 304684, + 'last_modified': '2012-05-31 10:21' + }, { + 'path': 'bridge-pool-assignments-2010-11.tar.xz', + 'size': 292228, + 'last_modified': '2012-05-31 10:21' + } + ] + }, { + 'path': 'exit-lists', + 'files': [ + { + 'path': 'exit-list-2010-02.tar.xz', + 'size': 272008, + 'last_modified': '2012-05-31 18:57' + }, { + 'path': 'exit-list-2010-03.tar.xz', + 'size': 1247484, + 'last_modified': '2012-05-31 18:57' + }, { + 'path': 'exit-list-2010-04.tar.xz', + 'size': 1139896, + 'last_modified': '2012-05-31 18:57' + } + ] + }, { + 'path': 'relay-descriptors', + 'files': [ + { + 'path': 'certs.tar.xz', + 'size': 144696, + 'last_modified': '2019-07-03 03:29' + } + ], + 'directories': [ + { + 'path': 'bandwidths', + 'files': [ + { + 'path': 'bandwidths-2019-05.tar.xz', + 'size': 50385816, + 'last_modified': '2019-06-07 08:05' + }, { + 'path': 'bandwidths-2019-06.tar.xz', + 'size': 105881156, + 'last_modified': '2019-07-03 07:30' + }, { + 'path': 'bandwidths-2019-07.tar.xz', + 'size': 11374436, + 'last_modified': '2019-07-03 07:12' + } + ] + }, { + 'path': 'consensuses', + 'files': [ + { + 'path': 'consensuses-2007-10.tar.xz', + 'size': 1061648, + 'last_modified': '2012-05-15 14:35' + }, { + 'path': 'consensuses-2007-11.tar.xz', + 'size': 6810308, + 'last_modified': '2012-05-15 14:35' + }, { + 'path': 'consensuses-2007-12.tar.xz', + 'size': 8106968, + 'last_modified': '2012-05-15 14:35' + } + ] + }, { + 'path': 'extra-infos', + 'files': [ + { + 'path': 'extra-infos-2007-08.tar.xz', + 'size': 3016916, + 'last_modified': '2016-06-23 09:53' + }, { + 'path': 'extra-infos-2007-09.tar.xz', + 'size': 6459884, + 'last_modified': '2016-06-23 09:54' + }, { + 'path': 'extra-infos-2007-10.tar.xz', + 'size': 7326564, + 'last_modified': '2016-06-23 09:54' + } + ] + }, { + 'path': 'microdescs', + 'files': [ + { + 'path': 'microdescs-2014-01.tar.xz', + 'size': 7515396, + 'last_modified': '2014-02-07 03:59' + }, { + 'path': 'microdescs-2014-02.tar.xz', + 'size': 21822944, + 'last_modified': '2014-03-07 04:54' + }, { + 'path': 'microdescs-2014-03.tar.xz', + 'size': 24201436, + 'last_modified': '2014-04-07 03:54' + } + ] + }, { + 'path': 'server-descriptors', + 'files': [ + { + 'path': 'server-descriptors-2005-12.tar.xz', + 'size': 1348620, + 'last_modified': '2016-06-24 08:12' + }, { + 'path': 'server-descriptors-2006-02.tar.xz', + 'size': 28625408, + 'last_modified': '2016-06-24 08:14' + }, { + 'path': 'server-descriptors-2006-03.tar.xz', + 'size': 49548736, + 'last_modified': '2016-06-24 08:17' + } + ] + }, { + 'path': 'statuses', + 'files': [ + { + 'path': 'statuses-2005-12.tar.xz', + 'size': 1468844, + 'last_modified': '2016-06-25 11:50' + }, { + 'path': 'statuses-2006-01.tar.xz', + 'size': 3344280, + 'last_modified': '2016-06-25 11:52' + }, { + 'path': 'statuses-2006-02.tar.xz', + 'size': 4006336, + 'last_modified': '2016-06-25 11:54' + } + ] + }, { + 'path': 'tor', + 'files': [ + { + 'path': 'tor-2004-05.tar.xz', + 'size': 386672, + 'last_modified': '2012-05-18 14:26' + }, { + 'path': 'tor-2004-06.tar.xz', + 'size': 1087980, + 'last_modified': '2012-05-18 14:26' + }, { + 'path': 'tor-2004-07.tar.xz', + 'size': 1366568, + 'last_modified': '2012-05-18 14:26' + } + ] + }, { + 'path': 'votes', + 'files': [ + { + 'path': 'votes-2007-10.tar.xz', + 'size': 1356504, + 'last_modified': '2012-05-15 14:51' + }, { + 'path': 'votes-2007-11.tar.xz', + 'size': 10641492, + 'last_modified': '2012-05-15 14:51' + }, { + 'path': 'votes-2007-12.tar.xz', + 'size': 14712136, + 'last_modified': '2012-05-15 14:52' + } + ] + } + ] + }, { + 'path': 'torperf', + 'files': [ + { + 'path': 'torperf-2009-07.tar.xz', + 'size': 182712, + 'last_modified': '2012-05-30 07:23' + }, { + 'path': 'torperf-2009-08.tar.xz', + 'size': 203236, + 'last_modified': '2012-05-30 07:23' + }, { + 'path': 'torperf-2009-09.tar.xz', + 'size': 193832, + 'last_modified': '2012-05-30 07:23' + } + ] + }, { + 'path': 'webstats', + 'files': [ + { + 'path': 'webstats-2015-01.tar', + 'size': 30720, + 'last_modified': '2018-03-19 16:07' + }, { + 'path': 'webstats-2015-02.tar', + 'size': 20480, + 'last_modified': '2018-03-19 16:07' + }, { + 'path': 'webstats-2015-03.tar', + 'size': 20480, + 'last_modified': '2018-03-19 16:07' + } + ] + } + ] + }, { + 'path': 'contrib' + }, { + 'path': 'recent', + 'directories': [ + { + 'path': 'bridge-descriptors', + 'directories': [ + { + 'path': 'extra-infos', + 'files': [ + { + 'path': '2019-07-03-02-09-00-extra-infos', + 'size': 507816, + 'last_modified': '2019-07-03 02:09' + }, { + 'path': '2019-07-03-03-09-00-extra-infos', + 'size': 558790, + 'last_modified': '2019-07-03 03:09' + }, { + 'path': '2019-07-03-04-09-05-extra-infos', + 'size': 592279, + 'last_modified': '2019-07-03 04:09' + } + ] + }, { + 'path': 'server-descriptors', + 'files': [ + { + 'path': '2019-07-03-02-09-00-server-descriptors', + 'size': 274355, + 'last_modified': '2019-07-03 02:09' + }, { + 'path': '2019-07-03-03-09-00-server-descriptors', + 'size': 295671, + 'last_modified': '2019-07-03 03:09' + }, { + 'path': '2019-07-03-04-09-05-server-descriptors', + 'size': 312822, + 'last_modified': '2019-07-03 04:09' + } + ] + }, { + 'path': 'statuses', + 'files': [ + { + 'path': '20190703-011231-BA44A889E64B93FAA2B114E02C2A279A8555C533', + 'size': 238340, + 'last_modified': '2019-07-03 02:09' + }, { + 'path': '20190703-014231-BA44A889E64B93FAA2B114E02C2A279A8555C533', + 'size': 238147, + 'last_modified': '2019-07-03 02:09' + }, { + 'path': '20190703-021231-BA44A889E64B93FAA2B114E02C2A279A8555C533', + 'size': 238231, + 'last_modified': '2019-07-03 03:09' + } + ] + } + ] + }, { + 'path': 'exit-lists', + 'files': [ + { + 'path': '2019-07-03-02-02-00', + 'size': 158516, + 'last_modified': '2019-07-03 02:02' + }, { + 'path': '2019-07-03-03-02-00', + 'size': 158830, + 'last_modified': '2019-07-03 03:02' + }, { + 'path': '2019-07-03-04-02-00', + 'size': 158831, + 'last_modified': '2019-07-03 04:02' + } + ] + }, { + 'path': 'relay-descriptors', + 'directories': [ + { + 'path': 'bandwidths', + 'files': [ + { + 'path': '2019-07-03-00-30-57-bandwidth-616DF2278EE2C90F475E4EA2562E2C00EB9F10E517FB901229F331AEB70B8AD7', + 'size': 2580044, + 'last_modified': '2019-07-03 02:35' + }, { + 'path': '2019-07-03-01-35-02-bandwidth-2A5B679E9AA2D5C903CD16C00E16FEFA3E21E38AB3DE338941AE4AC13FD505DE', + 'size': 4210146, + 'last_modified': '2019-07-03 02:35' + }, { + 'path': '2019-07-03-01-35-03-bandwidth-3B06DAD9EDE8E1D08CC494E856AFD9D49256ECC2D68456799DD1EC7ED3436875', + 'size': 4249699, + 'last_modified': '2019-07-03 02:35' + } + ] + }, { + 'path': 'consensuses', + 'files': [ + { + 'path': '2019-07-03-02-00-00-consensus', + 'size': 2211265, + 'last_modified': '2019-07-03 02:05' + }, { + 'path': '2019-07-03-03-00-00-consensus', + 'size': 2204478, + 'last_modified': '2019-07-03 03:05' + }, { + 'path': '2019-07-03-04-00-00-consensus', + 'size': 2202554, + 'last_modified': '2019-07-03 04:05' + } + ] + }, { + 'path': 'extra-infos', + 'files': [ + { + 'path': '2019-07-03-02-05-00-extra-infos', + 'size': 1162899, + 'last_modified': '2019-07-03 02:05' + }, { + 'path': '2019-07-03-03-05-00-extra-infos', + 'size': 1133425, + 'last_modified': '2019-07-03 03:05' + }, { + 'path': '2019-07-03-04-05-00-extra-infos', + 'size': 1153793, + 'last_modified': '2019-07-03 04:05' + } + ] + }, { + 'path': 'microdescs', + 'directories': [ + { + 'path': 'consensus-microdesc', + 'files': [ + { + 'path': '2019-07-03-02-00-00-consensus-microdesc', + 'size': 2028994, + 'last_modified': '2019-07-03 02:05' + }, { + 'path': '2019-07-03-03-00-00-consensus-microdesc', + 'size': 2022808, + 'last_modified': '2019-07-03 03:05' + }, { + 'path': '2019-07-03-04-00-00-consensus-microdesc', + 'size': 2020751, + 'last_modified': '2019-07-03 04:05' + } + ] + }, { + 'path': 'micro', + 'files': [ + { + 'path': '2019-07-02-23-05-00-micro', + 'size': 19934, + 'last_modified': '2019-07-02 23:05' + }, { + 'path': '2019-07-03-00-05-00-micro', + 'size': 12030, + 'last_modified': '2019-07-03 00:05' + }, { + 'path': '2019-07-03-01-05-00-micro', + 'size': 14850, + 'last_modified': '2019-07-03 01:05' + } + ] + } + ] + }, { + 'path': 'server-descriptors', + 'files': [ + { + 'path': '2019-07-03-02-05-00-server-descriptors', + 'size': 1374587, + 'last_modified': '2019-07-03 02:05' + }, { + 'path': '2019-07-03-03-05-00-server-descriptors', + 'size': 1353286, + 'last_modified': '2019-07-03 03:05' + }, { + 'path': '2019-07-03-04-05-00-server-descriptors', + 'size': 1336125, + 'last_modified': '2019-07-03 04:05' + } + ] + }, { + 'path': 'votes', + 'files': [ + { + 'path': '2019-07-03-02-00-00-vote-0232AF901C31A04EE9848595AF9BB7620D4C5B2E-D9B6923A3AF9FB5DB3CD30191BCBD29A7A936D86', + 'size': 3449707, + 'last_modified': '2019-07-03 02:05' + }, { + 'path': '2019-07-03-02-00-00-vote-14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4-39429F0789A9EC07A2A8754C4C449CCABAB787CC', + 'size': 3435482, + 'last_modified': '2019-07-03 02:05' + }, { + 'path': '2019-07-03-02-00-00-vote-23D15D965BC35114467363C165C4F724B64B4F66-4337842B697467123B5351E1E8EB64ED497C0EDA', + 'size': 3571106, + 'last_modified': '2019-07-03 02:05' + } + ] + } + ] + }, { + 'path': 'torperf', + 'files': [ + { + 'path': 'op-ab-1048576-2019-07-03.tpf', + 'size': 39152, + 'last_modified': '2019-07-04 00:01' + }, { + 'path': 'op-ab-51200-2019-07-03.tpf', + 'size': 248173, + 'last_modified': '2019-07-04 00:01' + }, { + 'path': 'op-ab-5242880-2019-07-03.tpf', + 'size': 15900, + 'last_modified': '2019-07-04 00:01' + } + ] + }, { + 'path': 'webstats', + 'files': [ + { + 'path': '2019.www.torproject.org_hetzner-hel1-03.torproject.org_access.log_20190620.xz', + 'size': 8872, + 'last_modified': '2019-07-03 04:21' + }, { + 'path': '2019.www.torproject.org_hetzner-hel1-03.torproject.org_access.log_20190621.xz', + 'size': 9312, + 'last_modified': '2019-07-04 04:21' + }, { + 'path': '2019.www.torproject.org_hetzner-hel1-03.torproject.org_access.log_20190622.xz', + 'size': 9836, + 'last_modified': '2019-07-05 04:21' + } + ] + } + ] + } + ] +} +
class TestCollector(unittest.TestCase): @patch(URL_OPEN) @@ -111,3 +641,12 @@ class TestCollector(unittest.TestCase): with patch(URL_OPEN, Mock(return_value = io.BytesIO(b'not compressed'))): collector = CollecTor(compression = compression) self.assertRaisesRegexp(IOError, 'Unable to decompress %s response' % compression, collector.index) + + @patch(URL_OPEN) + def test_real_index(self, urlopen_mock): + with open(get_resource('collector_index.json'), 'rb') as index_file: + urlopen_mock.return_value = io.BytesIO(index_file.read()) + + self.maxDiff = None + collector = CollecTor(compression = Compression.PLAINTEXT) + self.assertEqual(EXAMPLE_INDEX, collector.index()) diff --git a/test/unit/descriptor/data/collector_index.json b/test/unit/descriptor/data/collector_index.json new file mode 100644 index 00000000..c6528f23 --- /dev/null +++ b/test/unit/descriptor/data/collector_index.json @@ -0,0 +1 @@ +{"index_created":"2019-07-06 01:54","build_revision":"df98ac79","path":"https://collector.torproject.org%22,%22directories%22:%5B%7B%22path%22:%22ar... 09:21"},{"path":"bridge-extra-infos-2008-06.tar.xz","size":600484,"last_modified":"2016-09-04 09:21"},{"path":"bridge-extra-infos-2008-07.tar.xz","size":716320,"last_modified":"2016-09-04 09:21"}]},{"path":"server-descriptors","files":[{"path":"bridge-server-descriptors-2008-05.tar.xz","size":205348,"last_modified":"2016-09-09 14:13"},{"path":"bridge-server-descriptors-2008-06.tar.xz","size":342828,"last_modified":"2016-09-09 14:13"},{"path":"bridge-server-descriptors-2008-07.tar.xz","size":374848,"last_modified":"2016-09-09 14:13"}]},{"path":"statuses","files":[{"path":"bridge-statuses-2008-05.tar.xz","size":74792,"last_modified":"2016-09-14 21:11"},{"path":"bridge-statuse s-2008-06.tar.xz","size":123488,"last_modified":"2016-09-14 21:11"},{"path":"bridge-statuses-2008-07.tar.xz","size":143836,"last_modified":"2016-09-14 21:11"}]}]},{"path":"bridge-pool-assignments","files":[{"path":"bridge-pool-assignments-2010-09.tar.xz","size":32804,"last_modified":"2012-05-31 10:21"},{"path":"bridge-pool-assignments-2010-10.tar.xz","size":304684,"last_modified":"2012-05-31 10:21"},{"path":"bridge-pool-assignments-2010-11.tar.xz","size":292228,"last_modified":"2012-05-31 10:21"}]},{"path":"exit-lists","files":[{"path":"exit-list-2010-02.tar.xz","size":272008,"last_modified":"2012-05-31 18:57"},{"path":"exit-list-2010-03.tar.xz","size":1247484,"last_modified":"2012-05-31 18:57"},{"path":"exit-list-2010-04.tar.xz","size":1139896,"last_modified":"2012-05-31 18:57"}]},{"path":"relay-descriptors","files":[{"path":"certs.tar.xz","size":144696,"last_modified":"2019-07-03 03:29"}],"directories":[{"path":"bandwidths","files":[{"path":"bandwidths-2019-05.tar.xz","size":50385 816,"last_modified":"2019-06-07 08:05"},{"path":"bandwidths-2019-06.tar.xz","size":105881156,"last_modified":"2019-07-03 07:30"},{"path":"bandwidths-2019-07.tar.xz","size":11374436,"last_modified":"2019-07-03 07:12"}]},{"path":"consensuses","files":[{"path":"consensuses-2007-10.tar.xz","size":1061648,"last_modified":"2012-05-15 14:35"},{"path":"consensuses-2007-11.tar.xz","size":6810308,"last_modified":"2012-05-15 14:35"},{"path":"consensuses-2007-12.tar.xz","size":8106968,"last_modified":"2012-05-15 14:35"}]},{"path":"extra-infos","files":[{"path":"extra-infos-2007-08.tar.xz","size":3016916,"last_modified":"2016-06-23 09:53"},{"path":"extra-infos-2007-09.tar.xz","size":6459884,"last_modified":"2016-06-23 09:54"},{"path":"extra-infos-2007-10.tar.xz","size":7326564,"last_modified":"2016-06-23 09:54"}]},{"path":"microdescs","files":[{"path":"microdescs-2014-01.tar.xz","size":7515396,"last_modified":"2014-02-07 03:59"},{"path":"microdescs-2014-02.tar.xz","size":21822944,"last_modified" :"2014-03-07 04:54"},{"path":"microdescs-2014-03.tar.xz","size":24201436,"last_modified":"2014-04-07 03:54"}]},{"path":"server-descriptors","files":[{"path":"server-descriptors-2005-12.tar.xz","size":1348620,"last_modified":"2016-06-24 08:12"},{"path":"server-descriptors-2006-02.tar.xz","size":28625408,"last_modified":"2016-06-24 08:14"},{"path":"server-descriptors-2006-03.tar.xz","size":49548736,"last_modified":"2016-06-24 08:17"}]},{"path":"statuses","files":[{"path":"statuses-2005-12.tar.xz","size":1468844,"last_modified":"2016-06-25 11:50"},{"path":"statuses-2006-01.tar.xz","size":3344280,"last_modified":"2016-06-25 11:52"},{"path":"statuses-2006-02.tar.xz","size":4006336,"last_modified":"2016-06-25 11:54"}]},{"path":"tor","files":[{"path":"tor-2004-05.tar.xz","size":386672,"last_modified":"2012-05-18 14:26"},{"path":"tor-2004-06.tar.xz","size":1087980,"last_modified":"2012-05-18 14:26"},{"path":"tor-2004-07.tar.xz","size":1366568,"last_modified":"2012-05-18 14:26"}]},{"path":"v otes","files":[{"path":"votes-2007-10.tar.xz","size":1356504,"last_modified":"2012-05-15 14:51"},{"path":"votes-2007-11.tar.xz","size":10641492,"last_modified":"2012-05-15 14:51"},{"path":"votes-2007-12.tar.xz","size":14712136,"last_modified":"2012-05-15 14:52"}]}]},{"path":"torperf","files":[{"path":"torperf-2009-07.tar.xz","size":182712,"last_modified":"2012-05-30 07:23"},{"path":"torperf-2009-08.tar.xz","size":203236,"last_modified":"2012-05-30 07:23"},{"path":"torperf-2009-09.tar.xz","size":193832,"last_modified":"2012-05-30 07:23"}]},{"path":"webstats","files":[{"path":"webstats-2015-01.tar","size":30720,"last_modified":"2018-03-19 16:07"},{"path":"webstats-2015-02.tar","size":20480,"last_modified":"2018-03-19 16:07"},{"path":"webstats-2015-03.tar","size":20480,"last_modified":"2018-03-19 16:07"}]}]},{"path":"contrib"},{"path":"recent","directories":[{"path":"bridge-descriptors","directories":[{"path":"extra-infos","files":[{"path":"2019-07-03-02-09-00-extra-infos","size":50781 6,"last_modified":"2019-07-03 02:09"},{"path":"2019-07-03-03-09-00-extra-infos","size":558790,"last_modified":"2019-07-03 03:09"},{"path":"2019-07-03-04-09-05-extra-infos","size":592279,"last_modified":"2019-07-03 04:09"}]},{"path":"server-descriptors","files":[{"path":"2019-07-03-02-09-00-server-descriptors","size":274355,"last_modified":"2019-07-03 02:09"},{"path":"2019-07-03-03-09-00-server-descriptors","size":295671,"last_modified":"2019-07-03 03:09"},{"path":"2019-07-03-04-09-05-server-descriptors","size":312822,"last_modified":"2019-07-03 04:09"}]},{"path":"statuses","files":[{"path":"20190703-011231-BA44A889E64B93FAA2B114E02C2A279A8555C533","size":238340,"last_modified":"2019-07-03 02:09"},{"path":"20190703-014231-BA44A889E64B93FAA2B114E02C2A279A8555C533","size":238147,"last_modified":"2019-07-03 02:09"},{"path":"20190703-021231-BA44A889E64B93FAA2B114E02C2A279A8555C533","size":238231,"last_modified":"2019-07-03 03:09"}]}]},{"path":"exit-lists","files":[{"path":"2019-07-03-02- 02-00","size":158516,"last_modified":"2019-07-03 02:02"},{"path":"2019-07-03-03-02-00","size":158830,"last_modified":"2019-07-03 03:02"},{"path":"2019-07-03-04-02-00","size":158831,"last_modified":"2019-07-03 04:02"}]},{"path":"relay-descriptors","directories":[{"path":"bandwidths","files":[{"path":"2019-07-03-00-30-57-bandwidth-616DF2278EE2C90F475E4EA2562E2C00EB9F10E517FB901229F331AEB70B8AD7","size":2580044,"last_modified":"2019-07-03 02:35"},{"path":"2019-07-03-01-35-02-bandwidth-2A5B679E9AA2D5C903CD16C00E16FEFA3E21E38AB3DE338941AE4AC13FD505DE","size":4210146,"last_modified":"2019-07-03 02:35"},{"path":"2019-07-03-01-35-03-bandwidth-3B06DAD9EDE8E1D08CC494E856AFD9D49256ECC2D68456799DD1EC7ED3436875","size":4249699,"last_modified":"2019-07-03 02:35"}]},{"path":"consensuses","files":[{"path":"2019-07-03-02-00-00-consensus","size":2211265,"last_modified":"2019-07-03 02:05"},{"path":"2019-07-03-03-00-00-consensus","size":2204478,"last_modified":"2019-07-03 03:05"},{"path":"2019-07-03-04 -00-00-consensus","size":2202554,"last_modified":"2019-07-03 04:05"}]},{"path":"extra-infos","files":[{"path":"2019-07-03-02-05-00-extra-infos","size":1162899,"last_modified":"2019-07-03 02:05"},{"path":"2019-07-03-03-05-00-extra-infos","size":1133425,"last_modified":"2019-07-03 03:05"},{"path":"2019-07-03-04-05-00-extra-infos","size":1153793,"last_modified":"2019-07-03 04:05"}]},{"path":"microdescs","directories":[{"path":"consensus-microdesc","files":[{"path":"2019-07-03-02-00-00-consensus-microdesc","size":2028994,"last_modified":"2019-07-03 02:05"},{"path":"2019-07-03-03-00-00-consensus-microdesc","size":2022808,"last_modified":"2019-07-03 03:05"},{"path":"2019-07-03-04-00-00-consensus-microdesc","size":2020751,"last_modified":"2019-07-03 04:05"}]},{"path":"micro","files":[{"path":"2019-07-02-23-05-00-micro","size":19934,"last_modified":"2019-07-02 23:05"},{"path":"2019-07-03-00-05-00-micro","size":12030,"last_modified":"2019-07-03 00:05"},{"path":"2019-07-03-01-05-00-micro","si ze":14850,"last_modified":"2019-07-03 01:05"}]}]},{"path":"server-descriptors","files":[{"path":"2019-07-03-02-05-00-server-descriptors","size":1374587,"last_modified":"2019-07-03 02:05"},{"path":"2019-07-03-03-05-00-server-descriptors","size":1353286,"last_modified":"2019-07-03 03:05"},{"path":"2019-07-03-04-05-00-server-descriptors","size":1336125,"last_modified":"2019-07-03 04:05"}]},{"path":"votes","files":[{"path":"2019-07-03-02-00-00-vote-0232AF901C31A04EE9848595AF9BB7620D4C5B2E-D9B6923A3AF9FB5DB3CD30191BCBD29A7A936D86","size":3449707,"last_modified":"2019-07-03 02:05"},{"path":"2019-07-03-02-00-00-vote-14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4-39429F0789A9EC07A2A8754C4C449CCABAB787CC","size":3435482,"last_modified":"2019-07-03 02:05"},{"path":"2019-07-03-02-00-00-vote-23D15D965BC35114467363C165C4F724B64B4F66-4337842B697467123B5351E1E8EB64ED497C0EDA","size":3571106,"last_modified":"2019-07-03 02:05"}]}]},{"path":"torperf","files":[{"path":"op-ab-1048576-2019-07-03.tpf","size":3 9152,"last_modified":"2019-07-04 00:01"},{"path":"op-ab-51200-2019-07-03.tpf","size":248173,"last_modified":"2019-07-04 00:01"},{"path":"op-ab-5242880-2019-07-03.tpf","size":15900,"last_modified":"2019-07-04 00:01"}]},{"path":"webstats","files":[{"path":"2019.www.torproject.org_hetzner-hel1-03.torproject.org_access.log_20190620.xz","size":8872,"last_modified":"2019-07-03 04:21"},{"path":"2019.www.torproject.org_hetzner-hel1-03.torproject.org_access.log_20190621.xz","size":9312,"last_modified":"2019-07-04 04:21"},{"path":"2019.www.torproject.org_hetzner-hel1-03.torproject.org_access.log_20190622.xz","size":9836,"last_modified":"2019-07-05 04:21"}]}]}]}
tor-commits@lists.torproject.org