示例#1
0
 def DataPointTest(self, in_catalog, pkg_osrel, osrel_spec, expected_rels):
     pkg_struct_map = {
         None: None,
         8: GDB_STRUCT_8,
         9: GDB_STRUCT_9,
         10: GDB_STRUCT_10,
         11: GDB_STRUCT_11,
     }
     rest_client_mock = self.mox.CreateMock(rest.RestClient)
     self.mox.StubOutWithMock(rest, "RestClient")
     rest.RestClient(
         password=None,
         username=None,
         pkgdb_url=mox.IsA(str),
         releases_url=mox.IsA(str),
     ).AndReturn(rest_client_mock)
     for i, os_n in enumerate(in_catalog, 3 - len(in_catalog)):
         pkg_struct = pkg_struct_map[os_n]
         rest_client_mock.Srv4ByCatalogAndCatalogname(
             'unstable', 'sparc', u'SunOS5.%s' % (i + 9),
             'gdb').AndReturn(pkg_struct)
     self.mox.ReplayAll()
     os_release_to_specify = "SunOS5.%s" % osrel_spec if osrel_spec else None
     su = csw_upload_pkg.Srv4Uploader(None,
                                      os_release=os_release_to_specify)
     result = su._MatchSrv4ToCatalogs(self.BASENAME, "unstable", "sparc",
                                      "SunOS5.%s" % pkg_osrel, self.MD5_SUM)
     expected = []
     for n in expected_rels:
         expected.append(("unstable", "sparc", "SunOS5.%s" % n))
     expected = tuple(expected)
     self.assertEquals(expected, result)
     self.mox.ResetAll()
     self.mox.UnsetStubs()
示例#2
0
 def testSortFilenamesThrowsDataError(self):
     su = csw_upload_pkg.Srv4Uploader(None, None)
     wrong_order = [
         "gdb-7.2,REV=2011.01.21-kittens-i386-CSW.pkg.gz",
         "gdb-7.2,REV=2011.01.21-SunOS5.9-sparc-CSW.pkg.gz",
         "gdb-7.2,REV=2011.01.21-SunOS5.10-i386-CSW.pkg.gz",
         "gdb-7.2,REV=2011.01.21-SunOS5.10-sparc-CSW.pkg.gz",
     ]
     self.assertRaises(csw_upload_pkg.DataError, su.SortFilenames,
                       wrong_order)
示例#3
0
 def test_CheckpkgSets(self):
     su = csw_upload_pkg.Srv4Uploader(None, None)
     expected = {
         ('sparc', u'SunOS5.10'):
         [('foo.pkg', '58f564d11d6419592dcca3915bfabc55')],
         ('sparc', u'SunOS5.9'):
         [('foo.pkg', '58f564d11d6419592dcca3915bfabc55'),
          ('bar.pkg', '84b409eb7c2faf87e22ee0423e55b888')]
     }
     self.assertEqual(expected,
                      su._CheckpkgSets(TEST_PLANNED_MODIFICATIONS_1))
示例#4
0
 def testSortFilenames(self):
     su = csw_upload_pkg.Srv4Uploader(None, None)
     wrong_order = [
         "gdb-7.2,REV=2011.01.21-SunOS5.10-i386-CSW.pkg.gz",
         "gdb-7.2,REV=2011.01.21-SunOS5.10-sparc-CSW.pkg.gz",
         "gdb-7.2,REV=2011.01.21-SunOS5.9-i386-CSW.pkg.gz",
         "gdb-7.2,REV=2011.01.21-SunOS5.9-sparc-CSW.pkg.gz",
     ]
     good_order = [
         "gdb-7.2,REV=2011.01.21-SunOS5.9-i386-CSW.pkg.gz",
         "gdb-7.2,REV=2011.01.21-SunOS5.9-sparc-CSW.pkg.gz",
         "gdb-7.2,REV=2011.01.21-SunOS5.10-i386-CSW.pkg.gz",
         "gdb-7.2,REV=2011.01.21-SunOS5.10-sparc-CSW.pkg.gz",
     ]
     self.assertEqual(good_order, su.SortFilenames(wrong_order))
示例#5
0
 def test_MatchSrv4ToCatalogsSameSpecificOsrelAlreadyPresent(self):
     rest_client_mock = self.mox.CreateMock(rest.RestClient)
     self.mox.StubOutWithMock(rest, "RestClient")
     self.MockRestClient(rest_client_mock)
     rest_client_mock.Srv4ByCatalogAndCatalogname(
         'unstable', 'sparc', u'SunOS5.9', 'gdb').AndReturn(GDB_STRUCT_9)
     rest_client_mock.Srv4ByCatalogAndCatalogname(
         'unstable', 'sparc', u'SunOS5.10', 'gdb').AndReturn(GDB_STRUCT_10)
     rest_client_mock.Srv4ByCatalogAndCatalogname(
         'unstable', 'sparc', u'SunOS5.11', 'gdb').AndReturn(GDB_STRUCT_10)
     self.mox.ReplayAll()
     su = csw_upload_pkg.Srv4Uploader(None, os_release="SunOS5.10")
     result = su._MatchSrv4ToCatalogs(
         "gdb-7.2,REV=2011.01.21-SunOS5.9-sparc-CSW.pkg.gz", "unstable",
         "sparc", "SunOS5.9", "deadbeef61b53638d7813407fab4765b")
     expected = (("unstable", "sparc", "SunOS5.10"), )
     self.assertEquals(expected, result)
示例#6
0
 def test_MatchSrv4ToCatalogsNewerPackage(self):
     # A scenario in which a 5.9 package exists in the catalog, and we're
     # uploading a 5.10 package.
     rest_client_mock = self.mox.CreateMock(rest.RestClient)
     self.mox.StubOutWithMock(rest, "RestClient")
     self.MockRestClient(rest_client_mock)
     rest_client_mock.Srv4ByCatalogAndCatalogname(
         'unstable', 'sparc', u'SunOS5.10', 'gdb').AndReturn(GDB_STRUCT_9)
     rest_client_mock.Srv4ByCatalogAndCatalogname(
         'unstable', 'sparc', u'SunOS5.11', 'gdb').AndReturn(GDB_STRUCT_9)
     self.mox.ReplayAll()
     su = csw_upload_pkg.Srv4Uploader(None, None)
     result = su._MatchSrv4ToCatalogs(
         "gdb-7.2,REV=2011.01.21-SunOS5.10-sparc-CSW.pkg.gz", "unstable",
         "sparc", "SunOS5.10", "deadbeef61b53638d7813407fab4765b")
     expected = (
         ("unstable", "sparc", "SunOS5.10"),
         ("unstable", "sparc", "SunOS5.11"),
     )
     self.assertEquals(expected, result)
示例#7
0
    def testUploadOrder(self):
        wrong_order = [
            "gdb-7.2,REV=2011.01.21-SunOS5.10-sparc-CSW.pkg.gz",
            "gdb-7.2,REV=2011.01.21-SunOS5.9-sparc-CSW.pkg.gz",
        ]
        su = csw_upload_pkg.Srv4Uploader(wrong_order,
                                         "http://localhost/",
                                         output_to_screen=False)
        # Not an optimal design: a lot of methods need to be stubbed to
        # test what we need to test.  This is what happens if you don't
        # write tests at the same time you write the code.
        import_metadata_mock = self.mox.StubOutWithMock(su, '_GetFileMd5sum')
        import_metadata_mock = self.mox.StubOutWithMock(su, '_ImportMetadata')
        import_metadata_mock = self.mox.StubOutWithMock(
            su, '_InsertIntoCatalog')
        import_metadata_mock = self.mox.StubOutWithMock(
            su, '_GetSrv4FileMetadata')
        import_metadata_mock = self.mox.StubOutWithMock(
            su, '_MatchSrv4ToCatalogs')
        import_metadata_mock = self.mox.StubOutWithMock(su, '_RunCheckpkg')
        rest_mock = self.mox.CreateMock(rest.RestClient)
        rest_mock.RegisterLevelTwo('md5-2')
        rest_mock.RegisterLevelTwo('md5-1')
        su._rest_client = rest_mock

        # The 5.9 package
        su._ImportMetadata("gdb-7.2,REV=2011.01.21-SunOS5.9-sparc-CSW.pkg.gz")
        su._GetFileMd5sum(wrong_order[1]).AndReturn("md5-2")
        su._GetSrv4FileMetadata("md5-2").AndReturn((True, GDB_STRUCT_9))

        # The 5.10 package
        su._ImportMetadata("gdb-7.2,REV=2011.01.21-SunOS5.10-sparc-CSW.pkg.gz")
        su._GetFileMd5sum(wrong_order[0]).AndReturn("md5-1")
        su._GetSrv4FileMetadata("md5-1").AndReturn((True, GDB_STRUCT_10))

        # Matching to catalogs
        su._MatchSrv4ToCatalogs(
            'gdb-7.2,REV=2011.01.21-SunOS5.9-sparc-CSW.pkg.gz', 'unstable',
            'sparc', 'SunOS5.9', 'md5-2').AndReturn((
                ('unstable', 'sparc', 'SunOS5.9'),
                ('unstable', 'sparc', 'SunOS5.10'),
            ))

        su._MatchSrv4ToCatalogs(
            'gdb-7.2,REV=2011.01.21-SunOS5.10-sparc-CSW.pkg.gz', 'unstable',
            'sparc', 'SunOS5.10', 'md5-1').AndReturn(
                (('unstable', 'sparc', 'SunOS5.10'), ))

        su._RunCheckpkg({
            ('sparc', 'SunOS5.10'):
            [('gdb-7.2,REV=2011.01.21-SunOS5.9-sparc-CSW.pkg.gz', 'md5-2'),
             ('gdb-7.2,REV=2011.01.21-SunOS5.10-sparc-CSW.pkg.gz', 'md5-1')],
            ('sparc', 'SunOS5.9'):
            [('gdb-7.2,REV=2011.01.21-SunOS5.9-sparc-CSW.pkg.gz', 'md5-2')]
        }).AndReturn(True)

        # This is the critical part of the test: The 5.9 package must not
        # overwrite the 5.10 package in the 5.10 catalog.  It's okay for the
        # 5.10 package to overwrite the 5.9 package in the 5.10 catalog.
        #
        #   This would be wrong:
        #
        # su._InsertIntoCatalog('gdb-7.2,REV=2011.01.21-SunOS5.9-sparc-CSW.pkg.gz',
        #                       'sparc', 'SunOS5.10', GDB_STRUCT_9)
        # su._InsertIntoCatalog('gdb-7.2,REV=2011.01.21-SunOS5.9-sparc-CSW.pkg.gz',
        #                       'sparc', 'SunOS5.9', GDB_STRUCT_9)
        # su._InsertIntoCatalog('gdb-7.2,REV=2011.01.21-SunOS5.10-sparc-CSW.pkg.gz',
        #                       'sparc', 'SunOS5.10', GDB_STRUCT_10)

        # This is right. The first insert is superfluous, but harmless.
        su._InsertIntoCatalog(
            'gdb-7.2,REV=2011.01.21-SunOS5.9-sparc-CSW.pkg.gz', 'sparc',
            'SunOS5.10', GDB_STRUCT_9)
        su._InsertIntoCatalog(
            'gdb-7.2,REV=2011.01.21-SunOS5.10-sparc-CSW.pkg.gz', 'sparc',
            'SunOS5.10', GDB_STRUCT_10)
        su._InsertIntoCatalog(
            'gdb-7.2,REV=2011.01.21-SunOS5.9-sparc-CSW.pkg.gz', 'sparc',
            'SunOS5.9', GDB_STRUCT_9)

        self.mox.ReplayAll()
        su.Upload()
示例#8
0
 def testPluralSMany(self):
     su = csw_upload_pkg.Srv4Uploader(None, None)
     self.assertEqual('s', su._PluralS(2))
示例#9
0
 def testPluralS1(self):
     su = csw_upload_pkg.Srv4Uploader(None, None)
     self.assertEqual('', su._PluralS(1))