RECT/Tests/Description

Материал из Etersoft wiki
Перейти к: навигация, поиск
Wackowiki-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была автоматически перемещена с old.wiki.etersoft.ru.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


Remote Etersoft CIFS Tester - описание тестов



Подробное описание модулей с тестами и их структура

На данный момент модули с тестами именуются следующим образом:

  • RWLock - файл содержит тесты, проверяющие возможность чтения и записи на разных блокировках
  • SetLock - файл содержит тесты, проверяющие возможность установки блокировок на различные блокировки
  • Deny - файл содержит тесты, проверяющие возможность открытия с разными режимами файла с установленным DENY* флагом
  • Oplocks - файл содержит тесты, проверяющие oplocks(еще не завершен)
  • LipatovTests - файл содержит тесты на открытие файла сразу после его создания; на создание файла в каталоге сразу после создания каталога;
на открытие файла два раза, установки блокировки на один изкрипторов, закрытие другого дескриптора, и проверки, что блокировка снялась


Каждый модуль состоит из нескольких тестов, объединенных в классы, в зависимости от количества слейвов. Количество используемых процессов обозначается приставкой dual- или single- к названию классов:


Классы

Содержатся в RWLock:
  • SingleReadAndWriteOnAdvLock: -- класс с тестами для одного процесса, который может быть запущен на системах и windows, и linux
  • SingleReadAndWriteOnAdvLockL: -- класс с тестами для одного процесса, который может быть запущен только на системе linux
  • DualReadAndWriteOnAdvLock: -- класс с тестами для двух процессов, которые могут быть запущены на системах и windows, и linux
  • DualReadAndWriteOnAdvLockL: -- класс с тестами для двух процессов, которые могут быть запущены только на системе linux
  • DualReadAndWriteWindowsOnAdvLockLinux: -- класс с тестами для двух процессов, первый из которых запущен на системе linux, второй запущен на системе windows


Содержатся в SetLock:
  • SingleSetLockOnLock: -- класс с тестами для одного процесса, который может быть запущен на системах и windows, и linux
  • SingleSetLockOnLockL: -- класс с тестами для одного процесса, который может быть запущен только на системе linux
  • DualSetLockOnLock: -- класс с тестами для двух процессов, которые могут быть запущены на системах и windows, и linux
  • DualSetLockOnLockL: -- класс с тестами для двух процессов, которые могут быть запущены только на системе linux
  • DualSetLockWindowsOnLockLinux: -- класс с тестами для двух процессов, первый из которых запущен на системе linux, второй запущен на системе windows
  • DualSetLockLinuxOnLockWindows: -- класс с тестами для двух процессов, первый из которых запущен на системе windows, второй запущен на системе linux


Содержатся в Deny:
  • SingleOpenOnDenyFlag: -- класс с тестами для одного процесса, который может быть запущен на системах и windows, и linux. DENY* флаг накладывается сразу при создании файла
  • SingleOpenOnDenyFlagO: -- класс с тестами для одного процесса, который может быть запущен на системах и windows, и linux. DENY* флаг накладывается после создания файла при его повторном открытии открытии
  • DualOpenOnDenyFlag: -- класс с тестами для двух процессов, которые могут быть запущены на системах и windows, и linux. DENY* флаг накладывается сразу при создании файла
  • DualOpenOnDenyFlagO: -- класс с тестами для двух процессов, которые могут быть запущены на системах и windows, и linux. DENY* флаг накладывается после создания файла при его повторном открытии открытии


Содержатся в Oplocks:
  • OplocksTest: -- класс с тестами для двух процессов, которые могут быть запущены на системах и windows, и linux.


Содержатся в LipatovTests:
  • WWNew: -- класс с тестами для двух процессов, который может быть запущены на системах в очередности windows, windows
  • LLNew: -- класс с тестами для двух процессов, который может быть запущены на системах в очередности linux, linux
  • WLNew: -- класс с тестами для двух процессов, которые могут быть запущены на системах в очередности windows, linux
  • LWNew: -- класс с тестами для двух процессов, которые могут быть запущены на системах в очередности linux, windows


Тесты

Содержатся в RWLock:

testWriteOnReadLock

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение, ставит блокировку на чтение
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), открывает файл и пробует писать в файл

testWriteOnWriteLock

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на запись, ставит блокировку на запись
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), открывает файл и пробует писать в файл

testReadOnReadLock

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение, ставит блокировку на чтение
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), открывает файл и пробует читать из файла

testReadOnWriteLock

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на запись, ставит блокировку на запись
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), открывает файл и пробует читать из файла


Содержатся в SetLock:

testSetReadLockOnReadLock

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение, ставит блокировку на чтение
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), открывает файл и пробует ставить блокировку на чтение

testSetWriteLockOnReadLock

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение, ставит блокировку на чтение
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), открывает файл и пробует ставить блокировку на запись

testSetReadLockOnWriteLock

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на запись, ставит блокировку на запись
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), открывает файл и пробует ставить блокировку на чтение

testSetWriteLockOnWriteLock

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на запись, ставит блокировку на запись
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), открывает файл и пробует ставить блокировку на запись


Содержатся в Deny:

testOpenOnReadDeny1

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение с флагом, запрещающим чтение
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), пробует открыть файл на чтение

testOpenOnReadDeny2

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение с флагом, запрещающим чтение
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), пробует открыть файл на чтение/запись

testOpenOnWriteDeny1

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на запись с флагом, запрещающим запись
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), пробует открыть файл на запись

testOpenOnWriteDeny2

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на запись с флагом, запрещающим запись
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), пробует открыть файл на запись

testOpenOnDeleteDeny

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение с флагом, запрещающим удаление файла
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), пробует удалить файл

testOpenOnRDWRDeny1

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение с флагом, запрещающим чтение и запись
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), пробует открыть файл на чтение

testOpenOnRDWRDeny2

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение с флагом, запрещающим чтение и запись
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), пробует открыть файл на запись

testOpenOnRDWRDeny3

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение с флагом, запрещающим чтение и запись
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), пробует открыть файл на чтение и запись

testOpenOnRDDLDeny1

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение с флагом, запрещающим чтение и удаление файла
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), пробует открыть файл на чтение

testOpenOnRDDLDeny2

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение с флагом, запрещающим чтение и удаление файла
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), пробует открыть файл на чтени и запись

testOpenOnRDDLDeny3

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение с флагом, запрещающим чтение и удаление файла
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), пробует удалить файл

testOpenOnWRDLDeny1

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение/запись с флагом, запрещающим запись и удаление файла
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), пробует открыть файл на запись

testOpenOnWRDLDeny2

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение/запись с флагом, запрещающим запись и удаление файла
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), пробует открыть файл на чтение и запись

testOpenOnWRDLDeny3

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение/запись с флагом, запрещающим запись и удаление файла
    • второй сервис монтирует общий каталог в другую временную директорию(если используется тот же сервис, то монтирования не происходит), пробует удалить файл


Содержатся в Oplocks:

testWriteToEndAfterWrite

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на запись, пишет (не закрывает)
    • второй сервис монтирует общий каталог в другую временную директорию, открывает его на запись, пишет в конец файла
    • закрываются оба файла, открытые обоими сервисами
    • первый сервис открывает файл, открывает его на чтение, проверяет прочитанные данные

testReadAfterWriteWithSHAREALL

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на запись, пишет (не закрывает)
    • второй сервис монтирует общий каталог в другую временную директорию, открывает его на чтение, проверяет прочитанные данные
    • закрываются оба файла, открытые обоими сервисами

testReadAfterWriteWithDENYREAD

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение/запись с флагом DENYREAD, пишет (не закрывает)
    • второй сервис монтирует общий каталог в другую временную директорию, открывает его на чтение, проверяет прочитанные данные
    • закрываются оба файла, открытые обоими сервисами

testReadAfterWriteWithLock

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на запись, пишет (не закрывает), ставит блокировку
    • второй сервис монтирует общий каталог в другую временную директорию, открывает его на чтение, проверяет прочитанные данные
    • закрываются оба файла, открытые обоими сервисами

testReadAfterWriteWithLockAndDENYREAD

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение/запись с флагом DENYREAD, пишет (не закрывает), ставит блокировку
    • второй сервис монтирует общий каталог в другую временную директорию, открывает его на чтение, проверяет прочитанные данные
    • закрываются оба файла, открытые обоими сервисами

testWriteToBeginAfterWrite

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на запись, пишет (не закрывает)
    • второй сервис монтирует общий каталог в другую временную директорию, открывает его на запись, пишет в начало
    • закрываются оба файла, открытые обоими сервисами
    • первый сервис открывает файл, открывает его на чтение, проверяет прочитанные данные

testLevel2Oplock

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение/запись, читает (не закрывает)
    • второй сервис монтирует общий каталог в другую временную директорию, открывает его на чтение
    • первый сервис ставит блокировку на файл, закрывает его
    • второй сервис пытается прочесть данные

testExclusiveOplock

    • первый сервис монтирует общий каталог во временную директорию, открывает большой файл на чтение/запись, ставит блокировку, пишет некоторые данные, начинает читать большой кусок (не закрывает)
    • первый сервис перемещается в конец файла и пытается прочесть еще
    • второй сервис монтирует общий каталог в другую временную директорию, открывает его на чтение
    • первый сервис ставит блокировку на файл, чтото пишет туда, закрывает его
    • второй сервис пытается прочесть данные

testBatchOplock

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на чтение/запись, читает данные, закрывает его
    • первый сервис несколько раз еще совершает действия типа записи и установления блокировки, закрывает файл
    • первый сервис перемещается в конец файла, читает данные
    • второй сервис монтирует общий каталог в другую временную директорию, открывает его на чтение
    • первый сервис закрывает файл
    • второй сервис пытается прочесть данные


Содержатся в LipatovTests:

testReadAfterOpen

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на запись
    • второй сервис монтирует общий каталог в другую временную директорию, открывает его на чтение

testOpenAfterCreateDir

    • первый сервис монтирует общий каталог во временную директорию, создает там каталог
    • второй сервис монтирует общий каталог в другую временную директорию, открывает файл на чтение в созданном каталоге
    • второй сервис закрывает файл
    • первый сервис удаляет созданный каталог

testReadAfterCloseAfterLock

    • первый сервис монтирует общий каталог во временную директорию, создает файл, открывает его на запись(fd)
    • первый сервис открывает его на чтение(fd1)
    • второй сервис открывает файл на чтение(fd2)
    • первый сервис пишет данные в файл, ставит блокировку(fd)
    • убеждаемся, что второй сервис не может ни прочитать , ни поставить блокировку(fd2)
    • первый сервис закрывает файл(fd1)
    • второй сервис пробует или читать или поставить блокировку(убеждаемся, что блокировка снята)


crashtest

В директории crashtest содержится простой одноименный тест. Он служит для проверки монтирования и отмонтирования и работает так: монтирует и отмонтирует шару пока не упадет или процесс не будет прерван нажатием Ctrl+C

Тест бы перенесен в директорию с остальными тестами.


Описание модулей с тестами в условных обозначениях

Принятые обозначения

S - Samba-сервера

  • L - Samba-сервер на линукс
  • W - Windows-сервер


Cl - клиент

  • L - CIFS-клиент с включенными расширениями UNIX.
  • W - Windows-клиент.
  • L* - Linux-клиент c выключенными UNIX расширениями.
  • W* - Windows-клиент работающий из-под wine.


O - вызов CreateFile под Windows или open под Linux, возможны уточнения (все уточнения пишутся в скобках после символа операции):

  • r - файл открывается на чтение,
  • w - файл открывается на запись,
  • rw - файл открывается на чтение и на запись
  • b - файл открывается в блокирующем режиме (по умолчанию -- неблокирующий режим),
  • с - файл открывается с флагом O_CREAT


L - вызов fcntl под Linux или LockFileEx/UnlockFile под Windows, уточнения:

  • r - установлен флаг F_RDLCK (устанавливается shared блокировка),
  • w - установлен флаг F_WRLCK (устанавливается exclusive блокировка),
  • u - установлен флаг F_UNLCK или вызов UnlockFile


T - проверка наличия блокировки (fcntl под Linux, и попытка чтения записи для Windows при файле открытом в неблокирующем режиме)

  • + - ожидается, что соответствующие возможность присутствует,
  • - - ожидается, что соответствующая возможность отсутствует,
  • r - проверка возможности чтения,
  • w - проверка возможности записи,
  • d - проверка возможности удаления
  • L( r ) - проверка возможности поставить блокировку на чтение,
  • L( w ) - проверка возможности поставить блокировку на запись,
  • O( r ) - проверка возможности открытия на чтение,
  • O( w ) - проверка возможности открытия на запись,
  • O( rw ) - проверка возможности открытия на чтение/запись


D - запрещающий флаг

  • r - запрет на чтение
  • w - запрет на запись
  • d - запрет на удаление
  • rw - запрет на чтение и запись
  • rd - запрет на чтение и удаление
  • wd - запрет на запись и удаление
  • rwd - запрет на чтение, запись и удаление


C - закрытие файла.


R - попытка чтения из файла.


W - попытка записи в файл.


! - обозначает длительную паузу в действиях.


+ - обозначает, что ожидается, что операция будет завершена корректно.


- - обозначает, что ожидается, что операция завершится с ошибкой.


Число обозначает номер клиента.


Типы тестов:

  • LK - тесты на блокировки
  • DN - тесты на DENY* флаги
  • OP - тесты на различные виды oplocks
  • ORW - тесты на открытие файла, чтение из него и запись в файл при различных условиях


Пример описания теста в принятых обозначения

<тип теста>_<тип сервера>_<тип клиента><тип клиента>_1.<действие 1ого клиента>2.<действие 2ого клиента>


Пример описания теста без ожидаемого результата:

LK_W_WW_1.O(rb)R2.O(rb)R

Пример описания теста с ожидаемым результатом:

LK_W_WW_1.O(rb)R+2.O(rb)R+


Расшифровка: Тест на блокировки, в качестве сервера используется Windows, клиентами выступают две Windows-машины, первая открывает файл в блокирующем режиме и пытается его прочитать, затем вторая делает то же самое. Ожидается, что это можно сделать без проблем (на самом деле если выставлены флаги блокировки, то вторая операция может провалиться).


Таблицы тестирования

Содержатся в RWLock:

название теста

последовательность действий

    1. FTN testWriteOnReadLock##

LK_S_ClCl_1.O( r )L( r )2.O( w )T( w )

    1. FTN testWriteOnWriteLock##

LK_S_ClCl_1.O( w )L( w )2.O( w )T( w )

    1. FTN testReadOnReadLock##

LK_S_ClCl_1.O( r )L( r )2.O( r )T( r )

    1. FTN testReadOnWriteLock##

LK_S_ClCl_1.O( w )L( w )2.O( r )T( r )


Содержатся в SetLock:

название теста

последовательность действий

    1. FTN testSetReadLockOnReadLock##

LK_S_ClCl_1.O( r )L( r )2.O( r )T( L( r ) )

    1. FTN testSetWriteLockOnReadLock##

LK_S_ClCl_1.O( r )L( r )2.O( w )T( L( w ) )

    1. FTN testSetReadLockOnWriteLock##

LK_S_ClCl_1.O( w )L( w )2.O( r )T( L( r ) )

    1. FTN testSetWriteLockOnWriteLock##

LK_S_ClCl_1.O( w )L( w )2.O( w )T( L( w ) )


Содержатся в Deny:

название теста

последовательность действий

    1. FTN testOpenOnReadDeny1##

DN_S_ClCl_1.O( rD( r ) )2.T( O( r ) )

    1. FTN testOpenOnReadDeny2##

DN_S_ClCl_1.O( rD( r ) )2.T( O( rw ) )

    1. FTN testOpenOnWriteDeny1##

DN_S_ClCl_1.O( wD( w ) )2.T( O( w ) )

    1. FTN testOpenOnWriteDeny2##

DN_S_ClCl_1.O( wD( w ) )2.T( O( rw ) )

    1. FTN testOpenOnDeleteDeny##

DN_S_ClCl_1.O( rD( d ) )2.T( d )

    1. FTN testOpenOnRDWRDeny1##

DN_S_ClCl_1.O( rD( rw ) )2.T( O( r ) )

    1. FTN testOpenOnRDWRDeny2##

DN_S_ClCl_1.O( rD( rw ) )2.T( O( w ) )

    1. FTN testOpenOnRDWRDeny3##

DN_S_ClCl_1.O( rD( rw ) )2.T( O( rw ) )

    1. FTN testOpenOnRDDLDeny1##

DN_S_ClCl_1.O( rD( rd ) )2.T( O( r ) )

    1. FTN testOpenOnRDDLDeny2##

DN_S_ClCl_1.O( rD( rd ) )2.T( O( rw ) )

    1. FTN testOpenOnRDDLDeny3##

DN_S_ClCl_1.O( rD( rd ) )2.T( d )

    1. FTN testOpenOnWRDLDeny1##

DN_S_ClCl_1.O( rwD( wd ) )2.T( O( w ) )

    1. FTN testOpenOnWRDLDeny2##

DN_S_ClCl_1.O( rwD( wd ) )2.T( O( rw ) )

    1. FTN testOpenOnWRDLDeny3##

DN_S_ClCl_1.O( rwD( wd ) )2.T( d )



Содержатся в Oplock:

название теста

последовательность действий

    1. FTN testWriteToEndAfterWrite##

OP_S_ClCl_1.O( w )W 2.O( w )W( seekend)С1.С 1. O( r )T( r )

    1. FTN testReadAfterWriteWithSHAREALL##

OP_S_ClCl_1.O( w )W 2.O( r )T( r )

    1. FTN testReadAfterWriteWithDENYREAD##

OP_S_ClCl_1.O( rwD( r ) )W 2.O( r )T( r )

    1. FTN testReadAfterWriteWithLock##

OP_S_ClCl_1.O( w )WL( w ) 2.O( r )T( r )

    1. FTN testReadAfterWriteWithLockAndDENYREAD##

OP_S_ClCl_1.O( rwD( r ) )WL( w ) 2.O( r )T( r )

    1. FTN testWriteToBeginAfterWrite##

OP_S_ClCl_1.O( w )W 2.O( w )WС 1.С 1. O( r )T( r )

    1. FTN testLevel2Oplock##

OP_S_ClCl_1.O( rw )R 2.O( r ) 1.L( r ) 2.T( r )

    1. FTN testExclusiveOplock##

OP_S_ClCl_1.O( rw )L( r )WRR( seekend) 2.O( r )1.L( r )W 2.T( r )

    1. FTN testBatchOplock##

OP_S_ClCl_1.O( rw )RCO( w )WCO( rw)L( r )R( seekend ) 2.O( r )1.C 2.T( r )



Содержатся в Lipatovtests:

название теста

последовательность действий

    1. FTN testReadAfterOpen##

ORW_S_ClCl_1.O( c,w )2.O( r )

    1. FTN testOpenAfterCreateDir##

ORW_S_ClCl_1.mkdir2.O( r )

    1. FTN testReadAfterCloseAfterLock##

ORW_S_ClCl_1.O( c,w )1.O ( r )2.O( r )1.WL 2.T( r )/T( L( r )) 1.C 2. R(/L( r ))