summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorroot <root@mollison.localdomain>2009-03-22 22:21:21 -0400
committerroot <root@mollison.localdomain>2009-03-22 22:21:21 -0400
commitcd6e43f37856f7fe6b60e0e2ae45f864a4bd6d64 (patch)
tree5abaf81d8953d71e4fa82ad96be8f93fe2d493a4
parentfcbfba47e8c9e1596cf5e6d061408f99ea6618d7 (diff)
Test driver now gets as far as releasing the task set. Appears correct, but I need to control output from the st_trace in the future.
-rwxr-xr-xtest_driver/test.py89
1 files changed, 81 insertions, 8 deletions
diff --git a/test_driver/test.py b/test_driver/test.py
index 032b424..87038a0 100755
--- a/test_driver/test.py
+++ b/test_driver/test.py
@@ -7,8 +7,8 @@
7#liblitmus directory (You need to put the compiled liblitmus here) 7#liblitmus directory (You need to put the compiled liblitmus here)
8liblitmus_dir = '/root/liblitmus/' 8liblitmus_dir = '/root/liblitmus/'
9 9
10#ft_trace directory (You need to but the compiled ft_tools here) 10#ft_tools directory (You need to but the compiled ft_tools here)
11ft_trace_dir = '/root/ft_trace/' 11ft_tools_dir = '/root/ft_tools/'
12 12
13#device files directory (This script will set up the device files here) 13#device files directory (This script will set up the device files here)
14device_dir = '/root/device_files/' 14device_dir = '/root/device_files/'
@@ -20,9 +20,16 @@ trace_dir = '/root/traces/'
20#options listed in /proc/litmus/plugins 20#options listed in /proc/litmus/plugins
21policy = 'GSN-EDF' 21policy = 'GSN-EDF'
22 22
23#desired test case
24test_case_file = 'sample_test_case'
25
26#name of traces
27trace_name = 'driver'
28
23#Additional instructions: 29#Additional instructions:
24# -Make sure you've chmod +x'd the make_devices file and kept it in the same 30# -Make sure you've chmod +x'd the make_devices file and kept it in the same
25# dir as test.py 31# dir as test.py
32# -Make sure you've set up a test case
26 33
27########### 34###########
28# Imports # 35# Imports #
@@ -30,7 +37,8 @@ policy = 'GSN-EDF'
30 37
31import subprocess 38import subprocess
32import os 39import os
33 40import time
41exec('from ' + test_case_file + ' import test_case')
34 42
35################# 43#################
36# Run the tests # 44# Run the tests #
@@ -42,16 +50,81 @@ def main():
42 test_dir = os.getcwd() 50 test_dir = os.getcwd()
43 51
44 #Set scheduling policy 52 #Set scheduling policy
45 subprocess.Popen('echo ' + policy + ' > ' + '/proc/litmus/active_plugin', 53 print("Setting scheduling policy... ",end='')
46 shell=True) 54 ret = subprocess.getstatusoutput(
47 55 'echo ' + policy + ' > ' + '/proc/litmus/active_plugin')
56 if ret[0] == 0:
57 print("[SUCCESS]")
58 else:
59 print("[FAILURE], error was:")
60 print(str(ret[0]) + ': ' + ret[1])
61 exit()
62
63 #Check for execute permission on the make_devices script
64 print("Checking for permission to run make_devices... ",end='')
65 if not os.access('./make_devices',os.X_OK):
66 print("\nAttempting to chmod +x make_devices... ",end='')
67 ret = subprocess.getstatusoutput('chmod +x ./make_devices')
68 if ret[0]!=1:
69 print("[FAILURE], error was:")
70 print(str(ret[0]) + ': ' + ret[1])
71 exit()
72 print("[SUCCESS]")
73
48 #Setup the device files for the traces 74 #Setup the device files for the traces
49 subprocess.Popen('chmod +x make_devices',shell=True) 75 print("Creating device files. OK if they already exist.")
50 subprocess.Popen(test_dir + '/make_devices',cwd=device_dir) 76 subprocess.Popen(test_dir + '/make_devices',cwd=device_dir)
77 time.sleep(1)
51 78
52 #Set up environment variables needed for st_trace script 79 #Set up environment variables needed for st_trace script
53 os.putenv('FTCAT', ft_trace_dir + 'ftcat') 80 print("Setting up environment variables... ",end='')
81 os.putenv('FTCAT', ft_tools_dir + 'ftcat')
54 os.putenv('FTDEV',device_dir + 'sched_trace') 82 os.putenv('FTDEV',device_dir + 'sched_trace')
83 print("[SUCCESS]")
84
85 #See if we can access and run st_trace
86 print("Checking for permission to run st_trace... ",end='')
87 if not os.access(ft_tools_dir + 'st_trace',os.X_OK):
88 print("\nAttempting to chmod +x st_trace... ",end='')
89 ret = subprocess.getstatusoutput('chmod +x ' +
90 ft_tools_dir + 'st_trace')
91 if ret[0]!=1:
92 print("[FAILURE], error was:")
93 print(str(ret[0]) + ': ' + ret[1])
94 exit()
95 print("[SUCCESS]")
96
97 #Start sched_trace
98 print("Starting st_trace trace recorder... ",end='')
99 st_trace = subprocess.Popen([ft_tools_dir + 'st_trace',trace_name],
100 cwd=trace_dir)
101 print("[SUCCESS]")
102
103 #We will get an error there, if the test.py program terminates.
104 #time.sleep(7)
105
106 #Start tasks in test_case
107 print("Launching tasks... ",end='')
108 for task in test_case:
109 subprocess.Popen([task[0],'-w',str(task[1]),str(task[2]),str(task[3])])
110 print("[SUCCESS]")
111
112 #Wait for tasks to suspend themselves
113 print("Waiting for tasks to suspend... ",end='')
114 time.sleep(3)
115 print("[SUCCESS]")
116
117 #Release the tasks
118 print("Releasing the tasks... ",end='')
119 ret = subprocess.getstatusoutput(liblitmus_dir + 'release_ts')
120 if ret[0] != 0:
121 print("[FAILURE], error was:")
122 print(str(ret[0]) + ': ' + ret[1])
123 exit()
124 print("[SUCCESS]")
125
126 #Wait for the tasks to complete. I still need to implement this.
127
55 128
56 #Current steps... 129 #Current steps...
57 #Run st_trace (must tell it location of sched_trace device files exactly) 130 #Run st_trace (must tell it location of sched_trace device files exactly)