Skip to content

Commit cb4512c

Browse files
committed
Add internal ip cli flag
1 parent 5f67d6c commit cb4512c

File tree

7 files changed

+62
-33
lines changed

7 files changed

+62
-33
lines changed

Cargo.lock

Lines changed: 20 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ethportal-peertest/README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ cd ethportal-peertest
88
RUST_LOG=debug cargo run -p ethportal-peertest -- --target-node enr:-IS4QBDHCSMoYoC5UziAwKSyTmMPrhMaEpaE52L8DDAkipqvZQe9fgLy2wVuuEJwO9l1KsYrRoFGCsNjylbd0CDNw60BgmlkgnY0gmlwhMCoXUSJc2VjcDI1NmsxoQJPAZUFErHK1DZYRTLjk3SCNgye9sS-MxoQI-gLiUdwc4N1ZHCCIyk
99
```
1010

11+
# Target Node Config
12+
13+
## IP Address
14+
To make sure the test harness can communicate with the target node, run the target node with the `--internal-ip` flag to avoid using an external ip address.
15+
1116
## Transport selection
1217
Running the test harness will by default test all jsonrpc endpoints over IPC to the target node. To make sure these pass, please make sure that the target node is running with `--web3-transport ipc`. To test jsonrpc over http, use the `--target-transport http` cli argument for the harness, and make sure the target node is running with `--web3-transport http`. Ideally, both transport methods are tested before PRs.
13-

ethportal-peertest/src/main.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
2727
let peertest_config = PeertestConfig::default();
2828
let portal_config = PortalnetConfig {
2929
listen_port: peertest_config.listen_port,
30+
internal_ip: true,
3031
..Default::default()
3132
};
3233

@@ -67,9 +68,11 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
6768
ProtocolKind::History,
6869
None,
6970
)
70-
.await
71-
.unwrap();
72-
info!("History network Ping result: {:?}", ping_result);
71+
.await;
72+
match ping_result {
73+
Ok(val) => info!("Successful ping to History network: {:?}", val),
74+
Err(msg) => panic!("Invalid ping to History network: {:?}", msg),
75+
}
7376

7477
info!("Pinging {} on state network", target_node);
7578
let ping_result = overlay
@@ -79,9 +82,11 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
7982
ProtocolKind::State,
8083
None,
8184
)
82-
.await
83-
.unwrap();
84-
info!("State network Ping result: {:?}", ping_result);
85+
.await;
86+
match ping_result {
87+
Ok(val) => info!("Successful ping to State network: {:?}", val),
88+
Err(msg) => panic!("Invalid ping to State network: {:?}", msg),
89+
}
8590

8691
match peertest_config.target_transport.as_str() {
8792
"ipc" => test_jsonrpc_endpoints_over_ipc(peertest_config.target_ipc_path).await,

src/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
4545
external_addr: trin_config.external_addr,
4646
private_key: trin_config.private_key.clone(),
4747
listen_port: trin_config.discovery_port,
48+
internal_ip: trin_config.internal_ip,
4849
bootnode_enrs,
4950
..Default::default()
5051
};

trin-core/src/cli.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ pub struct TrinConfig {
6969
)]
7070
pub external_addr: Option<SocketAddr>,
7171

72+
#[structopt(
73+
long = "internal-ip",
74+
help = "(For testing purposes) Use local ip address rather than external via STUN."
75+
)]
76+
pub internal_ip: bool,
77+
7278
#[structopt(
7379
validator(check_private_key_length),
7480
long = "unsafe-private-key",
@@ -169,6 +175,7 @@ mod test {
169175
pool_size: 2,
170176
web3_transport: "ipc".to_string(),
171177
discovery_port: DEFAULT_DISCOVERY_PORT.parse().unwrap(),
178+
internal_ip: false,
172179
bootnodes: vec![],
173180
external_addr: None,
174181
private_key: None,
@@ -195,6 +202,7 @@ mod test {
195202
pool_size: 3,
196203
web3_transport: "http".to_string(),
197204
discovery_port: DEFAULT_DISCOVERY_PORT.parse().unwrap(),
205+
internal_ip: false,
198206
bootnodes: vec![],
199207
networks: DEFAULT_SUBNETWORKS
200208
.split(",")
@@ -232,6 +240,7 @@ mod test {
232240
pool_size: 2,
233241
web3_transport: "ipc".to_string(),
234242
discovery_port: DEFAULT_DISCOVERY_PORT.parse().unwrap(),
243+
internal_ip: false,
235244
bootnodes: vec![],
236245
networks: DEFAULT_SUBNETWORKS
237246
.split(",")
@@ -265,6 +274,7 @@ mod test {
265274
pool_size: 2,
266275
web3_transport: "ipc".to_string(),
267276
discovery_port: DEFAULT_DISCOVERY_PORT.parse().unwrap(),
277+
internal_ip: false,
268278
bootnodes: vec![],
269279
networks: DEFAULT_SUBNETWORKS
270280
.split(",")
@@ -322,6 +332,7 @@ mod test {
322332
pool_size: 2,
323333
web3_transport: "ipc".to_string(),
324334
discovery_port: 999,
335+
internal_ip: false,
325336
bootnodes: vec![],
326337
networks: DEFAULT_SUBNETWORKS
327338
.split(",")
@@ -344,6 +355,7 @@ mod test {
344355
pool_size: 2,
345356
web3_transport: "ipc".to_string(),
346357
discovery_port: DEFAULT_DISCOVERY_PORT.parse().unwrap(),
358+
internal_ip: false,
347359
bootnodes: vec!["enr:-aoeu".to_string(), "enr:-htns".to_string()],
348360
networks: DEFAULT_SUBNETWORKS
349361
.split(",")
@@ -388,6 +400,7 @@ mod test {
388400
pool_size: 2,
389401
web3_transport: "ipc".to_string(),
390402
discovery_port: DEFAULT_DISCOVERY_PORT.parse().unwrap(),
403+
internal_ip: false,
391404
bootnodes: vec![],
392405
networks: DEFAULT_SUBNETWORKS
393406
.split(",")

trin-core/src/portalnet/discovery.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,20 @@ impl Discovery {
4444
pub fn new(portal_config: PortalnetConfig) -> Result<Self, String> {
4545
let listen_all_ips = SocketAddr::new("0.0.0.0".parse().unwrap(), portal_config.listen_port);
4646

47-
let external_addr = portal_config
48-
.external_addr
49-
.or_else(|| socket::stun_for_external(&listen_all_ips))
50-
.unwrap_or_else(|| socket::default_local_address(portal_config.listen_port));
47+
let ip_addr = if portal_config.internal_ip {
48+
socket::default_local_address(portal_config.listen_port)
49+
} else {
50+
portal_config
51+
.external_addr
52+
.or_else(|| socket::stun_for_external(&listen_all_ips))
53+
.unwrap_or_else(|| socket::default_local_address(portal_config.listen_port))
54+
};
5155

5256
let config = Config {
5357
discv5_config: Discv5ConfigBuilder::default().build(),
5458
// This is for defining the ENR:
55-
listen_port: external_addr.port(),
56-
listen_address: external_addr.ip(),
59+
listen_port: ip_addr.port(),
60+
listen_address: ip_addr.ip(),
5761
bootnode_enrs: portal_config.bootnode_enrs,
5862
private_key: portal_config.private_key,
5963
..Default::default()

trin-core/src/portalnet/types.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ pub struct PortalnetConfig {
2121
pub listen_port: u16,
2222
pub bootnode_enrs: Vec<Enr>,
2323
pub data_radius: U256,
24+
pub internal_ip: bool,
2425
}
2526

2627
impl Default for PortalnetConfig {
@@ -31,6 +32,7 @@ impl Default for PortalnetConfig {
3132
listen_port: 4242,
3233
bootnode_enrs: Vec::<Enr>::new(),
3334
data_radius: U256::from(u64::MAX), //TODO better data_radius default?
35+
internal_ip: false,
3436
}
3537
}
3638
}

0 commit comments

Comments
 (0)