[stgt] SCSI Persistent Group Reservations: possible bugs found

Lee Duncan lduncan at suse.com
Sat Dec 22 19:10:29 CET 2012


On 12/20/2012 04:09 PM, FUJITA Tomonori wrote:
> On Sun, 16 Dec 2012 18:45:16 -0800
> Lee Duncan <lduncan at suse.com> wrote:
> 
>> Never the less, some or all of the tests can be ran in any order with
>> a little bit of work, so all I would need is a list of which
>> clustering software needed what.
>>
>> I currently have about 94 test cases, and the target code currently
>> fails 11 of these. Here's a patch that allows it to pass all 94 of
>> them. This is against the latest "master" branch:
> 
> Great, can you please resent the following patch with a proper
> description and your Signed-off-by?
> 
> btw, I think that such test suite is really useful. It would be really
> great if someone set up Jenkins server with iSCSI target test suite.
> 
> 
> Thanks,

I am about to send the patch for SCSI-3 Persistent Group Reservations,
but I first wanted to show the output from the PGR test suite with
the code from the "master" branch.

Sorry about the width ...

All of these tests pass with my patch.

----------------------------------------------------------------
testCanRegisterInitA (tests.testRegister.test01CanRegisterTestCase) ... ok
testCanRegisterInitB (tests.testRegister.test01CanRegisterTestCase) ... ok
testCanSeeNoRegistrations (tests.testRegister.test02CanSeeRegistrationsTestCase) ... ok
testCanSeeRegOnNonRegistrant (tests.testRegister.test02CanSeeRegistrationsTestCase) ... ok
testCanSeeRegOnSecondRegistrant (tests.testRegister.test02CanSeeRegistrationsTestCase) ... ok
testCanSeeRegistrationOnFirstRegistrant (tests.testRegister.test02CanSeeRegistrationsTestCase) ... ok
testCanUnregister (tests.testRegister.test03CanUnregisterTestCase) ... ok
testReregisterFails (tests.testRegister.test04ReregistrationFailsTestCase) ... ok
testCanRegisterAndIgnore (tests.testRegister.test05RegisterAndIgnoreTestCase) ... ok
testCanReserve (tests.testReserveEA.test01CanReserveTestCase) ... ok
testCanReadReservationFromNonRegistrant (tests.testReserveEA.test02CanReadReservationTestCase) ... ok
testCanReadReservationFromNonReserver (tests.testReserveEA.test02CanReadReservationTestCase) ... ok
testCanReadReservationFromReserver (tests.testReserveEA.test02CanReadReservationTestCase) ... ok
testCanReleaseReservation (tests.testReserveEA.test03CanReleseReservationTestCase) ... ERROR
testCannotReleaseReservation (tests.testReserveEA.test03CanReleseReservationTestCase) ... ok
testUnregisterDoesNotReleaseReservation (tests.testReserveEA.test04UnregisterHandlingTestCase) ... ok
testUnregisterReleasesReservation (tests.testReserveEA.test04UnregisterHandlingTestCase) ... FAIL
testNonRegistrantDoesNotHaveReadAccess (tests.testReserveEA.test05ReservationAccessTestCase) ... ok
testNonRegistrantDoesNotHaveWriteAccess (tests.testReserveEA.test05ReservationAccessTestCase) ... ok
testNonReservationHolderDoesNotHaveReadAccess (tests.testReserveEA.test05ReservationAccessTestCase) ... ok
testNonReservationHolderDoesNotHaveWriteAccess (tests.testReserveEA.test05ReservationAccessTestCase) ... ok
testReservationHolderHasReadAccess (tests.testReserveEA.test05ReservationAccessTestCase) ... ok
testReservationHolderHasWriteAccess (tests.testReserveEA.test05ReservationAccessTestCase) ... ok
testCanReserve (tests.testReserveEAAR.test01CanReserveTestCase) ... ok
testCanReadReservationFromNonRegistrant (tests.testReserveEAAR.test02CanReadReservationTestCase) ... ok
testCanReadReservationFromNonReserver (tests.testReserveEAAR.test02CanReadReservationTestCase) ... ok
testCanReadReservationFromReserver (tests.testReserveEAAR.test02CanReadReservationTestCase) ... ok
testAltHolderCanReleaseReservation (tests.testReserveEAAR.test03CanReleseReservationTestCase) ... FAIL
testMainHolderCanReleaseReservation (tests.testReserveEAAR.test03CanReleseReservationTestCase) ... ok
testAltHolderUnregisterDoesNotReleaseReservation (tests.testReserveEAAR.test04UnregisterHandlingTestCase) ... ok
testMainHolderUnregisterDoesNotReleasesReservation (tests.testReserveEAAR.test04UnregisterHandlingTestCase) ... FAIL
testAltReservationHolderDoesHaveReadAccess (tests.testReserveEAAR.test05ReservationAccessTestCase) ... ok
testAltReservationHolderDoesHaveWriteAccess (tests.testReserveEAAR.test05ReservationAccessTestCase) ... ok
testNonRegistrantDoesNotHaveReadAccess (tests.testReserveEAAR.test05ReservationAccessTestCase) ... ok
testNonRegistrantDoesNotHaveWriteAccess (tests.testReserveEAAR.test05ReservationAccessTestCase) ... ok
testReservationHolderHasReadAccess (tests.testReserveEAAR.test05ReservationAccessTestCase) ... ok
testReservationHolderHasWriteAccess (tests.testReserveEAAR.test05ReservationAccessTestCase) ... ok
testCanReserve (tests.testReserveEARO.test01CanReserveTestCase) ... ok
testCanReadReservationFromNonRegistrant (tests.testReserveEARO.test02CanReadReservationTestCase) ... ok
testCanReadReservationFromNonReserver (tests.testReserveEARO.test02CanReadReservationTestCase) ... ok
testCanReadReservationFromReserver (tests.testReserveEARO.test02CanReadReservationTestCase) ... ok
testCanReleaseReservation (tests.testReserveEARO.test03CanReleseReservationTestCase) ... ok
testCannotReleaseReservation (tests.testReserveEARO.test03CanReleseReservationTestCase) ... ok
testUnregisterDoesNotReleaseReservation (tests.testReserveEARO.test04UnregisterHandlingTestCase) ... ok
testUnregisterReleasesReservation (tests.testReserveEARO.test04UnregisterHandlingTestCase) ... FAIL
testAltReservationHolderDoesHaveReadAccess (tests.testReserveEARO.test05ReservationAccessTestCase) ... ok
testAltReservationHolderDoesHaveWriteAccess (tests.testReserveEARO.test05ReservationAccessTestCase) ... ok
testNonRegistrantDoesNotHaveReadAccess (tests.testReserveEARO.test05ReservationAccessTestCase) ... ok
testNonRegistrantDoesNotHaveWriteAccess (tests.testReserveEARO.test05ReservationAccessTestCase) ... ok
testReservationHolderHasReadAccess (tests.testReserveEARO.test05ReservationAccessTestCase) ... ok
testReservationHolderHasWriteAccess (tests.testReserveEARO.test05ReservationAccessTestCase) ... ok
testCanReserve (tests.testReserveWE.test01CanReserveTestCase) ... ok
testCanReadReservationFromNonRegistrant (tests.testReserveWE.test02CanReadReservationTestCase) ... ok
testCanReadReservationFromNonReserver (tests.testReserveWE.test02CanReadReservationTestCase) ... ok
testCanReadReservationFromReserver (tests.testReserveWE.test02CanReadReservationTestCase) ... ok
testNonReservationHolderCannotReleaseReservation (tests.testReserveWE.test03CanReleaseReservationTestCase) ... ok
testReservationHolderCanReleaseReservation (tests.testReserveWE.test03CanReleaseReservationTestCase) ... ok
testNonReservationHolderUnregisterDoesNotReleaseReservation (tests.testReserveWE.test04UnregisterHandlingTestCase) ... ok
testReservationHolderUnregisterReleasesReservation (tests.testReserveWE.test04UnregisterHandlingTestCase) ... FAIL
testNonRegistrantDoesHaveReadAccess (tests.testReserveWE.test05ReservationAccessTestCase) ... FAIL
testNonRegistrantDoesNotHaveWriteAccess (tests.testReserveWE.test05ReservationAccessTestCase) ... ok
testNonReservationHolderDoesHaveReadAccess (tests.testReserveWE.test05ReservationAccessTestCase) ... FAIL
testNonReservationHolderDoesNotHaveWriteAccess (tests.testReserveWE.test05ReservationAccessTestCase) ... ok
testReservationHolderHasReadAccess (tests.testReserveWE.test05ReservationAccessTestCase) ... ok
testReservationHolderHasWriteAccess (tests.testReserveWE.test05ReservationAccessTestCase) ... ok
testCanReserve (tests.testReserveWEAR.test01CanReserveTestCase) ... ok
testCanReadReservationFromNonRegistrant (tests.testReserveWEAR.test02CanReadReservationTestCase) ... ok
testCanReadReservationFromNonReserver (tests.testReserveWEAR.test02CanReadReservationTestCase) ... ok
testCanReadReservationFromReserver (tests.testReserveWEAR.test02CanReadReservationTestCase) ... ok
testAltReservationHolderCanReleaseReservation (tests.testReserveWEAR.test03CanReleaseReservationTestCase) ... FAIL
testMainReservationHolderCanReleaseReservation (tests.testReserveWEAR.test03CanReleaseReservationTestCase) ... ok
testAltReservationHolderUnregisterDoesNotReleasReservation (tests.testReserveWEAR.test04UnregisterHandlingTestCase) ... ok
testMainReservationHolderUnregisterDoesNotReleasReservation (tests.testReserveWEAR.test04UnregisterHandlingTestCase) ... FAIL
testNonReservationHolderUnregisterDoesNotReleaseReservation (tests.testReserveWEAR.test04UnregisterHandlingTestCase) ... ok
testAltReservationHolderDoesHaveReadAccess (tests.testReserveWEAR.test05ReservationAccessTestCase) ... ok
testAltReservationHolderDoesHaveWriteAccess (tests.testReserveWEAR.test05ReservationAccessTestCase) ... ok
testMainReservationHolderHasReadAccess (tests.testReserveWEAR.test05ReservationAccessTestCase) ... ok
testMainReservationHolderHasWriteAccess (tests.testReserveWEAR.test05ReservationAccessTestCase) ... ok
testNonRegistrantDoesHaveReadAccess (tests.testReserveWEAR.test05ReservationAccessTestCase) ... ok
testNonRegistrantDoesNotHaveWriteAccess (tests.testReserveWEAR.test05ReservationAccessTestCase) ... ok
testCanReserve (tests.testReserveWERO.test01CanReserveTestCase) ... ok
testCanReadReservationFromNonRegistrant (tests.testReserveWERO.test02CanReadReservationTestCase) ... ok
testCanReadReservationFromNonReserver (tests.testReserveWERO.test02CanReadReservationTestCase) ... ok
testCanReadReservationFromReserver (tests.testReserveWERO.test02CanReadReservationTestCase) ... ok
testAltReservationHolderCannotReleaseReservation (tests.testReserveWERO.test03CanReleaseReservationTestCase) ... ok
testMainReservationHolderCanReleaseReservation (tests.testReserveWERO.test03CanReleaseReservationTestCase) ... ok
testNonReservationHolderUnregisterDoesNotReleaseReservation (tests.testReserveWERO.test04UnregisterHandlingTestCase) ... ok
testReservationHolderUnregisterReleasesReservation (tests.testReserveWERO.test04UnregisterHandlingTestCase) ... FAIL
testAltReservationHolderDoesHaveReadAccess (tests.testReserveWERO.test05ReservationAccessTestCase) ... ok
testAltReservationHolderDoesHaveWriteAccess (tests.testReserveWERO.test05ReservationAccessTestCase) ... ok
testMainReservationHolderHasReadAccess (tests.testReserveWERO.test05ReservationAccessTestCase) ... ok
testMainReservationHolderHasWriteAccess (tests.testReserveWERO.test05ReservationAccessTestCase) ... ok
testNonRegistrantDoesHaveReadAccess (tests.testReserveWERO.test05ReservationAccessTestCase) ... ok
testNonRegistrantDoesNotHaveWriteAccess (tests.testReserveWERO.test05ReservationAccessTestCase) ... ok

======================================================================
ERROR: testCanReleaseReservation (tests.testReserveEA.test03CanReleseReservationTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/alt/public_projects/open-iscsi-pgr-validate/tests/testReserveEA.py", line 94, in testCanReleaseReservation
    resvnA = initA.getReservation()
  File "/alt/public_projects/open-iscsi-pgr-validate/tests/support/initiator.py", line 91, in getReservation
    "Parsing %d lines of reservations:" % len(res.lines))
TypeError: object of type 'NoneType' has no len()

======================================================================
FAIL: testUnregisterReleasesReservation (tests.testReserveEA.test04UnregisterHandlingTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/alt/public_projects/open-iscsi-pgr-validate/tests/testReserveEA.py", line 126, in testUnregisterReleasesReservation
    self.assertEqual(resvnA.key, None)
AssertionError: '0x1fd45b0' != None
>>  raise self.failureException, \
          (None or '%r != %r' % ('0x1fd45b0', None))
    

======================================================================
FAIL: testAltHolderCanReleaseReservation (tests.testReserveEAAR.test03CanReleseReservationTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/alt/public_projects/open-iscsi-pgr-validate/tests/testReserveEAAR.py", line 104, in testAltHolderCanReleaseReservation
    self.assertEqual(res, 0)
AssertionError: 5 != 0
>>  raise self.failureException, \
          (None or '%r != %r' % (5, 0))
    

======================================================================
FAIL: testMainHolderUnregisterDoesNotReleasesReservation (tests.testReserveEAAR.test04UnregisterHandlingTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/alt/public_projects/open-iscsi-pgr-validate/tests/testReserveEAAR.py", line 126, in testMainHolderUnregisterDoesNotReleasesReservation
    self.assertEqual(resvnA.key, ar_key)
AssertionError: '0x7ff3de600678' != '0x0'
>>  raise self.failureException, \
          (None or '%r != %r' % ('0x7ff3de600678', '0x0'))
    

======================================================================
FAIL: testUnregisterReleasesReservation (tests.testReserveEARO.test04UnregisterHandlingTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/alt/public_projects/open-iscsi-pgr-validate/tests/testReserveEARO.py", line 130, in testUnregisterReleasesReservation
    self.assertEqual(resvnA.key, None)
AssertionError: '0xc101' != None
>>  raise self.failureException, \
          (None or '%r != %r' % ('0xc101', None))
    

======================================================================
FAIL: testReservationHolderUnregisterReleasesReservation (tests.testReserveWE.test04UnregisterHandlingTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/alt/public_projects/open-iscsi-pgr-validate/tests/testReserveWE.py", line 130, in testReservationHolderUnregisterReleasesReservation
    self.assertEqual(resvnA.key, None)
AssertionError: '0x7ff3de600678' != None
>>  raise self.failureException, \
          (None or '%r != %r' % ('0x7ff3de600678', None))
    

======================================================================
FAIL: testNonRegistrantDoesHaveReadAccess (tests.testReserveWE.test05ReservationAccessTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/alt/public_projects/open-iscsi-pgr-validate/tests/testReserveWE.py", line 192, in testNonRegistrantDoesHaveReadAccess
    self.assertEqual(ret.result, 0)
AssertionError: 1 != 0
>>  raise self.failureException, \
          (None or '%r != %r' % (1, 0))
    

======================================================================
FAIL: testNonReservationHolderDoesHaveReadAccess (tests.testReserveWE.test05ReservationAccessTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/alt/public_projects/open-iscsi-pgr-validate/tests/testReserveWE.py", line 176, in testNonReservationHolderDoesHaveReadAccess
    self.assertEqual(ret.result, 0)
AssertionError: 1 != 0
>>  raise self.failureException, \
          (None or '%r != %r' % (1, 0))
    

======================================================================
FAIL: testAltReservationHolderCanReleaseReservation (tests.testReserveWEAR.test03CanReleaseReservationTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/alt/public_projects/open-iscsi-pgr-validate/tests/testReserveWEAR.py", line 105, in testAltReservationHolderCanReleaseReservation
    self.assertEqual(res, 0)
AssertionError: 5 != 0
>>  raise self.failureException, \
          (None or '%r != %r' % (5, 0))
    

======================================================================
FAIL: testMainReservationHolderUnregisterDoesNotReleasReservation (tests.testReserveWEAR.test04UnregisterHandlingTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/alt/public_projects/open-iscsi-pgr-validate/tests/testReserveWEAR.py", line 128, in testMainReservationHolderUnregisterDoesNotReleasReservation
    self.assertEqual(resvnA.key, ar_key)
AssertionError: '0x7ff3de600678' != '0x0'
>>  raise self.failureException, \
          (None or '%r != %r' % ('0x7ff3de600678', '0x0'))
    

======================================================================
FAIL: testReservationHolderUnregisterReleasesReservation (tests.testReserveWERO.test04UnregisterHandlingTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/alt/public_projects/open-iscsi-pgr-validate/tests/testReserveWERO.py", line 129, in testReservationHolderUnregisterReleasesReservation
    self.assertEqual(resvnA.key, None)
AssertionError: '0x7ff3de600678' != None
>>  raise self.failureException, \
          (None or '%r != %r' % ('0x7ff3de600678', None))
    

----------------------------------------------------------------------
Ran 94 tests in 106.488s

FAILED (errors=1, failures=10)

----------------------------------------------------------------

-- 
Lee Duncan
SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the stgt mailing list