+ "1-100, 200")
+ self.assertEqualValues(
+ uidpool.FormatUidPool([(1, 100), (200, 200)], separator=":"),
+ "1-100:200")
+ self.assertEqualValues(
+ uidpool.FormatUidPool([(1, 100), (200, 200)], separator="\n"),
+ "1-100\n200")
+
+ def testRequestUnusedUid(self):
+ # Check with known used user-ids
+ #
+ # Test with user-id "0" and with our own user-id, both
+ # of which are guaranteed to be used user-ids
+ for uid in 0, os.getuid():
+ self.assertRaises(errors.LockError,
+ uidpool.RequestUnusedUid,
+ set([uid]))
+
+ # Check with a single, known unused user-id
+ #
+ # We use "-1" here, which is not a valid user-id, so it's
+ # guaranteed that it's unused.
+ uid = uidpool.RequestUnusedUid(set([-1]))
+ self.assertEqualValues(uid.GetUid(), -1)
+
+ # Check uid-pool exhaustion
+ #
+ # uid "-1" is locked now, so RequestUnusedUid is expected to fail
+ self.assertRaises(errors.LockError,
+ uidpool.RequestUnusedUid,
+ set([-1]))
+
+ # Check unlocking
+ uid.Unlock()
+ # After unlocking, "-1" should be available again
+ uid = uidpool.RequestUnusedUid(set([-1]))
+ self.assertEqualValues(uid.GetUid(), -1)
+
+
+if __name__ == "__main__":