Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F13115501
D6202.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
4 KB
Subscribers
None
D6202.diff
View Options
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
Details
Attached
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)
Attached To
D6202: Merge #17469: test: Remove fragile assert_memory_usage_stable
Event Timeline
Log In to Comment