Page MenuHomePhabricator

D6202.diff
No OneTemporary

D6202.diff

diff --git a/test/functional/p2p_invalid_messages.py b/test/functional/p2p_invalid_messages.py
--- a/test/functional/p2p_invalid_messages.py
+++ b/test/functional/p2p_invalid_messages.py
@@ -68,25 +68,23 @@
msg_at_size = msg_unrecognized("b" * valid_data_limit)
assert len(msg_at_size.serialize()) == msg_limit
- with node.assert_memory_usage_stable(perc_increase_allowed=0.03):
- self.log.info(
- "Sending a bunch of large, junk messages to test "
- "memory exhaustion. May take a bit...")
-
- # Run a bunch of times to test for memory exhaustion.
- for _ in range(80):
- node.p2p.send_message(msg_at_size)
-
- # Check that, even though the node is being hammered by nonsense from one
- # connection, it can still service other peers in a timely way.
- for _ in range(20):
- conn2.sync_with_ping(timeout=2)
-
- # Peer 1, despite serving up a bunch of nonsense, should still be
- # connected.
- self.log.info("Waiting for node to drop junk messages.")
- node.p2p.sync_with_ping(timeout=30)
- assert node.p2p.is_connected
+ self.log.info(
+ "Sending a bunch of large, junk messages to test memory exhaustion. May take a bit...")
+
+ # Run a bunch of times to test for memory exhaustion.
+ for _ in range(80):
+ node.p2p.send_message(msg_at_size)
+
+ # Check that, even though the node is being hammered by nonsense from one
+ # connection, it can still service other peers in a timely way.
+ for _ in range(20):
+ conn2.sync_with_ping(timeout=2)
+
+ # Peer 1, despite serving up a bunch of nonsense, should still be
+ # connected.
+ self.log.info("Waiting for node to drop junk messages.")
+ node.p2p.sync_with_ping(timeout=320)
+ assert node.p2p.is_connected
#
# 1.
diff --git a/test/functional/test_framework/test_node.py b/test/functional/test_framework/test_node.py
--- a/test/functional/test_framework/test_node.py
+++ b/test/functional/test_framework/test_node.py
@@ -165,29 +165,6 @@
assert len(self.PRIV_KEYS) == MAX_NODES
return self.PRIV_KEYS[self.index]
- def get_mem_rss(self):
- """Get the memory usage (RSS) per `ps`.
-
- If process is stopped or `ps` is unavailable, return None.
- """
- if not (self.running and self.process):
- self.log.warning(
- "Couldn't get memory usage; process isn't running.")
- return None
-
- try:
- return int(subprocess.check_output(
- "ps h -o rss {}".format(self.process.pid),
- shell=True, stderr=subprocess.DEVNULL).strip())
-
- # Catching `Exception` broadly to avoid failing on platforms where ps
- # isn't installed or doesn't work as expected, e.g. OpenBSD.
- #
- # We could later use something like `psutils` to work across platforms.
- except Exception:
- self.log.exception("Unable to get memory usage")
- return None
-
def _node_msg(self, msg: str) -> str:
"""Return a modified msg that identifies this node by its index as a debugging aid."""
return "[node {}] {}".format(self.index, msg)
@@ -425,31 +402,6 @@
'Expected messages "{}" does not partially match log:\n\n{}\n\n'.format(
str(expected_msgs), print_log))
- @contextlib.contextmanager
- def assert_memory_usage_stable(self, perc_increase_allowed=0.03):
- """Context manager that allows the user to assert that a node's memory usage (RSS)
- hasn't increased beyond some threshold percentage.
- """
- before_memory_usage = self.get_mem_rss()
-
- yield
-
- after_memory_usage = self.get_mem_rss()
-
- if not (before_memory_usage and after_memory_usage):
- self.log.warning(
- "Unable to detect memory usage (RSS) - skipping memory check.")
- return
-
- perc_increase_memory_usage = 1 - \
- (float(before_memory_usage) / after_memory_usage)
-
- if perc_increase_memory_usage > perc_increase_allowed:
- self._raise_assertion_error(
- "Memory usage increased over threshold of {:.3f}% from {} to {} ({:.3f}%)".format(
- perc_increase_allowed * 100, before_memory_usage, after_memory_usage,
- perc_increase_memory_usage * 100))
-
def assert_start_raises_init_error(
self, extra_args=None, expected_msg=None, match=ErrorMatch.FULL_TEXT, *args, **kwargs):
"""Attempt to start the node and expect it to raise an error.

File Metadata

Mime Type
text/plain
Expires
Sat, Mar 1, 11:14 (19 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5181993
Default Alt Text
D6202.diff (4 KB)

Event Timeline