Added test161 files for ASST2

This commit is contained in:
Guru Prasad Srinivasa 2016-02-29 20:12:09 -05:00
parent f141875f20
commit 21169ed500
30 changed files with 488 additions and 0 deletions

86
test161/commands/asst2.tc Normal file
View File

@ -0,0 +1,86 @@
templates:
- name: /testbin/consoletest
panics: maybe
output:
- text: "/testbin/consoletest: Able was i ere i saw elbA"
- name: /testbin/opentest
panics: maybe
- name: /testbin/readwritetest
panics: maybe
output:
- text: "/testbin/readwritetest: h4xa0rRq0Vgbc96tiYJ^!#nXzZSAKPO"
- name: /testbin/closetest
panics: maybe
- name: /testbin/fileonlytest
panics: maybe
- name: /testbin/redirect
- name: /testbin/sparsefile
panics: maybe
- name: /extratests/badcall
- name: faulter
- name: /testbin/forkbomb
timesout: yes
timeout: 15.0
output:
- text: "kmalloc"
external: true
trusted: true
- name: kmalloc
output:
- text: "kmalloc: out of memory"
- name: /testbin/crash
- name: /testbin/forktest
- name: /testbin/randcall
- name: /testbin/shelltest
output:
- text: "/testbin/shelltest: line-1: Able was i ere i saw elbA"
- text: "/testbin/shelltest: line-2: Able was i ere i saw elbA"
- text: "/testbin/shelltest: line-3: Able was i ere i saw elbA"
- name: /testbin/argtest
input:
- "{{randString 1 2}}"
- "{{randString 4 5}}"
- "{{randString 9 10}}"
- "{{randString 10 11}}"
- "{{randString 11 12}}"
- "{{randString 12 13}}"
- "{{randString 13 14}}"
- "{{randString 200 513}}"
output:
- text: "/testbin/argtest: argc: {{add 1 .ArgLen}}"
- text: "/testbin/argtest: /testbin/argtest"
- text: "{{range $index, $element := .Args}}/testbin/argtest: {{$element}}\n{{end}}"
- text: "/testbin/argtest: [NULL]"
- name: /testbin/bigexec
- name: /testbin/factorial
input:
- "{{randInt 6 10}}"
output:
- text: "/testbin/factorial: {{$n:= index .Args 0 | atoi}}{{factorial $n}}\n"
- name: /testbin/add
input:
- "{{randInt 2 1000}}"
- "{{randInt 2 4000}}"
output:
- text: "/testbin/add: {{$x:= index .Args 0 | atoi}}{{$y := index .Args 1 | atoi}}{{add $x $y}}"

76
test161/targets/asst2.tt Normal file
View File

@ -0,0 +1,76 @@
name: asst2
version: 1
points: 150
type: asst
kconfig: ASST2
userland: true
tests:
# FS tests
- id: asst2/fs/consoletest.t
points: 2
- id: asst2/fs/opentest.t
points: 5
- id: asst2/fs/closetest.t
points: 3
- id: asst2/fs/readwritetest.t
points: 10
- id: asst2/fs/fileonlytest.t
points: 15
- id: asst2/fs/redirect.t
points: 10
- id: asst2/fs/sparsefile.t
points: 5
# Process tests
- id: asst2/process/forktest.t
points: 15
- id: asst2/process/shell.t
points: 10
- id: asst2/process/argtest.t
points: 5
- id: asst2/process/bigexec.t
points: 10
- id: asst2/process/factorial.t
points: 5
- id: asst2/process/add.t
points: 5
# All tests below this point are stability tests
# badcalls
- id: asst2/stability/badcall/badcall-open.t
points: 3
- id: asst2/stability/badcall/badcall-close.t
points: 3
- id: asst2/stability/badcall/badcall-read.t
points: 3
- id: asst2/stability/badcall/badcall-write.t
points: 3
- id: asst2/stability/badcall/badcall-lseek.t
points: 3
- id: asst2/stability/badcall/badcall-dup2.t
points: 3
- id: asst2/stability/badcall/badcall-execv.t
points: 5
- id: asst2/stability/badcall/badcall-waitpid.t
points: 5
- id: asst2/stability/crash/crash-allS.t
points: 2
- id: asst2/stability/randcall.t
points: 5
commands:
- id: /testbin/randcall
args:
- "-f"
- "-c 1000"
- "-r {{randInt 1 4294967295}}"
- "2"
- id: asst2/stability/forkbomb.t
points: 10
- id: asst2/stability/forktest-stability.t
points: 5

View File

@ -0,0 +1,8 @@
---
name: "Close Test"
description:
Tests close syscall. Attempts to close stdin and a normal file.
tags: [fs]
depends: [boot, /asst2/fs/opentest.t]
---
p /testbin/closetest

View File

@ -0,0 +1,8 @@
---
name: "Console Test"
tags: [console]
depends: [boot]
sys161:
ram: 4M
---
p /testbin/consoletest

View File

@ -0,0 +1,13 @@
---
name: "Fileonly Test"
description:
Tests open/close/read/write/lseek system calls. Opens file, writes 512
bytes, skips 512 bytes and writes another 512 bytes(odd steps). Then seeks
back to beginning, and writes the even steps. Then seeks back to the
beginning and verifies that the contents are correct.
tags: [fs]
depends: [console, /asst2/fs/readwritetest.t,]
sys161:
ram: 4M
---
p /testbin/fileonlytest

View File

@ -0,0 +1,8 @@
---
name: "Open Test"
description:
Tests open syscall. Attempts to open a file that is known to exist.
tags: [fs]
depends: [boot]
---
p /testbin/opentest

View File

@ -0,0 +1,9 @@
---
name: "Read-Write Test"
description:
Tests read and write syscalls. Attempts to write a file and then
read it back.
tags: [fs]
depends: [/asst2/fs/opentest.t]
---
p /testbin/readwritetest

View File

@ -0,0 +1,11 @@
---
name: "Redirect Test"
description:
Tests dup2. Opens a file handle, forks a new process and manipulates the file
table using dup2.
tags: [fs]
depends: [/asst2/process/forktest.t]
sys161:
ram: 4M
---
p /testbin/redirect

View File

@ -0,0 +1,11 @@
---
name: "Sparsefile Test"
description:
Tests lseek to write one byte of data after skipping the first x bytes
in an empty file. Then attempts to read this byte.
tags: [fs]
depends: [shell, /asst2/fs/fileonlytest.t]
sys161:
ram: 2M
---
$ /testbin/sparsefile test 1048

View File

@ -0,0 +1,8 @@
---
name: "Add Test"
description:
Adds two randomly generated numbers.
tags: [proc, fun]
depends: [shell]
---
$ /testbin/add

View File

@ -0,0 +1,8 @@
---
name: "Argtest"
description:
Checks whether your kernel supports argument passing.
tags: [argtest, proc]
depends: [console]
---
$ /testbin/argtest

View File

@ -0,0 +1,11 @@
---
name: "Bigexec Test"
description:
Tests to ensure that the argument passing logic is not hard-coded
to small argument lengths.
tags: [proc]
depends: [shell, /asst2/process/argtest.t]
sys161:
ram: 4M
---
$ /testbin/bigexec

View File

@ -0,0 +1,11 @@
---
name: "Factorial Test"
description:
Attempts to calculate factorial by recursive replacing the current process
with the number computed thus far.
tags: [proc, fun]
depends: [shell]
sys161:
ram: 4M
---
$ /testbin/factorial

View File

@ -0,0 +1,8 @@
---
name: "Fork Test"
tags: [proc]
depends: [console, /asst2/fs/readwritetest.t]
sys161:
ram: 4M
---
p /testbin/forktest

View File

@ -0,0 +1,13 @@
---
name: "Shell Test"
description:
Tests whether the shell works by running /testbin/consoletest in the shell.
The shell test tries to identify a race condition between the shell and the
program that the shell is trying to run.
tags: [proc, shell]
depends: [console]
sys161:
ram: 2M
---
$ /testbin/shelltest
$ /testbin/shelltest

View File

@ -0,0 +1,9 @@
---
name: "Badcall-close Test"
description:
Tests whether close syscall is implemented correctly by invoking it in all
possible wrong ways.
tags: [badcall, stability]
depends: [shell]
---
$ /testbin/badcall f

View File

@ -0,0 +1,9 @@
---
name: "Badcall-dup2 Test"
description:
Tests whether dup2 syscall is implemented correctly by invoking it in all
possible wrong ways.
tags: [badcall, stability]
depends: [shell]
---
$ /testbin/badcall w

View File

@ -0,0 +1,11 @@
---
name: "Badcall-execv Test"
description:
Tests whether execv syscall is implemented correctly by invoking it in all
possible wrong ways.
tags: [badcall, stability]
depends: [shell]
sys161:
ram: 4M
---
$ /testbin/badcall a

View File

@ -0,0 +1,9 @@
---
name: "Badcall-lseek Test"
description:
Tests whether lseek syscall is implemented correctly by invoking it in all
possible wrong ways.
tags: [badcall, stability]
depends: [shell]
---
$ /testbin/badcall j

View File

@ -0,0 +1,9 @@
---
name: "Badcall-open Test"
description:
Tests whether open syscall is implemented correctly by invoking it in all
possible wrong ways.
tags: [badcall, stability]
depends: [shell]
---
$ /testbin/badcall c

View File

@ -0,0 +1,9 @@
---
name: "Badcall-read Test"
description:
Tests whether read syscall is implemented correctly by invoking it in all
possible wrong ways.
tags: [badcall, stability]
depends: [shell]
---
$ /testbin/badcall d

View File

@ -0,0 +1,11 @@
---
name: "Badcall-waitpid Test"
description:
Tests whether waitpid syscall is implemented correctly by invoking it in all
possible wrong ways.
tags: [badcall, stability]
depends: [shell]
sys161:
ram: 4M
---
$ /testbin/badcall b

View File

@ -0,0 +1,9 @@
---
name: "Badcall-write Test"
description:
Tests whether write syscall is implemented correctly by invoking it in all
possible wrong ways.
tags: [badcall, stability]
depends: [shell]
---
$ /testbin/badcall e

View File

@ -0,0 +1,13 @@
---
name: "Crash-all Shell Test"
description:
Tests whether your system correctly handles a variety of
illegal attempts from userspace processes to access resources that
do not belong to it. Please see userland/testbin/crash for more info.
Runs it from the shell.
tags: [stability, crash, crash-fork]
depends: [shell, /asst2/process/forktest.t]
sys161:
ram: 4M
---
$ /testbin/crash *

View File

@ -0,0 +1,10 @@
---
name: "Crash-template Test"
description:
Tests whether your system correctly handles a variety of
illegal attempts from userspace processes to access resources that
do not belong to it. Please see userland/testbin/crash for more info.
tags: [stability, crash]
depends: [console]
---
p /extratests/crash-template

View File

@ -0,0 +1,54 @@
import os,sys
import subprocess
RANGE=[chr(i) for i in range(ord('a'), ord('p'))]
# First create crash-a/b/c.t files
template = open('crash-template').read()
def add_sys161_opts(content, sys161_opts):
content = content.split('\n')
idx = content[1:].index('---') + 1
content.insert(idx, sys161_opts.strip())
content = '\n'.join(content)
return content
def create_crash(char, sys161_opts=None):
content = template.replace('-template', '-%s' % char)
content = content.replace(', crash]', ', crash-fork]')
content = content.replace('[console]', '[console, /asst2/process/forktest.t]')
if sys161_opts:
content = add_sys161_opts(content, sys161_opts)
with open('crash-%s.t' % char, 'w') as f:
f.write(content)
# now do the F version
content = template.replace('-template', '-%sF' % char)
if sys161_opts:
content = add_sys161_opts(content, sys161_opts)
with open('crash-%sF.t' % char, 'w') as f:
f.write(content)
for char in RANGE:
create_crash(char)
# Now do the 'all'
sys161_opts = \
'''
sys161:
ram: 2M
'''
create_crash('all', sys161_opts)
#p = subprocess.Popen('ls *.t', shell=True, stdout=subprocess.PIPE)
#stdout, stderr = p.communicate()
#files = stdout.strip().split('\n')
#
#for f in files:
# name, ext = os.path.splitext(f)
#
# new_file = name + 'F' + ext
# letters = name[name.index('-'):]
# subprocess.check_call('cp %s %s' % (f, new_file), shell=True)
# subprocess.check_call('''sed -i 's/%s/%sF/g' %s''' % (letters, letters, new_file), shell=True)

View File

@ -0,0 +1,10 @@
---
name: "Faulter Test"
description:
Tests whether kill_curthread is implemented correctly.
Attempts to access an invalid memory address expecting the kernel
to gracefully kill the current process instead of panicking.
tags: [proc]
depends: [console]
---
p /testbin/faulter

View File

@ -0,0 +1,10 @@
---
name: "Forkbomb"
tags: [stability]
depends: [console]
sys161:
ram: 2M
monitor:
progresstimeout: 40.0
---
p /testbin/forkbomb

View File

@ -0,0 +1,14 @@
---
name: "Forktest Stability Test"
description:
Runs forktest 5 times to check for synchronization issues.
tags: [stability]
depends: [shell, /asst2/process/forktest.t]
sys161:
ram: 16M
---
$ /testbin/forktest
$ /testbin/forktest
$ /testbin/forktest
$ /testbin/forktest
$ /testbin/forktest

View File

@ -0,0 +1,12 @@
---
name: "Randcall Test"
description:
Invokes system calls on random with random arguments.
Tests whether your system can gracefully recover from
bad system calls.
tags: [randcall-2, stability]
depends: [shell]
sys161:
ram: 16M
---
$ /testbin/randcall -f -c 1000 -r 30 2