8 |
8 |
9 use Getopt::Long; |
9 use Getopt::Long; |
10 |
10 |
11 my $help = 0; |
11 my $help = 0; |
12 my $create = 0; |
12 my $create = 0; |
|
13 my $file = ''; |
13 my $id = ''; |
14 my $id = ''; |
14 my $file = ''; |
15 my $append = 0; |
|
16 my $delete = ''; |
15 my $verbose = 0; |
17 my $verbose = 0; |
16 my $dryrun = 0; |
18 my $dryrun = 0; |
17 GetOptions(( |
19 GetOptions(( |
18 'create!' => \$create, |
20 'create!' => \$create, |
19 'file=s' => \$file, |
21 'file=s' => \$file, |
20 'id=s' => \$id, |
22 'update=s' => \$id, |
|
23 'append!' => \$append, |
|
24 'remove=s' => \$delete, |
21 'help!' => \$help, |
25 'help!' => \$help, |
22 'verbose!' => \$verbose, |
26 'verbose!' => \$verbose, |
23 'dryrun!' => \$dryrun, |
27 'dryrun!' => \$dryrun, |
24 )); |
28 )); |
25 |
29 |
26 if ($help||!$file) |
30 if ($help||(($create||$id)&&!$file)||(!$create&&!$id&&!$delete)) |
27 { |
31 { |
28 print <<_EOH; |
32 print <<_EOH; |
29 bitops |
33 bitops |
30 Executes operations on the BIT db |
34 Executes operations on the BIT db |
31 |
35 |
32 Usage: bitops.pl [-c|-i ID] -f FILE |
36 Usage: |
|
37 bitops.pl -c -f FILE |
|
38 bitops.pl -u ID [-a] -f FILE |
|
39 bitops.pl -r ID |
33 |
40 |
34 Options: |
41 Options: |
35 -h, --help Show this help message and exit |
42 -h, --help Show this help message and exit |
36 -c, --create Create entry for a new build then set the attributes to |
43 -c, --create Create entry for a new build then set the attributes to |
37 the values provided in FILE. Returns the build id for |
44 the values provided in FILE. Returns the build id for |
38 the newly created build. |
45 the newly created build. |
39 -i ID, --id ID Update entry for build number ID with the values |
46 -u ID, --update ID Update entry for build number ID with the values |
40 provided in FILE. |
47 provided in FILE. For the update operation only the |
|
48 entry in the BUILDS table will be actually updated, the |
|
49 entries in the other tables will be deleted, then the |
|
50 data supplied will be inserted (this behaviour can be |
|
51 changed with the -a option) |
|
52 -a, --append Do not delete entries in the tables different than |
|
53 BUILDS before inserting the data supplied. This option |
|
54 must be used in conjuntion with -u (see info for -u |
|
55 option for more information) |
|
56 -r, --remove Remove build ID (entries in all tables) from the db |
41 -f FILE, --file FILE Use attributes in FILE to create/update the build info |
57 -f FILE, --file FILE Use attributes in FILE to create/update the build info |
42 See below for file format. |
58 See below for file format. |
43 -v, --verbose Increase info level |
59 -v, --verbose Increase info level |
44 -d, --dryrun Only show what would happen, do not actually interact |
60 -d, --dryrun Only show what would happen, do not actually interact |
45 with the DB |
61 with the DB |
46 |
62 |
47 File format: |
63 File format: |
48 File must be a list of attribute-value-pairs. One avp per line, on each line |
64 File must be a list of attribute-value-pairs. One avp per line, on each line |
49 attribute and value are separated by a tab. |
65 attribute and value are separated by a tab. |
50 These are the supported attributes (in brackets the syntax of the value): |
66 These are the supported attributes (in brackets the syntax of the value) with |
51 - build_id_string |
67 the table they belong to: |
52 - package (VALUE) |
68 - build_id_string - BUILDS |
53 - platform (VALUE) |
69 - package (VALUE) - BUILDS |
54 - started (VALUE) |
70 - platform (VALUE) - BUILDS |
55 - finished (VALUE) |
71 - started (VALUE) - BUILDS |
56 - creator (VALUE) |
72 - finished (VALUE) - BUILDS |
57 - machine (VALUE) |
73 - creator (VALUE) - BUILDS |
58 - build_brag (VALUE) |
74 - machine (VALUE) - BUILDS |
59 - test_brag (VALUE) |
75 - build_brag (VALUE) - BUILDS |
60 - baseline_short (VALUE) |
76 - test_brag (VALUE) - BUILDS |
61 - sources_short (VALUE) |
77 - baseline_short (VALUE) - BUILDS |
62 - envinfo (TOOL,VERSION) |
78 - sources_short (VALUE) - BUILDS |
63 - failure (CATEGORY,COUNT) |
79 - envinfo (TOOL,VERSION) - ENVINFO |
64 - report (NAME,URL,TYPE) |
80 - failure (CATEGORY,COUNT) - FAILURES |
65 - content (NAME,URL,REVISION) |
81 - report (NAME,URL,TYPE) - REPORTS |
66 - baseline (TYPE,PATH) |
82 - content (NAME,URL,REVISION) - CONTENT |
67 - label (VALUE) |
83 - baseline (TYPE,PATH) - BASELINES |
|
84 - label (VALUE) - LABELS |
|
85 - test (NAME,TYPE,TARGET,STARTED,FINISHED,CASES_TOTAL,CASES_PASSED, |
|
86 CASES_FAILED,CASES_NOT_RUN,CASES_NOT_AVAILABLE,PASS_RATE) - TESTING |
|
87 |
|
88 Note on the update operation: |
68 _EOH |
89 _EOH |
69 exit(0); |
90 exit(0); |
70 } |
91 } |
71 |
92 |
72 my $db = undef; |
93 my $db = undef; |
233 elsif ($attr =~ /^(label)$/i) |
254 elsif ($attr =~ /^(label)$/i) |
234 { |
255 { |
235 print " found ($attr,$value) for table 'labels'\n" if ($verbose); |
256 print " found ($attr,$value) for table 'labels'\n" if ($verbose); |
236 push(@{$labels}, {label=>$value}); |
257 push(@{$labels}, {label=>$value}); |
237 } |
258 } |
|
259 elsif ($attr =~ /^(test)$/i) |
|
260 { |
|
261 $attr = lc($attr); |
|
262 if ($value =~ /([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*)/) |
|
263 { |
|
264 my $name=$1; |
|
265 my $type=$2; |
|
266 my $target=$3; |
|
267 my $started=$4; |
|
268 my $finished=$5; |
|
269 my $cases_total=$6; |
|
270 $cases_total=0 if (!$cases_total); |
|
271 my $cases_passed=$7; |
|
272 $cases_passed=0 if (!$cases_passed); |
|
273 my $cases_failed=$8; |
|
274 $cases_failed=0 if (!$cases_failed); |
|
275 my $cases_not_run=$9; |
|
276 $cases_not_run=0 if (!$cases_not_run); |
|
277 my $cases_not_available=$10; |
|
278 $cases_not_available=0 if (!$cases_not_available); |
|
279 my $pass_rate=$11; |
|
280 $pass_rate="0.0" if (!$pass_rate); |
|
281 |
|
282 if (!$name) |
|
283 { |
|
284 print "ERROR: Name is empty: \"$value\"\n"; |
|
285 return 1; |
|
286 } |
|
287 print " found ($name,$type,$target,$started,$finished,$cases_total,$cases_passed,$cases_failed,$cases_not_run,$cases_not_available,$pass_rate) for table 'testing'\n" if ($verbose); |
|
288 push(@{$testing}, {name=>$name,type=>$type,target=>$target,started=>$started,finished=>$finished, |
|
289 cases_total=>$cases_total,cases_passed=>$cases_passed,cases_failed=>$cases_failed,cases_not_run=>$cases_not_run, |
|
290 cases_not_available=>$cases_not_available,pass_rate=>$pass_rate}); |
|
291 } |
|
292 else |
|
293 { |
|
294 print "ERROR: Could not understand value of envinfo: \"$value\"\n"; |
|
295 return 1; |
|
296 } |
|
297 } |
238 else |
298 else |
239 { |
299 { |
240 print "ERROR: Could not understand avp: \"$line\"\n"; |
300 print "ERROR: Could not understand avp: \"$line\"\n"; |
241 return 1; |
301 return 1; |
242 } |
302 } |
383 print " execute '$label'\n" if ($verbose); |
443 print " execute '$label'\n" if ($verbose); |
384 $query->execute($label) |
444 $query->execute($label) |
385 or print "WARNING: Couldn't execute insert into revision ($label): " . $db->errstr() . "\n" if (!$dryrun); |
445 or print "WARNING: Couldn't execute insert into revision ($label): " . $db->errstr() . "\n" if (!$dryrun); |
386 } |
446 } |
387 } |
447 } |
|
448 |
|
449 if (@{$testing}) |
|
450 { |
|
451 print " prepare_cached 'insert into testing (build_id,name,type,target,started,finished,cases_total,cases_passed,cases_failed,cases_not_run,cases_not_available,pass_rate) values ($newbuildid,?,?,?,?,?,?,?,?,?,?,?)'\n" if ($verbose); |
|
452 my $query = $db->prepare_cached("insert into testing (build_id,name,type,target,started,finished,cases_total,cases_passed,cases_failed,cases_not_run,cases_not_available,pass_rate) values ($newbuildid,?,?,?,?,?,?,?,?,?,?,?)") |
|
453 or die("Couldn't prepare query insert into testing: " . $db->errstr()) if (!$dryrun); |
|
454 |
|
455 for my $entry (@{$testing}) |
|
456 { |
|
457 my $name = $entry->{name}; |
|
458 my $type = $entry->{type}; |
|
459 my $target = $entry->{target}; |
|
460 my $started = $entry->{started}; |
|
461 my $finished = $entry->{finished}; |
|
462 my $cases_total = $entry->{cases_total}; |
|
463 my $cases_passed = $entry->{cases_passed}; |
|
464 my $cases_failed = $entry->{cases_failed}; |
|
465 my $cases_not_run = $entry->{cases_not_run}; |
|
466 my $cases_not_available = $entry->{cases_not_available}; |
|
467 my $pass_rate = $entry->{pass_rate}; |
|
468 |
|
469 print " execute '$name,$type,$target,$started,$finished,$cases_total,$cases_passed,$cases_failed,$cases_not_run,$cases_not_available,$pass_rate'\n" if ($verbose); |
|
470 $query->execute($name,$type,$target,$started,$finished,$cases_total,$cases_passed,$cases_failed,$cases_not_run,$cases_not_available,$pass_rate) |
|
471 or print "WARNING: Couldn't execute insert into testing ($name,$type,$target,$started,$finished,$cases_total,$cases_passed,$cases_failed,$cases_not_run,$cases_not_available,$pass_rate): " . $db->errstr() . "\n" if (!$dryrun); |
|
472 } |
|
473 } |
388 print "new build id: $newbuildid\n"; |
474 print "new build id: $newbuildid\n"; |
389 } |
475 } |
390 else |
476 elsif ($id) |
391 { |
477 { |
392 print "Updating build $id\n"; |
478 print "Updating build $id\n"; |
|
479 |
|
480 if (defined $builds_entry->{id} && $id != $builds_entry->{id}) |
|
481 { |
|
482 print "ERROR: The build id specified in the input file is different than the one on the command line. Not updating build.\n"; |
|
483 exit(1); |
|
484 } |
393 |
485 |
394 if (keys %{$builds_entry}) |
486 if (keys %{$builds_entry}) |
395 { |
487 { |
396 my $field_list = ''; |
488 my $field_list = ''; |
397 my @fields = (); |
489 my @fields = (); |
410 $query->execute(@fields) |
502 $query->execute(@fields) |
411 or print "WARNING: Couldn't execute update builds (@fields): " . $db->errstr() . "\n" if (!$dryrun); |
503 or print "WARNING: Couldn't execute update builds (@fields): " . $db->errstr() . "\n" if (!$dryrun); |
412 } |
504 } |
413 if (@{$envinfo}) |
505 if (@{$envinfo}) |
414 { |
506 { |
415 print " prepare 'delete from envinfo where build_id=$id'\n" if ($verbose); |
507 if (!$append) |
416 my $delete_query = $db->prepare("delete from envinfo where build_id=$id") |
508 { |
417 or die("Couldn't prepare query delete from envinfo: " . $db->errstr()) if (!$dryrun); |
509 print " prepare 'delete from envinfo where build_id=$id'\n" if ($verbose); |
418 |
510 my $delete_query = $db->prepare("delete from envinfo where build_id=$id") |
419 print " execute ''\n" if ($verbose); |
511 or die("Couldn't prepare query delete from envinfo: " . $db->errstr()) if (!$dryrun); |
420 $delete_query->execute() |
512 |
421 or print "WARNING: Couldn't execute delete from envinfo: " . $db->errstr() . "\n" if (!$dryrun); |
513 print " execute ''\n" if ($verbose); |
|
514 $delete_query->execute() |
|
515 or print "WARNING: Couldn't execute delete from envinfo: " . $db->errstr() . "\n" if (!$dryrun); |
|
516 } |
422 |
517 |
423 print " prepare 'insert into envinfo (build_id,tool,version) values ($id,?,?)'\n" if ($verbose); |
518 print " prepare 'insert into envinfo (build_id,tool,version) values ($id,?,?)'\n" if ($verbose); |
424 my $query = $db->prepare_cached("insert into envinfo (build_id,tool,version) values ($id,?,?)") |
519 my $query = $db->prepare_cached("insert into envinfo (build_id,tool,version) values ($id,?,?)") |
425 or die("Couldn't prepare query insert into envinfo: " . $db->errstr()) if (!$dryrun); |
520 or die("Couldn't prepare query insert into envinfo: " . $db->errstr()) if (!$dryrun); |
426 |
521 |
434 or print "WARNING: Couldn't execute insert into envinfo ($tool,$version): " . $db->errstr() . "\n" if (!$dryrun); |
529 or print "WARNING: Couldn't execute insert into envinfo ($tool,$version): " . $db->errstr() . "\n" if (!$dryrun); |
435 } |
530 } |
436 } |
531 } |
437 if (@{$failures}) |
532 if (@{$failures}) |
438 { |
533 { |
439 print " prepare 'delete from failures where build_id=$id'\n" if ($verbose); |
534 if (!$append) |
440 my $delete_query = $db->prepare("delete from failures where build_id=$id") |
535 { |
441 or die("Couldn't prepare query delete from failures: " . $db->errstr()) if (!$dryrun); |
536 print " prepare 'delete from failures where build_id=$id'\n" if ($verbose); |
442 |
537 my $delete_query = $db->prepare("delete from failures where build_id=$id") |
443 print " execute ''\n" if ($verbose); |
538 or die("Couldn't prepare query delete from failures: " . $db->errstr()) if (!$dryrun); |
444 $delete_query->execute() |
539 |
445 or print "WARNING: Couldn't execute delete from failures: " . $db->errstr() . "\n" if (!$dryrun); |
540 print " execute ''\n" if ($verbose); |
446 |
541 $delete_query->execute() |
|
542 or print "WARNING: Couldn't execute delete from failures: " . $db->errstr() . "\n" if (!$dryrun); |
|
543 } |
|
544 |
447 print " prepare 'insert into failures (build_id,category,count) values ($id,?,?)'\n" if ($verbose); |
545 print " prepare 'insert into failures (build_id,category,count) values ($id,?,?)'\n" if ($verbose); |
448 my $query = $db->prepare_cached("insert into failures (build_id,category,count) values ($id,?,?)") |
546 my $query = $db->prepare_cached("insert into failures (build_id,category,count) values ($id,?,?)") |
449 or die("Couldn't prepare query insert into failures: " . $db->errstr()) if (!$dryrun); |
547 or die("Couldn't prepare query insert into failures: " . $db->errstr()) if (!$dryrun); |
450 |
548 |
451 for my $entry (@{$failures}) |
549 for my $entry (@{$failures}) |
458 or print "WARNING: Couldn't execute insert into failures ($category,$count): " . $db->errstr() . "\n" if (!$dryrun); |
556 or print "WARNING: Couldn't execute insert into failures ($category,$count): " . $db->errstr() . "\n" if (!$dryrun); |
459 } |
557 } |
460 } |
558 } |
461 if (@{$reports}) |
559 if (@{$reports}) |
462 { |
560 { |
463 print " prepare 'delete from reports where build_id=$id'\n" if ($verbose); |
561 if (!$append) |
464 my $delete_query = $db->prepare("delete from reports where build_id=$id") |
562 { |
465 or die("Couldn't prepare query delete from reports: " . $db->errstr()) if (!$dryrun); |
563 print " prepare 'delete from reports where build_id=$id'\n" if ($verbose); |
466 |
564 my $delete_query = $db->prepare("delete from reports where build_id=$id") |
467 print " execute ''\n" if ($verbose); |
565 or die("Couldn't prepare query delete from reports: " . $db->errstr()) if (!$dryrun); |
468 $delete_query->execute() |
566 |
469 or print "WARNING: Couldn't execute delete from reports: " . $db->errstr() . "\n"; |
567 print " execute ''\n" if ($verbose); |
|
568 $delete_query->execute() |
|
569 or print "WARNING: Couldn't execute delete from reports: " . $db->errstr() . "\n"; |
|
570 } |
470 |
571 |
471 print " prepare 'insert into reports (build_id,name,url,type) values ($id,?,?,?)'\n" if ($verbose); |
572 print " prepare 'insert into reports (build_id,name,url,type) values ($id,?,?,?)'\n" if ($verbose); |
472 my $query = $db->prepare_cached("insert into reports (build_id,name,url,type) values ($id,?,?,?)") |
573 my $query = $db->prepare_cached("insert into reports (build_id,name,url,type) values ($id,?,?,?)") |
473 or die("Couldn't prepare query insert into failures: " . $db->errstr()) if (!$dryrun); |
574 or die("Couldn't prepare query insert into reports: " . $db->errstr()) if (!$dryrun); |
474 |
575 |
475 for my $entry (@{$reports}) |
576 for my $entry (@{$reports}) |
476 { |
577 { |
477 my $name = $entry->{name}; |
578 my $name = $entry->{name}; |
478 my $url = $entry->{url}; |
579 my $url = $entry->{url}; |
483 or print "WARNING: Couldn't execute insert into reports ($name,$url,$type): " . $db->errstr() . "\n" if (!$dryrun); |
584 or print "WARNING: Couldn't execute insert into reports ($name,$url,$type): " . $db->errstr() . "\n" if (!$dryrun); |
484 } |
585 } |
485 } |
586 } |
486 if (@{$content}) |
587 if (@{$content}) |
487 { |
588 { |
488 print " prepare 'delete from content where build_id=$id'\n" if ($verbose); |
589 if (!$append) |
489 my $delete_query = $db->prepare("delete from content where build_id=$id") |
590 { |
490 or die("Couldn't prepare query delete from content: " . $db->errstr()) if (!$dryrun); |
591 print " prepare 'delete from content where build_id=$id'\n" if ($verbose); |
491 |
592 my $delete_query = $db->prepare("delete from content where build_id=$id") |
492 print " execute ''\n" if ($verbose); |
593 or die("Couldn't prepare query delete from content: " . $db->errstr()) if (!$dryrun); |
493 $delete_query->execute() |
594 |
494 or print "WARNING: Couldn't execute delete from content: " . $db->errstr() . "\n" if (!$dryrun); |
595 print " execute ''\n" if ($verbose); |
|
596 $delete_query->execute() |
|
597 or print "WARNING: Couldn't execute delete from content: " . $db->errstr() . "\n" if (!$dryrun); |
|
598 } |
495 |
599 |
496 print " prepare 'insert into content (build_id,name,url,revision) values ($id,?,?,?)'\n" if ($verbose); |
600 print " prepare 'insert into content (build_id,name,url,revision) values ($id,?,?,?)'\n" if ($verbose); |
497 my $query = $db->prepare_cached("insert into content (build_id,name,url,revision) values ($id,?,?,?)") |
601 my $query = $db->prepare_cached("insert into content (build_id,name,url,revision) values ($id,?,?,?)") |
498 or die("Couldn't prepare query insert into content: " . $db->errstr()) if (!$dryrun); |
602 or die("Couldn't prepare query insert into content: " . $db->errstr()) if (!$dryrun); |
499 |
603 |
508 or print "WARNING: Couldn't execute insert into content ($name,$url,$revision): " . $db->errstr() . "\n" if (!$dryrun); |
612 or print "WARNING: Couldn't execute insert into content ($name,$url,$revision): " . $db->errstr() . "\n" if (!$dryrun); |
509 } |
613 } |
510 } |
614 } |
511 if (@{$baselines}) |
615 if (@{$baselines}) |
512 { |
616 { |
513 print " prepare 'delete from baselines where build_id=$id'\n" if ($verbose); |
617 if (!$append) |
514 my $delete_query = $db->prepare("delete from baselines where build_id=$id") |
618 { |
515 or die("Couldn't prepare query delete from baselines: " . $db->errstr()) if (!$dryrun); |
619 print " prepare 'delete from baselines where build_id=$id'\n" if ($verbose); |
516 |
620 my $delete_query = $db->prepare("delete from baselines where build_id=$id") |
517 print " execute ''\n" if ($verbose); |
621 or die("Couldn't prepare query delete from baselines: " . $db->errstr()) if (!$dryrun); |
518 $delete_query->execute() |
622 |
519 or print "WARNING: Couldn't execute delete from baselines: " . $db->errstr() . "\n" if (!$dryrun); |
623 print " execute ''\n" if ($verbose); |
|
624 $delete_query->execute() |
|
625 or print "WARNING: Couldn't execute delete from baselines: " . $db->errstr() . "\n" if (!$dryrun); |
|
626 } |
520 |
627 |
521 print " prepare 'insert into baselines (build_id,type,path) values ($id,?,?)'\n" if ($verbose); |
628 print " prepare 'insert into baselines (build_id,type,path) values ($id,?,?)'\n" if ($verbose); |
522 my $query = $db->prepare_cached("insert into baselines (build_id,type,path) values ($id,?,?)") |
629 my $query = $db->prepare_cached("insert into baselines (build_id,type,path) values ($id,?,?)") |
523 or die("Couldn't prepare query insert into baselines: " . $db->errstr()) if (!$dryrun); |
630 or die("Couldn't prepare query insert into baselines: " . $db->errstr()) if (!$dryrun); |
524 |
631 |
532 or print "WARNING: Couldn't execute insert into baselines ($type,$path): " . $db->errstr() . "\n" if (!$dryrun); |
639 or print "WARNING: Couldn't execute insert into baselines ($type,$path): " . $db->errstr() . "\n" if (!$dryrun); |
533 } |
640 } |
534 } |
641 } |
535 if (@{$labels}) |
642 if (@{$labels}) |
536 { |
643 { |
537 print " prepare 'delete from labels where build_id=$id'\n" if ($verbose); |
644 if (!$append) |
538 my $delete_query = $db->prepare("delete from labels where build_id=$id") |
645 { |
539 or die("Couldn't prepare query delete from labels: " . $db->errstr()) if (!$dryrun); |
646 print " prepare 'delete from labels where build_id=$id'\n" if ($verbose); |
540 |
647 my $delete_query = $db->prepare("delete from labels where build_id=$id") |
541 print " execute ''\n" if ($verbose); |
648 or die("Couldn't prepare query delete from labels: " . $db->errstr()) if (!$dryrun); |
542 $delete_query->execute() |
649 |
543 or print "WARNING: Couldn't execute delete from labels: " . $db->errstr() . "\n" if (!$dryrun); |
650 print " execute ''\n" if ($verbose); |
|
651 $delete_query->execute() |
|
652 or print "WARNING: Couldn't execute delete from labels: " . $db->errstr() . "\n" if (!$dryrun); |
|
653 } |
544 |
654 |
545 print " prepare 'insert into labels (build_id,label) values ($id,?)'\n" if ($verbose); |
655 print " prepare 'insert into labels (build_id,label) values ($id,?)'\n" if ($verbose); |
546 my $query = $db->prepare_cached("insert into label (build_id,label) values ($id,?)") |
656 my $query = $db->prepare_cached("insert into label (build_id,label) values ($id,?)") |
547 or die("Couldn't prepare query insert into label: " . $db->errstr()) if (!$dryrun); |
657 or die("Couldn't prepare query insert into label: " . $db->errstr()) if (!$dryrun); |
|
658 |
548 |
659 |
549 for my $entry (@{$labels}) |
660 for my $entry (@{$labels}) |
550 { |
661 { |
551 my $label = $entry->{label}; |
662 my $label = $entry->{label}; |
552 |
663 |
553 print " execute '$label'\n" if ($verbose); |
664 print " execute '$label'\n" if ($verbose); |
554 $query->execute($label) |
665 $query->execute($label) |
555 or print "WARNING: Couldn't execute insert into labels ($label): " . $db->errstr() . "\n" if (!$dryrun); |
666 or print "WARNING: Couldn't execute insert into labels ($label): " . $db->errstr() . "\n" if (!$dryrun); |
556 } |
667 } |
557 } |
668 } |
|
669 if (@{$testing}) |
|
670 { |
|
671 if (!$append) |
|
672 { |
|
673 print " prepare 'delete from testing where build_id=$id'\n" if ($verbose); |
|
674 my $delete_query = $db->prepare("delete from testing where build_id=$id") |
|
675 or die("Couldn't prepare query delete from testing: " . $db->errstr()) if (!$dryrun); |
|
676 |
|
677 print " execute ''\n" if ($verbose); |
|
678 $delete_query->execute() |
|
679 or print "WARNING: Couldn't execute delete from testing: " . $db->errstr() . "\n"; |
|
680 } |
|
681 |
|
682 print " prepare 'insert into testing (build_id,name,type,target,started,finished,cases_total,cases_passed,cases_failed,cases_not_run,cases_not_available,pass_rate) values ($id,?,?,?,?,?,?,?,?,?,?,?)'\n" if ($verbose); |
|
683 my $query = $db->prepare_cached("insert into testing (build_id,name,type,target,started,finished,cases_total,cases_passed,cases_failed,cases_not_run,cases_not_available,pass_rate) values ($id,?,?,?,?,?,?,?,?,?,?,?)") |
|
684 or die("Couldn't prepare query insert into testing: " . $db->errstr()) if (!$dryrun); |
|
685 |
|
686 for my $entry (@{$testing}) |
|
687 { |
|
688 my $name = $entry->{name}; |
|
689 my $type = $entry->{type}; |
|
690 my $target = $entry->{target}; |
|
691 my $started = $entry->{started}; |
|
692 my $finished = $entry->{finished}; |
|
693 my $cases_total = $entry->{cases_total}; |
|
694 my $cases_passed = $entry->{cases_passed}; |
|
695 my $cases_failed = $entry->{cases_failed}; |
|
696 my $cases_not_run = $entry->{cases_not_run}; |
|
697 my $cases_not_available = $entry->{cases_not_available}; |
|
698 my $pass_rate = $entry->{pass_rate}; |
|
699 |
|
700 print " execute '$name,$type,$target,$started,$finished,$cases_total,$cases_passed,$cases_failed,$cases_not_run,$cases_not_available,$pass_rate'\n" if ($verbose); |
|
701 $query->execute($name,$type,$target,$started,$finished,$cases_total,$cases_passed,$cases_failed,$cases_not_run,$cases_not_available,$pass_rate) |
|
702 or print "WARNING: Couldn't execute insert into testing ($name,$type,$target,$started,$finished,$cases_total,$cases_passed,$cases_failed,$cases_not_run,$cases_not_available,$pass_rate): " . $db->errstr() . "\n" if (!$dryrun); |
|
703 } |
|
704 } |
|
705 } |
|
706 elsif ($delete) |
|
707 { |
|
708 print "Removing build $delete\n"; |
|
709 |
|
710 print " prepare 'delete from builds where id=$delete'\n" if ($verbose); |
|
711 my $delete_query = $db->prepare("delete from builds where id=$delete") |
|
712 or die("Couldn't prepare query delete from builds: " . $db->errstr()) if (!$dryrun); |
|
713 print " execute ''\n" if ($verbose); |
|
714 $delete_query->execute() |
|
715 or print "WARNING: Couldn't execute delete from builds: " . $db->errstr() . "\n" if (!$dryrun); |
|
716 |
|
717 print " prepare 'delete from envinfo where build_id=$delete'\n" if ($verbose); |
|
718 $delete_query = $db->prepare("delete from envinfo where build_id=$delete") |
|
719 or die("Couldn't prepare query delete from envinfo: " . $db->errstr()) if (!$dryrun); |
|
720 print " execute ''\n" if ($verbose); |
|
721 $delete_query->execute() |
|
722 or print "WARNING: Couldn't execute delete from envinfo: " . $db->errstr() . "\n" if (!$dryrun); |
|
723 |
|
724 print " prepare 'delete from failures where build_id=$delete'\n" if ($verbose); |
|
725 $delete_query = $db->prepare("delete from failures where build_id=$delete") |
|
726 or die("Couldn't prepare query delete from failures: " . $db->errstr()) if (!$dryrun); |
|
727 print " execute ''\n" if ($verbose); |
|
728 $delete_query->execute() |
|
729 or print "WARNING: Couldn't execute delete from failures: " . $db->errstr() . "\n" if (!$dryrun); |
|
730 |
|
731 print " prepare 'delete from reports where build_id=$delete'\n" if ($verbose); |
|
732 $delete_query = $db->prepare("delete from reports where build_id=$delete") |
|
733 or die("Couldn't prepare query delete from reports: " . $db->errstr()) if (!$dryrun); |
|
734 print " execute ''\n" if ($verbose); |
|
735 $delete_query->execute() |
|
736 or print "WARNING: Couldn't execute delete from reports: " . $db->errstr() . "\n" if (!$dryrun); |
|
737 |
|
738 print " prepare 'delete from content where build_id=$delete'\n" if ($verbose); |
|
739 $delete_query = $db->prepare("delete from content where build_id=$delete") |
|
740 or die("Couldn't prepare query delete from content: " . $db->errstr()) if (!$dryrun); |
|
741 print " execute ''\n" if ($verbose); |
|
742 $delete_query->execute() |
|
743 or print "WARNING: Couldn't execute delete from content: " . $db->errstr() . "\n" if (!$dryrun); |
|
744 |
|
745 print " prepare 'delete from baselines where build_id=$delete'\n" if ($verbose); |
|
746 $delete_query = $db->prepare("delete from baselines where build_id=$delete") |
|
747 or die("Couldn't prepare query delete from baselines: " . $db->errstr()) if (!$dryrun); |
|
748 print " execute ''\n" if ($verbose); |
|
749 $delete_query->execute() |
|
750 or print "WARNING: Couldn't execute delete from baselines: " . $db->errstr() . "\n" if (!$dryrun); |
|
751 |
|
752 print " prepare 'delete from labels where build_id=$delete'\n" if ($verbose); |
|
753 $delete_query = $db->prepare("delete from labels where build_id=$delete") |
|
754 or die("Couldn't prepare query delete from labels: " . $db->errstr()) if (!$dryrun); |
|
755 print " execute ''\n" if ($verbose); |
|
756 $delete_query->execute() |
|
757 or print "WARNING: Couldn't execute delete from labels: " . $db->errstr() . "\n" if (!$dryrun); |
|
758 |
|
759 print " prepare 'delete from testing where build_id=$delete'\n" if ($verbose); |
|
760 $delete_query = $db->prepare("delete from testing where build_id=$delete") |
|
761 or die("Couldn't prepare query delete from testing: " . $db->errstr()) if (!$dryrun); |
|
762 print " execute ''\n" if ($verbose); |
|
763 $delete_query->execute() |
|
764 or print "WARNING: Couldn't execute delete from testing: " . $db->errstr() . "\n" if (!$dryrun); |
558 } |
765 } |
559 DisconnectFromDB(); |
766 DisconnectFromDB(); |
560 |
767 |
561 |
768 |