зеркало из https://github.com/mozilla/gecko-dev.git
65 строки
1.7 KiB
Python
Executable File
65 строки
1.7 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
"""
|
|
Tests for talos.xrestop
|
|
"""
|
|
|
|
import os
|
|
import subprocess
|
|
import unittest
|
|
from talos.cmanager_linux import xrestop
|
|
|
|
here = os.path.dirname(os.path.abspath(__file__))
|
|
xrestop_output = os.path.join(here, 'xrestop_output.txt')
|
|
|
|
|
|
class TestXrestop(unittest.TestCase):
|
|
|
|
def test_parsing(self):
|
|
"""test parsing xrestop output from xrestop_output.txt"""
|
|
|
|
class MockPopen(object):
|
|
"""
|
|
stub class for subprocess.Popen
|
|
We mock this to return a local static copy of xrestop output
|
|
This has the unfortunate nature of depending on implementation
|
|
details.
|
|
"""
|
|
def __init__(self, *args, **kwargs):
|
|
self.returncode = 0
|
|
|
|
def communicate(self):
|
|
stdout = open(xrestop_output).read()
|
|
return stdout, ''
|
|
|
|
# monkey-patch subprocess.Popen
|
|
Popen = subprocess.Popen
|
|
subprocess.Popen = MockPopen
|
|
|
|
# get the output
|
|
output = xrestop()
|
|
|
|
# ensure that the parsed output is equal to what is in
|
|
# xrestop_output.txt
|
|
self.assertEqual(len(output), 7) # seven windows with PIDs
|
|
|
|
# the first window is Thunderbird
|
|
pid = 2035 # thundrbird's pid
|
|
self.assertTrue(pid in output)
|
|
thunderbird = output[pid]
|
|
self.assertEqual(thunderbird['index'], 0)
|
|
self.assertEqual(thunderbird['total bytes'], '~4728761')
|
|
|
|
# PID=1668 is a Terminal
|
|
pid = 1668
|
|
self.assertTrue(pid in output)
|
|
terminal = output[pid]
|
|
self.assertEqual(terminal['pixmap bytes'], '1943716')
|
|
|
|
# cleanup: set subprocess.Popen back
|
|
subprocess.Popen = Popen
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|