CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_9_patch3/src/PKGTOOLS/tests/test_downloadMethods.py

Go to the documentation of this file.
00001 from os.path import join, abspath, exists
00002 from os import makedirs
00003 from shutil import rmtree
00004 import sys
00005 import md5
00006 
00007 # Emulate rsplit in python 2.3
00008 def rsplit24 (string, splitter, *amounts):
00009     return string.rsplit (splitter, *amounts)
00010 
00011 def rsplit23 (string, splitter, *amounts):
00012     if not splitter in string:
00013         return [string]
00014     splitResults = string.split (splitter)
00015     if amounts:
00016         res = splitter.join (splitResults[:-amounts[0]])
00017         resultList = []
00018         resultList.append (res)
00019         for t in splitResults[-amounts[0]:]:
00020             resultList.append (t)
00021         return resultList
00022 rsplit = rsplit24
00023 
00024 if not hasattr (str, "rsplit"):
00025     rsplit = rsplit23
00026 
00027 selfDir = rsplit (abspath (__file__), "/", 1)[0]
00028 print selfDir
00029 sys.path.append (selfDir)
00030 
00031 downloadDir = join (selfDir, "testtmp")
00032 if exists (downloadDir):
00033     rmtree (downloadDir)
00034 makedirs (downloadDir)
00035 
00036 from cmsBuild import parseGitUrl, downloadGit
00037 from cmsBuild import DownloadOptions, initDownloadHandlers
00038 
00039 initDownloadHandlers ()
00040 options = DownloadOptions  ()
00041 options.workDir = abspath (downloadDir)
00042 
00043 giturl = """gitroot://ssh://ktf@hifi-bonsai.com/Users/git/COMP/PKGTOOLS.git?export=PKGTOOLS&tag=HEAD&output=/PKGTOOLS.tgz"""
00044 protocol, gitroot, args = parseGitUrl (giturl)
00045 assert (protocol == "gitroot")
00046 assert (gitroot == "ssh://ktf@hifi-bonsai.com/Users/git/COMP/PKGTOOLS.git")
00047 assert (args["tag"] == "HEAD")
00048 assert (args["branch"] == "master") 
00049 assert (args["output"] == "/PKGTOOLS.tgz")
00050 #assert (downloadGit (giturl, downloadDir, options))
00051 
00052 from cmsBuild import parseCvsUrl, downloadCvs
00053 
00054 cvsurl = """cvs://:pserver:anonymous@cmscvs.cern.ch:2401/cvs_server/repositories/CMSSW?passwd=AA_:yZZ3e&module=BOSS&export=BOSS&tag=-rBOSS_4_3_6&output=/BOSS.tar.gz"""
00055 protocol, cvsroot, args = parseCvsUrl (cvsurl)
00056 print args
00057 assert (protocol == "cvs")
00058 assert (cvsroot == ":pserver:anonymous@cmscvs.cern.ch:2401/cvs_server/repositories/CMSSW")
00059 assert (args["passwd"] == "AA_:yZZ3e")
00060 assert (args["module"] == "BOSS")
00061 assert (args["export"] == "BOSS")
00062 assert (args["tag"] == "BOSS_4_3_6")
00063 assert (args["output"] == "/BOSS.tar.gz")
00064 assert (downloadCvs (cvsurl, downloadDir, options))
00065 
00066 m=md5.new ()
00067 m.update (file (join (downloadDir, "BOSS.tar.gz")).read ())
00068 from cmsBuild import downloadWget, downloadCurl
00069 
00070 assert (not downloadWget ("""https://ftp.coin3d.org/coin/src/Coin-2.4.444.tar.gz""", downloadDir, options))
00071 assert (not downloadWget ("""https://ftp.coin3d.org/coin/src/Coin-2.4.4.tar.gz""", downloadDir, options))
00072 assert (downloadWget ("""https://cmsrep.cern.ch/cmssw/cms/SOURCES/external/coin/2.4.5/Coin-2.4.5.tar.gz""", downloadDir, options))
00073 
00074 m=md5.new ()
00075 m.update (file (join (downloadDir, "Coin-2.4.5.tar.gz")).read ())
00076 print downloadDir
00077 print m.hexdigest ()
00078 assert (m.hexdigest () == "99b83c5189c3755fd5f08fcad0994a7b")
00079 #downloadCvs ("""cvs://:pserver:anonymous@cmscvs.cern.ch:2401/cvs_server/repositories/CMSSW?passwd=AA_:yZZ3e&module=BOSS&export=BOSS&&tag=-rHEAD
00080 #&output=/BOSS.tar.gz""", downloadDir)
00081 
00082 assert (not downloadCurl ("""https://ftp.coin3d.org/coin/src/Coin-2.4.444.tar.gz""", downloadDir, options))
00083 assert (not downloadCurl ("""https://ftp.coin3d.org/coin/src/Coin-2.4.4.tar.gz""", downloadDir, options))
00084 assert (downloadCurl ("""https://cmsrep.cern.ch/cmssw/cms/SOURCES/external/coin/2.4.5/Coin-2.4.5.tar.gz""", downloadDir, options))
00085 
00086 m=md5.new ()
00087 m.update (file (join (downloadDir, "Coin-2.4.5.tar.gz")).read ())
00088 assert (m.hexdigest () == "99b83c5189c3755fd5f08fcad0994a7b")
00089 
00090 from cmsBuild import download
00091 downloadDir = join (selfDir, "testtmp2")
00092 
00093 if exists (downloadDir):
00094     rmtree (downloadDir)
00095 makedirs (downloadDir)
00096 
00097 class MyOptions (object):
00098     def __init__ (self, workDir):
00099         self.server = "https://cmsrep.cern.ch/cmssw"
00100         self.repository = "cms"
00101         self.workDir = workDir
00102         
00103 otherOptions = MyOptions (downloadDir)
00104 assert (not download ("""https://ftp.coin3d.org/coin/src/Coin-2.4.444.tar.gz""", downloadDir, otherOptions))
00105 assert (not download ("""https://ftp.coin3d.org/coin/src/Coin-2.4.4.tar.gz""", downloadDir, otherOptions))
00106 assert (download ("""https://cmsrep.cern.ch/cmssw/cms/SOURCES/external/coin/2.4.5/Coin-2.4.5.tar.gz""", downloadDir, otherOptions))
00107 
00108 m=md5.new ()
00109 m.update (file (join (downloadDir, "Coin-2.4.5.tar.gz")).read ())
00110 assert (m.hexdigest () == "99b83c5189c3755fd5f08fcad0994a7b")
00111 
00112 m=md5.new ()
00113 murl=md5.new ()
00114 
00115 murl.update ("""https://cmsrep.cern.ch/cmssw/cms/SOURCES/external/coin/2.4.5/Coin-2.4.5.tar.gz""")
00116 pathname = join (downloadDir, "SOURCES/cache", murl.hexdigest (), "Coin-2.4.5.tar.gz")
00117 m.update (file (pathname).read ())
00118 assert (m.hexdigest () == "99b83c5189c3755fd5f08fcad0994a7b")
00119 assert (download (cvsurl, downloadDir, otherOptions))
00120 
00121 assert (download ("cmstc://?tag=CMSSW_1_7_0&module=CMSSW&export=src&output=/src.tar.gz", downloadDir, otherOptions))
00122 m=md5.new ()
00123 murl=md5.new ()
00124 murl.update ("""cmstc://?tag=CMSSW_1_7_0&module=CMSSW&export=src&output=/src.tar.gz""")
00125 pathname = join (downloadDir, "SOURCES/cache", murl.hexdigest (), "src.tar.gz")
00126 print pathname
00127 m.update (file (pathname).read ())