diff --git a/tests/subscriptions/subscriptionEngine.php b/tests/subscriptions/subscriptionEngine.php
new file mode 100644
index 0000000..3cc6337
--- /dev/null
+++ b/tests/subscriptions/subscriptionEngine.php
@@ -0,0 +1,104 @@
+owl_fs_root/lib/subscriptions/SubscriptionManager.inc");
+ require_once("$default->owl_fs_root/lib/subscriptions/SubscriptionEngine.inc");
+ $oSubscriptionManager = new SubscriptionManager();
+
+ echo "
- create some test subscriptions for subscription firing testing
";
+
+ // add some subscriptions
+ $iFolderID = 1;
+ echo "- Creating folder subscriptions
";
+ for ($tmpUserID = 1; $tmpUserID<=5; $tmpUserID++) {
+
+ if ($oSubscriptionManager->createSubscription($tmpUserID, $iFolderID, SubscriptionConstants::subscriptionType("FolderSubscription"))) {
+ echo "- created folder subscription folderID=$iFolderID for userID=$tmpUserID
";
+ } else {
+ echo "- folder subscription creation failed(" . $_SESSION["errorMessage"] . "): folderID=$iFolderID for userID=$tmpUserID
";
+ }
+ }
+ echo "
";
+ $iDocumentID = 5;
+ echo "- Creating document subscriptions
";
+ for ($tmpUserID = 6; $tmpUserID<=10; $tmpUserID++) {
+ if ($oSubscriptionManager->createSubscription($tmpUserID, $iDocumentID, SubscriptionConstants::subscriptionType("DocumentSubscription"))) {
+ echo "- created document subscription documentID=$iDocumentID for userID=$tmpUserID
";
+ } else {
+ echo "- document subscription creation failed(" . $_SESSION["errorMessage"] . "): documentID=$iDocumentID for userID=$tmpUserID
";
+ }
+ }
+ echo "
";
+
+ // test subscription firing
+ echo "- Testing subscription firing
";
+ require_once("../../phpSniff/phpTimer.class.php");
+ $timer = new phpTimer();
+
+ $iTotalCount = 0;
+
+ $timer->start('subscriptionFiring');
+ $timer->start('AddFolder');
+ $count = SubscriptionEngine::fireSubscription($iFolderID, SubscriptionConstants::subscriptionAlertType("AddFolder"),
+ SubscriptionConstants::subscriptionType("FolderSubscription"),
+ array( "newFolderName" => "Fictitious Folder",
+ "parentFolderName" => "Medical Research Council"));
+ $iTotalCount += $count;
+ $timer->stop('AddFolder');
+ $time = $timer->get_current('AddFolder');
+ echo "- AddFolder: processed alerts=$count; time=$time; subs/s=" . ($time/$count) . "
";
+
+ $timer->start('RemoveFolder');
+ $count = SubscriptionEngine::fireSubscription($iFolderID, SubscriptionConstants::subscriptionAlertType("RemoveFolder"),
+ SubscriptionConstants::subscriptionType("FolderSubscription"),
+ array( "removedFolderName" => "Fictitious Folder",
+ "parentFolderName" => "Medical Research Council"));
+ $iTotalCount += $count;
+ $timer->stop('RemoveFolder');
+ $time = $timer->get_current('RemoveFolder');
+ echo "- RemoveFolder: processed alerts=$count; time=$time; subs/s=" . ($time/$count) . "
";
+
+ $timer->start('AddDocument');
+ $count = SubscriptionEngine::fireSubscription($iFolderID, SubscriptionConstants::subscriptionAlertType("AddDocument"),
+ SubscriptionConstants::subscriptionType("FolderSubscription"),
+ array( "newDocumentName" => "Fictitious Document",
+ "folderName" => "Medical Research Council"));
+ $timer->stop('AddDocument');
+ $iTotalCount += $count;
+ $time = $timer->get_current('AddDocument');
+ echo "- AddDocument: processed alerts=$count; time=$time; subs/s=" . ($time/$count) . "
";
+
+ $timer->start('RemoveDocument');
+ $count = SubscriptionEngine::fireSubscription($iFolderID, SubscriptionConstants::subscriptionAlertType("RemoveDocument"),
+ SubscriptionConstants::subscriptionType("FolderSubscription"),
+ array( "removedDocumentName" => "Fictitious Document",
+ "folderName" => "Medical Research Council"));
+ $iTotalCount += $count;
+ $timer->stop('RemoveDocument');
+ $time = $timer->get_current('RemoveDocument');
+ echo "- RemoveDocument: processed alerts=$count; time=$time; subs/s=" . ($time/$count) . "
";
+
+ $timer->start('ModifyDocument');
+ $count = SubscriptionEngine::fireSubscription($iDocumentID, SubscriptionConstants::subscriptionAlertType("ModifyDocument"),
+ SubscriptionConstants::subscriptionType("DocumentSubscription"),
+ array( "modifiedDocumentName" => "dashboardBL.html"));
+ $iTotalCount += $count;
+ $timer->stop('ModifyDocument');
+ $time = $timer->get_current('ModifyDocument');
+ echo "- ModifyDocument: processed alerts=$count; time=$time; subs/s=" . ($time/$count) . "
";
+ $timer->stop('subscriptionFiring');
+
+ $time = $timer->get_current('subscriptionFiring');
+ echo "
- All Subscriptions: processed alerts=$iTotalCount; time=$time; subs/s=" . ($time/$iTotalCount) . "
";
+
+ // cleanup silently
+ for ($i = 1; $i<=10; $i++) {
+ if ($i<=5) {
+ $oSubscriptionManager->removeSubscription($i, $iFolderID, SubscriptionConstants::subscriptionType("FolderSubscription"));
+ } else {
+ $oSubscriptionManager->removeSubscription($i, $iDocumentID, SubscriptionConstants::subscriptionType("DocumentSubscription"));
+ }
+ }
+}
+?>