[csw-devel] SF.net SVN: gar:[17677] csw/mgar/gar/v2/lib/python/build_tier_list.py

wbonnet at users.sourceforge.net wbonnet at users.sourceforge.net
Sat Apr 14 20:28:00 CEST 2012


Revision: 17677
          http://gar.svn.sourceforge.net/gar/?rev=17677&view=rev
Author:   wbonnet
Date:     2012-04-14 18:28:00 +0000 (Sat, 14 Apr 2012)
Log Message:
-----------
Add some statistics

Modified Paths:
--------------
    csw/mgar/gar/v2/lib/python/build_tier_list.py

Modified: csw/mgar/gar/v2/lib/python/build_tier_list.py
===================================================================
--- csw/mgar/gar/v2/lib/python/build_tier_list.py	2012-04-14 17:41:15 UTC (rev 17676)
+++ csw/mgar/gar/v2/lib/python/build_tier_list.py	2012-04-14 18:28:00 UTC (rev 17677)
@@ -30,6 +30,7 @@
                                 action="store", dest="tier2", type="string")
         self.parser.add_option("-3", "--tier3-list", help="List of tier 3 packages",
                                 action="store", dest="tier3", type="string")
+        self.parser.add_option("-s", "--simulate", help="Computes only the number of packages per tier. Do not output the lists", action="store_true", dest="simulate")
         self.parser.add_option("-V", "--verbose", help="Activate verbose mode", action="store_true", dest="verbose")
 
     def parse(self):
@@ -50,6 +51,11 @@
         else:
             self.verbose = False
 
+        if args.simulate != None:
+            self.simulate = args.simulate
+        else:
+            self.simulate = False
+
         if args.catalog != None:
             self.catalog = args.catalog
         else:
@@ -90,6 +96,9 @@
     def getTierOutputFile(self, tier):
 	return "%(filename)s.out" % { 'filename' : self.getTierInputFile(tier) }
 
+    def getSimulate(self):
+        return self.simulate
+
     def getVerbose(self):
         return self.verbose
 
@@ -146,8 +155,8 @@
 
 		# Check if tier is lower or undefined, then we need to do something
 		if self.tier >= tier :
-			if self.tier > tier :
-				print "%(pkg)s : %(t1)d => %(t2)d" % { 'pkg' : self.name , 't1' : self.tier , 't2' : tier }
+#			if self.tier > tier :
+#				print "%(pkg)s : %(t1)d => %(t2)d" % { 'pkg' : self.name , 't1' : self.tier , 't2' : tier }
 
 			# Set the new tier value
 			self.tier = tier
@@ -162,6 +171,9 @@
 	global catalog
 	outputFile = {}
 
+	# Defines the counter used to stored for number of package in each tier
+	countPkg = [ [ 0, 0, 0 ] ,  [ 0, 0, 0 ] , [ 0, 0, 0 ] ]
+
 	# Parse command line
 	cliParser = CommandLineParser()
 	(opts, args) = cliParser.parse()
@@ -174,11 +186,19 @@
 		name          = pkgInfo[2]		
 		depends       = pkgInfo[6]
 		catalog[name] = Package(name, version, depends)
+	
+	# Iterates the catalog to compute the initial tiering before rule propagation 
+	for pkg in catalog:
+		countPkg[0][catalog[pkg].tier-1] += 1
 
 	# Iterates the catalog once parsed to propagated tier values to depends
 	for pkg in catalog:
 		catalog[pkg].setTier(catalog[pkg].tier)
 	
+	# Iterates the catalog to compute the tiering after rule propagation 
+	for pkg in catalog:
+		countPkg[1][catalog[pkg].tier-1] += 1
+
 	for tier in (1 ,2 ,3):
 		# Create the three files for outputing tier content
 		outputFile[tier] = open(configParser.getTierOutputFile(tier), 'w') 
@@ -189,14 +209,26 @@
 				name = line.split('\n')	
 				catalog[name[0]].setTier(tier)
 		else:
-			print "File %(filename)s does not exit. Skipping this file" %  { 'filename' : configParser.getTierInputFile(tier) }
+			if configParser.getVerbose() == True:
+				print "File %(filename)s does not exit. Skipping this file" %  { 'filename' : configParser.getTierInputFile(tier) }
 
 	for pkg in catalog:
-		outputFile[catalog[pkg].tier].write("%(name)s\n" % { 'name' : catalog[pkg].name })
+		# If simulation mode is off the output to the file
+		if configParser.getSimulate() == False:
+			outputFile[catalog[pkg].tier].write("%(name)s\n" % { 'name' : catalog[pkg].name })
 		
+		# Iterates the catalog to compute the tiering after rule propagation 
+		countPkg[2][catalog[pkg].tier-1] += 1
+
 	for tier in (1 ,2 ,3):
 		outputFile[tier].close()
 
+
+	if configParser.getSimulate() == True:
+		print "\tInit\tProp\tFile"
+		for tier in (0, 1 ,2 ):
+			print "tier %(tier)d\t%(1)d\t%(2)d\t%(3)d" % { 'tier' : tier + 1 , '1' : countPkg[0][tier], '2' : countPkg[1][tier],'3' : countPkg[2][tier] }
+
 # On sort en rendant le code de retour de main
 if __name__ == '__main__':
     sys.exit(main())

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the devel mailing list