예제 #1
0
파일: models.py 프로젝트: domcleal/pulp
    def __init__(self, python_package):
        """
        Initialize the MigrationPackage to represent the Python migration package passed in.

        :param python_package: The Python package this object should represent
        :type  python_package: package
        """
        self._package = python_package
        migration_tracker_manager = MigrationTrackerManager()
        # This is an object representation of the DB object that keeps track of the migration
        # version that has been applied
        self._migration_tracker = migration_tracker_manager.get_or_create(
            name=self.name,
            defaults={'version': self.latest_available_version})
예제 #2
0
    def __init__(self, python_package_name):
        """
        Initialize the MigrationPackage to represent the Python migration package passed in.

        :param python_package_name: The name of the Python package this object should represent, in
                                    dotted notation.
        :type  python_package_name: str
        """
        self._package = _import_all_the_way(python_package_name)
        migration_tracker_manager = MigrationTrackerManager()
        # This is an object representation of the DB object that keeps track of the migration
        # version that has been applied
        self._migration_tracker = migration_tracker_manager.get_or_create(
            name=self.name, defaults={"version": self.latest_available_version}
        )
예제 #3
0
    def __init__(self, python_package):
        """
        Initialize the MigrationPackage to represent the Python migration package passed in.

        :param python_package: The Python package this object should represent
        :type  python_package: package
        """
        self._package = python_package
        migration_tracker_manager = MigrationTrackerManager()
        # This is an object representation of the DB object that keeps track of the migration
        # version that has been applied
        self._migration_tracker = migration_tracker_manager.get_or_create(
            name=self.name, defaults={'version': 0})

        # Calculate the latest available version
        available_versions = self.available_versions
        if available_versions:
            self.latest_available_version = available_versions[-1]
        else:
            self.latest_available_version = 0
예제 #4
0
 def setUp(self):
     super(self.__class__, self).setUp()
     self.mtm = MigrationTrackerManager()
예제 #5
0
class TestMigrationTrackerManager(MigrationTest):
    def setUp(self):
        super(self.__class__, self).setUp()
        self.mtm = MigrationTrackerManager()

    def test___init__(self):
        self.assertEquals(self.mtm._collection, MigrationTracker.get_collection())

    def test_create(self):
        mt = self.mtm.create('first_prime', 2)
        self.assertEquals(mt.name, 'first_prime')
        self.assertEquals(mt.version, 2)
        # Make sure the DB got to the correct state
        self.assertEquals(mt.get_collection().find({}).count(), 1)
        mt_bson = mt.get_collection().find_one({'name': 'first_prime'})
        self.assertEquals(mt_bson['name'], 'first_prime')
        self.assertEquals(mt_bson['version'], 2)

    def test_get(self):
        self.mtm.create('only_even_prime', 2)
        mt = self.mtm.get('only_even_prime')
        self.assertEquals(mt.name, 'only_even_prime')
        self.assertEquals(mt.version, 2)
        # Now try to get one that doesn't exist
        try:
            self.mtm.get("doesn't exist")
            self.fail("The get() should have raised DoesNotExist, but did not.")
        except DoesNotExist:
            # This is the expected behavior
            pass

    def test_get_or_create(self):
        # Insert one for getting
        self.mtm.create('smallest_perfect_number', 6)
        # Now get or create it with an incorrect version. The incorrect version should not be set
        mt = self.mtm.get_or_create('smallest_perfect_number', defaults={'version': 7})
        self.assertEquals(mt.name, 'smallest_perfect_number')
        self.assertEquals(mt.version, 6)  # not 7
        mt_bson = mt.get_collection().find_one({'name': 'smallest_perfect_number'})
        self.assertEquals(mt_bson['name'], 'smallest_perfect_number')
        self.assertEquals(mt_bson['version'], 6)
        # This will cause a create
        self.assertEquals(mt.get_collection().find({'name': 'x^y=y^x'}).count(), 0)
        # 16 is the only number for which x^y = y^x, where x != y
        mt = self.mtm.get_or_create('x^y=y^x', defaults={'version': 16})
        self.assertEquals(mt.get_collection().find({'name': 'x^y=y^x'}).count(), 1)
        self.assertEquals(mt.name, 'x^y=y^x')
        self.assertEquals(mt.version, 16)
        mt_bson = mt.get_collection().find_one({'name': 'x^y=y^x'})
        self.assertEquals(mt_bson['name'], 'x^y=y^x')
        self.assertEquals(mt_bson['version'], 16)
        # Let's use get_or_create without defaults
        mt = self.mtm.get_or_create('None')
        self.assertEquals(mt.get_collection().find({'name': 'None'}).count(), 1)
        self.assertEquals(mt.name, 'None')
        self.assertEquals(mt.version, None)
        mt_bson = mt.get_collection().find_one({'name': 'None'})
        self.assertEquals(mt_bson['name'], 'None')
        self.assertEquals(mt_bson['version'], None)
예제 #6
0
 def setUp(self):
     super(self.__class__, self).setUp()
     self.mtm = MigrationTrackerManager()
예제 #7
0
class TestMigrationTrackerManager(MigrationTest):
    def setUp(self):
        super(self.__class__, self).setUp()
        self.mtm = MigrationTrackerManager()

    def test___init__(self):
        self.assertEquals(self.mtm._collection,
                          MigrationTracker.get_collection())

    def test_create(self):
        mt = self.mtm.create('first_prime', 2)
        self.assertEquals(mt.name, 'first_prime')
        self.assertEquals(mt.version, 2)
        # Make sure the DB got to the correct state
        self.assertEquals(mt._collection.find({}).count(), 1)
        mt_bson = mt._collection.find_one({'name': 'first_prime'})
        self.assertEquals(mt_bson['name'], 'first_prime')
        self.assertEquals(mt_bson['version'], 2)

    def test_get(self):
        self.mtm.create('only_even_prime', 2)
        mt = self.mtm.get('only_even_prime')
        self.assertEquals(mt.name, 'only_even_prime')
        self.assertEquals(mt.version, 2)
        # Now try to get one that doesn't exist
        try:
            self.mtm.get("doesn't exist")
            self.fail(
                "The get() should have raised DoesNotExist, but did not.")
        except DoesNotExist:
            # This is the expected behavior
            pass

    def test_get_or_create(self):
        # Insert one for getting
        self.mtm.create('smallest_perfect_number', 6)
        # Now get or create it with an incorrect version. The incorrect version should not be set
        mt = self.mtm.get_or_create('smallest_perfect_number',
                                    defaults={'version': 7})
        self.assertEquals(mt.name, 'smallest_perfect_number')
        self.assertEquals(mt.version, 6)  # not 7
        mt_bson = mt._collection.find_one({'name': 'smallest_perfect_number'})
        self.assertEquals(mt_bson['name'], 'smallest_perfect_number')
        self.assertEquals(mt_bson['version'], 6)
        # This will cause a create
        self.assertEquals(mt._collection.find({'name': 'x^y=y^x'}).count(), 0)
        # 16 is the only number for which x^y = y^x, where x != y
        mt = self.mtm.get_or_create('x^y=y^x', defaults={'version': 16})
        self.assertEquals(mt._collection.find({'name': 'x^y=y^x'}).count(), 1)
        self.assertEquals(mt.name, 'x^y=y^x')
        self.assertEquals(mt.version, 16)
        mt_bson = mt._collection.find_one({'name': 'x^y=y^x'})
        self.assertEquals(mt_bson['name'], 'x^y=y^x')
        self.assertEquals(mt_bson['version'], 16)
        # Let's use get_or_create without defaults
        mt = self.mtm.get_or_create('None')
        self.assertEquals(mt._collection.find({'name': 'None'}).count(), 1)
        self.assertEquals(mt.name, 'None')
        self.assertEquals(mt.version, None)
        mt_bson = mt._collection.find_one({'name': 'None'})
        self.assertEquals(mt_bson['name'], 'None')
        self.assertEquals(mt_bson['version'], None)