def processSolutionsFolder(folder): assert os.path.isdir(folder) pcrl = {} for f in sorted(os.listdir(folder)): t = int(f.split(".")[0]) ipcr = cudfpkg.createProfileChangeRequest(os.path.join(folder, f), nameversiononly=True) print folder, f, t pcrl[t] = ipcr return pcrl
def numberOfNotInstalled(userfile): ufolder = userfile + ".sols" lastsol = os.path.join(ufolder, sorted(os.listdir(ufolder))[-1]) cc = cudfpkg.createProfileChangeRequest(lastsol) lines = open(userfile).readlines() lines = filter(lambda x: "install:" in x, lines) times = map(lambda x: x.split()[0][:-1].strip(), lines) installs = map(lambda x: x.split()[2][:-1].strip(), lines) ns = [] for t, i in zip(times, installs): if i not in cc.getPackageNames(onlyinstalled=True): ns.append((t, i)) installedSucessfulRemovedLater = [] notSatisfied = [] for t, i in ns: isol = cudfpkg.createProfileChangeRequest(os.path.join(ufolder, str(t) + ".cudfsystem")) if i in isol.getPackageNames(onlyinstalled=True): installedSucessfulRemovedLater.append(i) else: notSatisfied.append(i) return notSatisfied, installedSucessfulRemovedLater
def generateCUDF(usefilename, previousSystem,repFile,request): preamble = "preamble: \n" preamble += "property: recommends: vpkgformula, age: int, hubs: int, auth: int, ca: int, ce: int, instability: int, metains: int, metaouts: int, metaversion: int, pagerank: int\n\n" request = "\nrequest: \n" + request #change to installed pcri = cudfpkg.createProfileChangeRequest(previousSystem) tmpcudf = os.path.join(os.path.dirname(usefilename),"."+os.path.basename(usefilename)+ ".tmpcudf") out = open(tmpcudf ,'w') out.write(preamble) f = None if repFile.endswith(".gz"): f = gzip.open(repFile,'r') else: f = open(repFile,"r") pv = [None,None] i = 0 line = f.readline() while line: out.write(line) if line.startswith("package:"): pv[0] = line[len("package: "):].strip() elif line.startswith("version:"): pv[1] = line[len("version: "):].strip() if pv[0] != None and pv[1] != None: if len(pcri.getPackagesThatSatisfy((pv[0],pv[1],"="))) > 0: i += 1 out.write("installed: true\n") pv = [None,None] line = f.readline() #create request out.write(request) out.close() return tmpcudf
def summary(cudfs): print "newNames =", cudfpkg.newNames(cudfs) print "removedNames =", cudfpkg.removedNames(cudfs) print "removedPackages =", cudfpkg.removedPackages(cudfs) print "newPackages =", cudfpkg.newPackages(cudfs) print "updatedPackages =", cudfpkg.updatedPackages(cudfs) if False: trackedcudfs = [] for c in trackedreps: print c done = cudfpkg.createProfileChangeRequest(c,nameversiononly=True) trackedcudfs.append(done.toMap()) summary(trackedcudfs) repsdir = "reps" repscudfs = [] for i in range(1,33): days = datetime.timedelta(days=i) t = time.mktime((t0date + days).timetuple()) cudf = getCudf(t, repsdir) print cudf done = cudfpkg.createProfileChangeRequest(cudf,nameversiononly=True)
#!/usr/bin/python import os from cudfpy import cudfpkg import numpy import time, datetime import pylab start = 1256814000 # one day before first action end = 1288410600 initsys = cudfpkg.createProfileChangeRequest("9.10.cudf", nameversiononly=True) startdate = datetime.datetime.fromtimestamp(1256900400) def topnpairs(cudfmap): return set([(n, v) for n in cudfmap.keys() for v in cudfmap[n]]) def processSolutionsFolder(folder): assert os.path.isdir(folder) pcrl = {} for f in sorted(os.listdir(folder)): t = int(f.split(".")[0]) ipcr = cudfpkg.createProfileChangeRequest(os.path.join(folder, f), nameversiononly=True) print folder, f, t pcrl[t] = ipcr return pcrl
#!/usr/bin/python from cudfpy import cudfpkg import numpy rep = cudfpkg.createProfileChangeRequest("1288868400.0",nameversiononly=False) initsys = cudfpkg.createProfileChangeRequest("9.10.cudf",nameversiononly=True) start = 1256814000 #one day before first action end = 1288410600 print "first" ups = {} for pn in initsys.getPackageNames(): apack = initsys.getPackagesThatSatisfy((pn,-1,""))[0] ups[pn] = 0 packs = rep.getPackagesThatSatisfy((pn,-1,"")) for package in packs: if package.date >= start and package.date <= end and package.version > apack.version: ups[pn] = ups[pn] + 1 print "First Value", numpy.mean(ups.values())
def getCUDF(cfile): return cudfpkg.createProfileChangeRequest(cfile)
if not os.path.exists(spath): os.mkdir(spath) for date in sorted(dates): c +=1 tstr = str(int(time.mktime(date.timetuple()))) + ".pickle" todo = sorted(dates[date]) #Remove any file already created todo = filter(lambda x : not os.path.exists(os.path.join(spath,x,tstr)),todo) if len(todo) == 0: print "Skipping: done all",date continue; print c,"/",len(dates),strategy,"Loading Repository : " + repositories[date] repo = cudfpkg.createProfileChangeRequest(os.path.join("reps",str(repositories[date]))) print "Finsihed Loading Repository" c2 = 0 for us in todo: c2 += 1 print c,"/",len(dates), " ------ ",c2,"/",len(todo) t = dates[date][us]["time"] res = createResult(repo,dates[date][us]["previoussystem"],dates[date][us]["currentsystem"],t) sys.stdout.write("saving ") if not os.path.exists(os.path.join(spath,us)): os.mkdir(os.path.join(spath,us))
#process = subprocess.Popen(["./gUser.py","-a","9.10.cudf","-t",str(int(t0)),"-T",str(31),"-u",str(1.0),"-U","\"-removed,-new,-uptodatedistance\"","-o",]) #process.wait() userfolder = "trackedsim" trackeddir = "trackedSystem" totaltracked = "totalSimulatedUser" #process = subprocess.Popen(["./runSimulation.py", "-u", userfile, "-o", userfolder]) #process.wait() #./gUser.py -a trackedSystem/1320109230.installed.cudf -t 1320109320 -T 31 -u 1.0 -U="-removed,-new,-uptodatedistance" -o totalSimulatedUser.user -r trackedSystem/reps/ simcudfs = sorted(filter(lambda x: x.endswith(".cudfsystem"), os.listdir(userfolder))) trackedcudfs = sorted(filter(lambda x: x.endswith(".installed.cudf"), os.listdir(trackeddir))) simcudfs = map(lambda x : cudfpkg.createProfileChangeRequest(os.path.join(userfolder,x),nameversiononly=True).toMap(),simcudfs) trackedcudfs = map(lambda x : cudfpkg.createProfileChangeRequest(os.path.join(trackeddir,x),nameversiononly=True).toMap(),trackedcudfs) def summary(cudfs): print "newNames =", cudfpkg.newNames(cudfs) print "removedNames =", cudfpkg.removedNames(cudfs) print "removedPackages =", cudfpkg.removedPackages(cudfs) print "newPackages =", cudfpkg.newPackages(cudfs) print "updatedPackages =", cudfpkg.updatedPackages(cudfs) print "Simulation" summary(simcudfs)