Fix a test that is leaking a workflow. Add workflow cleanup code to WebGUI::Test.

This commit is contained in:
Colin Kuskie 2009-06-20 01:51:06 +00:00
parent 73df992b1e
commit 64e78690d9
2 changed files with 46 additions and 8 deletions

View file

@ -89,6 +89,7 @@ my $workflow = WebGUI::Workflow->create($session,
mode => 'realtime',
},
);
WebGUI::Test->workflowsToDelete($workflow);
WebGUI::Test->originalConfig('workflowActivities');
$session->config->addToArray('workflowActivities/User', 'WebGUI::Workflow::Activity::AddUserToGroup');

View file

@ -60,6 +60,7 @@ my @usersToDelete;
my @sessionsToDelete;
my @storagesToDelete;
my @tagsToRollback;
my @workflowsToDelete;
my $smtpdPid;
my $smtpdStream;
@ -174,17 +175,37 @@ END {
$session->var->end;
$session->close;
}
foreach my $tag (@tagsToRollback) {
TAG: foreach my $tag (@tagsToRollback) {
$tag->rollback;
}
WORKFLOW: foreach my $workflow (@workflowsToDelete) {
my $workflowId = $workflow->getId;
next WORKFLOW if any { $workflowId eq $_ } qw/
AuthLDAPworkflow000001
csworkflow000000000001
DPWwf20061030000000002
PassiveAnalytics000001
pbworkflow000000000001
pbworkflow000000000002
pbworkflow000000000003
pbworkflow000000000004
pbworkflow000000000005
pbworkflow000000000006
pbworkflow000000000007
send_webgui_statistics
/;
$workflow->delete;
}
if ($ENV{WEBGUI_TEST_DEBUG}) {
$Test->diag('Sessions: '.$SESSION->db->quickScalar('select count(*) from userSession'));
$Test->diag('Scratch : '.$SESSION->db->quickScalar('select count(*) from userSessionScratch'));
$Test->diag('Users : '.$SESSION->db->quickScalar('select count(*) from users'));
$Test->diag('Groups : '.$SESSION->db->quickScalar('select count(*) from groups'));
$Test->diag('mailQ : '.$SESSION->db->quickScalar('select count(*) from mailQueue'));
$Test->diag('Tags : '.$SESSION->db->quickScalar('select count(*) from assetVersionTag'));
$Test->diag('Assets : '.$SESSION->db->quickScalar('select count(*) from assetData'));
$Test->diag('Sessions : '.$SESSION->db->quickScalar('select count(*) from userSession'));
$Test->diag('Scratch : '.$SESSION->db->quickScalar('select count(*) from userSessionScratch'));
$Test->diag('Users : '.$SESSION->db->quickScalar('select count(*) from users'));
$Test->diag('Groups : '.$SESSION->db->quickScalar('select count(*) from groups'));
$Test->diag('mailQ : '.$SESSION->db->quickScalar('select count(*) from mailQueue'));
$Test->diag('Tags : '.$SESSION->db->quickScalar('select count(*) from assetVersionTag'));
$Test->diag('Assets : '.$SESSION->db->quickScalar('select count(*) from assetData'));
$Test->diag('Workflows: '.$SESSION->db->quickScalar('select count(*) from Workflow'));
}
while (my ($key, $value) = each %originalConfig) {
if (defined $value) {
@ -607,6 +628,22 @@ sub usersToDelete {
#----------------------------------------------------------------------------
=head2 workflowsToDelete ( $workflow, [$workflow, ...] )
Push a list of workflow objects onto the stack of groups to be automatically deleted
at the end of the test.
This is a class method.
=cut
sub workflowsToDelete {
my $class = shift;
push @workflowsToDelete, @_;
}
#----------------------------------------------------------------------------
=head1 BUGS
When trying to load the APR module, perl invariably throws an Out Of Memory