| 1 | #!/usr/bin/python |
|---|
| 2 | |
|---|
| 3 | # Copyright (C) International Business Machines Corp., 2005 |
|---|
| 4 | # Author: Dan Smith <danms@us.ibm.com> |
|---|
| 5 | # Author: Ryan Harper <ryanh@us.ibm.com> |
|---|
| 6 | |
|---|
| 7 | from XmTestLib import * |
|---|
| 8 | |
|---|
| 9 | def get_sedf_params(domain): |
|---|
| 10 | status, output = traceCommand("xm sched-sedf %s" %(domain.getName())) |
|---|
| 11 | return (status, output.split('\n')[1].split()) |
|---|
| 12 | |
|---|
| 13 | |
|---|
| 14 | domain = XmTestDomain(extraConfig = {"sched":"sedf"}) |
|---|
| 15 | |
|---|
| 16 | try: |
|---|
| 17 | domain.start(noConsole=True) |
|---|
| 18 | except DomainError, e: |
|---|
| 19 | if verbose: |
|---|
| 20 | print "Failed to create test domain because:" |
|---|
| 21 | print e.extra |
|---|
| 22 | FAIL(str(e)) |
|---|
| 23 | |
|---|
| 24 | # get current param values as baseline |
|---|
| 25 | (status, params) = get_sedf_params(domain) |
|---|
| 26 | |
|---|
| 27 | # check rv |
|---|
| 28 | if status != 0: |
|---|
| 29 | FAIL("Getting sedf parameters return non-zero rv (%d)", status) |
|---|
| 30 | |
|---|
| 31 | # parse out current params |
|---|
| 32 | (name, domid, p, s, l, e, w) = params |
|---|
| 33 | |
|---|
| 34 | # set slice > than current period |
|---|
| 35 | slice = str(float(p)+1) |
|---|
| 36 | |
|---|
| 37 | opts = "%s -s %s" %(domain.getName(), slice) |
|---|
| 38 | (status, output) = traceCommand("xm sched-sedf %s" %(opts)) |
|---|
| 39 | |
|---|
| 40 | # we should see this output from xm |
|---|
| 41 | eyecatcher = "Failed to set sedf parameters" |
|---|
| 42 | |
|---|
| 43 | # check for failure |
|---|
| 44 | if output.find(eyecatcher) >= 0: |
|---|
| 45 | FAIL("sched-sedf let me set a slice bigger than my period.") |
|---|
| 46 | |
|---|
| 47 | # Stop the domain (nice shutdown) |
|---|
| 48 | domain.stop() |
|---|