Functions for checking gaps in coverage for tests.


This represents the range of values covered by an arc

The main DHT arc type. Represents an Agent’s storage Arc on the DHT, preserving the agent’s DhtLocation even in the case of a Full or Empty arc. Contrast to DhtArcRange, which is used for cases where the arc is not associated with any particular Agent, and so the agent’s Location cannot be known.

Type for representing a location that can wrap around a u32 dht arc

The default, and only, strategy for generating a PeerView

The default, and only, strategy for generating a PeerView

The default, and only, PeerView.

An alternative PeerView.


A variant of DHT arc which is intentionally forgetful of the Agent’s location. This type is used in places where set logic (union and intersection) is performed on arcs, which splits and joins arcs in such a way that it doesn’t make sense to claim that the arc belongs to any particular agent or location.

A Strategy for generating PeerViews. The enum allows us to add new strategies over time.

A “view” of the peers in a neighborhood. The view consists of a few observations about the distribution of peers within a particular arc, used to make inferences about the rest of the (out-of-view) DHT, ultimately enabling the calculation of the target arc size for the agent who has this View.


The minimum number of peers before sharding can begin. This factors in the expected uptime to reach the redundancy target.

The minimum number of peers we can consider acceptable to see in our arc during testing.

The maximum you can hold either side of the hash location is half the circle. This is half of the furthest index you can hold 1 is added for rounding 1 more is added to represent the middle point of an odd length array


Check a set of peers the actual redundancy across all peers. This can tell if there is bad distribution. Note this function is only used for verification in tests at this time.

Check whether a bounded interval is equivalent to the Full interval