Как я могу моделировать неисправный диск во время тестирования?

Вы можете получить доступ к параметрам параметров одного значения с помощью ${param}.

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
...


...



...

Обратите внимание, что JSTL fn:escapeXml() необходим для предотвращения атак XSS. См. Также Предотвращение XSS в веб-приложении JSP / Servlet .

Вы можете получить доступ к параметрам запроса с несколькими значениями с помощью потоков ${paramValues} и EL 3.0.

v == 'a').get() ? 'checked' : ''} />
v == 'b').get() ? 'checked' : ''} />
v == 'c').get() ? 'checked' : ''} />
...

27
задан MarkR 1 September 2009 в 09:38
поделиться

4 ответа

Чтобы добавить ответ mark4o, вы также можете использовать Device Mapper в Linux для генерации неисправных устройств.

Устройство задержки Device Mapper может использоваться для отправки операций ввода-вывода чтения и записи одного и того же блока на различные базовые устройства (также может задерживать этот ввод-вывод, как следует из его названия). Устройство ошибок Device Mapper может использоваться для генерации постоянных ошибок при обращении к определенному блоку. Комбинируя их, вы можете создать устройство, в котором запись всегда завершается неудачей, но чтение всегда завершается успешно для данной области.

Выше приведен более сложный пример того, что описано в вопросе Имитация неисправного блочного устройства с ошибками чтения? (см. https://stackoverflow.com/a/1871029 для простого примера Device Mapper).

В специальном файле также содержится список механизмов ввода сбоев дисков Linux , который вызывает ошибку ввода-вывода Unix & amp; Вопрос по Linux.

6
ответ дан Community 14 October 2019 в 14:30
поделиться

Ядро Linux предоставляет замечательную функцию, называемую «внедрение ошибок»

echo 1 > /sys/block/vdd/vdd2/make-it-fail

Чтобы настроить некоторые параметры:

mkdir /debug
mount debugfs /debug -t debugfs
cd /debug/fail_make_request
echo 10 > interval # interval
echo 100 > probability # 100% probability
echo -1 > times # how many times: -1 means no limit

https://lxadm.com/ Using_fault_injection

1
ответ дан brada 14 October 2019 в 14:30
поделиться

Есть несколько уровней, на которых можно смоделировать ошибку диска. Если вы тестируете одну программу в пользовательском пространстве, возможно, самый простой подход - вставить соответствующие вызовы (например, write () ) и заставить их иногда возвращать ошибку. Библиотека libfiu внедрения ошибок может сделать это с помощью своего инструмента fiu-run .

Другой подход - использовать драйвер ядра, который может передавать данные к / от другого устройства, но при этом добавляйте неисправности. Затем вы можете смонтировать устройство и использовать его из любого приложения, как если бы это был неисправный диск. Примером этого является драйвер fsdisk .

Существует также инфраструктура внедрения ошибок, которая была объединена с ядром Linux, хотя вам, вероятно, потребуется перенастроить ядро, чтобы включить ее. Он задокументирован в Documentation / fault-injection / fault-injection.txt . Это полезно для тестирования кода ядра.

Также можно использовать SystemTap для внесения ошибок на уровне ядра. См. Тест внедрения ошибок SCSI и Внедрение ошибок ядра с помощью SystemTap .

26
ответ дан 28 November 2019 в 05:30
поделиться

Простой способ заставить SCSI-диск исчезнуть с ядром 2.6:

echo 1 > /sys/bus/scsi/devices/H:B:T:L/delete

(H: B: T: L - хост, шина, цель, LUN). Тем не менее, чтобы смоделировать случай «только для чтения», вам придется использовать методы внедрения ошибок, упомянутые mark4o.

4
ответ дан 28 November 2019 в 05:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: