<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/arti-testing/src/rt/count.rs, branch main</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=main</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2026-06-08T16:55:27Z</updated>
<entry>
<title>tor-rtcompat+misc: add `NetStreamProvider::ConnectOptions`</title>
<updated>2026-06-08T16:55:27Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2026-05-26T20:57:08Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=926c7a5449e29e2d652431a2406e7acae59bed50'/>
<id>urn:sha1:926c7a5449e29e2d652431a2406e7acae59bed50</id>
<content type='text'>
This adds the trait type `ConnectOptions` to `NetStreamProvider` and adds
this `ConnectOptions` as an argument to `NetStreamProvider::connect()`.

You probably want to look at the changes in tor-rtcompat first, then the
rest of this commit is updating the various places we use
`NetStreamProvider`.
</content>
</entry>
<entry>
<title>tor-rtcompat+misc: add `NetStreamProvider::ListenOptions`</title>
<updated>2026-05-07T15:05:57Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2026-05-06T23:05:12Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=89790050b66f4eed80b9215b18c893ab7adba298'/>
<id>urn:sha1:89790050b66f4eed80b9215b18c893ab7adba298</id>
<content type='text'>
This adds the trait type `ListenOptions` to `NetStreamProvider` and adds
this `ListenOptions` as an argument to `NetStreamProvider::listen()`.

You probably want to look at the changes in tor-rtcompat first, then the
rest of this commit is updating the various places we use
`NetStreamProvider`.
</content>
</entry>
<entry>
<title>tor-rtcompat: Add the ability to get a StreamOps handle.</title>
<updated>2025-01-15T13:49:17Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-01-08T11:06:59Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=267235969df65d975b5deb01c342e1073d4c3847'/>
<id>urn:sha1:267235969df65d975b5deb01c342e1073d4c3847</id>
<content type='text'>
Needed for cases where we wrap an object that implements `StreamOps` in
an external type, thereby losing access to the `StreamOps`
functionality. For example, during the channel handshake, we `.split()`
the stream that implements `StreamOps`, which leaves us with a
`SplitSink` and a `SplitStream`, neither of which implement `StreamOps`.
Getting a handle to the underlying object that implements `StreamOps`
(for example, a file handle) *before* the stream is `.split()` enables
us to use `StreamOps` to manipulate the underlying split stream.

This commit also introduces a special `UnsupportedStreamOpsHandle`,
which is a type that implements `StreamOps`, but always returns an
error. This type is meant to simplify error handling and usage, and is
meant to be used in cases where `StreamOps` is not supported. TODO: the
name of this type is pretty confusing (it's very similar to
`UnsupportedStreamOp`, which is an error type), and should probably be
renamed to something else (`NoOpStreamOpsHandle`,
`BrokenStreamOpsHandle`, `DummyStreamOpsHandle` come to mind...).

Note: this changes the `StreamOps` trait to be slightly different from
what I originally envisioned in !2660 and #1769
</content>
</entry>
<entry>
<title>tor-rtcompat: Implement StreamOps for all the stream types.</title>
<updated>2024-12-10T10:34:48Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2024-12-05T15:00:11Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=56e9b79b09c65caee25a50c083fdd40f8c66f040'/>
<id>urn:sha1:56e9b79b09c65caee25a50c083fdd40f8c66f040</id>
<content type='text'>
Part of #1769
</content>
</entry>
<entry>
<title>rtcompat: remove async_trait from NetStreamListener.</title>
<updated>2024-09-24T13:10:11Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-09-22T19:26:30Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=b53b465d81b39433048b459924e0c481bad84a07'/>
<id>urn:sha1:b53b465d81b39433048b459924e0c481bad84a07</id>
<content type='text'>
(The trait no longer has any async methods.)
</content>
</entry>
<entry>
<title>Documentation updates for "NetStreamProvider" rename</title>
<updated>2024-09-24T13:10:11Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-09-19T12:13:29Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=07ca20d4aaa7081bd901cc487fbb093bf05f5a76'/>
<id>urn:sha1:07ca20d4aaa7081bd901cc487fbb093bf05f5a76</id>
<content type='text'>
Stop referring to TCP streams in its documentation;
update other documentation to refer to NetStreamProvider
rather than TcpProvider.
</content>
</entry>
<entry>
<title>rtcompat: Rename TcpProvider to NetStreamProvider.</title>
<updated>2024-09-24T13:10:11Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-09-19T11:55:22Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=8c2d84000e4d5ba74e7b6b4e9dac3fc700f618b5'/>
<id>urn:sha1:8c2d84000e4d5ba74e7b6b4e9dac3fc700f618b5</id>
<content type='text'>
(And similarly rename TcpListener to NetStreamListener,
along with their TcpStream/TcpListener associated types.)

These types are about to become generic over addresses,
and therefore shouldn't be named after TCP.

Renaming was done mostly with Rust Analyzer,
except for some macros that needed to be hand-edited.

(I'll revise the comments in the next commit;
this one is all about renaming.)
</content>
</entry>
<entry>
<title>rtcompat: Remove accept() from TcpListener</title>
<updated>2024-09-24T13:10:11Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-09-18T22:57:09Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=168f55df05f4b56fd61423c020ce62e93f1d7a9f'/>
<id>urn:sha1:168f55df05f4b56fd61423c020ce62e93f1d7a9f</id>
<content type='text'>
It's redundant with the incoming() method (which turns the
TcpListener into a Stream of connections), and nothing actually used
it outside of tests.

Removing this method allows us to simplify our TcpListener code a
good deal, as can be seen by some of the implementations we removed
from our example and testing code.
</content>
</entry>
<entry>
<title>arti-testing: Initial implementation</title>
<updated>2022-03-03T18:05:30Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-03-02T15:03:19Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=9329c7b878eadba0344802632b97f23524c9d8f3'/>
<id>urn:sha1:9329c7b878eadba0344802632b97f23524c9d8f3</id>
<content type='text'>
This commit adds a new program to try to implement the ideas behind
experimentation in arti#329.  In particular, it tries to implement
basic client "can I bootstrap and connect" functionality testing,
with a lot of instrumentation, and support for breaking things.

So far, the instrumentation is limited to counting TCP bytes and
connections, and counting events.  Still, this is enough to measure
behavior on some of the incorrect-clock tests.

NOTE:

For now, you are _required_ to pass in an explicit configuration, in
hopes that this will lead you to override your storage directories
for doing specific experiments.
</content>
</entry>
</feed>
