Make every Config type implement Eq.

Doing this is necessary for reconfiguration support, and will help a lot
with testing, too.
This commit is contained in:
Nick Mathewson 2021-11-21 12:06:15 -05:00
parent e7fdf05f50
commit 40ff7113d4
8 changed files with 17 additions and 17 deletions

View File

@ -32,7 +32,7 @@ pub mod dir {
///
/// This type is immutable once constructed. To create an object of this type,
/// use [`ClientAddrConfigBuilder`].
#[derive(Debug, Clone, Builder, Deserialize)]
#[derive(Debug, Clone, Builder, Deserialize, Eq, PartialEq)]
#[builder(build_fn(error = "ConfigBuildError"))]
pub struct ClientAddrConfig {
/// Should we allow attempts to make Tor connections to local addresses?
@ -72,7 +72,7 @@ impl ClientAddrConfig {
/// Configuration for where information should be stored on disk.
///
/// This section is for read/write storage.
#[derive(Deserialize, Debug, Clone, Builder)]
#[derive(Deserialize, Debug, Clone, Builder, Eq, PartialEq)]
#[serde(deny_unknown_fields)]
#[builder(build_fn(error = "ConfigBuildError"))]
pub struct StorageConfig {
@ -135,7 +135,7 @@ impl From<StorageConfig> for StorageConfigBuilder {
///
/// Finally, you can get fine-grained control over the members of a a
/// TorClientConfig using [`TorClientConfigBuilder`].
#[derive(Clone, Debug, Builder)]
#[derive(Clone, Debug, Builder, Eq, PartialEq)]
#[builder(build_fn(error = "ConfigBuildError"))]
pub struct TorClientConfig {
/// Information about the Tor network we want to connect to.

View File

@ -13,7 +13,7 @@ use tor_config::ConfigBuildError;
pub(crate) const ARTI_DEFAULTS: &str = concat!(include_str!("./arti_defaults.toml"),);
/// Structure to hold our logging configuration options
#[derive(Deserialize, Debug, Clone, Builder)]
#[derive(Deserialize, Debug, Clone, Builder, Eq, PartialEq)]
#[serde(deny_unknown_fields)]
#[non_exhaustive] // TODO(nickm) remove public elements when I revise this.
#[builder(build_fn(error = "ConfigBuildError"))]
@ -59,7 +59,7 @@ impl From<LoggingConfig> for LoggingConfigBuilder {
}
/// Configuration for one or more proxy listeners.
#[derive(Deserialize, Debug, Clone, Builder)]
#[derive(Deserialize, Debug, Clone, Builder, Eq, PartialEq)]
#[serde(deny_unknown_fields)]
#[builder(build_fn(error = "ConfigBuildError"))]
pub struct ProxyConfig {
@ -108,7 +108,7 @@ impl From<ProxyConfig> for ProxyConfigBuilder {
///
/// NOTE: These are NOT the final options or their final layout.
/// Expect NO stability here.
#[derive(Deserialize, Debug, Clone)]
#[derive(Deserialize, Debug, Clone, Eq, PartialEq)]
#[serde(deny_unknown_fields)]
pub struct ArtiConfig {
/// Configuration for proxy listeners

View File

@ -15,7 +15,7 @@ use std::time::Duration;
///
/// This type is immutable once constructed. To build one, use
/// [`PathConfigBuilder`], or deserialize it from a string.
#[derive(Debug, Clone, Builder, Deserialize)]
#[derive(Debug, Clone, Builder, Deserialize, Eq, PartialEq)]
#[builder(build_fn(error = "ConfigBuildError"))]
pub struct PathConfig {
/// Set the length of a bit-prefix for a default IPv4 subnet-family.
@ -80,7 +80,7 @@ impl From<PathConfig> for PathConfigBuilder {
///
/// This type is immutable once constructd. To create an object of this
/// type, use [`CircuitTimingBuilder`].
#[derive(Debug, Clone, Builder, Deserialize)]
#[derive(Debug, Clone, Builder, Deserialize, Eq, PartialEq)]
#[builder(build_fn(error = "ConfigBuildError"))]
pub struct CircuitTiming {
/// How long after a circuit has first been used should we give
@ -170,7 +170,7 @@ impl From<CircuitTiming> for CircuitTimingBuilder {
/// this type, use [`CircMgrConfigBuilder`], or deserialize it from a
/// string. (Arti generally uses Toml for configuration, but you can
/// use other formats if you prefer.)
#[derive(Debug, Clone, Builder, Default)]
#[derive(Debug, Clone, Builder, Default, Eq, PartialEq)]
#[builder(build_fn(error = "ConfigBuildError"))]
pub struct CircMgrConfig {
/// Override the default required distance for two relays to share

View File

@ -24,12 +24,12 @@ use serde::Deserialize;
/// These variables are implemented using the `directories` crate, and
/// so should use appropriate system-specific overrides under the
/// hood.
#[derive(Clone, Debug, Deserialize)]
#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]
#[serde(transparent)]
pub struct CfgPath(PathInner);
/// Inner implementation of CfgPath
#[derive(Clone, Debug, Deserialize)]
#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]
#[serde(untagged)]
enum PathInner {
/// A path that should be expanded from a string using ShellExpand.

View File

@ -13,7 +13,7 @@ use tor_netdoc::doc::authcert::{AuthCert, AuthCertKeyIds};
// Note that we do *not* set serde(deny_unknown_fields)] on this structure:
// we want our authorities format to be future-proof against adding new info
// about each authority.
#[derive(Deserialize, Debug, Clone, Builder)]
#[derive(Deserialize, Debug, Clone, Builder, Eq, PartialEq)]
pub struct Authority {
/// A memorable nickname for this authority.
#[builder(setter(into))]

View File

@ -26,7 +26,7 @@ use serde::Deserialize;
///
/// This type is immutable once constructed. To make one, use
/// [`NetworkConfigBuilder`], or deserialize it from a string.
#[derive(Deserialize, Debug, Clone, Builder)]
#[derive(Deserialize, Debug, Clone, Builder, Eq, PartialEq)]
#[serde(deny_unknown_fields)]
#[builder(build_fn(validate = "Self::validate", error = "ConfigBuildError"))]
pub struct NetworkConfig {
@ -103,7 +103,7 @@ impl NetworkConfigBuilder {
///
/// This type is immutable once constructed. To make one, use
/// [`DownloadScheduleConfigBuilder`], or deserialize it from a string.
#[derive(Deserialize, Debug, Clone, Builder)]
#[derive(Deserialize, Debug, Clone, Builder, Eq, PartialEq)]
#[serde(deny_unknown_fields)]
#[builder(build_fn(error = "ConfigBuildError"))]
pub struct DownloadScheduleConfig {
@ -172,7 +172,7 @@ impl From<DownloadScheduleConfig> for DownloadScheduleConfigBuilder {
/// To create an object of this type, use [`DirMgrConfigBuilder`], or
/// deserialize it from a string. (Arti generally uses Toml for
/// configuration, but you can use other formats if you prefer.)
#[derive(Debug, Clone, Builder)]
#[derive(Debug, Clone, Builder, Eq, PartialEq)]
#[builder(build_fn(error = "ConfigBuildError"))]
pub struct DirMgrConfig {
/// Location to use for storing and reading current-format

View File

@ -25,7 +25,7 @@ use std::net::SocketAddr;
// Note that we do *not* set serde(deny_unknown_fields) on this
// structure: we want our fallback directory configuration format to
// be future-proof against adding new info about each fallback.
#[derive(Debug, Clone, Deserialize, Builder)]
#[derive(Debug, Clone, Deserialize, Builder, Eq, PartialEq)]
#[builder(build_fn(validate = "FallbackDirBuilder::validate", error = "ConfigBuildError"))]
pub struct FallbackDir {
/// RSA identity for the directory relay

View File

@ -142,7 +142,7 @@ impl Lifetime {
/// These are used to describe current settings for the Tor network,
/// current weighting parameters for path selection, and so on. They're
/// encoded with a space-separated K=V format.
#[derive(Debug, Clone, Default)]
#[derive(Debug, Clone, Default, Eq, PartialEq)]
pub struct NetParams<T> {
/// Map from keys to values.
params: HashMap<String, T>,