--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/data/cpuinfo.txt Sun Jun 23 23:57:51 2013 -0500
@@ -0,0 +1,162 @@
+vendor_id : AuthenticAMD +model name : AMD Phenom(tm) II X6 1100T Processor +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt cpb hw_pstate npt lbrv svm_lock nrip_save pausefilter +TLB size : 1024 4K pages +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm stc 100mhzsteps hwpstate [9] +vendor_id : AuthenticAMD +model name : AMD Phenom(tm) II X6 1100T Processor +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt cpb hw_pstate npt lbrv svm_lock nrip_save pausefilter +TLB size : 1024 4K pages +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm stc 100mhzsteps hwpstate [9] +vendor_id : AuthenticAMD +model name : AMD Phenom(tm) II X6 1100T Processor +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt cpb hw_pstate npt lbrv svm_lock nrip_save pausefilter +TLB size : 1024 4K pages +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm stc 100mhzsteps hwpstate [9] +vendor_id : AuthenticAMD +model name : AMD Phenom(tm) II X6 1100T Processor +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt cpb hw_pstate npt lbrv svm_lock nrip_save pausefilter +TLB size : 1024 4K pages +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm stc 100mhzsteps hwpstate [9] +vendor_id : AuthenticAMD +model name : AMD Phenom(tm) II X6 1100T Processor +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt cpb hw_pstate npt lbrv svm_lock nrip_save pausefilter +TLB size : 1024 4K pages +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm stc 100mhzsteps hwpstate [9] +vendor_id : AuthenticAMD +model name : AMD Phenom(tm) II X6 1100T Processor +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt cpb hw_pstate npt lbrv svm_lock nrip_save pausefilter +TLB size : 1024 4K pages +address sizes : 48 bits physical, 48 bits virtual +power management: ts ttp tm stc 100mhzsteps hwpstate [9] --- a/tests/testregex.py Sun Jun 23 16:43:27 2013 -0500
+++ b/tests/testregex.py Sun Jun 23 23:57:51 2013 -0500
@@ -4,7 +4,7 @@
from pyparser.regex import RegexParser, Pattern
class InvalidRegexPatternTest(unittest.TestCase): # pylint:disable-msg=R0904
@@ -41,3 +41,50 @@
InvalidRegexPatternTest.InvalidRegexParser(True)
+class CPUInfoParser(RegexParser): + """ Parsers /proc/cpuinfo """ + RegexParser.__init__(self, kwargs=True) + @Pattern('^(?P<attribute>.+[^\s])\s+:\s+(?P<value>.+)$') + def attribute(self, match, attribute, value): # pylint:disable-msg=W0613 + """ Parsers an attribute """ + if attribute == 'processor': + self.data[value] = self.processor + if self.processor is not None: + self.processor[attribute] = value +class TestRegexParser(unittest.TestCase): # pylint:disable-msg=R0904 + """ Tests the regex parser """ + def test_cpu_info_parser(self): + """ Test parsing /proc/cpuinfo """ + data = utils.parse_file(CPUInfoParser, 'cpuinfo.txt') + self.assertEqual(len(data), 6) + for processor in data.values(): + # remove values that are volatile + del processor['initial apicid'] + del processor['apicid'] + del processor['cpu MHz'] + del processor['bogomips'] + del processor['core id'] + self.assertDictEqual(processor, compare)