~pieq/checkbox/fix-1576570-stress-test-progress-log

« back to all changes in this revision

Viewing changes to checkbox-support/checkbox_support/parsers/meminfo.py

  • Committer: Sylvain Pineau
  • Date: 2014-01-07 13:39:38 UTC
  • mto: This revision was merged to the branch mainline in revision 2588.
  • Revision ID: sylvain.pineau@canonical.com-20140107133938-46v5ehofwa9whl1e
checkbox-support: Copy required modules from checkbox-old/checkbox

and their corresponding tests

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# This file is part of Checkbox.
 
3
#
 
4
# Copyright 2011 Canonical Ltd.
 
5
#
 
6
# Checkbox is free software: you can redistribute it and/or modify
 
7
# it under the terms of the GNU General Public License version 3,
 
8
# as published by the Free Software Foundation.
 
9
 
 
10
#
 
11
# Checkbox is distributed in the hope that it will be useful,
 
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
# GNU General Public License for more details.
 
15
#
 
16
# You should have received a copy of the GNU General Public License
 
17
# along with Checkbox.  If not, see <http://www.gnu.org/licenses/>.
 
18
#
 
19
import re
 
20
 
 
21
 
 
22
class MeminfoParser:
 
23
    """Parser for the /proc/meminfo file."""
 
24
 
 
25
    def __init__(self, stream):
 
26
        self.stream = stream
 
27
 
 
28
    def run(self, result):
 
29
        key_value_pattern = re.compile(r"(?P<key>.*):\s+(?P<value>.*)")
 
30
        meminfo_map = {
 
31
            "MemTotal": "total",
 
32
            "SwapTotal": "swap"}
 
33
 
 
34
        meminfo = {}
 
35
        for line in self.stream.readlines():
 
36
            line = line.strip()
 
37
            match = key_value_pattern.match(line)
 
38
            if match:
 
39
                key = match.group("key")
 
40
                if key in meminfo_map:
 
41
                    key = meminfo_map[key]
 
42
                    value = match.group("value")
 
43
                    (integer, factor) = value.split()
 
44
                    meminfo[key] = int(integer) * 1024
 
45
 
 
46
        result.setMemory(meminfo)