~blake-rouse/maas/fix-1484696

« back to all changes in this revision

Viewing changes to src/maasserver/tests/test_bootresources.py

  • Committer: Jeffrey C Jones
  • Date: 2015-09-23 01:01:49 UTC
  • mfrom: (4293 maas)
  • mto: This revision was merged to the branch mainline in revision 4294.
  • Revision ID: jeff.jones@canonical.com-20150923010149-x0r6ym7dx014e370
merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
72
72
    MAASTransactionServerTestCase,
73
73
)
74
74
from maasserver.utils import absolute_reverse
75
 
from maasserver.utils.orm import get_one
 
75
from maasserver.utils.orm import (
 
76
    get_one,
 
77
    post_commit_hooks,
 
78
)
76
79
from maastesting.djangotestcase import DjangoTransactionTestCase
77
80
from maastesting.matchers import (
78
81
    MockCalledOnceWith,
725
728
    def test_get_or_create_boot_resource_set_creates_resource_set(self):
726
729
        name, architecture, product = make_product()
727
730
        product, resource = make_boot_resource_group_from_product(product)
728
 
        resource.sets.all().delete()
 
731
        with post_commit_hooks:
 
732
            resource.sets.all().delete()
729
733
        store = BootResourceStore()
730
734
        resource_set = store.get_or_create_boot_resource_set(resource, product)
731
735
        self.assertEqual(product['version_name'], resource_set.version)
744
748
        name, architecture, product = make_product()
745
749
        product, resource = make_boot_resource_group_from_product(product)
746
750
        resource_set = resource.sets.first()
747
 
        resource_set.files.all().delete()
 
751
        with post_commit_hooks:
 
752
            resource_set.files.all().delete()
748
753
        store = BootResourceStore()
749
754
        rfile = store.get_or_create_boot_resource_file(resource_set, product)
750
755
        self.assertEqual(product['ftype'], rfile.filename)
804
809
        rfile, _, _ = make_boot_resource_file_with_stream()
805
810
        reader = StringIO(factory.make_string())
806
811
        store = BootResourceStore()
807
 
        store.write_content(rfile, reader)
 
812
        with post_commit_hooks:
 
813
            store.write_content(rfile, reader)
808
814
        self.assertFalse(BootResourceFile.objects.filter(id=rfile.id).exists())
809
815
 
810
816
    def test_finalize_does_nothing_if_resources_to_delete_hasnt_changed(self):
867
873
        with transaction.atomic():
868
874
            product, resource = make_boot_resource_group_from_product(product)
869
875
            resource_set = resource.sets.first()
870
 
            resource_set.files.all().delete()
 
876
            with post_commit_hooks:
 
877
                resource_set.files.all().delete()
871
878
            largefile = factory.make_LargeFile()
872
879
        product['sha256'] = largefile.sha256
873
880
        product['size'] = largefile.total_size
1258
1265
    """Tests for `_import_resources_in_thread`."""
1259
1266
 
1260
1267
    def test__defers__import_resources_to_thread(self):
1261
 
        deferToThread = self.patch(bootresources, "deferToThread")
 
1268
        deferToDatabase = self.patch(bootresources, "deferToDatabase")
1262
1269
        bootresources._import_resources_in_thread(force=sentinel.force)
1263
1270
        self.assertThat(
1264
 
            deferToThread, MockCalledOnceWith(
 
1271
            deferToDatabase, MockCalledOnceWith(
1265
1272
                bootresources._import_resources, force=sentinel.force))
1266
1273
 
1267
1274
    def tests__defaults_force_to_False(self):
1268
 
        deferToThread = self.patch(bootresources, "deferToThread")
 
1275
        deferToDatabase = self.patch(bootresources, "deferToDatabase")
1269
1276
        bootresources._import_resources_in_thread()
1270
1277
        self.assertThat(
1271
 
            deferToThread, MockCalledOnceWith(
 
1278
            deferToDatabase, MockCalledOnceWith(
1272
1279
                bootresources._import_resources, force=False))
1273
1280
 
1274
1281
    def test__logs_errors_and_does_not_errback(self):
1275
1282
        logger = self.useFixture(TwistedLoggerFixture())
1276
1283
        exception_type = factory.make_exception_type()
1277
 
        deferToThread = self.patch(bootresources, "deferToThread")
1278
 
        deferToThread.return_value = fail(exception_type())
 
1284
        deferToDatabase = self.patch(bootresources, "deferToDatabase")
 
1285
        deferToDatabase.return_value = fail(exception_type())
1279
1286
        d = bootresources._import_resources_in_thread(force=sentinel.force)
1280
1287
        self.assertIsNone(extract_result(d))
1281
1288
        self.assertDocTestMatches(
1291
1298
        exception = CalledProcessError(
1292
1299
            2, [factory.make_name("command")],
1293
1300
            factory.make_name("output"))
1294
 
        deferToThread = self.patch(bootresources, "deferToThread")
1295
 
        deferToThread.return_value = fail(exception)
 
1301
        deferToDatabase = self.patch(bootresources, "deferToDatabase")
 
1302
        deferToDatabase.return_value = fail(exception)
1296
1303
        d = bootresources._import_resources_in_thread(force=sentinel.force)
1297
1304
        self.assertIsNone(extract_result(d))
1298
1305
        self.assertDocTestMatches(
1325
1332
 
1326
1333
    def test_maybe_import_resources_does_not_error(self):
1327
1334
        service = bootresources.ImportResourcesService()
1328
 
        deferToThread = self.patch(bootresources, "deferToThread")
 
1335
        deferToDatabase = self.patch(bootresources, "deferToDatabase")
1329
1336
        exception_type = factory.make_exception_type()
1330
 
        deferToThread.return_value = fail(exception_type())
 
1337
        deferToDatabase.return_value = fail(exception_type())
1331
1338
        d = service.maybe_import_resources()
1332
1339
        self.assertIsNone(extract_result(d))
1333
1340