def test_verify_exist_marks_exist_failed_if_field_mismatch_exception(self):
        utils.mock_datetime_utcnow(self.mox, '2014-01-02 03:04:05')

        exist1 = self.mox.CreateMockAnything()
        exist2 = self.mox.CreateMockAnything()

        self.mox.StubOutWithMock(glance_verifier, '_verify_for_usage')
        self.mox.StubOutWithMock(glance_verifier, '_verify_for_delete')
        self.mox.StubOutWithMock(glance_verifier, '_verify_validity')
        entity_1 = {'name': 'exists', 'value': 'expected'}
        entity_2 = {'name': 'launches', 'value': 'actual'}
        field_mismatch_exc = FieldMismatch('field', entity_1, entity_2, 'uuid')
        glance_verifier._verify_for_usage(exist1).AndRaise(
            exception=field_mismatch_exc)
        exist1.mark_failed(
            reason="Failed at 2014-01-02 03:04:05 UTC for uuid: Data mismatch "
                   "for 'field' - 'exists' contains 'expected' but 'launches' "
                   "contains 'actual'")
        glance_verifier._verify_for_usage(exist2)
        glance_verifier._verify_for_delete(exist2)
        glance_verifier._verify_validity(exist2)
        exist2.mark_verified()
        self.mox.ReplayAll()

        verified, exist = glance_verifier._verify([exist1, exist2])
        self.mox.VerifyAll()
        self.assertFalse(verified)
    def test_verify_exist_marks_exist_failed_if_field_mismatch_exception(self):
        utils.mock_datetime_utcnow(self.mox, "2014-01-02 03:04:05")

        exist1 = self.mox.CreateMockAnything()
        exist2 = self.mox.CreateMockAnything()

        self.mox.StubOutWithMock(glance_verifier, "_verify_for_usage")
        self.mox.StubOutWithMock(glance_verifier, "_verify_for_delete")
        self.mox.StubOutWithMock(glance_verifier, "_verify_validity")
        entity_1 = {"name": "exists", "value": "expected"}
        entity_2 = {"name": "launches", "value": "actual"}
        field_mismatch_exc = FieldMismatch("field", entity_1, entity_2, "uuid")
        glance_verifier._verify_for_usage(exist1).AndRaise(exception=field_mismatch_exc)
        exist1.mark_failed(
            reason="Failed at 2014-01-02 03:04:05 UTC for uuid: Data mismatch "
            "for 'field' - 'exists' contains 'expected' but 'launches' "
            "contains 'actual'"
        )
        glance_verifier._verify_for_usage(exist2)
        glance_verifier._verify_for_delete(exist2)
        glance_verifier._verify_validity(exist2)
        exist2.mark_verified()
        self.mox.ReplayAll()

        verified, exist = glance_verifier._verify([exist1, exist2])
        self.mox.VerifyAll()
        self.assertFalse(verified)
    def test_verify_exist_marks_exist_failed_if_field_mismatch_exception(self):
        self.mox.StubOutWithMock(datetime, 'datetime')
        datetime.datetime.utcnow().AndReturn('2014-01-01 01:01:01')
        self.mox.ReplayAll()

        exist1 = self.mox.CreateMockAnything()
        exist2 = self.mox.CreateMockAnything()

        self.mox.StubOutWithMock(glance_verifier, '_verify_for_usage')
        self.mox.StubOutWithMock(glance_verifier, '_verify_for_delete')
        self.mox.StubOutWithMock(glance_verifier, '_verify_validity')
        field_mismatch_exc = FieldMismatch('field', 'expected', 'actual',
                                           'uuid')
        glance_verifier._verify_for_usage(exist1).AndRaise(
            exception=field_mismatch_exc)
        exist1.mark_failed(
            reason="Failed at 2014-01-01 01:01:01 UTC for uuid: Expected "
            "field to be 'expected' got 'actual'")

        glance_verifier._verify_for_usage(exist2)
        glance_verifier._verify_for_delete(exist2)
        glance_verifier._verify_validity(exist2)
        exist2.mark_verified()
        self.mox.ReplayAll()

        verified, exist = glance_verifier._verify([exist1, exist2])
        self.mox.VerifyAll()
        self.assertFalse(verified)
Example #4
0
    def test_verify_exist_marks_exist_failed_if_field_mismatch_exception(self):
        mock_logger = self._setup_mock_logger()
        self.mox.StubOutWithMock(mock_logger, 'info')
        mock_logger.exception("glance: Expected field to be 'expected' "
                              "got 'actual'")

        exist1 = self.mox.CreateMockAnything()
        exist2 = self.mox.CreateMockAnything()

        self.mox.StubOutWithMock(glance_verifier, '_verify_for_usage')
        self.mox.StubOutWithMock(glance_verifier, '_verify_for_delete')
        self.mox.StubOutWithMock(glance_verifier, '_verify_validity')

        field_mismatch_exc = FieldMismatch('field', 'expected', 'actual')
        glance_verifier._verify_for_usage(exist1).AndRaise(
            exception=field_mismatch_exc)
        exist1.mark_failed(reason='FieldMismatch')

        glance_verifier._verify_for_usage(exist2)
        glance_verifier._verify_for_delete(exist2)
        glance_verifier._verify_validity(exist2)
        exist2.mark_verified()
        self.mox.ReplayAll()

        verified, exist = glance_verifier._verify([exist1, exist2])
        self.mox.VerifyAll()
        self.assertFalse(verified)
    def test_verify_exist_marks_exist_failed_if_field_mismatch_exception(self):
        self.mox.StubOutWithMock(datetime, 'datetime')
        datetime.datetime.utcnow().AndReturn('2014-01-01 01:01:01')
        self.mox.ReplayAll()

        exist1 = self.mox.CreateMockAnything()
        exist2 = self.mox.CreateMockAnything()

        self.mox.StubOutWithMock(glance_verifier, '_verify_for_usage')
        self.mox.StubOutWithMock(glance_verifier, '_verify_for_delete')
        self.mox.StubOutWithMock(glance_verifier, '_verify_validity')
        field_mismatch_exc = FieldMismatch('field', 'expected',
                                           'actual', 'uuid')
        glance_verifier._verify_for_usage(exist1).AndRaise(
            exception=field_mismatch_exc)
        exist1.mark_failed(
            reason="Failed at 2014-01-01 01:01:01 UTC for uuid: Expected "
                   "field to be 'expected' got 'actual'")

        glance_verifier._verify_for_usage(exist2)
        glance_verifier._verify_for_delete(exist2)
        glance_verifier._verify_validity(exist2)
        exist2.mark_verified()
        self.mox.ReplayAll()

        verified, exist = glance_verifier._verify([exist1, exist2])
        self.mox.VerifyAll()
        self.assertFalse(verified)
    def test_verify_exist_marks_exist_as_failed_if_field_mismatch_exception_is_raised(self):
        exist = self.mox.CreateMockAnything()
        self.mox.StubOutWithMock(glance_verifier, '_verify_for_usage')
        field_mismatch_exc = FieldMismatch('field', 'expected', 'actual')
        glance_verifier._verify_for_usage(exist).AndRaise(exception=field_mismatch_exc)
        exist.mark_failed(reason='FieldMismatch')
        self.mox.ReplayAll()

        verified, exist = glance_verifier._verify(exist)

        self.mox.VerifyAll()
        self.assertFalse(verified)
    def test_verify_should_verify_exists_for_usage_and_delete(self):
        exist = self.mox.CreateMockAnything()
        self.mox.StubOutWithMock(glance_verifier, '_verify_for_usage')
        glance_verifier._verify_for_usage(exist)
        self.mox.StubOutWithMock(glance_verifier, '_verify_for_delete')
        glance_verifier._verify_for_delete(exist)
        exist.mark_verified()
        self.mox.ReplayAll()

        verified, exist = glance_verifier._verify(exist)

        self.mox.VerifyAll()
        self.assertTrue(verified)
    def test_verify_usage_owner_mismatch(self):
        exist = self.mox.CreateMockAnything()
        exist.usage = self.mox.CreateMockAnything()
        exist.owner = 'owner'
        exist.usage.owner = 'not_owner'
        self.mox.ReplayAll()

        with self.assertRaises(FieldMismatch) as cm:
            glance_verifier._verify_for_usage(exist)

        exception = cm.exception
        self.assertEqual(exception.field_name, 'owner')
        self.assertEqual(exception.expected, 'owner')
        self.assertEqual(exception.actual, 'not_owner')
        self.mox.VerifyAll()
    def test_verify_usage_should_not_raise_exception_on_success(self):
        exist = self.mox.CreateMockAnything()
        exist.created_at = decimal.Decimal("1.1")
        exist.owner = "owner"
        exist.size = 1234

        exist.usage = self.mox.CreateMockAnything()
        exist.usage.created_at = decimal.Decimal("1.1")
        exist.usage.size = 1234
        exist.usage.owner = "owner"
        self.mox.ReplayAll()

        glance_verifier._verify_for_usage(exist)

        self.mox.VerifyAll()
    def test_verify_usage_owner_mismatch(self):
        exist = self.mox.CreateMockAnything()
        exist.usage = self.mox.CreateMockAnything()
        exist.owner = 'owner'
        exist.usage.owner = 'not_owner'
        self.mox.ReplayAll()

        with self.assertRaises(FieldMismatch) as cm:
            glance_verifier._verify_for_usage(exist)

        exception = cm.exception
        self.assertEqual(exception.field_name, 'owner')
        self.assertEqual(exception.expected, 'owner')
        self.assertEqual(exception.actual, 'not_owner')
        self.mox.VerifyAll()
    def test_verify_usage_should_not_raise_exception_on_success(self):
        exist = self.mox.CreateMockAnything()
        exist.created_at = decimal.Decimal('1.1')
        exist.owner = 'owner'
        exist.size = 1234

        exist.usage = self.mox.CreateMockAnything()
        exist.usage.created_at = decimal.Decimal('1.1')
        exist.usage.size = 1234
        exist.usage.owner = 'owner'
        self.mox.ReplayAll()

        glance_verifier._verify_for_usage(exist)

        self.mox.VerifyAll()
    def test_verify_usage_for_late_usage(self):
        exist = self.mox.CreateMockAnything()
        exist.usage = None
        exist.uuid = IMAGE_UUID_1
        exist.created_at = decimal.Decimal("1.1")
        results = self.mox.CreateMockAnything()
        models.ImageUsage.objects.filter(uuid=IMAGE_UUID_1).AndReturn(results)
        results.count().AndReturn(1)
        usage = self.mox.CreateMockAnything()
        results.__getitem__(0).AndReturn(usage)
        usage.created_at = decimal.Decimal("1.1")
        self.mox.ReplayAll()

        glance_verifier._verify_for_usage(exist)
        self.mox.VerifyAll()
    def test_verify_usage_created_at_mismatch(self):
        exist = self.mox.CreateMockAnything()
        exist.usage = self.mox.CreateMockAnything()
        exist.created_at = decimal.Decimal('1.1')
        exist.usage.created_at = decimal.Decimal('2.1')
        self.mox.ReplayAll()

        with self.assertRaises(FieldMismatch) as cm:
            glance_verifier._verify_for_usage(exist)

        exception = cm.exception
        self.assertEqual(exception.field_name, 'created_at')
        self.assertEqual(exception.expected, decimal.Decimal('1.1'))
        self.assertEqual(exception.actual, decimal.Decimal('2.1'))

        self.mox.VerifyAll()
    def test_verify_usage_created_at_mismatch(self):
        exist = self.mox.CreateMockAnything()
        exist.usage = self.mox.CreateMockAnything()
        exist.created_at = CREATED_AT_1
        exist.usage.created_at = CREATED_AT_2
        self.mox.ReplayAll()

        with self.assertRaises(FieldMismatch) as cm:
            glance_verifier._verify_for_usage(exist)

        exception = cm.exception
        self.assertEqual(exception.field_name, 'created_at')
        self.assertEqual(exception.expected, CREATED_AT_1)
        self.assertEqual(exception.actual, CREATED_AT_2)

        self.mox.VerifyAll()
    def test_verify_usage_for_late_usage(self):
        exist = self.mox.CreateMockAnything()
        exist.usage = None
        exist.uuid = IMAGE_UUID_1
        exist.created_at = decimal.Decimal('1.1')
        results = self.mox.CreateMockAnything()
        models.ImageUsage.objects.filter(uuid=IMAGE_UUID_1)\
                                    .AndReturn(results)
        results.count().AndReturn(1)
        usage = self.mox.CreateMockAnything()
        results.__getitem__(0).AndReturn(usage)
        usage.created_at = decimal.Decimal('1.1')
        self.mox.ReplayAll()

        glance_verifier._verify_for_usage(exist)
        self.mox.VerifyAll()
Example #16
0
    def test_verify_usage_created_at_mismatch(self):
        exist = self.mox.CreateMockAnything()
        exist.usage = self.mox.CreateMockAnything()
        exist.created_at = CREATED_AT_1
        exist.usage.created_at = CREATED_AT_2
        self.mox.ReplayAll()

        with self.assertRaises(FieldMismatch) as cm:
            glance_verifier._verify_for_usage(exist)

        exception = cm.exception
        self.assertEqual(exception.field_name, "created_at")
        self.assertEqual(exception.expected, CREATED_AT_1)
        self.assertEqual(exception.actual, CREATED_AT_2)

        self.mox.VerifyAll()
    def test_verify_usage_size_mismatch(self):
        exist = self.mox.CreateMockAnything()
        exist.size = 1234

        exist.usage = self.mox.CreateMockAnything()
        exist.usage.size = 5678
        self.mox.ReplayAll()

        with self.assertRaises(FieldMismatch) as cm:
            glance_verifier._verify_for_usage(exist)
        exception = cm.exception

        self.assertEqual(exception.field_name, 'size')
        self.assertEqual(exception.expected, 1234)
        self.assertEqual(exception.actual, 5678)

        self.mox.VerifyAll()
    def test_verify_usage_size_mismatch(self):
        exist = self.mox.CreateMockAnything()
        exist.size = SIZE_1

        exist.usage = self.mox.CreateMockAnything()
        exist.usage.size = SIZE_2
        self.mox.ReplayAll()

        with self.assertRaises(FieldMismatch) as cm:
            glance_verifier._verify_for_usage(exist)
        exception = cm.exception

        self.assertEqual(exception.field_name, 'size')
        self.assertEqual(exception.expected, SIZE_1)
        self.assertEqual(exception.actual, SIZE_2)

        self.mox.VerifyAll()
    def test_verify_usage_raises_not_found_for_no_usage(self):
        exist = self.mox.CreateMockAnything()
        exist.usage = None
        exist.uuid = IMAGE_UUID_1
        exist.created_at = decimal.Decimal("1.1")
        results = self.mox.CreateMockAnything()
        models.ImageUsage.objects.filter(uuid=IMAGE_UUID_1).AndReturn(results)
        results.count().AndReturn(0)
        self.mox.ReplayAll()

        with self.assertRaises(NotFound) as cm:
            glance_verifier._verify_for_usage(exist)
        exception = cm.exception
        self.assertEqual(exception.object_type, "ImageUsage")
        self.assertEqual(exception.search_params, {"uuid": IMAGE_UUID_1})

        self.mox.VerifyAll()
    def test_verify_usage_size_mismatch(self):
        exist = self.mox.CreateMockAnything()
        exist.uuid = IMAGE_UUID_1
        exist.size = SIZE_1

        exist.usage = self.mox.CreateMockAnything()
        exist.usage.size = SIZE_2
        self.mox.ReplayAll()

        with self.assertRaises(FieldMismatch) as cm:
            glance_verifier._verify_for_usage(exist)
        exception = cm.exception
        entity_1 = {'name': 'exists', 'value': SIZE_1}
        entity_2 = {'name': 'launches', 'value': SIZE_2}
        self.assertEqual(exception.field_name, 'size')
        self.assertEqual(exception.entity_1, entity_1)
        self.assertEqual(exception.entity_2, entity_2)
        self.mox.VerifyAll()
    def test_verify_should_verify_exists_for_usage_and_delete(self):
        exist1 = self.mox.CreateMockAnything()
        exist2 = self.mox.CreateMockAnything()

        self.mox.StubOutWithMock(glance_verifier, '_verify_for_usage')
        self.mox.StubOutWithMock(glance_verifier, '_verify_for_delete')
        self.mox.StubOutWithMock(glance_verifier, '_verify_validity')
        for exist in [exist1, exist2]:
            glance_verifier._verify_for_usage(exist)
            glance_verifier._verify_for_delete(exist)
            glance_verifier._verify_validity(exist)
            exist.mark_verified()
        self.mox.ReplayAll()

        verified, exist = glance_verifier._verify([exist1, exist2])

        self.mox.VerifyAll()
        self.assertTrue(verified)
    def test_verify_usage_raises_not_found_for_no_usage(self):
        exist = self.mox.CreateMockAnything()
        exist.usage = None
        exist.uuid = IMAGE_UUID_1
        exist.created_at = decimal.Decimal('1.1')
        results = self.mox.CreateMockAnything()
        models.ImageUsage.objects.filter(uuid=IMAGE_UUID_1) \
            .AndReturn(results)
        results.count().AndReturn(0)
        self.mox.ReplayAll()

        with self.assertRaises(NotFound) as cm:
            glance_verifier._verify_for_usage(exist)
        exception = cm.exception
        self.assertEqual(exception.object_type, 'ImageUsage')
        self.assertEqual(exception.search_params, {'uuid': IMAGE_UUID_1})

        self.mox.VerifyAll()
    def test_verify_usage_size_mismatch(self):
        exist = self.mox.CreateMockAnything()
        exist.uuid = IMAGE_UUID_1
        exist.size = SIZE_1

        exist.usage = self.mox.CreateMockAnything()
        exist.usage.size = SIZE_2
        self.mox.ReplayAll()

        with self.assertRaises(FieldMismatch) as cm:
            glance_verifier._verify_for_usage(exist)
        exception = cm.exception
        entity_1 = {"name": "exists", "value": SIZE_1}
        entity_2 = {"name": "launches", "value": SIZE_2}
        self.assertEqual(exception.field_name, "size")
        self.assertEqual(exception.entity_1, entity_1)
        self.assertEqual(exception.entity_2, entity_2)
        self.mox.VerifyAll()
    def test_verify_should_verify_exists_for_usage_and_delete(self):
        exist1 = self.mox.CreateMockAnything()
        exist2 = self.mox.CreateMockAnything()

        self.mox.StubOutWithMock(glance_verifier, "_verify_for_usage")
        self.mox.StubOutWithMock(glance_verifier, "_verify_for_delete")
        self.mox.StubOutWithMock(glance_verifier, "_verify_validity")
        for exist in [exist1, exist2]:
            glance_verifier._verify_for_usage(exist)
            glance_verifier._verify_for_delete(exist)
            glance_verifier._verify_validity(exist)
            exist.mark_verified()
        self.mox.ReplayAll()

        verified, exist = glance_verifier._verify([exist1, exist2])

        self.mox.VerifyAll()
        self.assertTrue(verified)
    def test_verify_usage_owner_mismatch(self):
        utils.mock_datetime_utcnow(self.mox, '2014-01-01 01:02:03')

        exist = self.mox.CreateMockAnything()
        exist.uuid = IMAGE_UUID_1
        exist.usage = self.mox.CreateMockAnything()
        exist.owner = IMAGE_OWNER_1
        exist.usage.owner = IMAGE_OWNER_2
        self.mox.ReplayAll()

        with self.assertRaises(FieldMismatch) as cm:
            glance_verifier._verify_for_usage(exist)

        exception = cm.exception
        entity_1 = {'name': 'exists', 'value': IMAGE_OWNER_1}
        entity_2 = {'name': 'launches', 'value': IMAGE_OWNER_2}
        self.assertEqual(exception.field_name, 'owner')
        self.assertEqual(exception.entity_1, entity_1)
        self.assertEqual(exception.entity_2, entity_2)
        self.mox.VerifyAll()
    def test_verify_usage_created_at_mismatch(self):
        utils.mock_datetime_utcnow(self.mox, '2014-01-01 01:02:03')

        exist = self.mox.CreateMockAnything()
        exist.uuid = IMAGE_UUID_1
        exist.usage = self.mox.CreateMockAnything()
        exist.created_at = CREATED_AT_1
        exist.usage.created_at = CREATED_AT_2
        self.mox.ReplayAll()

        with self.assertRaises(FieldMismatch) as cm:
            glance_verifier._verify_for_usage(exist)

        exception = cm.exception
        entity_1 = {'name': 'exists', 'value': CREATED_AT_1}
        entity_2 = {'name': 'launches', 'value': CREATED_AT_2}
        self.assertEqual(exception.field_name, 'created_at')
        self.assertEqual(exception.entity_1, entity_1)
        self.assertEqual(exception.entity_2, entity_2)
        self.mox.VerifyAll()
    def test_verify_usage_created_at_mismatch(self):
        utils.mock_datetime_utcnow(self.mox, "2014-01-01 01:02:03")

        exist = self.mox.CreateMockAnything()
        exist.uuid = IMAGE_UUID_1
        exist.usage = self.mox.CreateMockAnything()
        exist.created_at = CREATED_AT_1
        exist.usage.created_at = CREATED_AT_2
        self.mox.ReplayAll()

        with self.assertRaises(FieldMismatch) as cm:
            glance_verifier._verify_for_usage(exist)

        exception = cm.exception
        entity_1 = {"name": "exists", "value": CREATED_AT_1}
        entity_2 = {"name": "launches", "value": CREATED_AT_2}
        self.assertEqual(exception.field_name, "created_at")
        self.assertEqual(exception.entity_1, entity_1)
        self.assertEqual(exception.entity_2, entity_2)
        self.mox.VerifyAll()