summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | tor-dirmgr: Create a bootstrap-status exporting mechanism.Nick Mathewson2022-01-186-9/+598
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The interface is similar to the one exposed by `arti-client`: it internally uses postage::watch to give a series of events showing when a bootstrap status is changing. Thanks to the existing state/driver separation in the DirMgr design we don't need much new logic: each download state needs to expose (internally) how far along it is in its download, which the bootstrap code passes to the DirMgr if it has changed. I believe that in the long run, we'll probably want to expose more (or different) information here, and we'll want to process it differently. With that in mind, I've made the API for `DirBootstrapStatus` deliberately narrow, so that we can change its of its internal later on without breaking code that depends on it. (The information exposed by this commit is not yet summarized in `arti-client`.) Part of #96.
* | | Merge branch 'eta/292-2' into 'main'eta2022-01-191-20/+95
|\ \ \ | | | | | | | | | | | | | | | | arti-bench: add concurrency, write benchmark results out to JSON See merge request tpo/core/arti!243
| * | | arti-bench: add concurrency, write benchmark results out to JSONeta2022-01-181-20/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We now conduct benchmark tests with multiple concurrent streams (by default; this is configurable by passing `-p` to `arti-bench`). Currently, these results just get "flattened" for the purposes of statistical analysis (as in, results_raw contains the results of each connection's timing summary, across all benchmark runs). This might be something we wish to change in future. The stats summary now also records "best" and "worst" values for each metric, to give a rough idea of the range of values encountered. Additionally, we now support writing the benchmark results out to a JSON file. A future commit may integrate this with CI, so that we have benchmark results for every commit as a build artefact. (some documentation was also fixed) part of arti#292
* | | | maint/changed_crates.sh: Add a missing space.Nick Mathewson2022-01-191-1/+1
| | | | | | | | | | | | | | | | found by shellcheck.
* | | | Merge branch 'coverage_script'Nick Mathewson2022-01-191-2/+99
|\ \ \ \
| * | | | coverage.sh: Treat no-tests-selected as an error.Nick Mathewson2022-01-191-3/+2
| | | | |
| * | | | Rewrite coverage.sh to use with_coverage.Nick Mathewson2022-01-131-2/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `coverage.sh` is now a more elaborate script to before, thanks to moving from tarpaulin to grcov via `with_coverage.sh`. This commit also adds support for the minimalistic chutney+curl-based integration test from our gitlab-ci.yml file. See the message from "coverage.sh -h" for information about running these tests. Closes #248.
* | | | | Merge branch 'correct-cache' into 'main'eta2022-01-191-1/+1
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Put our cache files in the right place. Closes #297 See merge request tpo/core/arti!244
| * | | | | Put our cache files in the right place.Nick Mathewson2022-01-181-1/+1
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | This resolves a copy-and-paste error where we were putting everything in our state directory. Closes #297.
* | | | | Add a needs-more-testers note to Android and iOS guides.Nick Mathewson2022-01-182-0/+8
| | | | |
* | | | | Merge branch 'ios-doc' into 'main'Nick Mathewson2022-01-182-6/+165
|\ \ \ \ \ | |_|_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | add iOS documentation Closes #132 See merge request tpo/core/arti!242
| * | | | add iOS documentationTrinity Pointard2022-01-172-6/+165
|/ / / /
* | | | Merge branch 'eta/292-1' into 'main'eta2022-01-143-30/+180
|\ \ \ \ | |/ / / |/| | | | | | | | | | | arti-bench: add support for multiple samples & averaging See merge request tpo/core/arti!240
| * | | arti-bench: add support for multiple samples & averagingeta2022-01-143-30/+180
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We now do multiple samples (configurable; default 3) per type of `arti-bench` benchmark run, and take a mean and median average of all data collected, in order to hopefully be a bit more resilient to random outliers / variation. This uses some `futures::stream::Stream` hacks, which might result in more connections being made than required (and might impact the TTFB metrics somewhat, at least for downloading). Results now get collected into a `BenchmarkResults` struct per type of benchmark, which will be in turn placed into a `BenchmarkSummary` in a later commit; this will also add the ability to serialize the latter struct out to disk, for future reference. part of arti#292
* | | | Merge branch 'bootstrap_reporting_api' into 'main'Nick Mathewson2022-01-135-1/+224
|\ \ \ \ | |/ / / |/| | | | | | | | | | | Implement the basics of a bootstrap-status API. See merge request tpo/core/arti!237
| * | | Implement the basics of a bootstrap-status API.Nick Mathewson2022-01-135-1/+224
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The purpose of a this API is to tell the user how far along Arti is in getting bootstrapped, and if it's stuck, what it's stuck on. This API doesn't yet expose any useful information: by the time it's observable to a client, it's always "100% bootstrapped." But I'm putting it in a MR now so that we can review the basic idea, and to avoid conflicts with later work on tickets like #293 and #278. This is part of #96.
* | | | Merge branch 'refactor/arti-bench' into 'main'eta2022-01-131-117/+159
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | refactor `arti-bench` See merge request tpo/core/arti!208
| * | | | refactor `arti-bench`daniel.eades2022-01-131-117/+159
|/ / / /
* | | | Merge branch 'channel-arc-rework-5' into 'main'eta2022-01-136-96/+119
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | chanmgr: get rid of Arc around Channel See merge request tpo/core/arti!236
| * | | | chanmgr: get rid of Arc around ChannelIan Jackson2022-01-136-96/+119
| |/ / /
* | | | Merge branch 'sendme_versions' into 'main'eta2022-01-132-31/+80
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | | | | | | | | | Fix a bug in requiring sendme authentication, and document some future work Closes #53 and #294 See merge request tpo/core/arti!238
| * | | Describe when we will need SendmeAcceptMinVersionNick Mathewson2022-01-121-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | (spoiler: not until we have a relay implementation) Closes #53.
| * | | Change RequireSendmeAuth to an enum.Nick Mathewson2022-01-122-33/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a fine example of why booleans are risky: it's far to easy to pass "animate:bool" into "inanimate:bool" like we did here. This is a followup from our fix to #294.
| * | | Fix a boolean inversion in auth_sendme_optional.Nick Mathewson2022-01-121-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we were requiring authenticated sendme cells exactly when we should be permitting the old format, and vice versa. This bug was caused by using a boolean to represent one property, but with giving that boolean two different senses without inverting at the right time. The next commit will prevent a recurrence. Closes #294
| * | | Document SendmeEmitMinVersion statusNick Mathewson2022-01-121-0/+4
|/ / / | | | | | | | | | | | | (We don't need to look at SendmeEmitMinVersion since higher values are not yet defined.)
* / / Explain that CfgPath can look at the environment.Nick Mathewson2022-01-121-1/+2
|/ / | | | | | | Closes #246.
* | Merge branch 'eta/182' into 'main'Nick Mathewson2022-01-117-19/+94
|\ \ | | | | | | | | | | | | Improve the layout of crate exports; add runtime convenience functions See merge request tpo/core/arti!235
| * | Add a blank line between doc and comment.Ian Jackson2022-01-111-0/+1
| | |
| * | Improve the layout of crate exports; add runtime convenience functionseta2022-01-117-19/+93
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit addresses multiple problems highlighted by arti#182: - `arti-client` had some types in its public API that weren't accessible without importing another crate (`CfgPath`, `DataReader`, `DataWriter`). This has been fixed. - In addition, the doc comments for `DataReader` and `DataWriter` were cleaned up to be of better quality, now that they're public. - It was impossible to use `arti-client` without also importing `tor-rtcompat`. This is now fixed by the addition of two convenience methods: `TorClient::bootstrap_with_tokio` and `TorClient::bootstrap_with_async_std`. - Potentially controversially: `tor-rtcompat` now returns *concrete* types from methods like `current_runtime`, instead of `impl Runtime`. - This was needed in order to actually be able to name the `TorClient` type that results from using these methods. - This does mean we lose API flexibility, but on balance I think this is a good thing, because the API we *do* have is actually usable...
* | | Add the python script I use to generate changelog links.Nick Mathewson2022-01-111-0/+136
| | |
* | | Merge branch 'ticket_176_v2' into 'main'Nick Mathewson2022-01-112-63/+144
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | guardmgr: Use a better persistent data format Closes #176 See merge request tpo/core/arti!233
| * | | Remove now-unused GuardSet::new().Nick Mathewson2022-01-111-14/+8
| | | |
| * | | guardmgr: Use a better persistent data formatNick Mathewson2022-01-112-50/+137
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we stored only one guard sample, in a state file called "default_guards". That's not future-proof, since we want to have multiple samples in the future. (`guard-spec.txt` specifies separate samples for highly restrictive filters, and for bridge usage.) This patch changes our behavior so that we can store multiple samples in a new "guards" file. I had thought about automatically migrating from the previous file format and location, but I don't think that's necessary given our current (lack of) stability guarantees. Closes #176.
* | | | Merge branch 'ticket_276' into 'main'Nick Mathewson2022-01-113-3/+39
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | guardmgr::..sample_test: Fix intermittent failure. Closes #276 See merge request tpo/core/arti!234
| * | | guardmgr::..::sample_test: Fix intermittent failure.Nick Mathewson2022-01-113-3/+39
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This test should only fail very rarely (around 1/2.4e8) when guards are chosen from a list of 20 with uniform probability. But that wasn't what we were doing on the mock test network: we were choosing from a list of 10 viable guards, with nonuniform probability. As a fix, we change the test network probabilities so that the guards _are_ chosen with a uniform probability for this test, and we use a modified version of the test network where there are indeed 20 Guard-flagged relays with the required DirCache=2 protocol. Closes #276.
* | | CHANGELOG.md: spelling fix. (Thanks eta!)arti-v0.0.3Nick Mathewson2022-01-111-1/+1
| | |
* | | Release.md: Small fixesNick Mathewson2022-01-111-2/+4
| | |
* | | Bump all crate versions to 0.0.3.Nick Mathewson2022-01-1130-169/+169
| | |
* | | Update README.md files (automated)Nick Mathewson2022-01-112-2/+5
| | |
* | | Run "cargo update".Nick Mathewson2022-01-111-147/+153
| | |
* | | Clear semver_status.md entries for 0.0.2Nick Mathewson2022-01-111-32/+1
| | |
* | | Draft changelog for 0.0.3.Nick Mathewson2022-01-111-1/+108
| | |
* | | Check off some large items in README.mdNick Mathewson2022-01-111-4/+4
| | |
* | | Add more names to exclude_contributors.txtNick Mathewson2022-01-111-0/+2
|/ / | | | | | | | | (We don't put Tor Project employees in the acknowledgments lists. And we probably shouldn't put bots either.)
* | Merge branch 'logfiles'Nick Mathewson2022-01-107-66/+296
|\ \
| * | Apply suggestions to better describe the purpose of LogGuards.Ian Jackson2022-01-101-4/+5
| | |
| * | Tracing configuration for logfiles, per-target filtersNick Mathewson2022-01-107-59/+282
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we could only configure one global tracing filter that applied to stdout and journald. There was no support for log files, either. This patch fixes both issues, by substantially revising the configuration format: There are now separate filters for each log file, for journald, and for the console log. Because we want to allow multiple logfiles, they have to go into an array in the configuration. The configuration logic has grown a bit complicated in its types, since the tracing_subscriber crate would prefer to have the complete structure of tracing Layers known statically. That's fine when you know how many you have, and which kinds there will be, but for the runtime-configuration case we need to mess around with `Box<dyn Layer ...>`. I also had to switch from tracing_subscriber's EnvFilter to its Targets filter. It seems "EnvFilter" can only be applied as a Layer in itself, and won't work as a Filter on an individual Layer. Closes #166. Closes #170.
| * | Move tracing setup into a separate module.Nick Mathewson2022-01-102-43/+49
|/ / | | | | | | No code changes here yet.
* | Merge branch 'eta/fix-doc-comment' into 'main'eta2022-01-101-1/+1
|\ \ | | | | | | | | | | | | Fixup broken doc comment from arti!220 See merge request tpo/core/arti!232
| * | Fixup broken doc comment from arti!220eta2022-01-101-1/+1
|/ / | | | | | | That's what I get for blindly trusting @nickm :p