memory_analyzer/integrationtest.py (30 lines of code) (raw):
#!/usr/bin/env python3
# Copyright (c) Facebook, Inc. and its affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
import os
import subprocess
import sys
import tempfile
import time
import unittest
class IntegrationTest(unittest.TestCase):
def test_works_at_all(self):
output_name = tempfile.mktemp()
print(output_name)
# This tells us that everything important was packaged if we tox
# installed an sdist, but doesn't tell us anything if this was setup.py
# develop'd in a git repo.
os.chdir("/")
self.assertFalse(os.path.exists(output_name))
with open("/proc/sys/kernel/yama/ptrace_scope") as f:
value = f.read().strip()
self.assertEqual("0", value, "/proc/sys/kernel/yama/ptrace_scope should be 0")
# Presumably this is a virtualenv python executable that has objgraph
# and pympler
try:
child = subprocess.Popen(
[sys.executable, "-c", "import sys; sys.stdin.readline()"],
stdin=subprocess.PIPE,
)
# TODO figure out how we can ensure setup is done; right now we're
# just relying on it taking a while to launch/attach
analyzer = subprocess.Popen(
["memory_analyzer", "run", "-q", "-f", output_name, str(child.pid)]
)
rc = analyzer.wait(5)
finally:
child.communicate(b"\n")
self.assertEqual(0, rc)
self.assertTrue(os.path.exists(output_name))
# TODO verify pickle has some strs
if __name__ == "__main__":
unittest.main()