[tor-commits] [onionperf/master] Minor spelling, adds TOC
commit 508d3bccedc56af6559bcb5e367172dffec73a05 Author: Ana Custura Date: Thu Jul 2 10:02:47 2020 +0100 Minor spelling, adds TOC --- README.md | 26 ++ 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9f0faf4..b66d6bc 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,30 @@ # OnionPerf - -[TOC] + * [Overview](#overview) ++ [What does OnionPerf do?](#what-does-onionperf-do-) ++ [What does OnionPerf *not* do?](#what-does-onionperf--not--do-) + * [Installation](#installation) ++ [Tor](#tor) ++ [TGen](#tgen) ++ [OnionPerf](#onionperf-1) + * [Measurement](#measurement) ++ [Starting and stopping measurements](#starting-and-stopping-measurements) ++ [Output directories and files](#output-directories-and-files) ++ [Changing Tor configurations](#changing-tor-configurations) ++ [Changing the TGen traffic model](#changing-the-tgen-traffic-model) ++ [Sharing measurement results](#sharing-measurement-results) ++ [Troubleshooting](#troubleshooting) + * [Analysis](#analysis) ++ [Analyzing measurement results](#analyzing-measurement-results) ++ [Visualizing measurement results](#visualizing-measurement-results) ++ [Interpreting the PDF output format](#interpreting-the-pdf-output-format) ++ [Interpreting the CSV output format](#interpreting-the-csv-output-format) + * [Contributing](#contributing) ## Overview ### What does OnionPerf do? -OnionPerf measures performance of bulk file downloads over Tor. Together with its predecessor, Torperf, Onionperf has been used to measure long-term performance trends in the Tor network since 2009. It is also being used to perform short-term performance experiments to compare different Tor configurations or implementations. +OnionPerf measures performance of bulk file downloads over Tor. Together with its predecessor, Torperf, OnionPerf has been used to measure long-term performance trends in the Tor network since 2009. It is also being used to perform short-term performance experiments to compare different Tor configurations or implementations. OnionPerf uses multiple processes and threads to download random data through Tor while tracking the performance of those downloads. The data is served and fetched on localhost using two TGen (traffic generator) processes, and is transferred through Tor using Tor client processes and an ephemeral Tor onion service. Tor control information and TGen performance statistics are logged to disk and analyzed once per day to produce a JSON analysis file that can later be used to visualize changes in Tor client performance over time. @@ -180,7 +198,7 @@ For example, the hard-coded traffic model generated by OnionPerf and executed by ### Sharing measurement results -Measurement results can be further analyzed and visualized on the measuring host. But in many cases it's more conventient to do analysis and visualization on another host, also to compare measurements from different hosts to each other. +Measurement results can be further analyzed and visualized on the measuring host. But in many cases it's more convenient to do analysis and visualization on another host, also to compare measurements from different hosts to each other. There are at least two common ways of sharing measurement results: ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/master] Always include error_code column in CSV output.
commit fc6e9702d3012edca463b96fbbe218bbff70d6c7 Author: Karsten Loesing Date: Wed Jul 1 15:20:27 2020 +0200 Always include error_code column in CSV output. We should include an error_code column in the CSV output, regardless of whether data contains measurements with an error code or not. Everything else is just too confusing to whoever processes these files. Fixes #40004. --- onionperf/visualization.py | 7 --- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/onionperf/visualization.py b/onionperf/visualization.py index 2107d5a..0a2a9d9 100644 --- a/onionperf/visualization.py +++ b/onionperf/visualization.py @@ -58,7 +58,8 @@ class TGenVisualization(Visualization): tgen_transfers = analysis.get_tgen_transfers(client) for transfer_id, transfer_data in tgen_transfers.items(): transfer = {"transfer_id": transfer_id, "label": label, -"filesize_bytes": transfer_data["filesize_bytes"]} +"filesize_bytes": transfer_data["filesize_bytes"], +"error_code": None} transfer["server"] = "onion" if ".onion:" in transfer_data["endpoint_remote"] else "public" if "elapsed_seconds" in transfer_data: s = transfer_data["elapsed_seconds"] @@ -147,7 +148,7 @@ class TGenVisualization(Visualization): def __plot_errors_count(self): for server in self.data["server"].unique(): -if "error_code" in self.data.columns and self.data[self.data["server"] == server]["error_code"].count() > 0: +if self.data[self.data["server"] == server]["error_code"].count() > 0: self.__draw_countplot(x="error_code", hue="label", hue_name="Data set", data=self.data[self.data["server"] == server], xlabel="Error code", ylabel="Downloads failed (#)", @@ -155,7 +156,7 @@ class TGenVisualization(Visualization): def __plot_errors_time(self): for server in self.data["server"].unique(): -if "error_code" in self.data.columns and self.data[self.data["server"] == server]["error_code"].count() > 0: +if self.data[self.data["server"] == server]["error_code"].count() > 0: self.__draw_stripplot(x="start", y="error_code", hue="label", hue_name="Data set", data=self.data[self.data["server"] == server], xlabel="Download start time", ylabel="Error code", ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/master] Bump version to 0.5.
commit adece5d55b8eb7eab03167f5bdd91330ba195b36 Author: Karsten Loesing Date: Thu Jul 2 21:06:31 2020 +0200 Bump version to 0.5. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f779267..d15157f 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ with open('requirements.txt') as f: install_requires = f.readlines() setup(name='OnionPerf', - version='0.3', + version='0.5', description='A utility to monitor, measure, analyze, and visualize the performance of Tor and Onion Services', author='Rob Jansen', url='https://github.com/robgjansen/onionperf/', ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/master] Merge branch 'task-40001' into develop
commit 454c045013ea2b6f669819fe702a0f794cc59927 Merge: 83e4b52 e305128 Author: Karsten Loesing Date: Thu Jul 2 21:02:01 2020 +0200 Merge branch 'task-40001' into develop README.md| 558 --- onionperf/docs/Makefile | 20 -- onionperf/docs/conf.py | 166 - onionperf/docs/index.rst | 21 -- onionperf/docs/onionperf.rst | 269 - 5 files changed, 208 insertions(+), 826 deletions(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/master] Merge branch 'task-40004' into develop
commit 83e4b52575576806f1879f3912f4a913c3e06747 Merge: 0a9c6ac fc6e970 Author: Karsten Loesing Date: Thu Jul 2 10:43:05 2020 +0200 Merge branch 'task-40004' into develop onionperf/visualization.py | 7 --- 1 file changed, 4 insertions(+), 3 deletions(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/master] Rewrite a sentence, add a paragraph.
commit b677afc53c3885085c83c12b2b8f6967021f5033 Author: Karsten Loesing Date: Thu Jul 2 16:19:08 2020 +0200 Rewrite a sentence, add a paragraph. --- README.md | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1f58f0d..46abd01 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ The following description was written with a Debian system in mind but should be ### Tor -OnionPerf relies on the `tor` binary to start a Tor client process on the client side and a server side process to host onion services. +OnionPerf relies on the `tor` binary to start a Tor process on the client side to make client requests and another Tor process on the server side to host onion services. The easiest way to satisfy this dependency is to install the `tor` package, which puts the `tor` binary into the `PATH` where OnionPerf will find it. Optionally, systemd can be instructed to make sure that `tor` is never started as a service: @@ -288,6 +288,12 @@ The CSV output file contains the same data that is visualized in the PDF file. I - `time_to_first_byte` is the time in seconds (with microsecond precision) to download the first byte. - `time_to_last_byte` is the time in seconds (with microsecond precision) to download the last byte. +### Visualizations on Tor Metrics + +The analysis and visualization steps above can all be done by using the OnionPerf tool. In addition to that it's possible to visualize OnionPerf analysis files using other tools. + +For example, the [Tor Metrics website](https://metrics.torproject.org/torperf.html) contains various graphs based OnionPerf data. + ## Contributing The OnionPerf code is developed at https://gitlab.torproject.org/tpo/metrics/onionperf. ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/master] Make README.md more useful.
commit 54e0bd21227ddb99b64a7d8eb8ca0c0457936d92 Author: Karsten Loesing Date: Tue Jun 30 17:55:18 2020 +0200 Make README.md more useful. This commit attempts to make README.md the primary, comprehensive documentation for OnionPerf. There will be more documentation on the wiki for things that change faster than we want to update a file in Git or that are too specific for most users. But this README.md is supposed to cover 90% of the questions that new users would have. Implements #40001. --- README.md | 532 +- 1 file changed, 181 insertions(+), 351 deletions(-) diff --git a/README.md b/README.md index 35d3b7d..9f0faf4 100644 --- a/README.md +++ b/README.md @@ -1,446 +1,276 @@ # OnionPerf -OnionPerf is a utility to track Tor and onion service performance. - -OnionPerf uses multiple processes and threads to download random data -through Tor while tracking the performance of those downloads. The data is -served and fetched on localhost using two TGen (traffic generator) -processes, and is transferred through Tor using Tor client processes and -an ephemeral Tor Onion Service. Tor control information and TGen -performance statistics are logged to disk, analyzed once per day to -produce a json stats database and files that can feed into Torperf, and -can later be used to visualize changes in Tor client performance over time. - -For more information, see https://git.torproject.org/onionperf - -## Table of contents - -* [Quick deployment instructions](#quick-deployment-instructions) -* [Step-by-step installation instructions](#step-by-step-installation-instructions) - - [Get OnionPerf](#get-onionperf) - - [Install System Dependencies](#install-system-dependencies) - - [Install Python modules](#install-python-modules) - - [Build Tor](#build-tor) - - [Build TGen Traffic Generator](#build-tgen-traffic-generator) - - [Build and Install OnionPerf](#build-and-install-onionperf) -* [Run OnionPerf](#run-onionperf) - - [Measure Tor](#measure-tor) - - [Analyze and Visualize Results](#analyze-and-visualize-results) - - [Troubleshooting](#troubleshooting) -* [Contribute](#contribute) - -## Quick deployment instructions - -These are the quick deployment instructions for the current Debian stable distribution. +[TOC] -``` -sudo apt install git cmake make build-essential gcc libigraph0-dev libglib2.0-dev python3-dev libxml2-dev python3-lxml python3-networkx python3-scipy python3-matplotlib python3-numpy libevent-dev libssl-dev python3-stem python3-pandas python3-seaborn python3-setuptools tor +## Overview -git clone https://github.com/shadow/tgen.git -cd tgen -mkdir build -cd build -cmake .. -DCMAKE_INSTALL_PREFIX=/home/$USER/.local -make -sudo ln -s ~/tgen/build/tgen /usr/bin/tgen +### What does OnionPerf do? -git clone https://github.com/torproject/onionperf -cd onionperf -python3 setup.py build -python3 setup.py install --user -``` +OnionPerf measures performance of bulk file downloads over Tor. Together with its predecessor, Torperf, Onionperf has been used to measure long-term performance trends in the Tor network since 2009. It is also being used to perform short-term performance experiments to compare different Tor configurations or implementations. -Once the installation finished, you can find the onionperf script in -`~/.local/bin/`. +OnionPerf uses multiple processes and threads to download random data through Tor while tracking the performance of those downloads. The data is served and fetched on localhost using two TGen (traffic generator) processes, and is transferred through Tor using Tor client processes and an ephemeral Tor onion service. Tor control information and TGen performance statistics are logged to disk and analyzed once per day to produce a JSON analysis file that can later be used to visualize changes in Tor client performance over time. -## Step-by-step installation instructions +### What does OnionPerf *not* do? -Here you can find more detailed instructions for the current Debian stable distribution. +OnionPerf does not attempt to simulate complex traffic patterns like a web-browsing user or a voice-chatting user. It measures a very specific user model: a bulk 5 MiB file download over Tor. -### Get OnionPerf +OnionPerf does not interfere with how Tor selects paths and builds circuits, other than setting configuration values as specified by the user. As a result it cannot be used to measure specific relays nor to scan the entire Tor network. -``` -git clone https://git.torproject.org/onionperf.git -cd onionperf -``` +## Installation -### Install System Dependencies +OnionPerf has a couple dependencies in order to perform measurements or analyze and visualize measurement results. These dependencies include Tor, TGen (traffic generator), and a couple Python packages. - + **Tor** (>= v0.2.7.3-rc): libevent, openssl - + **TGen** (Shadow >=
[tor-commits] [onionperf/master] Write generated torrc files to disk.
commit 30949a4218cf06c8e73927ec0db06dfa6d662294 Author: Karsten Loesing Date: Wed Jul 1 16:50:57 2020 +0200 Write generated torrc files to disk. Implements #40002. --- onionperf/measurement.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/onionperf/measurement.py b/onionperf/measurement.py index 4a58bc4..1540bac 100644 --- a/onionperf/measurement.py +++ b/onionperf/measurement.py @@ -439,6 +439,9 @@ WarnUnsafeSocks 0\nSafeLogging 0\nMaxCircuitDirtiness 60 seconds\nDataDirectory if not os.path.exists(tor_datadir): os.makedirs(tor_datadir) tor_config = self.create_tor_config(control_port,socks_port,tor_datadir,name) +tor_confpath = "{0}/torrc".format(tor_datadir) +with open(tor_confpath, 'wt') as f: +f.write(tor_config) tor_logpath = "{0}/onionperf.tor.log".format(tor_datadir) tor_writable = util.FileWritable(tor_logpath) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/master] Update table of contents.
commit e30512870f0cccfa29f54b778025fa4d71417a19 Author: Karsten Loesing Date: Thu Jul 2 20:58:41 2020 +0200 Update table of contents. Updated using: https://ecotrust-canada.github.io/markdown-toc/ --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 46abd01..77384c6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # OnionPerf - * [Overview](#overview) + + * [Overview](#overview) + [What does OnionPerf do?](#what-does-onionperf-do-) + [What does OnionPerf *not* do?](#what-does-onionperf--not--do-) * [Installation](#installation) @@ -18,6 +19,7 @@ + [Visualizing measurement results](#visualizing-measurement-results) + [Interpreting the PDF output format](#interpreting-the-pdf-output-format) + [Interpreting the CSV output format](#interpreting-the-csv-output-format) ++ [Visualizations on Tor Metrics](#visualizations-on-tor-metrics) * [Contributing](#contributing) ## Overview ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/master] Merge branch 'task-40002' into develop
commit 0a9c6aca86f44660e4895c643484c0c16fc9c705 Merge: 3e1d149 30949a4 Author: Karsten Loesing Date: Thu Jul 2 10:22:24 2020 +0200 Merge branch 'task-40002' into develop onionperf/measurement.py | 3 +++ 1 file changed, 3 insertions(+) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/master] Adds links to TGen documentation
commit e67947bf7a8879dadbadcd7e141a6e0dc3825f68 Author: Ana Custura Date: Thu Jul 2 10:21:32 2020 +0100 Adds links to TGen documentation --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b66d6bc..7ffb900 100644 --- a/README.md +++ b/README.md @@ -194,7 +194,9 @@ onionperf measure --additional-client-conf="UseBridges 1\nBridge 72.14.177.231:9 OnionPerf is a relatively simple tool that can be adapted to do more complex measurements beyond what can be configured on the command line. -For example, the hard-coded traffic model generated by OnionPerf and executed by the TGen processes is to send a small request from client to server and receive a relatively large response of 5 MiB of random data back. This model can be changed by editing `~/onionperf/onionperf/model.py`, rebuilding, and restarting measurements. For specifics, see the TGen documentation. +For example, the hard-coded traffic model generated by OnionPerf and executed by the TGen processes is to send a small request from client to server and receive a relatively large response of 5 MiB of random data back. This model can be changed by editing `~/onionperf/onionperf/model.py`, rebuilding, and restarting measurements. For specifics, see the [TGen +documentation](https://github.com/shadow/tgen/blob/master/doc/TGen-Overview.md) +and [TGen traffic model examples](https://github.com/shadow/tgen/blob/master/tools/scripts/generate_tgen_config.py). ### Sharing measurement results ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/master] Remove outdated documentation line.
commit 3e1d149f514d65a8083dd8c044f7a73b52457d28 Author: Karsten Loesing Date: Mon Jun 22 16:59:52 2020 +0200 Remove outdated documentation line. This really serves as test commit to try out whether mirroring to GitLab works as expected. --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index eee945f..35d3b7d 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,6 @@ can later be used to visualize changes in Tor client performance over time. For more information, see https://git.torproject.org/onionperf -For a dockerized setup, see https://github.com/hiromipaw/onionperf-docker - ## Table of contents * [Quick deployment instructions](#quick-deployment-instructions) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/master] Add CDF-DL graph.
commit 4d35984f50cb80c53c81d3b211c7aaea3551e923 Author: Karsten Loesing Date: Thu May 28 22:46:01 2020 +0200 Add CDF-DL graph. Implements #33257. --- onionperf/visualization.py | 18 ++ 1 file changed, 18 insertions(+) diff --git a/onionperf/visualization.py b/onionperf/visualization.py index 339291a..2107d5a 100644 --- a/onionperf/visualization.py +++ b/onionperf/visualization.py @@ -44,6 +44,7 @@ class TGenVisualization(Visualization): self.__plot_lastbyte_box() self.__plot_lastbyte_bar() self.__plot_lastbyte_time() +self.__plot_throughput_ecdf() self.__plot_downloads_count() self.__plot_errors_count() self.__plot_errors_time() @@ -61,6 +62,16 @@ class TGenVisualization(Visualization): transfer["server"] = "onion" if ".onion:" in transfer_data["endpoint_remote"] else "public" if "elapsed_seconds" in transfer_data: s = transfer_data["elapsed_seconds"] +if "payload_progress" in s: + # Explanation of the math below for computing Mbps: From filesize_bytes + # and payload_progress fields we can compute the number of seconds that + # have elapsed between receiving bytes 524,288 and 1,048,576, which is a + # total amount of 524,288 bytes or 4,194,304 bits or 4.194304 megabits. + # We want the reciprocal of that value with unit megabits per second. + if transfer_data["filesize_bytes"] == 1048576 and "1.0" in s["payload_progress"]: + transfer["mbps"] = 4.194304 / (s["payload_progress"]["1.0"] - s["payload_progress"]["0.5"]) + if transfer_data["filesize_bytes"] == 5242880 and "0.2" in s["payload_progress"]: + transfer["mbps"] = 4.194304 / (s["payload_progress"]["0.2"] - s["payload_progress"]["0.1"]) if "first_byte" in s: transfer["time_to_first_byte"] = s["first_byte"] if "last_byte" in s: @@ -119,6 +130,13 @@ class TGenVisualization(Visualization): title="Time to download last of {0} bytes from {1} service over time".format(bytes, server), xlabel="Download start time", ylabel="Download time (s)") +def __plot_throughput_ecdf(self): +for server in self.data["server"].unique(): +self.__draw_ecdf(x="mbps", hue="label", hue_name="Data set", + data=self.data[self.data["server"] == server], + title="Throughput when downloading from {0} server".format(server), + xlabel="Throughput (Mbps)", ylabel="Cumulative Fraction") + def __plot_downloads_count(self): for bytes in np.sort(self.data["filesize_bytes"].unique()): for server in self.data["server"].unique(): ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/master] Merge branch 'task-33257-2' into develop
commit 6a3ea78085532ce726a1e32413c99fc9f41a8d2b Merge: 2c19e94 4d35984 Author: Karsten Loesing Date: Thu Jun 18 15:33:45 2020 +0200 Merge branch 'task-33257-2' into develop onionperf/visualization.py | 18 ++ 1 file changed, 18 insertions(+) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/master] Rewrites/clarifies some text
commit 3c129c371a10a69a1789c1af4ac8495a0a783203 Author: Ana Custura Date: Thu Jul 2 10:50:29 2020 +0100 Rewrites/clarifies some text --- README.md | 16 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 7ffb900..1f58f0d 100644 --- a/README.md +++ b/README.md @@ -36,15 +36,15 @@ OnionPerf does not interfere with how Tor selects paths and builds circuits, oth ## Installation -OnionPerf has a couple dependencies in order to perform measurements or analyze and visualize measurement results. These dependencies include Tor, TGen (traffic generator), and a couple Python packages. +OnionPerf has several dependencies in order to perform measurements or analyze and visualize measurement results. These dependencies include Tor, TGen (traffic generator), and a few Python packages. The following description was written with a Debian system in mind but should be transferable to other Linux distributions and possibly even other operating systems. ### Tor -OnionPerf relies on the `tor` binary to start a Tor client on the client side and another one on the server side to host onion services. +OnionPerf relies on the `tor` binary to start a Tor client process on the client side and a server side process to host onion services. -The easiest way is to install the `tor` package, which puts the `tor` binary into the `PATH` where OnionPerf will find it. Optionally, systemd can be instructed to make sure that `tor` is never started as a service: +The easiest way to satisfy this dependency is to install the `tor` package, which puts the `tor` binary into the `PATH` where OnionPerf will find it. Optionally, systemd can be instructed to make sure that `tor` is never started as a service: ```shell sudo apt install tor @@ -88,7 +88,7 @@ The TGen binary will be contained in `~/tgen/build/tgen`, which is also the path OnionPerf is written in Python 3. The following instructions assume that a Python virtual environment is being used, even though installation is also possible without that. -The virtual environment is being created, activated, and tested using: +The virtual environment is created, activated, and tested using: ```shell sudo apt install python3-venv @@ -100,14 +100,14 @@ which python3 The last command should output something like `~/venv/bin/python3` as the path to the `python3` binary used in the virtual environment. -In the next step, the OnionPerf repository is being cloned and requirements are being installed: +The next step is to clone the OnionPerf repository and install its requirements: ```shell git clone https://git.torproject.org/onionperf.git pip3 install --no-cache -r onionperf/requirements.txt ``` -The next step after that is to install OnionPerf and print out the usage information to see if the installation was successful: +The final step is to install OnionPerf and print out the usage information to see if the installation was successful: ```shell cd onionperf/ @@ -122,7 +122,7 @@ The virtual environment is deactivated with the following command: deactivate ``` -However, in order to perform measurements or doing analyses, the virtual environment needs to be activated first. This will ensure all the paths are found. +However, in order to perform measurements or analyses, the virtual environment needs to be activated first. This will ensure all the paths are found. ## Measurement @@ -133,7 +133,7 @@ Ideally, OnionPerf is run detached from the terminal session using tmux, systemd ### Starting and stopping measurements -The most trivial configuration is to measure onion services only. In that case, OnionPerf is taking care of all configurations, and there are no firewall rules or port forwards to take care of. +The most trivial configuration is to measure onion services only. In that case, OnionPerf runs without needing any additional configuration. For direct measurements via exit nodes, firewall rules or port forwarding may be required to allow inbound connections to the TGen server. Starting these measurements is as simple as: ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Refactor channel_connect_for_circuit() to take an extend_info_t.
commit 1e97f968882f12edad20874ada99c2bd8542119d Author: Nick Mathewson Date: Wed Jul 1 14:42:55 2020 -0400 Refactor channel_connect_for_circuit() to take an extend_info_t. --- src/core/or/circuitbuild.c | 15 +++ src/core/or/circuitbuild.h | 8 +--- src/feature/relay/circuitbuild_relay.c | 6 +- src/test/test_circuitbuild.c | 10 ++ 4 files changed, 11 insertions(+), 28 deletions(-) diff --git a/src/core/or/circuitbuild.c b/src/core/or/circuitbuild.c index 1f9b5050e..d1f097c25 100644 --- a/src/core/or/circuitbuild.c +++ b/src/core/or/circuitbuild.c @@ -94,12 +94,15 @@ static const node_t *choose_good_middle_server(uint8_t purpose, * callbacks. */ MOCK_IMPL(channel_t *, -channel_connect_for_circuit,(const tor_addr_t *addr, uint16_t port, - const char *id_digest, - const struct ed25519_public_key_t *ed_id)) +channel_connect_for_circuit,(const extend_info_t *ei)) { channel_t *chan; + const tor_addr_t *addr = >addr; + uint16_t port = ei->port; + const char *id_digest = ei->identity_digest; + const ed25519_public_key_t *ed_id = >ed_identity; + chan = channel_connect(addr, port, id_digest, ed_id); if (chan) command_setup_channel(chan); @@ -581,11 +584,7 @@ circuit_handle_first_hop(origin_circuit_t *circ) circ->base_.n_hop = extend_info_dup(firsthop->extend_info); if (should_launch) { - n_chan = channel_connect_for_circuit( - >extend_info->addr, - firsthop->extend_info->port, - firsthop->extend_info->identity_digest, - >extend_info->ed_identity); + n_chan = channel_connect_for_circuit(firsthop->extend_info); if (!n_chan) { /* connect failed, forget the whole thing */ log_info(LD_CIRC,"connect to firsthop failed. Closing."); return -END_CIRC_REASON_CONNECTFAILED; diff --git a/src/core/or/circuitbuild.h b/src/core/or/circuitbuild.h index bbb78eada..0cd1eb4f4 100644 --- a/src/core/or/circuitbuild.h +++ b/src/core/or/circuitbuild.h @@ -56,13 +56,7 @@ const node_t *choose_good_entry_server(uint8_t purpose, struct circuit_guard_state_t **guard_state_out); void circuit_upgrade_circuits_from_guard_wait(void); -struct ed25519_public_key_t; - -MOCK_DECL(channel_t *, -channel_connect_for_circuit,(const tor_addr_t *addr, - uint16_t port, - const char *id_digest, - const struct ed25519_public_key_t *ed_id)); +MOCK_DECL(channel_t *, channel_connect_for_circuit,(const extend_info_t *ei)); struct create_cell_t; MOCK_DECL(int, diff --git a/src/feature/relay/circuitbuild_relay.c b/src/feature/relay/circuitbuild_relay.c index 36e64d9b3..881cbd51b 100644 --- a/src/feature/relay/circuitbuild_relay.c +++ b/src/feature/relay/circuitbuild_relay.c @@ -401,11 +401,7 @@ circuit_open_connection_for_extend(const struct extend_cell_t *ec, if (should_launch) { /* we should try to open a connection */ -channel_t *n_chan = channel_connect_for_circuit( ->n_hop->addr, -circ->n_hop->port, -circ->n_hop->identity_digest, ->n_hop->ed_identity); +channel_t *n_chan = channel_connect_for_circuit(circ->n_hop); if (!n_chan) { log_info(LD_CIRC,"Launching n_chan failed. Closing circuit."); circuit_mark_for_close(circ, END_CIRC_REASON_CONNECTFAILED); diff --git a/src/test/test_circuitbuild.c b/src/test/test_circuitbuild.c index e1fbd333d..f7a27146b 100644 --- a/src/test/test_circuitbuild.c +++ b/src/test/test_circuitbuild.c @@ -1001,15 +1001,9 @@ mock_circuit_mark_for_close_(circuit_t *circ, int reason, static int mock_channel_connect_calls = 0; static channel_t *mock_channel_connect_nchan = NULL; static channel_t * -mock_channel_connect_for_circuit(const tor_addr_t *addr, - uint16_t port, - const char *id_digest, - const struct ed25519_public_key_t *ed_id) +mock_channel_connect_for_circuit(const extend_info_t *ei) { - (void)addr; - (void)port; - (void)id_digest; - (void)ed_id; + (void)ei; mock_channel_connect_calls++; return mock_channel_connect_nchan; } ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Allow null ID argument to extend_info_new.
commit 6a0b9e47462d7c0bcb4598343cc7d6e7689216d7 Author: Nick Mathewson Date: Wed Jul 1 14:20:17 2020 -0400 Allow null ID argument to extend_info_new. --- src/core/or/extendinfo.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/or/extendinfo.c b/src/core/or/extendinfo.c index 874a0a58f..8f506d774 100644 --- a/src/core/or/extendinfo.c +++ b/src/core/or/extendinfo.c @@ -35,7 +35,8 @@ extend_info_new(const char *nickname, const tor_addr_t *addr, uint16_t port) { extend_info_t *info = tor_malloc_zero(sizeof(extend_info_t)); - memcpy(info->identity_digest, rsa_id_digest, DIGEST_LEN); + if (rsa_id_digest) +memcpy(info->identity_digest, rsa_id_digest, DIGEST_LEN); if (ed_id && !ed25519_public_key_is_zero(ed_id)) memcpy(>ed_identity, ed_id, sizeof(ed25519_public_key_t)); if (nickname) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Light edits to extend_info_t docs
commit 56e33f73f13110fe5eb255bf260a11c8a54d4267 Author: Nick Mathewson Date: Tue Jun 30 15:11:54 2020 -0400 Light edits to extend_info_t docs --- src/core/or/extend_info_st.h | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/or/extend_info_st.h b/src/core/or/extend_info_st.h index a66ce24cf..7f1187cb8 100644 --- a/src/core/or/extend_info_st.h +++ b/src/core/or/extend_info_st.h @@ -17,7 +17,7 @@ /** Information on router used when extending a circuit. We don't need a * full routerinfo_t to extend: we only need addr:port:keyid to build an OR - * connection, and onion_key to create the onionskin. Note that for onehop + * connection, and onion_key to create the onionskin. Note that for one-hop * general-purpose tunnels, the onion_key is NULL. */ struct extend_info_t { char nickname[MAX_HEX_NICKNAME_LEN+1]; /**< This router's nickname for @@ -28,7 +28,9 @@ struct extend_info_t { ed25519_public_key_t ed_identity; uint16_t port; /**< OR port. */ tor_addr_t addr; /**< IP address. */ - crypto_pk_t *onion_key; /**< Current onionskin key. */ + /** TAP onion key for this hop. */ + crypto_pk_t *onion_key; + /** Ntor onion key for this hop. */ curve25519_public_key_t curve25519_onion_key; }; ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Add a convenience function to check for unspec address.
commit cca3164f8d22492c40276ebda670836f93dab536 Author: Nick Mathewson Date: Wed Jul 1 15:53:48 2020 -0400 Add a convenience function to check for unspec address. --- src/lib/net/address.h | 10 ++ 1 file changed, 10 insertions(+) diff --git a/src/lib/net/address.h b/src/lib/net/address.h index 5ab654ef1..6b18919f6 100644 --- a/src/lib/net/address.h +++ b/src/lib/net/address.h @@ -95,6 +95,7 @@ static inline uint32_t tor_addr_to_ipv4n(const tor_addr_t *a); static inline uint32_t tor_addr_to_ipv4h(const tor_addr_t *a); static inline uint32_t tor_addr_to_mapped_ipv4h(const tor_addr_t *a); static inline sa_family_t tor_addr_family(const tor_addr_t *a); +static inline bool tor_addr_is_unspec(const tor_addr_t *a); static inline const struct in_addr *tor_addr_to_in(const tor_addr_t *a); static inline int tor_addr_eq_ipv4h(const tor_addr_t *a, uint32_t u); @@ -188,6 +189,15 @@ tor_addr_family(const tor_addr_t *a) return a->family; } +/** + * Return true if the address @a is in the UNSPEC family. + **/ +static inline bool +tor_addr_is_unspec(const tor_addr_t *a) +{ + return a->family == AF_UNSPEC; +} + /** Return an in_addr* equivalent to a, or NULL if a is not * an IPv4 address. */ static inline const struct in_addr * ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Merge branch 'tor-github/pr/1968'
commit 064e23e95c8d0d0fb762e1cb7699c4bd4c75ecb8 Merge: b0a716dfb c5707d6cf Author: David Goulet Date: Thu Jul 2 14:18:00 2020 -0400 Merge branch 'tor-github/pr/1968' scripts/maint/practracker/exceptions.txt | 1 + src/core/crypto/onion_crypto.c | 2 +- src/core/or/channeltls.c | 8 +- src/core/or/circuitbuild.c | 276 +--- src/core/or/circuitbuild.h | 23 +-- src/core/or/circuitlist.c| 1 + src/core/or/circuituse.c | 5 +- src/core/or/connection_edge.c| 5 +- src/core/or/crypt_path.c | 2 +- src/core/or/extend_info_st.h | 16 +- src/core/or/extendinfo.c | 305 +++ src/core/or/extendinfo.h | 40 src/core/or/include.am | 2 + src/core/or/onion.h | 3 +- src/core/or/relay.c | 1 + src/feature/client/bridges.c | 18 +- src/feature/control/control_cmd.c| 1 + src/feature/hs/hs_circuit.c | 1 + src/feature/hs/hs_client.c | 1 + src/feature/hs/hs_common.c | 1 + src/feature/hs/hs_service.c | 1 + src/feature/nodelist/describe.c | 10 +- src/feature/nodelist/routerset.c | 19 +- src/feature/relay/circuitbuild_relay.c | 7 +- src/feature/relay/selftest.c | 6 +- src/feature/rend/rendclient.c| 11 +- src/feature/rend/rendcommon.c| 10 +- src/feature/rend/rendparse.c | 17 +- src/feature/rend/rendservice.c | 17 +- src/lib/net/address.h| 10 + src/test/rend_test_helpers.c | 13 +- src/test/test.c | 21 ++- src/test/test_circuitbuild.c | 20 +- src/test/test_circuitpadding.c | 1 + src/test/test_hs_client.c| 6 +- src/test/test_nodelist.c | 4 +- src/test/test_policy.c | 5 +- 37 files changed, 559 insertions(+), 331 deletions(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Allow multiple addresses in extend_info_t.
commit e93ad428e2507f676ce97450b919c2d849633669 Author: Nick Mathewson Date: Tue Jun 30 16:06:05 2020 -0400 Allow multiple addresses in extend_info_t. In practice, there will be at most one ipv4 address and ipv6 address for now, but this code is designed to not care which address is which until forced to do so. This patch does not yet actually create extend_info_t objects with multiple addresses. Closes #34069. --- src/core/or/circuitbuild.c | 79 ++-- src/core/or/extend_info_st.h | 10 - src/core/or/extendinfo.c | 86 ++-- src/core/or/extendinfo.h | 7 src/feature/client/bridges.c | 17 +++- src/feature/nodelist/describe.c | 10 - src/feature/nodelist/routerset.c | 19 ++--- src/feature/relay/selftest.c | 5 ++- src/feature/rend/rendclient.c| 10 - src/feature/rend/rendcommon.c| 9 - src/feature/rend/rendparse.c | 17 +--- src/feature/rend/rendservice.c | 16 +--- src/test/rend_test_helpers.c | 13 -- src/test/test.c | 21 +++--- src/test/test_circuitbuild.c | 10 ++--- src/test/test_hs_client.c| 5 ++- src/test/test_nodelist.c | 4 +- src/test/test_policy.c | 4 +- 18 files changed, 250 insertions(+), 92 deletions(-) diff --git a/src/core/or/circuitbuild.c b/src/core/or/circuitbuild.c index d1f097c25..59ae58b98 100644 --- a/src/core/or/circuitbuild.c +++ b/src/core/or/circuitbuild.c @@ -98,12 +98,13 @@ channel_connect_for_circuit,(const extend_info_t *ei)) { channel_t *chan; - const tor_addr_t *addr = >addr; - uint16_t port = ei->port; + const tor_addr_port_t *orport = extend_info_pick_orport(ei); + if (!orport) +return NULL; const char *id_digest = ei->identity_digest; const ed25519_public_key_t *ed_id = >ed_identity; - chan = channel_connect(addr, port, id_digest, ed_id); + chan = channel_connect(>addr, orport->port, id_digest, ed_id); if (chan) command_setup_channel(chan); return chan; @@ -551,7 +552,7 @@ circuit_handle_first_hop(origin_circuit_t *circ) * - the address is internal, and * - we're not connecting to a configured bridge, and * - we're not configured to allow extends to private addresses. */ - if (tor_addr_is_internal(>extend_info->addr, 0) && + if (extend_info_any_orport_addr_is_internal(firsthop->extend_info) && !extend_info_is_a_configured_bridge(firsthop->extend_info) && !options->ExtendAllowPrivateAddresses) { log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL, @@ -560,19 +561,19 @@ circuit_handle_first_hop(origin_circuit_t *circ) } /* now see if we're already connected to the first OR in 'route' */ - log_debug(LD_CIRC,"Looking for firsthop '%s'", -fmt_addrport(>extend_info->addr, - firsthop->extend_info->port)); - - /* We'll cleanup this code in #33220, when we add an IPv6 address to - * extend_info_t. */ - const bool addr_is_ipv4 = -(tor_addr_family(>extend_info->addr) == AF_INET); + // TODO S55 -- remove this log + log_debug(LD_CIRC,"Looking for firsthop for %s", +extend_info_describe(firsthop->extend_info)); + + const tor_addr_port_t *orport4 = +extend_info_get_orport(firsthop->extend_info, AF_INET); + const tor_addr_port_t *orport6 = +extend_info_get_orport(firsthop->extend_info, AF_INET6); n_chan = channel_get_for_extend( firsthop->extend_info->identity_digest, >extend_info->ed_identity, - addr_is_ipv4 ? >extend_info->addr : NULL, - addr_is_ipv4 ? NULL : >extend_info->addr, + orport4 ? >addr : NULL, + orport6 ? >addr : NULL, , _launch); @@ -1075,42 +1076,40 @@ circuit_send_intermediate_onion_skin(origin_circuit_t *circ, crypt_path_t *hop) { int len; - int family = tor_addr_family(>extend_info->addr); extend_cell_t ec; + /* Relays and bridges can send IPv6 extends. But for clients, it's an + * obvious version distinguisher. */ + const bool include_ipv6 = server_mode(get_options()); memset(, 0, sizeof(ec)); + tor_addr_make_unspec(_ipv4.addr); + tor_addr_make_unspec(_ipv6.addr); log_debug(LD_CIRC,"starting to send subsequent skin."); - /* Relays and bridges can send IPv6 extends. But for clients, it's an - * obvious version distinguisher. */ - if (server_mode(get_options())) { -if (family != AF_INET && family != AF_INET6) { - log_warn(LD_BUG, "Server trying to extend to an invalid address " - "family."); - return - END_CIRC_REASON_INTERNAL; -} - } else { -if (family != AF_INET) { - log_warn(LD_BUG, "Client trying to extend to a non-IPv4 address."); - return -
[tor-commits] [tor/master] Add braces to IF_BUG_ONCE()s introduced in ticket34069.
commit c5707d6cf0d3009655ce4681a228c8d2767a9063 Author: Nick Mathewson Date: Thu Jul 2 11:55:18 2020 -0400 Add braces to IF_BUG_ONCE()s introduced in ticket34069. --- src/core/or/extendinfo.c | 6 -- src/feature/client/bridges.c | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/core/or/extendinfo.c b/src/core/or/extendinfo.c index e4aec634a..bcdb57d5a 100644 --- a/src/core/or/extendinfo.c +++ b/src/core/or/extendinfo.c @@ -240,8 +240,9 @@ bool extend_info_has_orport(const extend_info_t *ei, const tor_addr_t *addr, uint16_t port) { - IF_BUG_ONCE(ei == NULL) + IF_BUG_ONCE(ei == NULL) { return false; + } for (int i = 0; i < EXTEND_INFO_MAX_ADDRS; ++i) { const tor_addr_port_t *ei_ap = >orports[i]; @@ -291,8 +292,9 @@ extend_info_pick_orport(const extend_info_t *ei) bool extend_info_any_orport_addr_is_internal(const extend_info_t *ei) { - IF_BUG_ONCE(ei == NULL) + IF_BUG_ONCE(ei == NULL) { return false; + } for (int i = 0; i < EXTEND_INFO_MAX_ADDRS; ++i) { if (! tor_addr_is_unspec(>orports[i].addr) && diff --git a/src/feature/client/bridges.c b/src/feature/client/bridges.c index 3a3d1bb68..caa477649 100644 --- a/src/feature/client/bridges.c +++ b/src/feature/client/bridges.c @@ -273,8 +273,9 @@ extend_info_is_a_configured_bridge(const extend_info_t *ei) ap1 = >orports[0]; if (! tor_addr_is_null(>orports[1].addr)) ap2 = >orports[1]; - IF_BUG_ONCE(ap1 == NULL) + IF_BUG_ONCE(ap1 == NULL) { return 0; + } return addr_is_a_configured_bridge(>addr, ap1->port, digest) && (ap2 == NULL || addr_is_a_configured_bridge(>addr, ap2->port, digest)); ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/develop] Make README.md more useful.
commit 54e0bd21227ddb99b64a7d8eb8ca0c0457936d92 Author: Karsten Loesing Date: Tue Jun 30 17:55:18 2020 +0200 Make README.md more useful. This commit attempts to make README.md the primary, comprehensive documentation for OnionPerf. There will be more documentation on the wiki for things that change faster than we want to update a file in Git or that are too specific for most users. But this README.md is supposed to cover 90% of the questions that new users would have. Implements #40001. --- README.md | 532 +- 1 file changed, 181 insertions(+), 351 deletions(-) diff --git a/README.md b/README.md index 35d3b7d..9f0faf4 100644 --- a/README.md +++ b/README.md @@ -1,446 +1,276 @@ # OnionPerf -OnionPerf is a utility to track Tor and onion service performance. - -OnionPerf uses multiple processes and threads to download random data -through Tor while tracking the performance of those downloads. The data is -served and fetched on localhost using two TGen (traffic generator) -processes, and is transferred through Tor using Tor client processes and -an ephemeral Tor Onion Service. Tor control information and TGen -performance statistics are logged to disk, analyzed once per day to -produce a json stats database and files that can feed into Torperf, and -can later be used to visualize changes in Tor client performance over time. - -For more information, see https://git.torproject.org/onionperf - -## Table of contents - -* [Quick deployment instructions](#quick-deployment-instructions) -* [Step-by-step installation instructions](#step-by-step-installation-instructions) - - [Get OnionPerf](#get-onionperf) - - [Install System Dependencies](#install-system-dependencies) - - [Install Python modules](#install-python-modules) - - [Build Tor](#build-tor) - - [Build TGen Traffic Generator](#build-tgen-traffic-generator) - - [Build and Install OnionPerf](#build-and-install-onionperf) -* [Run OnionPerf](#run-onionperf) - - [Measure Tor](#measure-tor) - - [Analyze and Visualize Results](#analyze-and-visualize-results) - - [Troubleshooting](#troubleshooting) -* [Contribute](#contribute) - -## Quick deployment instructions - -These are the quick deployment instructions for the current Debian stable distribution. +[TOC] -``` -sudo apt install git cmake make build-essential gcc libigraph0-dev libglib2.0-dev python3-dev libxml2-dev python3-lxml python3-networkx python3-scipy python3-matplotlib python3-numpy libevent-dev libssl-dev python3-stem python3-pandas python3-seaborn python3-setuptools tor +## Overview -git clone https://github.com/shadow/tgen.git -cd tgen -mkdir build -cd build -cmake .. -DCMAKE_INSTALL_PREFIX=/home/$USER/.local -make -sudo ln -s ~/tgen/build/tgen /usr/bin/tgen +### What does OnionPerf do? -git clone https://github.com/torproject/onionperf -cd onionperf -python3 setup.py build -python3 setup.py install --user -``` +OnionPerf measures performance of bulk file downloads over Tor. Together with its predecessor, Torperf, Onionperf has been used to measure long-term performance trends in the Tor network since 2009. It is also being used to perform short-term performance experiments to compare different Tor configurations or implementations. -Once the installation finished, you can find the onionperf script in -`~/.local/bin/`. +OnionPerf uses multiple processes and threads to download random data through Tor while tracking the performance of those downloads. The data is served and fetched on localhost using two TGen (traffic generator) processes, and is transferred through Tor using Tor client processes and an ephemeral Tor onion service. Tor control information and TGen performance statistics are logged to disk and analyzed once per day to produce a JSON analysis file that can later be used to visualize changes in Tor client performance over time. -## Step-by-step installation instructions +### What does OnionPerf *not* do? -Here you can find more detailed instructions for the current Debian stable distribution. +OnionPerf does not attempt to simulate complex traffic patterns like a web-browsing user or a voice-chatting user. It measures a very specific user model: a bulk 5 MiB file download over Tor. -### Get OnionPerf +OnionPerf does not interfere with how Tor selects paths and builds circuits, other than setting configuration values as specified by the user. As a result it cannot be used to measure specific relays nor to scan the entire Tor network. -``` -git clone https://git.torproject.org/onionperf.git -cd onionperf -``` +## Installation -### Install System Dependencies +OnionPerf has a couple dependencies in order to perform measurements or analyze and visualize measurement results. These dependencies include Tor, TGen (traffic generator), and a couple Python packages. - + **Tor** (>= v0.2.7.3-rc): libevent, openssl - + **TGen** (Shadow >=
[tor-commits] [onionperf/develop] Remove Sphinx documentation.
commit 145c9d1c6c281e5d2fd105d492bcc6a43d417565 Author: Karsten Loesing Date: Tue Jun 30 17:59:44 2020 +0200 Remove Sphinx documentation. Most parts of these files, or at least the important parts, are now contained in README.md. Still part of #40001. --- onionperf/docs/Makefile | 20 onionperf/docs/conf.py | 166 -- onionperf/docs/index.rst | 21 onionperf/docs/onionperf.rst | 269 --- 4 files changed, 476 deletions(-) diff --git a/onionperf/docs/Makefile b/onionperf/docs/Makefile deleted file mode 100644 index 91510a1..000 --- a/onionperf/docs/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS= -SPHINXBUILD = sphinx-build -SPHINXPROJ= onionperf -SOURCEDIR = . -BUILDDIR = _build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/onionperf/docs/conf.py b/onionperf/docs/conf.py deleted file mode 100644 index 6344c90..000 --- a/onionperf/docs/conf.py +++ /dev/null @@ -1,166 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Configuration file for the Sphinx documentation builder. -# -# This file does only contain a selection of the most common options. For a -# full list see the documentation: -# http://www.sphinx-doc.org/en/master/config - -# -- Path setup -- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -import os -import sys -sys.path.insert(0, os.path.abspath('..')) - - -# -- Project information - - -project = 'onionperf' -copyright = '2019, Ana Custura' -author = 'Ana Custura' - -# The short X.Y version -version = '' -# The full version, including alpha/beta/rc tags -release = '' - - -# -- General configuration --- - -# If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ -'sphinx.ext.autodoc', -'sphinx.ext.intersphinx', -'sphinx.ext.viewcode', -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -# The master toctree document. -master_doc = 'index' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path . -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - - -# -- Options for HTML output - - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = 'alabaster' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# -# html_theme_options = {} - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# Custom sidebar templates, must be a dictionary that maps document names -# to template names. -# -# The default sidebars (for documents that don't match any pattern) are -# defined by theme itself. Builtin themes are using these templates by -# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', -# 'searchbox.html']``. -# -# html_sidebars = {} - - -# -- Options for HTMLHelp output
[tor-commits] [onionperf/develop] Adds links to TGen documentation
commit e67947bf7a8879dadbadcd7e141a6e0dc3825f68 Author: Ana Custura Date: Thu Jul 2 10:21:32 2020 +0100 Adds links to TGen documentation --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b66d6bc..7ffb900 100644 --- a/README.md +++ b/README.md @@ -194,7 +194,9 @@ onionperf measure --additional-client-conf="UseBridges 1\nBridge 72.14.177.231:9 OnionPerf is a relatively simple tool that can be adapted to do more complex measurements beyond what can be configured on the command line. -For example, the hard-coded traffic model generated by OnionPerf and executed by the TGen processes is to send a small request from client to server and receive a relatively large response of 5 MiB of random data back. This model can be changed by editing `~/onionperf/onionperf/model.py`, rebuilding, and restarting measurements. For specifics, see the TGen documentation. +For example, the hard-coded traffic model generated by OnionPerf and executed by the TGen processes is to send a small request from client to server and receive a relatively large response of 5 MiB of random data back. This model can be changed by editing `~/onionperf/onionperf/model.py`, rebuilding, and restarting measurements. For specifics, see the [TGen +documentation](https://github.com/shadow/tgen/blob/master/doc/TGen-Overview.md) +and [TGen traffic model examples](https://github.com/shadow/tgen/blob/master/tools/scripts/generate_tgen_config.py). ### Sharing measurement results ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/develop] Bump version to 0.5.
commit adece5d55b8eb7eab03167f5bdd91330ba195b36 Author: Karsten Loesing Date: Thu Jul 2 21:06:31 2020 +0200 Bump version to 0.5. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f779267..d15157f 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ with open('requirements.txt') as f: install_requires = f.readlines() setup(name='OnionPerf', - version='0.3', + version='0.5', description='A utility to monitor, measure, analyze, and visualize the performance of Tor and Onion Services', author='Rob Jansen', url='https://github.com/robgjansen/onionperf/', ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/develop] Minor spelling, adds TOC
commit 508d3bccedc56af6559bcb5e367172dffec73a05 Author: Ana Custura Date: Thu Jul 2 10:02:47 2020 +0100 Minor spelling, adds TOC --- README.md | 26 ++ 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9f0faf4..b66d6bc 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,30 @@ # OnionPerf - -[TOC] + * [Overview](#overview) ++ [What does OnionPerf do?](#what-does-onionperf-do-) ++ [What does OnionPerf *not* do?](#what-does-onionperf--not--do-) + * [Installation](#installation) ++ [Tor](#tor) ++ [TGen](#tgen) ++ [OnionPerf](#onionperf-1) + * [Measurement](#measurement) ++ [Starting and stopping measurements](#starting-and-stopping-measurements) ++ [Output directories and files](#output-directories-and-files) ++ [Changing Tor configurations](#changing-tor-configurations) ++ [Changing the TGen traffic model](#changing-the-tgen-traffic-model) ++ [Sharing measurement results](#sharing-measurement-results) ++ [Troubleshooting](#troubleshooting) + * [Analysis](#analysis) ++ [Analyzing measurement results](#analyzing-measurement-results) ++ [Visualizing measurement results](#visualizing-measurement-results) ++ [Interpreting the PDF output format](#interpreting-the-pdf-output-format) ++ [Interpreting the CSV output format](#interpreting-the-csv-output-format) + * [Contributing](#contributing) ## Overview ### What does OnionPerf do? -OnionPerf measures performance of bulk file downloads over Tor. Together with its predecessor, Torperf, Onionperf has been used to measure long-term performance trends in the Tor network since 2009. It is also being used to perform short-term performance experiments to compare different Tor configurations or implementations. +OnionPerf measures performance of bulk file downloads over Tor. Together with its predecessor, Torperf, OnionPerf has been used to measure long-term performance trends in the Tor network since 2009. It is also being used to perform short-term performance experiments to compare different Tor configurations or implementations. OnionPerf uses multiple processes and threads to download random data through Tor while tracking the performance of those downloads. The data is served and fetched on localhost using two TGen (traffic generator) processes, and is transferred through Tor using Tor client processes and an ephemeral Tor onion service. Tor control information and TGen performance statistics are logged to disk and analyzed once per day to produce a JSON analysis file that can later be used to visualize changes in Tor client performance over time. @@ -180,7 +198,7 @@ For example, the hard-coded traffic model generated by OnionPerf and executed by ### Sharing measurement results -Measurement results can be further analyzed and visualized on the measuring host. But in many cases it's more conventient to do analysis and visualization on another host, also to compare measurements from different hosts to each other. +Measurement results can be further analyzed and visualized on the measuring host. But in many cases it's more convenient to do analysis and visualization on another host, also to compare measurements from different hosts to each other. There are at least two common ways of sharing measurement results: ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/develop] Merge branch 'task-40001' into develop
commit 454c045013ea2b6f669819fe702a0f794cc59927 Merge: 83e4b52 e305128 Author: Karsten Loesing Date: Thu Jul 2 21:02:01 2020 +0200 Merge branch 'task-40001' into develop README.md| 558 --- onionperf/docs/Makefile | 20 -- onionperf/docs/conf.py | 166 - onionperf/docs/index.rst | 21 -- onionperf/docs/onionperf.rst | 269 - 5 files changed, 208 insertions(+), 826 deletions(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/develop] Rewrite a sentence, add a paragraph.
commit b677afc53c3885085c83c12b2b8f6967021f5033 Author: Karsten Loesing Date: Thu Jul 2 16:19:08 2020 +0200 Rewrite a sentence, add a paragraph. --- README.md | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1f58f0d..46abd01 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ The following description was written with a Debian system in mind but should be ### Tor -OnionPerf relies on the `tor` binary to start a Tor client process on the client side and a server side process to host onion services. +OnionPerf relies on the `tor` binary to start a Tor process on the client side to make client requests and another Tor process on the server side to host onion services. The easiest way to satisfy this dependency is to install the `tor` package, which puts the `tor` binary into the `PATH` where OnionPerf will find it. Optionally, systemd can be instructed to make sure that `tor` is never started as a service: @@ -288,6 +288,12 @@ The CSV output file contains the same data that is visualized in the PDF file. I - `time_to_first_byte` is the time in seconds (with microsecond precision) to download the first byte. - `time_to_last_byte` is the time in seconds (with microsecond precision) to download the last byte. +### Visualizations on Tor Metrics + +The analysis and visualization steps above can all be done by using the OnionPerf tool. In addition to that it's possible to visualize OnionPerf analysis files using other tools. + +For example, the [Tor Metrics website](https://metrics.torproject.org/torperf.html) contains various graphs based OnionPerf data. + ## Contributing The OnionPerf code is developed at https://gitlab.torproject.org/tpo/metrics/onionperf. ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/develop] Update table of contents.
commit e30512870f0cccfa29f54b778025fa4d71417a19 Author: Karsten Loesing Date: Thu Jul 2 20:58:41 2020 +0200 Update table of contents. Updated using: https://ecotrust-canada.github.io/markdown-toc/ --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 46abd01..77384c6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # OnionPerf - * [Overview](#overview) + + * [Overview](#overview) + [What does OnionPerf do?](#what-does-onionperf-do-) + [What does OnionPerf *not* do?](#what-does-onionperf--not--do-) * [Installation](#installation) @@ -18,6 +19,7 @@ + [Visualizing measurement results](#visualizing-measurement-results) + [Interpreting the PDF output format](#interpreting-the-pdf-output-format) + [Interpreting the CSV output format](#interpreting-the-csv-output-format) ++ [Visualizations on Tor Metrics](#visualizations-on-tor-metrics) * [Contributing](#contributing) ## Overview ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/develop] Rewrites/clarifies some text
commit 3c129c371a10a69a1789c1af4ac8495a0a783203 Author: Ana Custura Date: Thu Jul 2 10:50:29 2020 +0100 Rewrites/clarifies some text --- README.md | 16 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 7ffb900..1f58f0d 100644 --- a/README.md +++ b/README.md @@ -36,15 +36,15 @@ OnionPerf does not interfere with how Tor selects paths and builds circuits, oth ## Installation -OnionPerf has a couple dependencies in order to perform measurements or analyze and visualize measurement results. These dependencies include Tor, TGen (traffic generator), and a couple Python packages. +OnionPerf has several dependencies in order to perform measurements or analyze and visualize measurement results. These dependencies include Tor, TGen (traffic generator), and a few Python packages. The following description was written with a Debian system in mind but should be transferable to other Linux distributions and possibly even other operating systems. ### Tor -OnionPerf relies on the `tor` binary to start a Tor client on the client side and another one on the server side to host onion services. +OnionPerf relies on the `tor` binary to start a Tor client process on the client side and a server side process to host onion services. -The easiest way is to install the `tor` package, which puts the `tor` binary into the `PATH` where OnionPerf will find it. Optionally, systemd can be instructed to make sure that `tor` is never started as a service: +The easiest way to satisfy this dependency is to install the `tor` package, which puts the `tor` binary into the `PATH` where OnionPerf will find it. Optionally, systemd can be instructed to make sure that `tor` is never started as a service: ```shell sudo apt install tor @@ -88,7 +88,7 @@ The TGen binary will be contained in `~/tgen/build/tgen`, which is also the path OnionPerf is written in Python 3. The following instructions assume that a Python virtual environment is being used, even though installation is also possible without that. -The virtual environment is being created, activated, and tested using: +The virtual environment is created, activated, and tested using: ```shell sudo apt install python3-venv @@ -100,14 +100,14 @@ which python3 The last command should output something like `~/venv/bin/python3` as the path to the `python3` binary used in the virtual environment. -In the next step, the OnionPerf repository is being cloned and requirements are being installed: +The next step is to clone the OnionPerf repository and install its requirements: ```shell git clone https://git.torproject.org/onionperf.git pip3 install --no-cache -r onionperf/requirements.txt ``` -The next step after that is to install OnionPerf and print out the usage information to see if the installation was successful: +The final step is to install OnionPerf and print out the usage information to see if the installation was successful: ```shell cd onionperf/ @@ -122,7 +122,7 @@ The virtual environment is deactivated with the following command: deactivate ``` -However, in order to perform measurements or doing analyses, the virtual environment needs to be activated first. This will ensure all the paths are found. +However, in order to perform measurements or analyses, the virtual environment needs to be activated first. This will ensure all the paths are found. ## Measurement @@ -133,7 +133,7 @@ Ideally, OnionPerf is run detached from the terminal session using tmux, systemd ### Starting and stopping measurements -The most trivial configuration is to measure onion services only. In that case, OnionPerf is taking care of all configurations, and there are no firewall rules or port forwards to take care of. +The most trivial configuration is to measure onion services only. In that case, OnionPerf runs without needing any additional configuration. For direct measurements via exit nodes, firewall rules or port forwarding may be required to allow inbound connections to the TGen server. Starting these measurements is as simple as: ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/policies-code_of_conducttxtpot] https://gitweb.torproject.org/translation.git/commit/?h=policies-code_of_conducttxtpot
commit b5664c2b73642d0558a79abad33a70011e9340d2 Author: Translation commit bot Date: Thu Jul 2 17:45:50 2020 + https://gitweb.torproject.org/translation.git/commit/?h=policies-code_of_conducttxtpot --- code_of_conduct+fr.po | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code_of_conduct+fr.po b/code_of_conduct+fr.po index 9e9cdc3cac..0815998fe9 100644 --- a/code_of_conduct+fr.po +++ b/code_of_conduct+fr.po @@ -6,8 +6,8 @@ # # Translators: # David Georges, 2019 -# robin Amielh , 2019 -# AO , 2019 +# a00fce65fdff2427915d78cd7ee0a4f6_c16c729 , 2019 +# AO , 2020 # #, fuzzy msgid "" @@ -15,7 +15,7 @@ msgstr "" "Project-Id-Version: Code of conduct of the Tor Project\n" "POT-Creation-Date: 2019-08-02 12:00+\n" "PO-Revision-Date: 2019-08-27 18:54+\n" -"Last-Translator: AO , 2019\n" +"Last-Translator: AO , 2020\n" "Language-Team: French (https://www.transifex.com/otf/teams/1519/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -56,7 +56,7 @@ msgid "" "community. Tor is a place where people should feel safe to engage, share " "their point of view, and participate." msgstr "" -"Le Projet Tor est déterminé à promouvoir un environnement et une communauté " +"Le Projet Tor est déterminé à promouvoir un environnement et une communauté " "qui favorisent lâintégration. Tor est un lieu où les gens devraient avoir le" " sentiment de pouvoir sâimpliquer, partager leur point de vue et participer " "en toute sécurité." ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/communitytpo-contentspot] https://gitweb.torproject.org/translation.git/commit/?h=communitytpo-contentspot
commit e6f13b569253cbfee05b721e3c2a2d61a04f077b Author: Translation commit bot Date: Thu Jul 2 17:45:18 2020 + https://gitweb.torproject.org/translation.git/commit/?h=communitytpo-contentspot --- contents+fr.po | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/contents+fr.po b/contents+fr.po index 0f12016738..45eb240964 100644 --- a/contents+fr.po +++ b/contents+fr.po @@ -7,8 +7,8 @@ # Emma Peel, 2019 # a00fce65fdff2427915d78cd7ee0a4f6_c16c729 , 2020 # David Georges, 2020 -# AO , 2020 # A R , 2020 +# AO , 2020 # msgid "" msgstr "" @@ -16,7 +16,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-11 12:15+CET\n" "PO-Revision-Date: 2019-12-11 10:50+\n" -"Last-Translator: A R , 2020\n" +"Last-Translator: AO , 2020\n" "Language-Team: French (https://www.transifex.com/otf/teams/1519/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1884,7 +1884,7 @@ msgid "" "community. Tor is a place where people should feel safe to engage, share " "their point of view, and participate." msgstr "" -"Le Projet Tor est déterminé à promouvoir un environnement et une communauté " +"Le Projet Tor est déterminé à promouvoir un environnement et une communauté " "qui favorisent lâintégration. Tor est un lieu où les gens devraient avoir le" " sentiment de pouvoir sâimpliquer, partager leur point de vue et participer " "en toute sécurité." @@ -10712,7 +10712,7 @@ msgstr "Si Tor est utilisé ou non." #: templates/homepage.html:4 templates/meta.html:7 msgid "Tor Project" -msgstr "Le Projet Tor" +msgstr "Le Projet Tor" #: templates/localization.html:27 msgid "Can you help us improve our translations?" ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/bridgedb_completed] https://gitweb.torproject.org/translation.git/commit/?h=bridgedb_completed
commit 5175314a94ac111dfb89fcaef03e214acd42a0ef Author: Translation commit bot Date: Thu Jul 2 17:45:11 2020 + https://gitweb.torproject.org/translation.git/commit/?h=bridgedb_completed --- pt_PT/LC_MESSAGES/bridgedb.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pt_PT/LC_MESSAGES/bridgedb.po b/pt_PT/LC_MESSAGES/bridgedb.po index 1fd0798c71..147cd9c424 100644 --- a/pt_PT/LC_MESSAGES/bridgedb.po +++ b/pt_PT/LC_MESSAGES/bridgedb.po @@ -16,8 +16,8 @@ msgstr "" "Project-Id-Version: Tor Project\n" "Report-Msgid-Bugs-To: 'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB=bridgedb-reported,msgid=isis,sysrqb=isis'\n" "POT-Creation-Date: 2020-05-14 14:21-0700\n" -"PO-Revision-Date: 2020-05-24 11:43+\n" -"Last-Translator: Hugo Costa \n" +"PO-Revision-Date: 2020-07-02 17:23+\n" +"Last-Translator: Manuela Silva \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/otf/torproject/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -391,7 +391,7 @@ msgid "" "Add these bridges to your Tor Browser by opening your browser\n" "preferences, clicking on \"Tor\", and then adding them to the \"Provide a\n" "bridge\" field." -msgstr "" +msgstr "Adicione estas pontes ao seu Tor Browser, abrindo as preferências do \nseu navegador, clique em \"Tor\", e depois adicione-as ao campo \"Fornecer uma ponte\"." #: bridgedb/strings.py:173 msgid "(Request unobfuscated Tor bridges.)" ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tba-torbrowserstringsdtd] https://gitweb.torproject.org/translation.git/commit/?h=tba-torbrowserstringsdtd
commit be5fe2e60cc739a940cec3f8d508365e762f89b7 Author: Translation commit bot Date: Thu Jul 2 21:16:48 2020 + https://gitweb.torproject.org/translation.git/commit/?h=tba-torbrowserstringsdtd --- nl/torbrowser_strings.dtd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nl/torbrowser_strings.dtd b/nl/torbrowser_strings.dtd index 8d73464d31..083a034295 100644 --- a/nl/torbrowser_strings.dtd +++ b/nl/torbrowser_strings.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tba-torbrowserstringsdtd] https://gitweb.torproject.org/translation.git/commit/?h=tba-torbrowserstringsdtd
commit 2698ac7b89d334a64cc5741396f3332ccc8bc17f Author: Translation commit bot Date: Fri Jul 3 02:16:49 2020 + https://gitweb.torproject.org/translation.git/commit/?h=tba-torbrowserstringsdtd --- pt-BR/torbrowser_strings.dtd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pt-BR/torbrowser_strings.dtd b/pt-BR/torbrowser_strings.dtd index 06ed444307..9057e56f11 100644 --- a/pt-BR/torbrowser_strings.dtd +++ b/pt-BR/torbrowser_strings.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tba-torbrowserstringsdtd] https://gitweb.torproject.org/translation.git/commit/?h=tba-torbrowserstringsdtd
commit 4ef7706ce368e6c8a146885fcaabf7272b358f2d Author: Translation commit bot Date: Fri Jul 3 03:47:12 2020 + https://gitweb.torproject.org/translation.git/commit/?h=tba-torbrowserstringsdtd --- ach/torbrowser_strings.dtd | 7 --- af/torbrowser_strings.dtd| 7 --- ar/torbrowser_strings.dtd| 7 --- ast/torbrowser_strings.dtd | 7 --- az/torbrowser_strings.dtd| 7 --- be/torbrowser_strings.dtd| 7 --- bg/torbrowser_strings.dtd| 7 --- bn-BD/torbrowser_strings.dtd | 7 --- br/torbrowser_strings.dtd| 7 --- bs/torbrowser_strings.dtd| 7 --- ca/torbrowser_strings.dtd| 7 --- cs/torbrowser_strings.dtd| 7 --- cy/torbrowser_strings.dtd| 7 --- da/torbrowser_strings.dtd| 7 --- de/torbrowser_strings.dtd| 7 --- el/torbrowser_strings.dtd| 7 --- en-GB/torbrowser_strings.dtd | 7 --- en-US/torbrowser_strings.dtd | 7 --- en/torbrowser_strings.dtd| 7 --- eo/torbrowser_strings.dtd| 7 --- es-AR/torbrowser_strings.dtd | 7 --- es-ES/torbrowser_strings.dtd | 7 --- es-MX/torbrowser_strings.dtd | 7 --- et/torbrowser_strings.dtd| 7 --- eu/torbrowser_strings.dtd| 7 --- fa/torbrowser_strings.dtd| 7 --- fi/torbrowser_strings.dtd| 7 --- fr/torbrowser_strings.dtd| 7 --- fy-NL/torbrowser_strings.dtd | 7 --- ga-IE/torbrowser_strings.dtd | 7 --- gd/torbrowser_strings.dtd| 7 --- gl/torbrowser_strings.dtd| 7 --- gu-IN/torbrowser_strings.dtd | 7 --- he/torbrowser_strings.dtd| 7 --- hi-IN/torbrowser_strings.dtd | 7 --- hr/torbrowser_strings.dtd| 7 --- hu/torbrowser_strings.dtd| 7 --- hy-AM/torbrowser_strings.dtd | 7 --- ia/torbrowser_strings.dtd| 7 --- id/torbrowser_strings.dtd| 7 --- is/torbrowser_strings.dtd| 7 --- it/torbrowser_strings.dtd| 7 --- ja/torbrowser_strings.dtd| 7 --- ka/torbrowser_strings.dtd| 7 --- kab/torbrowser_strings.dtd | 7 --- kk/torbrowser_strings.dtd| 7 --- km/torbrowser_strings.dtd| 7 --- kn/torbrowser_strings.dtd| 7 --- ko/torbrowser_strings.dtd| 7 --- lt/torbrowser_strings.dtd| 7 --- lv/torbrowser_strings.dtd| 7 --- mk/torbrowser_strings.dtd| 7 --- ml/torbrowser_strings.dtd| 7 --- mr/torbrowser_strings.dtd| 7 --- ms/torbrowser_strings.dtd| 7 --- my/torbrowser_strings.dtd| 7 --- nb-NO/torbrowser_strings.dtd | 7 --- ne/torbrowser_strings.dtd| 7 --- nl-BE/torbrowser_strings.dtd | 7 --- nl/torbrowser_strings.dtd| 7 --- nn-NO/torbrowser_strings.dtd | 7 --- oc/torbrowser_strings.dtd| 7 --- or/torbrowser_strings.dtd| 7 --- pa-IN/torbrowser_strings.dtd | 7 --- pl/torbrowser_strings.dtd| 7 --- pt-BR/torbrowser_strings.dtd | 7 --- pt-PT/torbrowser_strings.dtd | 7 --- ro/torbrowser_strings.dtd| 7 --- ru/torbrowser_strings.dtd| 7 --- si/torbrowser_strings.dtd| 7 --- sk/torbrowser_strings.dtd| 7 --- sl/torbrowser_strings.dtd| 7 --- son/torbrowser_strings.dtd | 7 --- sq/torbrowser_strings.dtd| 7 --- sr/torbrowser_strings.dtd| 7 --- sv-SE/torbrowser_strings.dtd | 7 --- sw/torbrowser_strings.dtd| 7 --- ta/torbrowser_strings.dtd| 7 --- te/torbrowser_strings.dtd| 7 --- th/torbrowser_strings.dtd| 7 --- tr/torbrowser_strings.dtd| 7 --- uk/torbrowser_strings.dtd| 7 --- ur/torbrowser_strings.dtd| 7 --- uz/torbrowser_strings.dtd| 7 --- vi/torbrowser_strings.dtd| 7 --- zh-CN/torbrowser_strings.dtd | 7 --- zh-HK/torbrowser_strings.dtd | 7 --- zh-TW/torbrowser_strings.dtd | 7 --- 88 files changed, 616 deletions(-) diff --git a/ach/torbrowser_strings.dtd b/ach/torbrowser_strings.dtd index d4009b272c..dd3f0cc06f 100644 --- a/ach/torbrowser_strings.dtd +++ b/ach/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/af/torbrowser_strings.dtd b/af/torbrowser_strings.dtd index 6ee9f2a2c4..e094a6f34f 100644 --- a/af/torbrowser_strings.dtd +++ b/af/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/ar/torbrowser_strings.dtd b/ar/torbrowser_strings.dtd index 866ebbd1d7..ddec85229c 100644 --- a/ar/torbrowser_strings.dtd +++ b/ar/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/ast/torbrowser_strings.dtd b/ast/torbrowser_strings.dtd index dadc3fc654..6216c25b88 100644 --- a/ast/torbrowser_strings.dtd +++ b/ast/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/az/torbrowser_strings.dtd b/az/torbrowser_strings.dtd index a247a2b74c..af2d97cc56 100644 ---
[tor-commits] [translation/tba-torbrowserstringsdtd_completed] https://gitweb.torproject.org/translation.git/commit/?h=tba-torbrowserstringsdtd_completed
commit 805da0593fdfd3cd168206ebfd8b20dfe6eb1bff Author: Translation commit bot Date: Fri Jul 3 03:47:24 2020 + https://gitweb.torproject.org/translation.git/commit/?h=tba-torbrowserstringsdtd_completed --- ar/torbrowser_strings.dtd| 7 --- bn-BD/torbrowser_strings.dtd | 7 --- ca/torbrowser_strings.dtd| 7 --- cs/torbrowser_strings.dtd| 7 --- da/torbrowser_strings.dtd| 7 --- de/torbrowser_strings.dtd| 7 --- el/torbrowser_strings.dtd| 7 --- en-GB/torbrowser_strings.dtd | 7 --- en-US/torbrowser_strings.dtd | 7 --- en/torbrowser_strings.dtd| 7 --- es-AR/torbrowser_strings.dtd | 7 --- es-ES/torbrowser_strings.dtd | 7 --- fa/torbrowser_strings.dtd| 7 --- fr/torbrowser_strings.dtd| 7 --- ga-IE/torbrowser_strings.dtd | 4 ++-- he/torbrowser_strings.dtd| 7 --- hr/torbrowser_strings.dtd| 7 --- hu/torbrowser_strings.dtd| 7 --- id/torbrowser_strings.dtd| 7 --- is/torbrowser_strings.dtd| 7 --- it/torbrowser_strings.dtd| 7 --- ja/torbrowser_strings.dtd| 7 --- ka/torbrowser_strings.dtd| 7 --- ko/torbrowser_strings.dtd| 7 --- lt/torbrowser_strings.dtd| 7 --- mk/torbrowser_strings.dtd| 7 --- ms/torbrowser_strings.dtd| 7 --- nb-NO/torbrowser_strings.dtd | 7 --- nl/torbrowser_strings.dtd| 7 --- pl/torbrowser_strings.dtd| 7 --- pt-BR/torbrowser_strings.dtd | 7 --- pt-PT/torbrowser_strings.dtd | 7 --- ro/torbrowser_strings.dtd| 7 --- ru/torbrowser_strings.dtd| 7 --- sk/torbrowser_strings.dtd| 7 --- sv-SE/torbrowser_strings.dtd | 7 --- th/torbrowser_strings.dtd| 7 --- tr/torbrowser_strings.dtd| 7 --- uk/torbrowser_strings.dtd| 7 --- zh-CN/torbrowser_strings.dtd | 7 --- zh-TW/torbrowser_strings.dtd | 7 --- 41 files changed, 2 insertions(+), 282 deletions(-) diff --git a/ar/torbrowser_strings.dtd b/ar/torbrowser_strings.dtd index 55feffe398..918508ce78 100644 --- a/ar/torbrowser_strings.dtd +++ b/ar/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/bn-BD/torbrowser_strings.dtd b/bn-BD/torbrowser_strings.dtd index 55feffe398..918508ce78 100644 --- a/bn-BD/torbrowser_strings.dtd +++ b/bn-BD/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/ca/torbrowser_strings.dtd b/ca/torbrowser_strings.dtd index 55feffe398..918508ce78 100644 --- a/ca/torbrowser_strings.dtd +++ b/ca/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/cs/torbrowser_strings.dtd b/cs/torbrowser_strings.dtd index 3ee7ffe8da..ac3c4e9012 100644 --- a/cs/torbrowser_strings.dtd +++ b/cs/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/da/torbrowser_strings.dtd b/da/torbrowser_strings.dtd index 2744ec6219..5a81aa2a08 100644 --- a/da/torbrowser_strings.dtd +++ b/da/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/de/torbrowser_strings.dtd b/de/torbrowser_strings.dtd index 55feffe398..918508ce78 100644 --- a/de/torbrowser_strings.dtd +++ b/de/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/el/torbrowser_strings.dtd b/el/torbrowser_strings.dtd index 55feffe398..918508ce78 100644 --- a/el/torbrowser_strings.dtd +++ b/el/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/en-GB/torbrowser_strings.dtd b/en-GB/torbrowser_strings.dtd index 55feffe398..918508ce78 100644 --- a/en-GB/torbrowser_strings.dtd +++ b/en-GB/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/en-US/torbrowser_strings.dtd b/en-US/torbrowser_strings.dtd index 55feffe398..918508ce78 100644 --- a/en-US/torbrowser_strings.dtd +++ b/en-US/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/en/torbrowser_strings.dtd b/en/torbrowser_strings.dtd index 55feffe398..918508ce78 100644 --- a/en/torbrowser_strings.dtd +++ b/en/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/es-AR/torbrowser_strings.dtd b/es-AR/torbrowser_strings.dtd index debc6d7ade..529b7e4423 100644 --- a/es-AR/torbrowser_strings.dtd +++ b/es-AR/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/es-ES/torbrowser_strings.dtd b/es-ES/torbrowser_strings.dtd index 388ac0a4df..8dc6f8c93a 100644 --- a/es-ES/torbrowser_strings.dtd +++ b/es-ES/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - - @@ -54,7 +48,6 @@ - diff --git a/fa/torbrowser_strings.dtd b/fa/torbrowser_strings.dtd index 55feffe398..918508ce78 100644 --- a/fa/torbrowser_strings.dtd +++ b/fa/torbrowser_strings.dtd @@ -1,9 +1,3 @@ - - - -
[tor-commits] [onionperf/develop] Write generated torrc files to disk.
commit 30949a4218cf06c8e73927ec0db06dfa6d662294 Author: Karsten Loesing Date: Wed Jul 1 16:50:57 2020 +0200 Write generated torrc files to disk. Implements #40002. --- onionperf/measurement.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/onionperf/measurement.py b/onionperf/measurement.py index 4a58bc4..1540bac 100644 --- a/onionperf/measurement.py +++ b/onionperf/measurement.py @@ -439,6 +439,9 @@ WarnUnsafeSocks 0\nSafeLogging 0\nMaxCircuitDirtiness 60 seconds\nDataDirectory if not os.path.exists(tor_datadir): os.makedirs(tor_datadir) tor_config = self.create_tor_config(control_port,socks_port,tor_datadir,name) +tor_confpath = "{0}/torrc".format(tor_datadir) +with open(tor_confpath, 'wt') as f: +f.write(tor_config) tor_logpath = "{0}/onionperf.tor.log".format(tor_datadir) tor_writable = util.FileWritable(tor_logpath) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/develop] Merge branch 'task-40002' into develop
commit 0a9c6aca86f44660e4895c643484c0c16fc9c705 Merge: 3e1d149 30949a4 Author: Karsten Loesing Date: Thu Jul 2 10:22:24 2020 +0200 Merge branch 'task-40002' into develop onionperf/measurement.py | 3 +++ 1 file changed, 3 insertions(+) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/develop] Merge branch 'task-40004' into develop
commit 83e4b52575576806f1879f3912f4a913c3e06747 Merge: 0a9c6ac fc6e970 Author: Karsten Loesing Date: Thu Jul 2 10:43:05 2020 +0200 Merge branch 'task-40004' into develop onionperf/visualization.py | 7 --- 1 file changed, 4 insertions(+), 3 deletions(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [onionperf/develop] Always include error_code column in CSV output.
commit fc6e9702d3012edca463b96fbbe218bbff70d6c7 Author: Karsten Loesing Date: Wed Jul 1 15:20:27 2020 +0200 Always include error_code column in CSV output. We should include an error_code column in the CSV output, regardless of whether data contains measurements with an error code or not. Everything else is just too confusing to whoever processes these files. Fixes #40004. --- onionperf/visualization.py | 7 --- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/onionperf/visualization.py b/onionperf/visualization.py index 2107d5a..0a2a9d9 100644 --- a/onionperf/visualization.py +++ b/onionperf/visualization.py @@ -58,7 +58,8 @@ class TGenVisualization(Visualization): tgen_transfers = analysis.get_tgen_transfers(client) for transfer_id, transfer_data in tgen_transfers.items(): transfer = {"transfer_id": transfer_id, "label": label, -"filesize_bytes": transfer_data["filesize_bytes"]} +"filesize_bytes": transfer_data["filesize_bytes"], +"error_code": None} transfer["server"] = "onion" if ".onion:" in transfer_data["endpoint_remote"] else "public" if "elapsed_seconds" in transfer_data: s = transfer_data["elapsed_seconds"] @@ -147,7 +148,7 @@ class TGenVisualization(Visualization): def __plot_errors_count(self): for server in self.data["server"].unique(): -if "error_code" in self.data.columns and self.data[self.data["server"] == server]["error_code"].count() > 0: +if self.data[self.data["server"] == server]["error_code"].count() > 0: self.__draw_countplot(x="error_code", hue="label", hue_name="Data set", data=self.data[self.data["server"] == server], xlabel="Error code", ylabel="Downloads failed (#)", @@ -155,7 +156,7 @@ class TGenVisualization(Visualization): def __plot_errors_time(self): for server in self.data["server"].unique(): -if "error_code" in self.data.columns and self.data[self.data["server"] == server]["error_code"].count() > 0: +if self.data[self.data["server"] == server]["error_code"].count() > 0: self.__draw_stripplot(x="start", y="error_code", hue="label", hue_name="Data set", data=self.data[self.data["server"] == server], xlabel="Download start time", ylabel="Error code", ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits