1 Star 1 Fork 0

jeekzhang / MIT6.S081

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
grade-lab-pgtbl 2.14 KB
一键复制 编辑 原始数据 按行查看 历史
Frans Kaashoek 提交于 2022-09-19 17:19 . pgtbl
#!/usr/bin/env python3
import re
from gradelib import *
r = Runner(save("xv6.out"))
PTE_PRINT = """page table 0x0000000087f6e000
..0: pte 0x0000000021fda801 pa 0x0000000087f6a000
.. ..0: pte 0x0000000021fda401 pa 0x0000000087f69000
.. .. ..0: pte 0x0000000021fdac1f pa 0x0000000087f6b000
.. .. ..1: pte 0x0000000021fda00f pa 0x0000000087f68000
.. .. ..2: pte 0x0000000021fd9c1f pa 0x0000000087f67000
..255: pte 0x0000000021fdb401 pa 0x0000000087f6d000
.. ..511: pte 0x0000000021fdb001 pa 0x0000000087f6c000
.. .. ..509: pte 0x0000000021fdd813 pa 0x0000000087f76000
.. .. ..510: pte 0x0000000021fddc07 pa 0x0000000087f77000
.. .. ..511: pte 0x0000000020001c0b pa 0x0000000080007000"""
VAL_RE = "(0x00000000[0-9a-f]+)"
INDENT_RE = r"\s*\.\.\s*"
INDENT_ESC = "\\\s*\.\.\\\s*"
@test(0, "pgtbltest")
def test_pgtbltest():
r.run_qemu(shell_script([
'pgtbltest'
]), timeout=300)
@test(10, "pgtbltest: ugetpid", parent=test_pgtbltest)
def test_nettest_():
r.match('^ugetpid_test: OK$')
@test(10, "pgtbltest: pgaccess", parent=test_pgtbltest)
def test_nettest_():
r.match('^pgaccess_test: OK$')
@test(10, "pte printout")
def test_pteprint():
first = True
r.run_qemu(shell_script([
'echo hi'
]))
r.match('^hi')
p = re.compile(VAL_RE)
d = re.compile(INDENT_RE)
for l in PTE_PRINT.splitlines():
l = d.sub(INDENT_ESC, l)
l = p.sub(VAL_RE, l)
r.match(r'^{}$'.format(l))
if first:
first = False
else:
matches = re.findall(r'^{}$'.format(l), r.qemu.output, re.MULTILINE)
assert_equal(len(matches[0]), 2)
pa = (int(matches[0][0], 16) >> 10) << 12
assert_equal(int(matches[0][1], 16), pa)
@test(5, "answers-pgtbl.txt")
def test_answers():
# just a simple sanity check, will be graded manually
check_answers("answers-pgtbl.txt")
@test(0, "usertests")
def test_usertests():
r.run_qemu(shell_script([
'usertests -q'
]), timeout=300)
@test(10, "usertests: all tests", parent=test_usertests)
def test_usertests():
r.match('^ALL TESTS PASSED$')
@test(1, "time")
def test_time():
check_time()
run_tests()
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zhang-gike/MIT6.S081.git
git@gitee.com:zhang-gike/MIT6.S081.git
zhang-gike
MIT6.S081
MIT6.S081
pgtbl

搜索帮助

344bd9b3 5694891 D2dac590 5694891