Esempio n. 1
0
def update_archives(arc_month=LAST_MONTH):
    """Archives packages of a month, by default: last month"""
    query = db_session.query(SubPac.pkg_name, SubPac.pkg_version,
                             SubPac.pkg_release, SubPac.pkg_arch,
                             SubPac.vendor_name, SubPac.pkg_status,
                             Sub.distro_name, Sub.distro_version,
                             func.min(SubPac.sub_date),
                             func.count('*').label('count')
                             ).join(Sub)

    arcs = query.filter(extract('month', SubPac.sub_date) == arc_month.month,
                        extract('year', SubPac.sub_date) == arc_month.year
                        ).group_by(extract('month', SubPac.sub_date),
                                   extract('year', SubPac.sub_date),
                                   SubPac.pkg_name, SubPac.pkg_version,
                                   SubPac.pkg_release, SubPac.pkg_arch,
                                   SubPac.vendor_name,
                                   SubPac.pkg_status, Sub.distro_name,
                                   Sub.distro_version).all()
    pkg_archives = []
    for pkg in arcs:
        pkg_archive = PackageArchive(*pkg)
        pkg_archive.month = pkg_archive.month.replace(day=1)
        pkg_archives.append(pkg_archive)

    db_session.add_all(pkg_archives)
    db_session.commit()
Esempio n. 2
0
 def init_db(self):
     db_session.add_all([Arch('noarch'), Arch('i586'), Arch('i686'),
                         Arch('i486'), Arch('i386'), Arch('x86_64'),
                         Arch('ppc'), Arch('ppc64'), Arch('s390'),
                         PackageStatus('voted'), PackageStatus('nofiles'),
                         PackageStatus('recent'), PackageStatus('old')])
     db_session.commit()
Esempio n. 3
0
    def test_archive_package_count(self):
        sub2 = Submission('Fedora', '16', 'i586', 'v1')
        db_session.add(sub2)
        db_session.flush()

        subp3 = SubmissionPackage(sub2.sub_id, self.today, 'python',
                                  '2.7', '3', '', 'i586', 'http://repo.url',
                                  'voted')
        subp4 = SubmissionPackage(sub2.sub_id, self.today, 'chrome',
                                  '2.7', '3', '', 'i586', 'http://repo.url',
                                  'voted')

        db_session.add_all([subp3, subp4])
        db_session.flush()

        sub3 = Submission('Fedora', '16', 'i586', 'v1')
        db_session.add(sub3)
        db_session.flush()

        subp5 = SubmissionPackage(sub3.sub_id, self.today, 'python',
                                  '2.7', '3', '', 'i586', 'http://repo.url',
                                  'voted')

        db_session.add(subp5)
        db_session.flush()

        update_archives(date.today())

        self.assertEqual(len(PackageArchive.query.all()), 4)

        query = PackageArchive.query.filter_by(pkg_name='python',
                                               month=self.today.replace(day=1))
        count = self.assertEqual(query.one().count, 2)
Esempio n. 4
0
    def test_system_last_submission(self):
        sub1 = Submission("hw_uuid1", "P1", date.today())
        sub2 = Submission("hw_uuid2", "P1", date.today() - timedelta(days=31 * 2))
        sub3 = Submission("hw_uuid1", "P1", date.today() - timedelta(days=31 * 3))

        s1 = System.query.first()
        self.assertIsNone(s1.last_submission)

        db_session.add_all([sub1, sub2, sub3])
        db_session.commit()

        self.assertEqual([sub1, sub3], s1.submissions)
        self.assertEqual(sub1, s1.last_submission)
Esempio n. 5
0
 def init_db(self):
     db_session.add_all(
         [
             Arch("noarch"),
             Arch("i586"),
             Arch("i686"),
             Arch("i486"),
             Arch("i386"),
             Arch("x86_64"),
             Arch("ppc"),
             Arch("ppc64"),
             Arch("s390"),
             PackageStatus("voted"),
             PackageStatus("nofiles"),
             PackageStatus("recent"),
             PackageStatus("old"),
         ]
     )
     db_session.commit()
Esempio n. 6
0
    def setUp(self):
        super(TestArchivePackages, self).setUp()
        self.old_date = date.today() - timedelta(days=400)
        self.today = date.today()

        sub1 = Submission('openSUSE', '12.1', 'i586', 'POPCORN v0.0.1',
                          self.old_date)
        db_session.add(sub1)
        db_session.flush()

        subp1 = SubmissionPackage(sub1.sub_id, self.old_date, 'python',
                                  '2.7', '3', '', 'i586', 'http://repo.url',
                                  'voted')
        subp2 = SubmissionPackage(sub1.sub_id, self.old_date, 'chrome',
                                  '2.7', '3', '', 'i586', 'http://repo.url',
                                  'voted')
        db_session.add_all([subp1, subp2])
        db_session.flush()
        update_archives(self.old_date)
Esempio n. 7
0
    def setUp(self):
        engine = create_engine("sqlite:///:memory:")
        # engine = create_engine('sqlite:///test.db')

        event.listen(engine, "connect", _fk_pragma_on_connect)
        db_session.configure(bind=engine)

        Base.metadata.create_all(bind=engine)

        db_session.add_all([Arch("i586"), Arch("x86_64"), Arch("noarch")])
        db_session.add_all([Distro("Fedora", "16"), Distro("openSUSE", "12.1")])
        db_session.add_all(
            [PackageStatus("voted"), PackageStatus("recent"), PackageStatus("no-files"), PackageStatus("old")]
        )
        db_session.add(Vendor("http://repo.url"))
        db_session.flush()

        # system is dependent on both arches and distros already being in the db
        db_session.add_all([System("hw_uuid1", "i586", "Fedora", "16"), System("hw_uuid2", "i586", "openSUSE", "12.1")])
        db_session.commit()

        self.db_session = db_session
Esempio n. 8
0
    def setUp(self):
        engine = create_engine('sqlite:///:memory:')
        # engine = create_engine('sqlite:///test.db')

        event.listen(engine, 'connect', _fk_pragma_on_connect)
        db_session.configure(bind=engine)

        Base.metadata.create_all(bind=engine)

        db_session.add_all([Arch('i586'), Arch('x86_64'), Arch('noarch')])
        db_session.add_all([Distro('Fedora', '16'),
                           Distro('openSUSE', '12.1')])
        db_session.add_all([PackageStatus('voted'), PackageStatus('recent'),
                            PackageStatus('no-files'), PackageStatus('old')])
        db_session.add(Vendor('http://repo.url'))
        db_session.flush()

        # system is dependent on both arches and distros already being
        # in the db
        db_session.add_all([System('hw_uuid1', 'i586', 'Fedora', '16'),
                            System('hw_uuid2', 'i586', 'openSUSE', '12.1')])
        db_session.commit()

        self.db_session = db_session
Esempio n. 9
0
    def setUp(self):
        engine = create_engine('sqlite:///:memory:')
        # engine = create_engine('sqlite:///test.db')

        event.listen(engine, 'connect', _fk_pragma_on_connect)
        db_session.configure(bind=engine)

        Base.metadata.create_all(bind=engine)

        db_session.add_all([Arch('i586'), Arch('x86_64'), Arch('noarch')])
        db_session.add_all([Distro('Fedora', '16'),
                           Distro('openSUSE', '12.1')])
        db_session.add_all([PackageStatus('voted'), PackageStatus('recent'),
                            PackageStatus('no-files'), PackageStatus('old')])
        db_session.add(Vendor('http://repo.url'))
        db_session.flush()

        self.db_session = db_session