~fabricematrat/charmworld/redirect-charm

« back to all changes in this revision

Viewing changes to charmworld/migrations/versions/tests/test_migrations.py

  • Committer: Tarmac
  • Author(s): Brad Crittenden
  • Date: 2014-04-22 14:39:56 UTC
  • mfrom: (503.1.1 exodus-026-fix)
  • Revision ID: tarmac-20140422143956-z1e9c5ks7vp0cv11
Fix 026 exodus.

A basket, the thing ingested from Launchpad, contains one or more bundles.  If
there are multiple bundles they may establish an inheritance relationship
between the bundles in that basket.  The inheritance is done before the basket
is split into individual bundles and stored -- flattened in other words.  

The 'inherits' line is not removed, however.

When the exodus happens, the re-use of 'store_bundles' attempts to flatten
again, but the relationship to the other bundle is invalid as the 'basket' now
just contains the one pre-processed bundle.

The fix for this exodus is to simply manually delete the 'inherits' key from
the bundle_data before proceeding.

The exodus has been tested against a full ingest of all charms and bundles.
The unit test has been modified to include an 'inherits' key in the data,
which is then ignored.

https://codereview.appspot.com/90300043/

R=jcsackett.

Approved by Juju Gui Bot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
46
46
        )
47
47
        self.assertEqual(0, source_db.bundles.count())
48
48
        self.assertEqual(0, target_db.bundles.count())
49
 
        bundle, bundle_data = factory.make_bundle(
50
 
            source_db, services=services)
 
49
        _, bundle_data = factory.make_bundle(source_db, services=services)
 
50
        # Add in 'inherits' property to exercise its deletion.
 
51
        bundle_data['data']['inherits'] = 'super-charm'
 
52
        source_db.bundles.save(bundle_data)
51
53
        self.assertEqual(1, source_db.bundles.count())
52
54
        self.assertEqual(1, target_db.bundles.count())
53
55