[Devel] Тесты по CIFS

Dmitriy M. Maslennikov =?iso-8859-1?q?maslennikovdm_=CE=C1_gmail=2Ecom?=
Вт Дек 30 16:27:03 MSK 2008


30 декабря 2008 г. 16:13 пользователь Helen Smirnova
<lbeasty на gmail.com> написал:
> Вот.
> Прилагаю исходник последнего теста на блокировки:
> file = self.slaves[0].open(self.filename, OpenMode.WRITE,
> ShareMode.SHAREALL, CreationMode.CREATE)
> file1 = self.slaves[0].open(self.filename, OpenMode.READ,
> ShareMode.SHAREALL, CreationMode.OPEN)
> file2 = self.slaves[1].open(self.filename, OpenMode.READ,
> ShareMode.SHAREALL, CreationMode.OPEN)
>
> file.write(self.data)
> file.lock(LockRange(0, 500))
> self.assertRaises(Error, file2.read, len(self.data))
>
> file1.close()
> file2.read(500)
>
> file.close()
> file2.close()
Кратко поясню:
Тест на снятие блокировки, если закрывается файловый дескриптор того
же файла, даже если не он использовался для выставления блокировок.

Действия:
Первый слейв открывает файл два раза и ставит блокировку, используя
один из полученных дескрипторов. Второй слейв проверяет наличие
блокировки (в случае Windows используется операция чтения, как в
примере, в случае Linux - попытка поставить блокировку на запись).
Затем первый закрывает файловый дескриптор, который не использовался
для установки блокировки. Второй слейв снова проверяет, блокировку
(ожидается, что она будет снята после этого действия).

Результаты:
Как и должно быть, это работает в случаях L_LL, L_LW, и не работает в
случаях *_WW, *_WL. Но это не работает в случаях W_LL и W_LW, что, на
мой взглад является ошибкой.

-- 
Dmitriy M. Maslennikov
rlz на etersoft.ru
rlz на altlinux.org
maslennikovdm на gmail.com
master на armory.ru


Подробная информация о списке рассылки devel