1
"""Measure touch applications memory usage."""
6
from autopilot.testcase import AutopilotTestCase
8
from ubuntu_test_cases.memory_usage_measurement.apps.browser import BrowserApp
9
from ubuntu_test_cases.memory_usage_measurement.apps.camera import CameraApp
10
from ubuntu_test_cases.memory_usage_measurement.apps.gallery import GalleryApp
11
from ubuntu_test_cases.memory_usage_measurement.apps.media_player import (
14
from ubuntu_test_cases.memory_usage_measurement.probes import SmemProbe
16
LOGGER = logging.getLogger(__file__)
19
class MemoryUsageTests(AutopilotTestCase):
21
"""Event based memory usage measurement scenario."""
23
def test_scenario(self):
24
"""Scenario that takes measurements on some events."""
25
self.smem = SmemProbe()
27
# Make sure report is written with the data collected
28
# even if the test failed to complete
29
self.addCleanup(self._write_report)
31
browser = BrowserApp(self)
32
with self.smem.probe('Browser started'):
34
self.smem.pids.append(browser.app.pid)
36
with self.smem.probe('Browser finished loading'):
37
url = 'http://acid3.acidtests.org/'
38
browser.go_to_url(url)
39
browser.assert_page_eventually_loaded(url)
41
camera = CameraApp(self)
42
with self.smem.probe('Camera app started'):
44
self.smem.pids.append(camera.app.pid)
46
with self.smem.probe('Camera app picture taken'):
49
with self.smem.probe('Gallery app started'):
50
gallery = GalleryApp(self)
52
self.smem.pids.append(gallery.app.pid)
54
with self.smem.probe('Media player app started'):
55
media_player = MediaPlayerApp(self)
57
self.smem.pids.append(media_player.app.pid)
59
with self.smem.probe('Media player app finished playback'):
60
media_player = MediaPlayerApp(self)
61
media_player.launch('small.ogg')
62
self.smem.pids.append(media_player.app.pid)
63
media_player.assert_playback_finished()
65
summary_msg = '\n'.join(
66
['- {}: {}'.format(event, pids)
67
for event, pids in self.smem.threshold_exceeded_summary])
69
self.smem.threshold_exceeded_summary,
71
'Threshold(s) exceded:\n{}'.format(summary_msg))
73
def _write_report(self):
74
"""Write report to to results directory."""
75
report_filename = '/tmp/memory_usage.json'
76
with open(report_filename, 'w') as report_file:
77
json.dump(self.smem.report, report_file,
78
indent=4, sort_keys=True)
79
LOGGER.debug('Report written to {}'.format(report_file.name))