source: asp3_wo_tecs/trunk/test/testexec.rb@ 305

Last change on this file since 305 was 305, checked in by ertl-honda, 7 years ago

3.0.0のリリース版に追従

File size: 10.0 KB
Line 
1#!/usr/bin/env ruby
2# -*- coding: utf-8 -*-
3#
4# TOPPERS Software
5# Toyohashi Open Platform for Embedded Real-Time Systems
6#
7# Copyright (C) 2016 by Embedded and Real-Time Systems Laboratory
8# Graduate School of Information Science, Nagoya Univ., JAPAN
9#
10# 上記著作権者
11は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
12# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
13# 変・再é…
14å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
15# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17# スコード中に含まれていること.
18# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19# 用できる形で再é…
20å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
21å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
22# 者
23マニュアルなど)に,上記の著作権表示,この利用条件および下記
24# の無保証規定を掲載すること.
25# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
26# 用できない形で再é…
27å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
28# と.
29# (a) 再é…
30å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
31マニュアルなど)に,上記の著
32# 作権表示,この利用条件および下記の無保証規定を掲載すること.
33# (b) 再é…
34å¸ƒã®å½¢æ…
35‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
36# 報告すること.
37# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
38# 害からも,上記著作権者
39およびTOPPERSプロジェクトをå…
40è²¬ã™ã‚‹ã“と.
41# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
42# 由に基づく請求からも,上記著作権者
43およびTOPPERSプロジェクトを
44# å…
45è²¬ã™ã‚‹ã“と.
46#
47# 本ソフトウェアは,無保証で提供されているものである.上記著作権者
48お
49# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
50# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
51# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
52# の責任を負わない.
53#
54# $Id: testexec.rb 600 2016-02-07 11:46:22Z ertl-hiro $
55#
56
57require "pp"
58
59#
60# テストプログラム毎に必
61要なオプションの定義
62#
63TEST_SPEC = {
64 # 機能テストプログラム
65 "cpuexc1" => { :SRC=>"test_cpuexc1", :CFG=>"test_cpuexc" },
66 "cpuexc2" => { :SRC=>"test_cpuexc2", :CFG=>"test_cpuexc" },
67 "cpuexc3" => { :SRC=>"test_cpuexc3", :CFG=>"test_cpuexc" },
68 "cpuexc4" => { :SRC=>"test_cpuexc4", :CFG=>"test_cpuexc" },
69 "cpuexc5" => { :SRC=>"test_cpuexc5", :CFG=>"test_cpuexc" },
70 "cpuexc6" => { :SRC=>"test_cpuexc6", :CFG=>"test_cpuexc" },
71 "cpuexc7" => { :SRC=>"test_cpuexc7", :CFG=>"test_cpuexc" },
72 "cpuexc8" => { :SRC=>"test_cpuexc8", :CFG=>"test_cpuexc" },
73 "cpuexc9" => { :SRC=>"test_cpuexc9", :CFG=>"test_cpuexc" },
74 "cpuexc10" => { :SRC=>"test_cpuexc10", :CFG=>"test_cpuexc" },
75 "dlynse" => { :SRC=>"test_dlynse" },
76 "dtq1" => { :SRC=>"test_dtq1" },
77 "flg1" => { :SRC=>"test_flg1" },
78 "hrt1" => { :SRC=>"test_hrt1" },
79 "mutex1" => { :SRC=>"test_mutex1", :BIT=>"mutex" },
80 "mutex2" => { :SRC=>"test_mutex2", :BIT=>"mutex" },
81 "mutex3" => { :SRC=>"test_mutex3", :BIT=>"mutex" },
82 "mutex4" => { :SRC=>"test_mutex4", :BIT=>"mutex" },
83 "mutex5" => { :SRC=>"test_mutex5", :BIT=>"mutex" },
84 "mutex6" => { :SRC=>"test_mutex6", :BIT=>"mutex" },
85 "mutex7" => { :SRC=>"test_mutex7", :BIT=>"mutex" },
86 "mutex8" => { :SRC=>"test_mutex8", :BIT=>"mutex" },
87 "notify1" => { :SRC=>"test_notify1" },
88 "raster1" => { :SRC=>"test_raster1", :BIT=>"kernel" },
89 "raster2" => { :SRC=>"test_raster2" },
90 "sem1" => { :SRC=>"test_sem1" },
91 "sem2" => { :SRC=>"test_sem2" },
92 "sysman1" => { :SRC=>"test_sysman1" },
93 "sysstat1" => { :SRC=>"test_sysstat1" },
94 "task1" => { :SRC=>"test_task1", :BIT=>"kernel" },
95 "tmevt1" => { :SRC=>"test_hrt1" },
96
97 # メッセージバッファ機能拡張パッケージの機能テストプログラム
98 "messagebuf1" => { :SRC=>"test_messagebuf1", :BIT=>"kernel" },
99 "messagebuf2" => { :SRC=>"test_messagebuf2", :BIT=>"kernel" },
100
101 # オーバランハンドラ機能拡張パッケージの機能テストプログラム
102 "ovrhdr1" => { :SRC=>"test_ovrhdr1" },
103
104 # 制約タスク拡張パッケージの機能テストプログラム
105 "rstr1" => { :SRC=>"test_rstr1" },
106 "rstr2" => { :SRC=>"test_rstr2" },
107
108 # サブ優å…
109ˆåº¦æ©Ÿèƒ½æ‹¡å¼µãƒ‘ッケージの機能テストプログラム
110 "subprio1" => { :SRC=>"test_subprio1" },
111 "subprio2" => { :SRC=>"test_subprio2" },
112
113 # システム時刻管理機能テストプログラム
114 "systim1" => { :TARGET=>1, :SRC=>"hrt_systim1", :DEFS=>"-DHRT_CONFIG1" },
115 "systim2" => { :TARGET=>1, :SRC=>"hrt_systim2", :DEFS=>"-DHRT_CONFIG1" },
116 "systim3" => { :TARGET=>1, :SRC=>"hrt_systim3", :DEFS=>"-DHRT_CONFIG1" },
117 "systim4" => { :TARGET=>1, :SRC=>"hrt_systim4", :DEFS=>"-DHRT_CONFIG2" },
118
119 # ドリフト調整機能拡張パッケージのシステム時刻管理機能テストプログラム
120 "drift1" => { :TARGET=>1, :SRC=>"hrt_drift1", :DEFS=>"-DHRT_CONFIG1" },
121 "drift1-64ops" => { :TARGET=>1, :SRC=>"hrt_drift1",
122 :DEFS=>"-DHRT_CONFIG1 -DUSE_64BIT_OPS" },
123 "systim1-64ops" => { :TARGET=>1, :SRC=>"hrt_systim1",
124 :DEFS=>"-DHRT_CONFIG1 -DUSE_64BIT_OPS" },
125
126 # 性能評価プログラム
127 "perf0" => { :CDL=>"perf_pf" },
128 "perf1" => { :CDL=>"perf_pf" },
129 "perf2" => { :CDL=>"perf_pf" },
130 "perf3" => { :CDL=>"perf_pf" },
131 "perf4" => { :CDL=>"perf_pf" },
132 "perf5" => { :CDL=>"perf_pf" },
133}
134
135#
136# カーネルライブラリの作成
137#
138def BuildKernel
139 if !Dir.exist?("KERNELLIB")
140 Dir.mkdir("KERNELLIB")
141 end
142
143 Dir.chdir("KERNELLIB") do
144 puts("== building: KERNELLIB ==")
145 configCommand = "ruby #{$usedSrcDir}/configure.rb"
146 configCommand += " #{$targetOptions[0]}"
147 configCommand += " -f"
148 puts(configCommand)
149 system(configCommand)
150 system("make libkernel.a")
151 if File.exist?("Makefile.bak")
152 File.delete("Makefile.bak")
153 end
154 end
155end
156
157#
158# テストプログラムの作成
159#
160def BuildTest(test, testSpec, mkdirFlag=false)
161 testName = test.tr("a-z", "A-Z")
162 objDir = "OBJ-#{testName}"
163
164 if !Dir.exist?(objDir)
165 if mkdirFlag
166 Dir.mkdir(objDir)
167 else
168 return
169 end
170 end
171
172 Dir.chdir(objDir) do
173 puts("== building: #{testName} ==")
174 configCommand = "ruby #{$usedSrcDir}/configure.rb"
175 if testSpec.has_key?(:TARGET)
176 configCommand += " #{$targetOptions[testSpec[:TARGET]]}"
177 else
178 configCommand += " #{$targetOptions[0]}"
179 end
180 configCommand += " -a #{$usedSrcDir}/test"
181
182 if (!testSpec.has_key?(:TARGET) || testSpec[:TARGET] == 0)
183 configCommand += " -L ../KERNELLIB"
184 end
185 if testSpec.has_key?(:SRC)
186 configCommand += " -A #{testSpec[:SRC]}"
187 else
188 configCommand += " -A #{test}"
189 end
190 if testSpec.has_key?(:CFG)
191 configCommand += " -c #{testSpec[:CFG]}.cfg"
192 end
193 if testSpec.has_key?(:CDL)
194 configCommand += " -C #{testSpec[:CDL]}.cdl"
195 else
196 configCommand += " -C test_pf.cdl"
197 end
198 if testSpec.has_key?(:BIT)
199 configCommand += " -S bit_#{testSpec[:BIT]}.o"
200 end
201 if testSpec.has_key?(:DEFS)
202 configCommand += " -O \"#{testSpec[:DEFS]}\""
203 end
204 puts(configCommand)
205 system(configCommand)
206 system("make")
207 if File.exist?("Makefile.bak")
208 File.delete("Makefile.bak")
209 end
210 end
211end
212
213#
214# å…
215¨ãƒ†ã‚¹ãƒˆãƒ—ログラムの作成
216#
217def BuildAll
218 TEST_SPEC.each do |test, testSpec|
219 BuildTest(test, testSpec)
220 end
221end
222
223#
224# テストプログラムの実行
225#
226def ExecTest(test, testSpec)
227 testName = test.tr("a-z", "A-Z")
228 objDir = "OBJ-#{testName}"
229
230 return unless Dir.exist?(objDir)
231
232 Dir.chdir(objDir) do
233 puts("== executing: #{testName} ==")
234 if File.exist?("../TARGET_RUN")
235 system(`cat ../TARGET_RUN`)
236 else
237 system("./asp")
238 end
239 end
240end
241
242#
243# å…
244¨ãƒ†ã‚¹ãƒˆãƒ—ログラムの実行
245#
246def ExecAll
247 TEST_SPEC.each do |test, testSpec|
248 ExecTest(test, testSpec)
249 end
250end
251
252#
253# カーネルライブラリのクリーン
254#
255def CleanKernel
256 if Dir.exist?("KERNELLIB")
257 Dir.chdir("KERNELLIB") do
258 system("make clean")
259 end
260 end
261end
262
263#
264# テストプログラムのクリーン
265#
266def CleanTest(test, testSpec)
267 testName = test.tr("a-z", "A-Z")
268 objDir = "OBJ-#{testName}"
269
270 return unless Dir.exist?(objDir)
271
272 Dir.chdir(objDir) do
273 system("make clean")
274 end
275end
276
277#
278# å…
279¨ãƒ†ã‚¹ãƒˆãƒ—ログラムのクリーン
280#
281def CleanAll
282 TEST_SPEC.each do |test, testSpec|
283 CleanTest(test, testSpec)
284 end
285end
286
287#
288# ソースディレクトリ名を取り出す
289#
290if /^(.*)\/test\/testexec/ =~ $0
291 $srcDir = $1
292else
293 $srcDir = "."
294end
295
296if /^\// =~ $srcDir
297 $usedSrcDir = $srcDir
298else
299 $usedSrcDir = "../" + $srcDir
300end
301
302#
303# ターゲット依存のオプションを読む
304#
305$targetOptions = {}
306File.open("TARGET_OPTIONS") do |file|
307 file.each_line.with_index do |line, index|
308 line.chomp!
309 $targetOptions[index] = line
310 end
311end
312
313#
314# パラメータで指定された処理の実行
315#
316if ARGV.size == 0
317 BuildKernel()
318 BuildAll()
319 ExecAll()
320else
321 ARGV.each do |param|
322 case param
323 when "kernel"
324 BuildKernel()
325 when "build"
326 BuildAll()
327 when "exec"
328 ExecAll()
329 when "all"
330 BuildAll()
331 ExecAll()
332 when "clean_kernel"
333 CleanKernel()
334 when "clean"
335 CleanKernel()
336 CleanAll()
337 else
338 if TEST_SPEC.has_key?(param)
339 BuildTest(param, TEST_SPEC[param], true)
340 ExecTest(param, TEST_SPEC[param])
341 else
342 puts("invalid parameter: #{param}")
343 end
344 end
345 end
346end
Note: See TracBrowser for help on using the repository browser.