Тест изоляции параллельно выполняемых запросов
Назначение теста
Тестирование изоляции модулей проводится с целью проверки надежности механизмов изоляции выполняющихся параллельно запросов в СУБД ЛИНТЕР.
Описание теста
Тестирование состоит из двух этапов:
Первый этап – запуск последовательно двух задач, работающих с непересекающимися данными из БД и фиксирование соответственно двух групп результатов.
Второй этап представляет собой запуск тех же задач, но параллельно и фиксирование второй пары результатов. Тест считается успешным, если результаты работы каждой задачи в обоих случаях совпадают.
Тест parall создает таблицу (если указан ключ /CREATE
), добавляет в нее записи, затем удаляет их и удаляет саму таблицу. Требуется запуск теста двумя разными пользователями (например, USR1
и USR2
). В случае указания ключа /CREATE
необходима привилегия RESOURCE
, или запуск тестов одним пользователем, но над разными таблицами (например, TABLE1
и TABLE2
). Во всех остальных случаях тесты работают с пересекающимися данными.
Запуск теста осуществляется путем выполнения тестового файла parall
подкаталога tests
рабочего каталога СУБД ЛИНТЕР:
в среде ОС Linux, Unix:
./parall [ключ [ключ …]]
в среде ОС Windows:
parall.exe [ключ [ключ …]]
Ключи теста
Ключ | Описание | |
---|---|---|
/HELP | Напечатать «Подсказку» | |
/LOGFILE | Имя лог-файла; необходимо, чтобы имена лог-файлов были разные для параллельно запускаемых утилит | |
/TABLE | Имя таблицы, по умолчанию – ZZ; если в БД была таблица с указанным именем, то она будет уничтожена и создана тестовая таблица | |
/COLUMNS | Количество колонок типа int и типа byte (максимальное значение – 49, по умолчанию – 49) | |
/USER | ID пользователя; по умолчанию – USER1 . Имя SYSTEM (или ID администратора безопасности) не допускается, в этом случае ID и пароль будут заменены значениями по умолчанию, то есть USER1/USER1 | |
/PASSWORD | Пароль пользователя; по умолчанию – USER1 | |
/CREATE | Создание перед запуском теста уровней и групп. Необходимо использовать при первом запуске теста | |
/IS | Уровень изоляции доступа, в котором работает тест (точнее, соединение с ЛИНТЕР администратора безопасности); по умолчанию – autocommit | |
/ROWS | Число записей в таблице, по умолчанию – 100 | |
/CONT | Длительность циклов теста, по умолчанию – 1 |
Механизм тестирования:
-
сначала запустить тест последовательно, например:
parall /create /logfile log1 /user URS1 /password MANAGER8 parall /create /logfile log2 /user URS2 /password MANAGER8
-
затем эти 2 теста запускаются параллельно, например, bat-файл, содержащий строки:
parall /logfile log3 /user URS1 /password MANAGER8 parall /logfile log4 /user URS2 /password MANAGER8
Сравнить файлы log1
и log3
, log2
и log4
. Тест считается успешным, если попарно совпадают log1
и log3
, log2
и log4
.