Litmus:Design: Difference between revisions

Line 94: Line 94:
** Litmus::DB::Test.pm
** Litmus::DB::Test.pm
* Add the following new perl modules:
* Add the following new perl modules:
** Litmus::DB::PlatformProduct.pm
** Litmus::DB::TestRun.pm
** Litmus::DB::SubgroupTestgroup.pm
 
** Litmus::DB::TestcaseSubgroup.pm
One of the problems with the current Litmus Class::DBI-based design is that many times fully populated entity objects (e.g. a testcase) are looked up from the database to satisfy trivial conditions (e.g. getting a count of the # of testcases in a subgroup). One particularly egregious example is the current select testgroup/subgroup page from the Run Tests interface and the Percentage Coverage functions. If there are any more than a small number of testgroups present, the page takes a very long time to load, e.g. for a product with 7 testgroups (firefox), the page takes 15-20 seconds to load.
** Litmus::DB::TestRunBranch.pm
 
** Litmus::DB::TestRunBuildID.pm
Given the new many-to-many relationships, it makes sense to replace some of these slow, generic lookups with more targetted methods for each class.
** Litmus::DB::TestRunPlatform.pm
 
** Litmus::DB::TestRunOpsys.pm
Since Class::DBI does not have a very good method for handling many-to-many relationships (join tables), it also makes sense to create methods for each class that will perform the necessary linkages. Here is a (hopefully) complete list of the linkages that need to occur, and the class in which they should live:
 
* Litmus::DB::Testgroup
** sql method EnabledByBranch (interim step before Test Runs)
** sql method EnabledBySubgroup
** replace exisiting coverage functions with targetted functions
* Litmus::DB::Subgroup
** sql method EnabledByTestgroup
** sql method EnabledByTestcase
** sql method NumEnabledTestcases (returns simple count)
** replace exisiting coverage functions with targetted functions
* Litmus::DB::Testcase
** sql method EnabledBySubgroup
** sql method CommunityEnabledBySubgroup
** sql method MatchesByName (for full-text matching by summary)
** sql method FullTextMatches (for full-text matching by all text fields)


=== CGI Scripts ===
=== CGI Scripts ===
canmove, Confirmed users
2,850

edits