Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions src/graphs/default.graphml
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
<key attr.name="image" attr.type="string" for="node" id="image"/>
<graph edgedefault="directed">
<node id="0">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w0</data>
<data key="exporter">true</data>
<data key="collect_logs">true</data>
</node>
<node id="1">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w1</data>
<data key="exporter">true</data>
<data key="collect_logs">true</data>
Expand All @@ -26,42 +26,42 @@
<data key="collect_logs">true</data>
</node>
<node id="3">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w3</data>
<data key="exporter">true</data>
</node>
<node id="4">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w4</data>
<data key="exporter">true</data>
</node>
<node id="5">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w5</data>
<data key="exporter">true</data>
</node>
<node id="6">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w6</data>
</node>
<node id="7">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w7</data>
</node>
<node id="8">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w8</data>
</node>
<node id="9">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w9</data>
</node>
<node id="10">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w10</data>
</node>
<node id="11">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w11</data>
</node>
<!-- connect the nodes in a ring to start -->
Expand Down
58 changes: 46 additions & 12 deletions src/templates/addrman.patch
Original file line number Diff line number Diff line change
@@ -1,17 +1,51 @@
diff --git a/src/netgroup.cpp b/src/netgroup.cpp
index 0ae229b3f3..a861a38852 100644
index 0ae229b3f3..cc438c2f11 100644
--- a/src/netgroup.cpp
+++ b/src/netgroup.cpp
@@ -43,11 +43,7 @@ std::vector<unsigned char> NetGroupManager::GetGroup(const CNetAddr& address) co
} else if (!address.IsRoutable()) {
// all other unroutable addresses belong to the same group
} else if (address.HasLinkedIPv4()) {
- // IPv4 addresses (and mapped IPv4 addresses) use /16 groups
- uint32_t ipv4 = address.GetLinkedIPv4();
- vchRet.push_back((ipv4 >> 24) & 0xFF);
- vchRet.push_back((ipv4 >> 16) & 0xFF);
- return vchRet;
+ nBits = 32;
@@ -47,6 +47,8 @@ std::vector<unsigned char> NetGroupManager::GetGroup(const CNetAddr& address) co
uint32_t ipv4 = address.GetLinkedIPv4();
vchRet.push_back((ipv4 >> 24) & 0xFF);
vchRet.push_back((ipv4 >> 16) & 0xFF);
+ vchRet.push_back((ipv4 >> 8) & 0xFF);
+ vchRet.push_back(ipv4 & 0xFF);
return vchRet;
} else if (address.IsTor() || address.IsI2P()) {
nBits = 4;
} else if (address.IsCJDNS()) {
diff --git a/src/test/addrman_tests.cpp b/src/test/addrman_tests.cpp
index 9668a85484..2fe70a538f 100644
--- a/src/test/addrman_tests.cpp
+++ b/src/test/addrman_tests.cpp
@@ -499,6 +499,33 @@ BOOST_AUTO_TEST_CASE(caddrinfo_get_tried_bucket_legacy)
BOOST_CHECK_EQUAL(buckets.size(), 160U);
}

+// run only this test!
+// test_bitcoin --run_test=addrman_tests/warnet_patch
+BOOST_AUTO_TEST_CASE(warnet_patch)
+{
+ uint256 nKey1 = (HashWriter{} << 1).GetHash();
+
+ // One peer gives us all test addrs
+ CNetAddr source = ResolveIP("100.21.32.45");
+
+ // Addrs have common /8 /16 and /24
+ CAddress addr1 = CAddress(ResolveService("100.20.30.40", 18444), NODE_NONE);
+ CAddress addr2 = CAddress(ResolveService("100.21.30.40", 18444), NODE_NONE);
+ CAddress addr3 = CAddress(ResolveService("100.20.31.40", 18444), NODE_NONE);
+ CAddress addr4 = CAddress(ResolveService("100.20.30.41", 18444), NODE_NONE);
+
+ AddrInfo info1 = AddrInfo(addr1, source);
+ AddrInfo info2 = AddrInfo(addr2, source);
+ AddrInfo info3 = AddrInfo(addr3, source);
+ AddrInfo info4 = AddrInfo(addr4, source);
+
+ // All addrs are in different buckets
+ BOOST_CHECK_EQUAL(info1.GetNewBucket(nKey1, EMPTY_NETGROUPMAN), 533);
+ BOOST_CHECK_EQUAL(info2.GetNewBucket(nKey1, EMPTY_NETGROUPMAN), 20);
+ BOOST_CHECK_EQUAL(info3.GetNewBucket(nKey1, EMPTY_NETGROUPMAN), 143);
+ BOOST_CHECK_EQUAL(info4.GetNewBucket(nKey1, EMPTY_NETGROUPMAN), 291);
+}
+
BOOST_AUTO_TEST_CASE(caddrinfo_get_new_bucket_legacy)
{
CAddress addr1 = CAddress(ResolveService("250.1.2.1", 8333), NODE_NONE);
2 changes: 1 addition & 1 deletion src/warnet/tank.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ def parse_graph_node(self, node):
if "ln" in node:
options = {
"impl": node["ln"],
"ln_image": node.get("ln_image", "lightninglabs/lnd:v0.17.0-beta"),
"ln_image": node.get("ln_image", "lightninglabs/lnd:v0.18.0-beta"),
"cb_image": node.get("ln_cb_image", None),
"ln_config": node.get("ln_config", "")
}
Expand Down
3 changes: 2 additions & 1 deletion src/warnet/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,12 @@


SUPPORTED_TAGS = [
"27.0",
"26.0",
"25.1",
"24.2",
"23.2",
"22.2",
"22.2"
]
DEFAULT_TAG = SUPPORTED_TAGS[0]
WEIGHTED_TAGS = [
Expand Down
24 changes: 12 additions & 12 deletions test/data/v25_x_12.graphml → test/data/12_node_ring.graphml
Original file line number Diff line number Diff line change
Expand Up @@ -5,51 +5,51 @@
<key attr.name="image" attr.type="string" for="node" id="image"/>
<graph edgedefault="directed">
<node id="0">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w0 -debug=validation</data>
</node>
<node id="1">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w1 -debug=validation</data>
</node>
<node id="2">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w2 -debug=validation</data>
</node>
<node id="3">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w3</data>
</node>
<node id="4">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w4</data>
</node>
<node id="5">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w5</data>
</node>
<node id="6">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w6</data>
</node>
<node id="7">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w7</data>
</node>
<node id="8">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w8</data>
</node>
<node id="9">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w9</data>
</node>
<node id="10">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w10</data>
</node>
<node id="11">
<data key="version">26.0</data>
<data key="version">27.0</data>
<!-- no bitcoin_config to test unused options -->
</node>
<!-- connect the nodes in a ring to start -->
Expand Down
2 changes: 1 addition & 1 deletion test/data/build_v24_test.graphml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<key attr.name="image" attr.type="string" for="node" id="image"/>
<graph edgedefault="directed">
<node id="0">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w0</data>
</node>
<node id="1">
Expand Down
10 changes: 5 additions & 5 deletions test/data/ln.graphml
Original file line number Diff line number Diff line change
Expand Up @@ -17,28 +17,28 @@
<graph edgedefault="directed">
<data key="services">simln</data>
<node id="0">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w0</data>
<data key="ln">lnd</data>
<data key="ln_image">lightninglabs/lnd:v0.15.5-beta</data>
<data key="ln_image">lightninglabs/lnd:v0.17.5-beta</data>
<data key="collect_logs">true</data>
</node>
<node id="1">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w1</data>
<data key="ln">lnd</data>
<data key="ln_cb_image">pinheadmz/circuitbreaker:278737d</data>
<data key="collect_logs">true</data>
</node>
<node id="2">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w2</data>
<data key="ln">lnd</data>
<data key="ln_cb_image">pinheadmz/circuitbreaker:278737d</data>
<data key="ln_config">--bitcoin.timelockdelta=33</data>
</node>
<node id="3">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w3</data>
</node>
<edge id="1" source="0" target="1"></edge>
Expand Down
14 changes: 7 additions & 7 deletions test/data/permutations.graphml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdr
<key id="version" for="node" attr.name="version" attr.type="string" />
<graph edgedefault="directed">
<node id="0">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config" />
<data key="tc_netem" />
<data key="build_args" />
Expand All @@ -26,47 +26,47 @@ xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdr
<data key="collect_logs">False</data>
</node>
<node id="2">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config" />
<data key="tc_netem" />
<data key="build_args" />
<data key="exporter">False</data>
<data key="collect_logs">False</data>
</node>
<node id="3">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config" />
<data key="tc_netem" />
<data key="build_args" />
<data key="exporter">False</data>
<data key="collect_logs">False</data>
</node>
<node id="4">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config" />
<data key="tc_netem" />
<data key="build_args" />
<data key="exporter">False</data>
<data key="collect_logs">False</data>
</node>
<node id="5">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config" />
<data key="tc_netem" />
<data key="build_args" />
<data key="exporter">False</data>
<data key="collect_logs">False</data>
</node>
<node id="6">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config" />
<data key="tc_netem" />
<data key="build_args" />
<data key="exporter">False</data>
<data key="collect_logs">False</data>
</node>
<node id="7">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config" />
<data key="tc_netem" />
<data key="build_args" />
Expand Down
2 changes: 1 addition & 1 deletion test/data/services.graphml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<graph edgedefault="directed">
<data key="services">cadvisor forkobserver addrmanobserver grafana nodeexporter prometheus</data>
<node id="0">
<data key="version">26.0</data>
<data key="version">27.0</data>
<data key="bitcoin_config">-uacomment=w0 -debug=validation</data>
<data key="exporter">true</data>
<data key="ln">lnd</data>
Expand Down
14 changes: 13 additions & 1 deletion test/rpc_test.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
#!/usr/bin/env python3

import json
import os
from pathlib import Path

from test_base import TestBase

graph_file_path = Path(os.path.dirname(__file__)) / "data" / "v25_x_12.graphml"
graph_file_path = Path(os.path.dirname(__file__)) / "data" / "12_node_ring.graphml"

base = TestBase()
base.start_server()
Expand Down Expand Up @@ -38,4 +39,15 @@
msgs = base.warcli("messages 0 1")
assert "verack" in msgs

def got_addrs():
addrman = json.loads(base.warcli("rpc 0 getrawaddrman"))
for key in ["tried", "new"]:
obj = addrman[key]
keys = list(obj.keys())
groups = [g.split("/")[0] for g in keys]
if len(set(groups)) > 1:
return True
return False
base.wait_for_predicate(got_addrs)

base.stop_server()
2 changes: 1 addition & 1 deletion test/scenarios_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from test_base import TestBase

graph_file_path = Path(os.path.dirname(__file__)) / "data" / "v25_x_12.graphml"
graph_file_path = Path(os.path.dirname(__file__)) / "data" / "12_node_ring.graphml"

base = TestBase()
base.start_server()
Expand Down
2 changes: 1 addition & 1 deletion test/v25_net_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from test_base import TestBase

graph_file_path = Path(os.path.dirname(__file__)) / "data" / "v25_x_12.graphml"
graph_file_path = Path(os.path.dirname(__file__)) / "data" / "12_node_ring.graphml"

base = TestBase()
base.start_server()
Expand Down