зеркало из https://github.com/mozilla/pjs.git
b=384460
- add config options for using a read-only database in parallel - use read-only database for major reporting queries (coverage, freeform search,daily/testday reports)
This commit is contained in:
Родитель
84ca6926e5
Коммит
ae6c859abe
|
@ -82,6 +82,19 @@ our %AUDIT_ACTIONS_TO_IGNORE = (
|
|||
],
|
||||
);
|
||||
|
||||
our $user_cookiename = "litmus_login";
|
||||
our $sysconfig_cookiename = "litmustestingconfiguration";
|
||||
|
||||
our $sendmail_path = '/usr/sbin/sendmail';
|
||||
|
||||
our @nightly_report_recipients = ();
|
||||
|
||||
# We allow for a separate database that is optimized for read-only queries.
|
||||
# These vars can be set in localconfig, but will default to the same values
|
||||
# as for the regular database if not set.
|
||||
our ($db_host, $db_port, $db_name, $db_user, $db_pass);
|
||||
our ($db_host_ro, $db_port_ro, $db_name_ro, $db_user_ro, $db_pass_ro);
|
||||
|
||||
our $localconfig = litmus_locations()->{'localconfig'};
|
||||
do $localconfig;
|
||||
|
||||
|
@ -93,5 +106,4 @@ our $disabled = 0;
|
|||
# Set/unset this to display inline debugging value/code.
|
||||
our $DEBUG = 0;
|
||||
|
||||
|
||||
1;
|
||||
|
|
|
@ -123,7 +123,7 @@ sub coverage() {
|
|||
if ($community_only) {
|
||||
$sql .= " AND t.community_enabled=1";
|
||||
}
|
||||
my $dbh = $self->db_Main();
|
||||
my $dbh = $self->db_ReadOnly();
|
||||
my $sth = $dbh->prepare_cached($sql);
|
||||
$sth->execute(
|
||||
$self->{'subgroup_id'},
|
||||
|
|
|
@ -65,7 +65,7 @@ Litmus::DB::TestRun->set_sql('daterange' => qq {
|
|||
sub getCriteria() {
|
||||
my $self = shift;
|
||||
|
||||
my $dbh = __PACKAGE__->db_Main();
|
||||
my $dbh = __PACKAGE__->db_ReadOnly();
|
||||
my $sql = "SELECT trc.build_id, trc.platform_id, trc.opsys_id,
|
||||
pl.name AS platform_name, o.name AS opsys_name
|
||||
FROM test_run_criteria trc
|
||||
|
@ -286,7 +286,7 @@ sub getTestRuns() {
|
|||
$sql .= " LIMIT $limit";
|
||||
}
|
||||
|
||||
my $dbh = __PACKAGE__->db_Main();
|
||||
my $dbh = __PACKAGE__->db_ReadOnly();
|
||||
my $sth = $dbh->prepare($sql);
|
||||
$sth->execute();
|
||||
my @test_run_ids;
|
||||
|
@ -360,7 +360,7 @@ $sql .= " WHERE
|
|||
|
||||
$sql .= $self->getCriteriaSql();
|
||||
|
||||
my $dbh = __PACKAGE__->db_Main();
|
||||
my $dbh = __PACKAGE__->db_ReadOnly();
|
||||
my $sth = $dbh->prepare($sql);
|
||||
$sth->execute($self->test_run_id);
|
||||
my ($num_testcases_with_results) = $sth->fetchrow_array;
|
||||
|
@ -425,7 +425,7 @@ $sql .= " WHERE
|
|||
|
||||
$sql .= $self->getCriteriaSql();
|
||||
|
||||
my $dbh = __PACKAGE__->db_Main();
|
||||
my $dbh = __PACKAGE__->db_ReadOnly();
|
||||
my $sth = $dbh->prepare($sql);
|
||||
$sth->execute($self->test_run_id,$status_id);
|
||||
my ($num_results) = $sth->fetchrow_array;
|
||||
|
@ -482,7 +482,7 @@ $sql .= " WHERE
|
|||
|
||||
$sql .= $self->getCriteriaSql();
|
||||
|
||||
my $dbh = __PACKAGE__->db_Main();
|
||||
my $dbh = __PACKAGE__->db_ReadOnly();
|
||||
my $sth = $dbh->prepare($sql);
|
||||
$sth->execute($self->test_run_id);
|
||||
my ($num_results) = $sth->fetchrow_array;
|
||||
|
|
|
@ -202,7 +202,7 @@ sub coverage() {
|
|||
my $user = shift; # optional
|
||||
my $trusted = shift; # optional
|
||||
|
||||
my $dbh = __PACKAGE__->db_Main();
|
||||
my $dbh = __PACKAGE__->db_ReadOnly();
|
||||
my $select = "SELECT tr.testresult_id, trsl.class_name";
|
||||
my $from = " FROM test_results tr, users u, opsyses o, test_result_status_lookup trsl";
|
||||
my $where = " WHERE tr.testcase_id=" . quotemeta($self->{'testcase_id'}) . " AND tr.user_id=u.user_id AND tr.opsys_id=o.opsys_id AND tr.result_status_id=trsl.result_status_id";
|
||||
|
|
|
@ -380,7 +380,7 @@ sub getTestResults($\@\@$) {
|
|||
}
|
||||
|
||||
my $sql = "$select $from $where $group_by $order_by $limit";
|
||||
my $dbh = Litmus::DBI->db_Main();
|
||||
my $dbh = Litmus::DBI->db_ReadOnly();
|
||||
my $sth = $dbh->prepare($sql);
|
||||
$sth->execute();
|
||||
my @rows = $self->sth_to_objects($sth);
|
||||
|
|
|
@ -83,7 +83,7 @@ sub search_full_text {
|
|||
my $realname = shift;
|
||||
my @groups = shift;
|
||||
|
||||
my $dbh = Litmus::DBI->db_Main();
|
||||
my $dbh = Litmus::DBI->db_ReadOnly();
|
||||
my @args;
|
||||
|
||||
my $sql = q{
|
||||
|
|
|
@ -151,6 +151,7 @@ use strict;
|
|||
use warnings;
|
||||
use Litmus::Config;
|
||||
use Litmus::Memoize;
|
||||
use DBI;
|
||||
|
||||
use base 'Class::DBI::mysql';
|
||||
|
||||
|
@ -159,12 +160,24 @@ use constant MP2 => ( exists $ENV{MOD_PERL_API_VERSION} and
|
|||
use constant MP1 => ( exists $ENV{MOD_PERL} and
|
||||
! exists $ENV{MOD_PERL_API_VERSION});
|
||||
|
||||
our $dsn = "dbi:mysql(RootClass=AuditDBI):database=$Litmus::Config::db_name;host=$Litmus::Config::db_host;port=3306";
|
||||
our $dsn = "dbi:mysql(RootClass=AuditDBI):database=$Litmus::Config::db_name;host=$Litmus::Config::db_host;port=$Litmus::Config::db_port";
|
||||
|
||||
Litmus::DBI->connection($dsn,
|
||||
$Litmus::Config::db_user,
|
||||
$Litmus::Config::db_pass);
|
||||
|
||||
|
||||
our $readonly_dbh;
|
||||
if (defined $Litmus::Config::db_host_ro and
|
||||
$Litmus::Config::db_host_ro ne $Litmus::Config::db_host) {
|
||||
my $readonly_dsn = "dbi:mysql:database=$Litmus::Config::db_name_ro;host=$Litmus::Config::db_host_ro;port=$Litmus::Config::db_port_ro";
|
||||
$readonly_dbh = DBI->connect($readonly_dsn,
|
||||
$Litmus::Config::db_user_ro,
|
||||
$Litmus::Config::db_pass_ro,
|
||||
{ReadOnly => 1}
|
||||
);
|
||||
}
|
||||
|
||||
our %column_aliases;
|
||||
|
||||
Litmus::DBI->autoupdate(0);
|
||||
|
@ -242,4 +255,12 @@ sub _auto_increment_value {
|
|||
return $id;
|
||||
}
|
||||
|
||||
sub db_ReadOnly() {
|
||||
my $class = shift;
|
||||
|
||||
return $readonly_dbh if ($readonly_dbh);
|
||||
|
||||
return $class->db_Main();
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
@ -55,7 +55,7 @@ sub _init {
|
|||
return 1;
|
||||
}
|
||||
|
||||
$self->{_dbh} = Litmus::DBI->db_Main;
|
||||
$self->{_dbh} = Litmus::DBI->db_ReadOnly;
|
||||
|
||||
if ($args{testday_id}) {
|
||||
my $testday = Litmus::DB::TestDay->retrieve($args{testday_id});
|
||||
|
|
|
@ -46,7 +46,7 @@ my $template = "reporting/aggregate_results.tmpl";
|
|||
my $title = "Test Results Submitted by Testgroup";
|
||||
|
||||
my $results;
|
||||
my $dbh = Litmus::DBI->db_Main();
|
||||
my $dbh = Litmus::DBI->db_ReadOnly();
|
||||
my $sql = "SELECT tg.name AS testgroup_name,pr.name AS product_name,b.name AS branch_name,count(tr.testresult_id) AS num_results
|
||||
FROM testgroups tg, products pr, branches b, subgroup_testgroups sgtg, testcase_subgroups tcsg, testcases tc, test_results tr
|
||||
WHERE tg.branch_id=b.branch_id AND tg.product_id=pr.product_id AND tg.enabled=1 AND tg.testgroup_id=sgtg.testgroup_id AND sgtg.subgroup_id=tcsg.subgroup_id AND tcsg.testcase_id=tc.testcase_id AND tc.testcase_id=tr.testcase_id AND tc.enabled=1 AND tr.branch_id=tc.branch_id AND tc.product_id=tg.product_id
|
||||
|
|
|
@ -68,7 +68,7 @@ if (
|
|||
die;
|
||||
}
|
||||
|
||||
$dbh = Litmus::DBI->db_Main;
|
||||
$dbh = Litmus::DBI->db_ReadOnly;
|
||||
if (!$dbh) {
|
||||
die "Unable to connect to database!";
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ END {
|
|||
}
|
||||
}
|
||||
|
||||
$litmus_dbh = Litmus::DBI->db_Main() or die;
|
||||
$litmus_dbh = Litmus::DBI->db_ReadOnly() or die;
|
||||
|
||||
my ($sql,$sth);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче