Skip to content

Commit 5e98789

Browse files
committed
fixup: Simplify shadowsocks tests
1 parent e39e1ca commit 5e98789

File tree

1 file changed

+52
-127
lines changed

1 file changed

+52
-127
lines changed

mullvad-relay-selector/tests/relay_selector.rs

+52-127
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ static RELAYS: Lazy<RelayList> = Lazy::new(|| RelayList {
117117
endpoint_data: RelayEndpointData::Bridge,
118118
location: None,
119119
},
120+
SHADOWSOCKS_RELAY.clone(),
120121
],
121122
}],
122123
}],
@@ -173,6 +174,35 @@ static RELAYS: Lazy<RelayList> = Lazy::new(|| RelayList {
173174
},
174175
});
175176

177+
/// A Shadowsocks relay with additional addresses
178+
static SHADOWSOCKS_RELAY: Lazy<Relay> = Lazy::new(|| Relay {
179+
hostname: SHADOWSOCKS_RELAY_LOCATION
180+
.get_hostname()
181+
.unwrap()
182+
.to_owned(),
183+
ipv4_addr_in: SHADOWSOCKS_RELAY_IPV4,
184+
ipv6_addr_in: Some(SHADOWSOCKS_RELAY_IPV6),
185+
include_in_country: true,
186+
active: true,
187+
owned: true,
188+
provider: "provider0".to_string(),
189+
weight: 1,
190+
endpoint_data: RelayEndpointData::Wireguard(WireguardRelayEndpointData {
191+
public_key: PublicKey::from_base64("eaNHNoGO88LjV/wDBa7CUUwUzPq/fO2UwcGLy56hKy4=").unwrap(),
192+
daita: false,
193+
shadowsocks_extra_addr_in: SHADOWSOCKS_RELAY_EXTRA_ADDRS.to_vec(),
194+
}),
195+
location: None,
196+
});
197+
const SHADOWSOCKS_RELAY_IPV4: Ipv4Addr = Ipv4Addr::new(123, 123, 123, 1);
198+
const SHADOWSOCKS_RELAY_IPV6: Ipv6Addr = Ipv6Addr::new(0x123, 0, 0, 0, 0, 0, 0, 2);
199+
const SHADOWSOCKS_RELAY_EXTRA_ADDRS: &[IpAddr; 2] = &[
200+
IpAddr::V4(Ipv4Addr::new(123, 123, 123, 2)),
201+
IpAddr::V6(Ipv6Addr::new(0x123, 0, 0, 0, 0, 0, 0, 2)),
202+
];
203+
static SHADOWSOCKS_RELAY_LOCATION: Lazy<GeographicLocationConstraint> =
204+
Lazy::new(|| GeographicLocationConstraint::hostname("se", "got", "se1337-wireguard"));
205+
176206
// Helper functions
177207
fn unwrap_relay(get_result: GetRelay) -> Relay {
178208
match get_result {
@@ -720,10 +750,7 @@ fn test_selecting_any_relay_will_consider_multihop() {
720750
/// selected.
721751
#[test]
722752
fn test_selecting_wireguard_over_shadowsocks() {
723-
let RelayListWithExtraShadowsocksIps { relay_list, .. } =
724-
get_relay_list_with_extra_shadowsocks_addresses();
725-
726-
let relay_selector = RelaySelector::from_list(SelectorConfig::default(), relay_list);
753+
let relay_selector = RelaySelector::from_list(SelectorConfig::default(), RELAYS.clone());
727754

728755
let mut query = RelayQueryBuilder::new().wireguard().shadowsocks().build();
729756
query.wireguard_constraints.use_multihop = Constraint::Only(false);
@@ -749,17 +776,13 @@ fn test_selecting_wireguard_over_shadowsocks() {
749776
/// Test whether extra Shadowsocks IPs are selected when available
750777
#[test]
751778
fn test_selecting_wireguard_over_shadowsocks_extra_ips() {
752-
let RelayListWithExtraShadowsocksIps {
753-
relay_list,
754-
shadowsocks_extra_relay,
755-
shadowsocks_extra_addr_in,
756-
} = get_relay_list_with_extra_shadowsocks_addresses();
757-
758-
let relay_selector = RelaySelector::from_list(SelectorConfig::default(), relay_list);
779+
let relay_selector = RelaySelector::from_list(SelectorConfig::default(), RELAYS.clone());
759780

760781
let mut query = RelayQueryBuilder::new().wireguard().shadowsocks().build();
761782
query.wireguard_constraints.use_multihop = Constraint::Only(false);
762-
query.location = Constraint::Only(LocationConstraint::Location(shadowsocks_extra_relay));
783+
query.location = Constraint::Only(LocationConstraint::Location(
784+
SHADOWSOCKS_RELAY_LOCATION.clone(),
785+
));
763786

764787
let relay = relay_selector.get_relay_by_query(query).unwrap();
765788
match relay {
@@ -768,7 +791,7 @@ fn test_selecting_wireguard_over_shadowsocks_extra_ips() {
768791
inner: WireguardConfig::Singlehop { .. },
769792
..
770793
} => {
771-
assert!(shadowsocks_extra_addr_in.contains(&endpoint.ip()), "{} is not an additional IP", endpoint);
794+
assert!(SHADOWSOCKS_RELAY_EXTRA_ADDRS.contains(&endpoint.ip()), "{} is not an additional IP", endpoint);
772795
}
773796
wrong_relay => panic!(
774797
"Relay selector should have picked a Wireguard relay with Shadowsocks, instead chose {wrong_relay:?}"
@@ -779,28 +802,27 @@ fn test_selecting_wireguard_over_shadowsocks_extra_ips() {
779802
/// Ignore extra IPv4 addresses when overrides are set
780803
#[test]
781804
fn test_selecting_wireguard_ignore_extra_ips_override_v4() {
782-
let RelayListWithExtraShadowsocksIps {
783-
relay_list,
784-
shadowsocks_extra_relay,
785-
..
786-
} = get_relay_list_with_extra_shadowsocks_addresses();
787-
788805
const OVERRIDE_IPV4: Ipv4Addr = Ipv4Addr::new(1, 3, 3, 7);
789806

790807
let config = mullvad_relay_selector::SelectorConfig {
791808
relay_overrides: vec![RelayOverride {
792-
hostname: shadowsocks_extra_relay.get_hostname().unwrap().to_string(),
809+
hostname: SHADOWSOCKS_RELAY_LOCATION
810+
.get_hostname()
811+
.unwrap()
812+
.to_string(),
793813
ipv4_addr_in: Some(OVERRIDE_IPV4),
794814
ipv6_addr_in: None,
795815
}],
796816
..Default::default()
797817
};
798818

799-
let relay_selector = RelaySelector::from_list(config, relay_list);
819+
let relay_selector = RelaySelector::from_list(config, RELAYS.clone());
800820

801821
let mut query_v4 = RelayQueryBuilder::new().wireguard().shadowsocks().build();
802822
query_v4.wireguard_constraints.use_multihop = Constraint::Only(false);
803-
query_v4.location = Constraint::Only(LocationConstraint::Location(shadowsocks_extra_relay));
823+
query_v4.location = Constraint::Only(LocationConstraint::Location(
824+
SHADOWSOCKS_RELAY_LOCATION.clone(),
825+
));
804826
query_v4.wireguard_constraints.ip_version = Constraint::Only(IpVersion::V4);
805827

806828
let relay = relay_selector.get_relay_by_query(query_v4).unwrap();
@@ -821,28 +843,27 @@ fn test_selecting_wireguard_ignore_extra_ips_override_v4() {
821843
/// Ignore extra IPv6 addresses when overrides are set
822844
#[test]
823845
fn test_selecting_wireguard_ignore_extra_ips_override_v6() {
824-
let RelayListWithExtraShadowsocksIps {
825-
relay_list,
826-
shadowsocks_extra_relay,
827-
..
828-
} = get_relay_list_with_extra_shadowsocks_addresses();
829-
830846
const OVERRIDE_IPV6: Ipv6Addr = Ipv6Addr::new(1, 0, 0, 0, 0, 0, 10, 10);
831847

832848
let config = SelectorConfig {
833849
relay_overrides: vec![RelayOverride {
834-
hostname: shadowsocks_extra_relay.get_hostname().unwrap().to_string(),
850+
hostname: SHADOWSOCKS_RELAY_LOCATION
851+
.get_hostname()
852+
.unwrap()
853+
.to_string(),
835854
ipv4_addr_in: None,
836855
ipv6_addr_in: Some(OVERRIDE_IPV6),
837856
}],
838857
..Default::default()
839858
};
840859

841-
let relay_selector = RelaySelector::from_list(config, relay_list);
860+
let relay_selector = RelaySelector::from_list(config, RELAYS.clone());
842861

843862
let mut query_v6 = RelayQueryBuilder::new().wireguard().shadowsocks().build();
844863
query_v6.wireguard_constraints.use_multihop = Constraint::Only(false);
845-
query_v6.location = Constraint::Only(LocationConstraint::Location(shadowsocks_extra_relay));
864+
query_v6.location = Constraint::Only(LocationConstraint::Location(
865+
SHADOWSOCKS_RELAY_LOCATION.clone(),
866+
));
846867
query_v6.wireguard_constraints.ip_version = Constraint::Only(IpVersion::V6);
847868

848869
let relay = relay_selector.get_relay_by_query(query_v6).unwrap();
@@ -860,102 +881,6 @@ fn test_selecting_wireguard_ignore_extra_ips_override_v6() {
860881
}
861882
}
862883

863-
struct RelayListWithExtraShadowsocksIps {
864-
relay_list: RelayList,
865-
shadowsocks_extra_relay: GeographicLocationConstraint,
866-
shadowsocks_extra_addr_in: Vec<IpAddr>,
867-
}
868-
869-
// Return a relay list with a single relay
870-
fn get_relay_list_with_extra_shadowsocks_addresses() -> RelayListWithExtraShadowsocksIps {
871-
static SHADOWSOCKS_EXTRA_IPS_RELAY_NORMAL_IPV4: Ipv4Addr = Ipv4Addr::new(123, 123, 123, 1);
872-
static SHADOWSOCKS_EXTRA_IPS_RELAY_NORMAL_IPV6: Ipv6Addr =
873-
Ipv6Addr::new(0x123, 0, 0, 0, 0, 0, 0, 2);
874-
let shadowsocks_extra_addr_in = vec![
875-
Ipv4Addr::new(123, 123, 123, 2).into(),
876-
Ipv6Addr::new(0x123, 0, 0, 0, 0, 0, 0, 2).into(),
877-
];
878-
let shadowsocks_extra_relay =
879-
GeographicLocationConstraint::hostname("se", "got", "se9-wireguard");
880-
881-
let relay_list = RelayList {
882-
etag: None,
883-
countries: vec![RelayListCountry {
884-
name: "Sweden".to_string(),
885-
code: "se".to_string(),
886-
cities: vec![RelayListCity {
887-
name: "Gothenburg".to_string(),
888-
code: "got".to_string(),
889-
latitude: 57.70887,
890-
longitude: 11.97456,
891-
relays: vec![
892-
Relay {
893-
hostname: shadowsocks_extra_relay.get_hostname().unwrap().to_owned(),
894-
ipv4_addr_in: SHADOWSOCKS_EXTRA_IPS_RELAY_NORMAL_IPV4,
895-
ipv6_addr_in: Some(SHADOWSOCKS_EXTRA_IPS_RELAY_NORMAL_IPV6),
896-
include_in_country: true,
897-
active: true,
898-
owned: true,
899-
provider: "provider0".to_string(),
900-
weight: 1,
901-
endpoint_data: RelayEndpointData::Wireguard(WireguardRelayEndpointData {
902-
public_key: PublicKey::from_base64(
903-
"BLNHNoGO88LjV/wDBa7CUUwUzPq/fO2UwcGLy56hKy4=",
904-
)
905-
.unwrap(),
906-
daita: false,
907-
shadowsocks_extra_addr_in: shadowsocks_extra_addr_in.clone(),
908-
}),
909-
location: None,
910-
},
911-
Relay {
912-
hostname: "se10-wireguard".to_string(),
913-
ipv4_addr_in: Ipv4Addr::new(123, 123, 123, 3),
914-
ipv6_addr_in: Some(Ipv6Addr::new(0x123, 0, 0, 0, 0, 0, 0, 3)),
915-
include_in_country: true,
916-
active: true,
917-
owned: false,
918-
provider: "provider1".to_string(),
919-
weight: 1,
920-
endpoint_data: RelayEndpointData::Wireguard(WireguardRelayEndpointData {
921-
public_key: PublicKey::from_base64(
922-
"BLNHNoGO88LjV/wDBa7CUUwUzPq/fO2UwcGLy56hKy4=",
923-
)
924-
.unwrap(),
925-
daita: false,
926-
shadowsocks_extra_addr_in: vec![],
927-
}),
928-
location: None,
929-
},
930-
],
931-
}],
932-
}],
933-
openvpn: OpenVpnEndpointData { ports: vec![] },
934-
bridge: BridgeEndpointData {
935-
shadowsocks: vec![],
936-
},
937-
wireguard: WireguardEndpointData {
938-
port_ranges: vec![
939-
53..=53,
940-
443..=443,
941-
4000..=33433,
942-
33565..=51820,
943-
52000..=60000,
944-
],
945-
ipv4_gateway: "10.64.0.1".parse().unwrap(),
946-
ipv6_gateway: "fc00:bbbb:bbbb:bb01::1".parse().unwrap(),
947-
udp2tcp_ports: vec![],
948-
shadowsocks_port_ranges: vec![100..=200, 1000..=2000],
949-
},
950-
};
951-
952-
RelayListWithExtraShadowsocksIps {
953-
relay_list,
954-
shadowsocks_extra_addr_in,
955-
shadowsocks_extra_relay,
956-
}
957-
}
958-
959884
/// Construct a query for a Wireguard configuration where UDP2TCP obfuscation is selected and
960885
/// multihop is explicitly turned off. Assert that the relay selector always return an obfuscator
961886
/// configuration.

0 commit comments

Comments
 (0)