r2641 - people/goneri/SvnBuildStat-WWW/script

Gonéri Le Bouder goneri-guest at alioth.debian.org
Wed May 9 21:21:49 UTC 2007


Author: goneri-guest
Date: 2007-05-09 21:20:28 +0000 (Wed, 09 May 2007)
New Revision: 2641

Modified:
   people/goneri/SvnBuildStat-WWW/script/svnbuildstat_update-bugs.pl
Log:
faster script to update the bug status

Modified: people/goneri/SvnBuildStat-WWW/script/svnbuildstat_update-bugs.pl
===================================================================
--- people/goneri/SvnBuildStat-WWW/script/svnbuildstat_update-bugs.pl	2007-05-09 15:57:25 UTC (rev 2640)
+++ people/goneri/SvnBuildStat-WWW/script/svnbuildstat_update-bugs.pl	2007-05-09 21:20:28 UTC (rev 2641)
@@ -2,13 +2,17 @@
 
 use strict;
 
-use Net::LDAP;
+use LWP::Simple;
 use Data::Dumper;
+use File::Temp qw/ tempfile /;
 
-use lib '/usr/local/www/sites/nana.rulezlan.org/svnbuildstat/lib';
+use lib '/usr/local/www/sites/svnbuildstat.debian.net/svnbuildstat/lib';
+
+#"http://qa.debian.org/data/bts2ldap/fullindex";
 use SvnBuildStat::Schema;
 use SvnBuildStat::Config;
 
+
 my $config = new SvnBuildStat::Config();
 my $schema = SvnBuildStat::Schema->connect(
   $config->db_dsn,
@@ -17,57 +21,43 @@
   {AutoCommit => 1, debug => 1}
 );
 
-
-my $ldap = Net::LDAP->new( 'ldap://bts2ldap.debian.net:10101' ) or die "$@";
+my %currentPackage;
 my $package_rs = $schema->resultset('Package');
-my $todo = $package_rs->count;
-my $done = 1;
 while( my $package = $package_rs->next) {
-  my $mesg = $ldap->bind ;
-  print "package: ".$package->name."\n";
-  $mesg = $ldap->search( # perform a search
-    base   => "dc=current,dc=bugs,dc=debian,dc=org",
-    filter => "(&(debbugsSourcePackage=".$package->name.")(debbugsState=open))"
-  );
+  $currentPackage{$package->name} = 1;
+}
 
-  $mesg->code && die $mesg->error;
+my (undef,$tmpfile) = tempfile();
+getstore("http://qa.debian.org/data/bts1ldap/fullindex",$tmpfile);
+my %registredPackage;
 
-  my $struct = $mesg->as_struct;
+open BTS2LDAP, "<$tmpfile" or die;
+my %h;
+LINE: while (my $line = readline BTS2LDAP) {
+  if ($line =~ /^$/) {
+    if ($h{debbugsSourcePackage} && exists ($currentPackage{$h{debbugsSourcePackage}})) {
+      next LINE if $h{debbugsTag} && $h{debbugsTag} =~ /(pending|wontfix|unreproducible|moreinfo)/;
+      next LINE if $h{debbugsState} !~ /open/;
 
-  my $data;
-  foreach (keys %$struct) {
-    next unless grep {"open"} @{$struct->{$_}->{debbugsstate}};
-    next if grep {"pending"} @{$struct->{$_}->{debbugstag}};
-    next if grep {"wontfix"} @{$struct->{$_}->{debbugstag}};
-    next if grep {"unreproducible"} @{$struct->{$_}->{debbugstag}};
+      my $package = $schema->resultset('Package')->search({name => $h{debbugsSourcePackage}})->first;
+      my $severity = $schema->resultset('Severity')->find_or_create({name=>$h{debbugsSeverity}});
+      my $bug = $schema->resultset('Bug')->find_or_create({bug_id => $h{debbugsID}});
 
-    $data->{$struct->{$_}->{debbugsid}->[0]} = {
+      $bug->severity_id ($severity->id);
+      $bug->package_id ($package->id);
+      $bug->update;
 
-      name => $struct->{$_}->{debbugstitle}->[0],
-      severity => $struct->{$_}->{debbugsseverity}->[0],
-
+      $registredPackage{$h{debbugsID}} = 1;
     }
+    %h = ();
   }
 
-  $schema->resultset('Bug')->search({package_id => $package->id})->delete;
+  next unless $line =~ /^(debbugsID|debbugsSourcePackage|debbugsState|debbugsTitle|debbugsTag|debbugsSeverity):/;
+  $h{$1} = $2 if ($line =~ /(\w+): (\w+)/);
+}
+close BTS2LDAP;
 
-  foreach my $bugnum (keys %$data) {
-
-    my $severity = $schema->resultset('Severity')->find_or_create({name=>$data->{$bugnum}->{severity}});
-    my $bug = $schema->resultset('Bug')->create({
-
-	bug_id => $bugnum,
-	severity_id => $severity->id,
-	package_id => $package->id,
-
-      });
-
-    $data->{$bugnum}->{name} =~ s/</&lt;/g;
-    $data->{$bugnum}->{name} =~ s/>/&gt;/g;
-
-    $bug->name ($data->{$bugnum}->{name});
-    $bug->update;
-  }
-  print "$todo/".$done++."\n";
+my $bug_rs = $schema->resultset('Bug');
+while( my $bug = $bug_rs->next) {
+  $bug->delete unless $registredPackage{$bug->id};
 }
-$ldap->unbind;   # take down session




More information about the Pkg-games-commits mailing list