Đây là lệnh tesh có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
tesh - vỏ thử nghiệm
SYNOPSIS
tè [TÙY CHỌN] ... [FILE] ...
MÔ TẢ
Đây là công cụ TESH. Nó tạo thành một vỏ thử nghiệm, tức là một loại vỏ chuyên dụng để
chạy thử nghiệm. Danh sách các hành động cần thực hiện được phân tích cú pháp từ các tệp tệp được gọi là testsuite.
LỰA CHỌN
--cd some / directory: yêu cầu tesh chuyển thư mục làm việc trước
khởi chạy các bài kiểm tra
--setenv var = value: đặt một biến môi trường cụ thể
--cfg arg: thêm tham số --cfg = arg vào mỗi dòng lệnh
--enable -verage: bỏ qua các dòng đầu ra bắt đầu bằng "profiling:"
KIỂM TRA FILE TỔNG HỢP
Đây là cú pháp của các tệp này:
Loại mỗi dòng được cung cấp bởi ký tự đầu tiên (ký tự thứ hai nên để trống và là
mặc kệ):
Lệnh `$ 'để chạy ở nền trước
Lệnh `& 'để chạy trong nền
Đầu vào `<'để chuyển đến lệnh
Đầu ra `> 'được mong đợi từ lệnh
`! ' metacommand, có thể là một trong số:
'hết giờ' | không
`` tín hiệu mong đợi ''
`` mong đợi trở lại ''
`` đầu ra ''
`setenv = '
`p 'một chuỗi để in
`P 'một chuỗi để in ở mức CRITICAL (dễ dàng ghi nhật ký)
Nếu đầu ra mong đợi không khớp với những gì lệnh xuất hiện, TESH sẽ tạo ra lỗi
hiển thị sự khác biệt (xem OUTPUT bên dưới).
IO Đơn hàng
Các dòng <và> thêm IO vào lệnh được xác định trong khối hiện tại (các khối được tách biệt
bởi các dòng trống). Có thể đặt các dòng này sau lệnh hoặc trước lệnh.
Sự khác biệt giữa hai phần sau chủ yếu là mỹ phẩm trong da của bạn,
TESH không quan tâm. (xem IO-order.tesh)
$ mèo
<TOTO
> TOTO
> TOTO
$ mèo
<TOTO
Tuy nhiên, có thể có một số lệnh trong cùng một khối, nhưng không có lệnh nào trong số chúng
có thể có bất kỳ đầu ra nào. Nó có vẻ hơi hạn chế, vì người ta có thể nói rằng một lệnh được
tất cả IO cho đến lệnh tiếp theo, nhưng tôi sợ các lỗi như sau:
$ cd toto
> TOTO
tệp $ mkfile
TOTO sẽ được chuyển đến lệnh cd, nơi người dùng rõ ràng muốn chuyển nó cho
lệnh tích hợp mkfile (xem bên dưới).
SUỐI CHỈNH SỬA
Chuyển hướng luồng (các cấu trúc ">", "<" và "|" trong sh) chưa được triển khai trong tesh.
Điều này có một chút hạn chế, nhưng tốt, hoan nghênh bản vá ...
Tình huống mà vấn đề chủ yếu là tạo một tệp tạm thời. Các
giải pháp là sử dụng lệnh tích hợp "mkfile", như trong ví dụ sau: $ mkfile
myFile> một số nội dung> vào tệp
Thao tác này sẽ tạo một tệp có tên myFile (đối số đầu tiên của lệnh mkfile). Nội dung của nó
sẽ là tất cả đầu vào được cung cấp cho lệnh.
TRỞ VỀ MÃ
TESH đưa ra một thông báo lỗi thích hợp khi con không trả về 0 dưới dạng mã trả lại (x.
catch-return.tesh) và trả về chính mã + 40.
Cũng có thể chỉ định rằng một lệnh đã cho phải trả về một giá trị khác. Đối với điều này,
sử dụng siêu lệnh "mong đợi trả về", lấy một số nguyên làm đối số. Sự thay đổi chỉ
áp dụng cho lệnh tiếp theo (xem set-return.tesh).
TÍN HIỆU
TESH phát hiện khi nào đứa trẻ bị giết bởi một tín hiệu (như trên mặc định) và phát ra một
thông báo lỗi thích hợp (xem catch-signal.tesh).
Cũng có thể chỉ định rằng một lệnh nhất định phải nâng cao một tín hiệu nhất định. Đối với điều này,
sử dụng siêu lệnh "tín hiệu mong đợi". Nó lấy tên tín hiệu làm đối số. Sự thay đổi chỉ
áp dụng cho lệnh tiếp theo (xem set-signal.tesh).
THỜI ĐIỂM
Theo mặc định, tất cả các lệnh được cung cấp 5 giây để thực thi (xem catch-timeout.tesh). Bạn có thể
thay đổi điều này bằng "timeout", lấy một số nguyên làm đối số. Thay đổi chỉ áp dụng
sang lệnh tiếp theo (xem set-timeout.tesh). Nếu bạn chuyển "no" làm đối số, lệnh
không thể hết giờ.
OUTPUT
Theo mặc định, đầu ra các lệnh được khớp với kết quả mong đợi và lỗi là
nâng lên trên sự khác biệt. Metacommands để thay đổi điều này:
"đầu ra bỏ qua" -> đầu ra hoàn toàn bị loại bỏ
"hiển thị đầu ra" -> đầu ra được hiển thị (nhưng chưa được xác minh)
"output sort" -> sắp xếp màn hình trước khi xác minh nó (xem bên dưới)
SẮP XẾP OUTPUT
Sắp xếp đầu ra có vẻ là một ý tưởng kỳ lạ, nhưng nó là bắt buộc trong SimGrid vì
các quy trình chạy không theo thứ tự tại bất kỳ điểm lập lịch nào (tức là mọi quy trình sẵn sàng chạy tại
thời gian mô phỏng t chạy song song). Để đảm bảo rằng đầu ra của trình mô phỏng vẫn khớp, chúng tôi
phải sắp xếp lại đầu ra trước khi so sánh nó.
Chúng tôi hy vọng trình mô phỏng sẽ chạy với đối số định dạng nhật ký đó:
--log = root.fmt: [% 10.6r]% e (% i:% P @% h)% e% m% n Sau đó, tesh sắp xếp chuỗi trên 19 ký tự đầu tiên
duy nhất và ổn định khi đầu dòng bằng nhau. Điều này sẽ đảm bảo rằng:
(1) tesh có hiệu quả (không có dương tính giả, không có âm tính giả)
(2) các điểm lập lịch trình cách xa nhau
(3) tại mỗi điểm lập lịch trình, các quá trình được tách biệt với nhau
(4) thứ tự của những gì một quy trình nhất định nói tại một lịch trình nhất định
điểm được bảo toàn.
Tất nhiên, điều này rất đúng theo định hướng của SimGrid, phá vỡ tính tổng quát của tesh, nhưng ai quan tâm,
thực ra?
Nếu bạn muốn thay đổi độ dài của tiền tố được sử dụng để sắp xếp, chỉ cần chỉ định nó sau
chỉ thị sắp xếp đầu ra, như thế này:
! sắp xếp đầu ra 22
MÔI TRƯỜNG
Bạn có thể thêm một số nội dung vào môi trường quy trình đã thử nghiệm bằng siêu lệnh setenv.
Nó hoạt động như mong đợi. Ví dụ:
"setenv PATH =/ thùng rác"
Sử dụng tesh trực tuyến bằng các dịch vụ onworks.net