csantanapr closed pull request #157: add trigger rules to existing tests
URL: https://github.com/apache/incubator-openwhisk-package-cloudant/pull/157
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/actions/changesWebAction.js b/actions/changesWebAction.js
index 7078b73..3f02994 100644
--- a/actions/changesWebAction.js
+++ b/actions/changesWebAction.js
@@ -145,7 +145,7 @@ function main(params) {
                 return getTrigger(db, triggerID);
             })
             .then(trigger => {
-                if (!trigger.status.active) {
+                if (trigger.status && trigger.status.active === false) {
                     reject(sendError(400, `${params.triggerName} cannot be 
updated because it is disabled`));
                 }
                 if (params.filter || params.query_params) {
@@ -380,9 +380,7 @@ function updateTrigger(triggerDB, triggerID, existing, 
params) {
     })
     .then(trigger => {
         for (var key in params) {
-            if (params[key]) {
-                trigger[key] = params[key];
-            }
+            trigger[key] = params[key];
         }
         var status = {
             'active': true,
diff --git a/installCatalog.sh b/installCatalog.sh
index 0aef5a6..cfa5521 100755
--- a/installCatalog.sh
+++ b/installCatalog.sh
@@ -74,7 +74,7 @@ fi
 
 # Cloudant feed action
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/changes "$PACKAGE_HOME/actions/changes.js" \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/changes "$PACKAGE_HOME/actions/changes.js" \
     -t 90000 \
     -a feed true \
     -a description 'Database change feed' \
@@ -83,102 +83,102 @@ $WSK_CLI -i --apihost "$EDGEHOST" action update --auth 
"$AUTH" cloudant/changes
 
 # Cloudant web feed action
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudantWeb/changesWebAction "$PACKAGE_HOME/actions/changesWebAction.js" \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudantWeb/changesWebAction "$PACKAGE_HOME/actions/changesWebAction.js" \
     -a description 'Create/Delete a trigger in cloudant provider Database' \
     --web true
 
 # Cloudant account actions
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/create-database \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/create-database \
     "$PACKAGE_HOME/actions/account-actions/create-database.js" \
     -a description 'Create Cloudant database' \
     -a parameters '[ {"name":"dbname", "required":true} ]'
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/read-database \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/read-database \
     "$PACKAGE_HOME/actions/account-actions/read-database.js" \
     -a description 'Read Cloudant database' \
     -a parameters '[ {"name":"dbname", "required":true} ]'
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/delete-database \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/delete-database \
     "$PACKAGE_HOME/actions/account-actions/delete-database.js" \
     -a description 'Delete Cloudant database' \
     -a parameters '[ {"name":"dbname", "required":true} ]'
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/list-all-databases \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/list-all-databases \
     "$PACKAGE_HOME/actions/account-actions/list-all-databases.js" \
     -a description 'List all Cloudant databases'
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/read-updates-feed \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/read-updates-feed \
     "$PACKAGE_HOME/actions/account-actions/read-updates-feed.js" \
     -a description 'Read updates feed from Cloudant account (non-continuous)' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"params", 
"required":false} ]'
 
 # Cloudant database actions
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/create-document \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/create-document \
     "$PACKAGE_HOME/actions/database-actions/create-document.js" \
     -a description 'Create document in database' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"doc", 
"required":true, "description": "The JSON document to insert"}, 
{"name":"params", "required":false} ]' \
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" cloudant/read \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/read \
     "$PACKAGE_HOME/actions/database-actions/read-document.js" \
     -a description 'Read document from database' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"id", 
"required":true, "description": "The Cloudant document id to fetch"}, 
{"name":"params", "required":false}]' \
     -p id ''
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/read-document \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/read-document \
     "$PACKAGE_HOME/actions/database-actions/read-document.js" \
     -a description 'Read document from database' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"docid", 
"required":true, "description": "The Cloudant document id to fetch"}, 
{"name":"params", "required":false}]' \
     -p docid ''
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" cloudant/write \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/write \
     "$PACKAGE_HOME/actions/database-actions/write-document.js" \
     -a description 'Write document in database' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"doc", 
"required":true} ]' \
     -p doc '{}'
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/update-document \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/update-document \
     "$PACKAGE_HOME/actions/database-actions/update-document.js" \
     -a description 'Update document in database' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"doc", 
"required":true}, {"name":"params", "required":false} ]' \
     -p doc '{}'
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/delete-document \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/delete-document \
     "$PACKAGE_HOME/actions/database-actions/delete-document.js" \
     -a description 'Delete document from database' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"docid", 
"required":true, "description": "The Cloudant document id to delete"},  
{"name":"docrev", "required":true, "description": "The document revision 
number"} ]' \
     -p docid '' \
     -p docrev ''
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/list-documents \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/list-documents \
     "$PACKAGE_HOME/actions/database-actions/list-documents.js" \
     -a description 'List all docs from database' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"params", 
"required":false} ]'
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/list-design-documents \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/list-design-documents \
     "$PACKAGE_HOME/actions/database-actions/list-design-documents.js" \
     -a description 'List design documents from database' \
     -a parameters '[ {"name":"dbname", "required":true}, 
{"name":"includedocs", "required":false} ]' \
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/create-query-index \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/create-query-index \
     "$PACKAGE_HOME/actions/database-actions/create-query-index.js" \
     -a description 'Create a Cloudant Query index into database' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"index", 
"required":true} ]' \
     -p index ''
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/list-query-indexes \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/list-query-indexes \
     "$PACKAGE_HOME/actions/database-actions/list-query-indexes.js" \
     -a description 'List Cloudant Query indexes from database' \
     -a parameters '[ {"name":"dbname", "required":true} ]' \
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/exec-query-find \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/exec-query-find \
     "$PACKAGE_HOME/actions/database-actions/exec-query-find.js" \
     -a description 'Execute query against Cloudant Query index' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"query", 
"required":true} ]' \
     -p query ''
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/exec-query-search \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/exec-query-search \
     "$PACKAGE_HOME/actions/database-actions/exec-query-search.js" \
     -a description 'Execute query against Cloudant search' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"docid", 
"required":true}, {"name":"indexname", "required":true}, {"name":"search", 
"required":true} ]' \
@@ -186,39 +186,39 @@ $WSK_CLI -i --apihost "$EDGEHOST" action update --auth 
"$AUTH" cloudant/exec-que
     -p indexname '' \
     -p search ''
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/exec-query-view \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/exec-query-view \
     "$PACKAGE_HOME/actions/database-actions/exec-query-view.js" \
     -a description 'Call view in design document from database' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"docid", 
"required":true}, {"name":"viewname", "required":true}, {"name":"params", 
"required":false} ]' \
     -p docid '' \
     -p viewname ''
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/manage-bulk-documents \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/manage-bulk-documents \
     "$PACKAGE_HOME/actions/database-actions/manage-bulk-documents.js" \
     -a description 'Create, Update, and Delete documents in bulk' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"docs", 
"required":true}, {"name":"params", "required":false} ]' \
     -p docs '{}'
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/delete-view \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/delete-view \
     "$PACKAGE_HOME/actions/database-actions/delete-view.js" \
     -a description 'Delete view from design document' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"docid", 
"required":true}, {"name":"viewname", "required":true}, {"name":"params", 
"required":false} ]' \
     -p docid '' \
     -p viewname ''
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/delete-query-index \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/delete-query-index \
     "$PACKAGE_HOME/actions/database-actions/delete-query-index.js" \
     -a description 'Delete index from design document' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"docid", 
"required":true}, {"name":"indexname", "required":true}, {"name":"params", 
"required":false} ]' \
     -p docid '' \
     -p indexname ''
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/read-changes-feed \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/read-changes-feed \
     "$PACKAGE_HOME/actions/database-actions/read-changes-feed.js" \
     -a description 'Read Cloudant database changes feed (non-continuous)' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"params", 
"required":false} ]'
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/create-attachment \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/create-attachment \
     "$PACKAGE_HOME/actions/database-actions/create-update-attachment.js" \
     -a description 'Create document attachment in database' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"docid", 
"required":true}, {"name":"docrev", "required":true}, {"name":"attachment", 
"required":true}, {"name":"attachmentname", "required":true}, 
{"name":"contenttype", "required":true}, {"name":"params", "required":false} ]' 
\
@@ -228,14 +228,14 @@ $WSK_CLI -i --apihost "$EDGEHOST" action update --auth 
"$AUTH" cloudant/create-a
     -p attachmentname '' \
     -p contenttype ''
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/read-attachment \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/read-attachment \
     "$PACKAGE_HOME/actions/database-actions/read-attachment.js" \
     -a description 'Read document attachment from database' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"docid", 
"required":true}, {"name":"attachmentname", "required":true}, {"name":"params", 
"required":false} ]' \
     -p docid '' \
     -p attachmentname ''
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/update-attachment \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/update-attachment \
     "$PACKAGE_HOME/actions/database-actions/create-update-attachment.js" \
     -a description 'Update document attachment in database' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"docid", 
"required":true}, {"name":"docrev", "required":true}, {"name":"attachment", 
"required":true}, {"name":"attachmentname", "required":true}, 
{"name":"contenttype", "required":true}, {"name":"params", "required":false} ]' 
\
@@ -245,7 +245,7 @@ $WSK_CLI -i --apihost "$EDGEHOST" action update --auth 
"$AUTH" cloudant/update-a
     -p attachmentname '' \
     -p contenttype ''
 
-$WSK_CLI -i --apihost "$EDGEHOST" action update --auth "$AUTH" 
cloudant/delete-attachment \
+$WSK_CLI -i --apihost "$EDGEHOST" action update --kind nodejs:6 --auth "$AUTH" 
cloudant/delete-attachment \
     "$PACKAGE_HOME/actions/database-actions/delete-attachment.js" \
     -a description 'Delete document attachment from database' \
     -a parameters '[ {"name":"dbname", "required":true}, {"name":"docid", 
"required":true}, {"name":"docrev", "required":true}, {"name":"attachmentname", 
"required":true}, {"name":"params", "required":false} ]' \
diff --git a/tests/src/test/scala/system/health/CloudantHealthFeedTests.scala 
b/tests/src/test/scala/system/health/CloudantHealthFeedTests.scala
index c9e3d01..42e842c 100644
--- a/tests/src/test/scala/system/health/CloudantHealthFeedTests.scala
+++ b/tests/src/test/scala/system/health/CloudantHealthFeedTests.scala
@@ -21,11 +21,7 @@ import java.time.{Clock, Instant}
 import org.junit.runner.RunWith
 import org.scalatest.{BeforeAndAfterEach, FlatSpec, Inside}
 import org.scalatest.junit.JUnitRunner
-import common.TestHelpers
-import common.Wsk
-import common.WskActorSystem
-import common.WskProps
-import common.WskTestHelpers
+import common._
 import spray.json.DefaultJsonProtocol.IntJsonFormat
 import spray.json.DefaultJsonProtocol.StringJsonFormat
 import spray.json.DefaultJsonProtocol.BooleanJsonFormat
@@ -46,6 +42,7 @@ class CloudantHealthFeedTests
 
     val wskprops = WskProps()
     val wsk = new Wsk
+    val defaultAction = Some(TestUtils.getTestActionFilename("hello.js"))
     val myCloudantCreds = 
CloudantUtil.Credential.makeFromVCAPFile("cloudantNoSQLDB", 
this.getClass.getSimpleName)
 
     behavior of "Cloudant Health trigger service"
@@ -66,6 +63,8 @@ class CloudantHealthFeedTests
         (wp, assetHelper) =>
             implicit val wskprops = wp // shadow global props and make implicit
             val triggerName = 
s"dummyCloudantTrigger-${System.currentTimeMillis}"
+            val ruleName = s"dummyAlarmsRule-${System.currentTimeMillis}"
+            val actionName = s"dummyAlarmsAction-${System.currentTimeMillis}"
             val packageName = "dummyCloudantPackage"
             val feed = "changes"
 
@@ -79,6 +78,11 @@ class CloudantHealthFeedTests
                 (pkg, name) => pkg.bind("/whisk.system/cloudant", name)
             }
 
+            // create action
+            assetHelper.withCleaner(wsk.action, actionName) { (action, name) =>
+                action.create(name, defaultAction)
+            }
+
             // create whisk stuff
             println(s"Creating trigger: $triggerName")
             val feedCreationResult = assetHelper.withCleaner(wsk.trigger, 
triggerName) {
@@ -89,7 +93,11 @@ class CloudantHealthFeedTests
                         "host" -> myCloudantCreds.host().toJson,
                         "dbname" -> myCloudantCreds.dbname.toJson))
             }
-            feedCreationResult.stdout should include("ok")
+
+            // create rule
+            assetHelper.withCleaner(wsk.rule, ruleName) { (rule, name) =>
+                rule.create(name, trigger = triggerName, action = actionName)
+            }
 
             val activationsBeforeChange = wsk.activation.pollFor(N = 1, 
Some(triggerName)).length
             activationsBeforeChange should be(0)
@@ -121,10 +129,12 @@ class CloudantHealthFeedTests
             activationsAfterDelete should be(1)
     }
 
-    it should "fire changes since sequence 0 of DB" in 
withAssetCleaner(wskprops) {
+    it should "fire changes when a document is deleted" in 
withAssetCleaner(wskprops) {
         (wp, assetHelper) =>
             implicit val wskprops = wp // shadow global props and make implicit
             val triggerName = 
s"dummyCloudantTrigger-${System.currentTimeMillis}"
+            val ruleName = s"dummyAlarmsRule-${System.currentTimeMillis}"
+            val actionName = s"dummyAlarmsAction-${System.currentTimeMillis}"
             val packageName = "dummyCloudantPackage"
             val feed = "changes"
 
@@ -137,37 +147,9 @@ class CloudantHealthFeedTests
                 (pkg, name) => pkg.bind("/whisk.system/cloudant", name)
             }
 
-            println(s"Creating trigger: $triggerName")
-            val feedCreationResult = assetHelper.withCleaner(wsk.trigger, 
triggerName) {
-                (trigger, name) =>
-                    trigger.create(name, feed = Some(s"$packageName/$feed"), 
parameters = Map(
-                        "username" -> myCloudantCreds.user.toJson,
-                        "password" -> myCloudantCreds.password.toJson,
-                        "host" -> myCloudantCreds.host().toJson,
-                        "dbname" -> myCloudantCreds.dbname.toJson,
-                        "maxTriggers" -> 100000000.toJson,
-                        "since" -> "0".toJson))
-            }
-            feedCreationResult.stdout should include("ok")
-
-            val activations = wsk.activation.pollFor(N = 1, Some(triggerName), 
retries = 60).length
-            activations should be(1)
-    }
-
-    it should "fire changes when a document is deleted" in 
withAssetCleaner(wskprops) {
-        (wp, assetHelper) =>
-            implicit val wskprops = wp // shadow global props and make implicit
-            val triggerName = 
s"dummyCloudantTrigger-${System.currentTimeMillis}"
-            val packageName = "dummyCloudantPackage"
-            val feed = "changes"
-
-            val packageGetResult = wsk.pkg.get("/whisk.system/cloudant")
-            println("Fetching cloudant package.")
-            packageGetResult.stdout should include("ok")
-
-            println("Creating cloudant package binding.")
-            assetHelper.withCleaner(wsk.pkg, packageName) {
-                (pkg, name) => pkg.bind("/whisk.system/cloudant", name)
+            // create action
+            assetHelper.withCleaner(wsk.action, actionName) { (action, name) =>
+                action.create(name, defaultAction)
             }
 
             println(s"Creating trigger: $triggerName")
@@ -180,7 +162,11 @@ class CloudantHealthFeedTests
                         "dbname" -> myCloudantCreds.dbname.toJson,
                         "maxTriggers" -> (-1).toJson))
             }
-            feedCreationResult.stdout should include("ok")
+
+            // create rule
+            assetHelper.withCleaner(wsk.rule, ruleName) { (rule, name) =>
+                rule.create(name, trigger = triggerName, action = actionName)
+            }
 
             val activationsBeforeDelete = wsk.activation.pollFor(N = 1, 
Some(triggerName)).length
             activationsBeforeDelete should be(0)
@@ -200,7 +186,7 @@ class CloudantHealthFeedTests
             val packageName = "dummyCloudantPackage"
             val feed = "changes"
 
-            // the package alarms should be there
+            // the package cloudant should be there
             val packageGetResult = wsk.pkg.get("/whisk.system/cloudant")
             println("fetched package cloudant")
             packageGetResult.stdout should include("ok")
@@ -225,7 +211,7 @@ class CloudantHealthFeedTests
             val filter = "test_filter/fruit"
             val queryParams = JsObject("type" -> JsString("tomato"))
 
-            // create whisk stuff
+            // create trigger feed
             val feedCreationResult = assetHelper.withCleaner(wsk.trigger, 
triggerName, confirmDelete = false) {
                 (trigger, name) =>
                     trigger.create(name, feed = Some(s"$packageName/$feed"), 
parameters = Map(
@@ -286,7 +272,7 @@ class CloudantHealthFeedTests
             val packageName = "dummyCloudantPackage"
             val feed = "changes"
 
-            // the package alarms should be there
+            // the package cloudant should be there
             val packageGetResult = wsk.pkg.get("/whisk.system/cloudant")
             println("fetched package cloudant")
             packageGetResult.stdout should include("ok")
@@ -308,7 +294,7 @@ class CloudantHealthFeedTests
             val filter = "test_filter/fruit"
             val queryParams = JsObject("type" -> JsString("tomato"))
 
-            // create whisk stuff
+            // create trigger feed
             val feedCreationResult = assetHelper.withCleaner(wsk.trigger, 
triggerName, confirmDelete = false) {
                 (trigger, name) =>
                     trigger.create(name, feed = Some(s"$packageName/$feed"), 
parameters = Map(
diff --git a/tests/src/test/scala/system/packages/CloudantFeedTests.scala 
b/tests/src/test/scala/system/packages/CloudantFeedTests.scala
index f6f1c9e..e0be2db 100644
--- a/tests/src/test/scala/system/packages/CloudantFeedTests.scala
+++ b/tests/src/test/scala/system/packages/CloudantFeedTests.scala
@@ -39,6 +39,7 @@ class CloudantFeedTests
     val wskprops = WskProps()
     val wsk = new Wsk
     val myCloudantCreds = 
CloudantUtil.Credential.makeFromVCAPFile("cloudantNoSQLDB", 
this.getClass.getSimpleName)
+    val defaultAction = Some(TestUtils.getTestActionFilename("hello.js"))
 
     behavior of "Cloudant trigger service"
 
@@ -203,6 +204,8 @@ class CloudantFeedTests
         (wp, assetHelper) =>
             implicit val wskprops = wp // shadow global props and make implicit
             val triggerName = 
s"dummyCloudantTrigger-${System.currentTimeMillis}"
+            val ruleName = s"dummyAlarmsRule-${System.currentTimeMillis}"
+            val actionName = s"dummyAlarmsAction-${System.currentTimeMillis}"
             val packageName = "dummyCloudantPackage"
             val feed = "changes"
 
@@ -218,6 +221,11 @@ class CloudantFeedTests
                     (pkg, name) => pkg.bind("/whisk.system/cloudant", name)
                 }
 
+                // create action
+                assetHelper.withCleaner(wsk.action, actionName) { (action, 
name) =>
+                    action.create(name, defaultAction)
+                }
+
                 println("Creating cloudant trigger feed.")
                 val feedCreationResult = assetHelper.withCleaner(wsk.trigger, 
triggerName, confirmDelete = false) {
                     (trigger, name) =>
@@ -228,7 +236,11 @@ class CloudantFeedTests
                             "dbname" -> myCloudantCreds.dbname.toJson,
                             "maxTriggers" -> 1.toJson))
                 }
-                feedCreationResult.stdout should include("ok")
+
+                // create rule
+                assetHelper.withCleaner(wsk.rule, ruleName) { (rule, name) =>
+                    rule.create(name, trigger = triggerName, action = 
actionName)
+                }
 
                 // Create test docs in cloudant and assert that document was 
inserted successfully
                 println("Creating a test doc-1 in the cloudant")
@@ -258,6 +270,8 @@ class CloudantFeedTests
         (wp, assetHelper) =>
             implicit val wskprops = wp // shadow global props and make implicit
             val triggerName = 
s"dummyCloudantTrigger-${System.currentTimeMillis}"
+            val ruleName = s"dummyAlarmsRule-${System.currentTimeMillis}"
+            val actionName = s"dummyAlarmsAction-${System.currentTimeMillis}"
             val packageName = "dummyCloudantPackage"
             val feed = "changes"
 
@@ -273,6 +287,11 @@ class CloudantFeedTests
                     (pkg, name) => pkg.bind("/whisk.system/cloudant", name)
                 }
 
+                // create action
+                assetHelper.withCleaner(wsk.action, actionName) { (action, 
name) =>
+                    action.create(name, defaultAction)
+                }
+
                 //Create filter design doc
                 val filterDesignDoc = 
CloudantUtil.createDesignFromFile(CloudantUtil.FILTER_DDOC_PATH).toString
                 val getResponse = CloudantUtil.createDocument(myCloudantCreds, 
filterDesignDoc)
@@ -289,7 +308,11 @@ class CloudantFeedTests
                             "filter" -> "test_filter/fruit".toJson,
                             "query_params" -> JsObject("type" -> 
JsString("tomato"))))
                 }
-                feedCreationResult.stdout should include("ok")
+
+                // create rule
+                assetHelper.withCleaner(wsk.rule, ruleName) { (rule, name) =>
+                    rule.create(name, trigger = triggerName, action = 
actionName)
+                }
 
                 // Create test docs in cloudant and assert that document was 
inserted successfully
                 println("Creating a test doc-1 in the cloudant")
@@ -513,9 +536,10 @@ class CloudantFeedTests
         (wp, assetHelper) =>
             implicit val wskProps = wp // shadow global props and make implicit
             val triggerName = 
s"dummyCloudantTrigger-${System.currentTimeMillis}"
+            val ruleName = s"dummyAlarmsRule-${System.currentTimeMillis}"
+            val actionName = s"dummyAlarmsAction-${System.currentTimeMillis}"
             val packageName = "dummyCloudantPackage"
             val feed = "changes"
-            val actionName = s"$packageName/$feed"
 
             try {
                 CloudantUtil.setUp(myCloudantCreds)
@@ -529,6 +553,11 @@ class CloudantFeedTests
                     (pkg, name) => pkg.bind("/whisk.system/cloudant", name)
                 }
 
+                // create action
+                assetHelper.withCleaner(wsk.action, actionName) { (action, 
name) =>
+                    action.create(name, defaultAction)
+                }
+
                 //Create filter design doc
                 val filterDesignDoc = 
CloudantUtil.createDesignFromFile(CloudantUtil.FILTER_DDOC_PATH).toString
                 val getResponse = CloudantUtil.createDocument(myCloudantCreds, 
filterDesignDoc)
@@ -545,7 +574,11 @@ class CloudantFeedTests
                             "filter" -> "test_filter/fruit".toJson,
                             "query_params" -> JsObject("type" -> 
JsString("tomato"))))
                 }
-                feedCreationResult.stdout should include("ok")
+
+                // create rule
+                assetHelper.withCleaner(wsk.rule, ruleName) { (rule, name) =>
+                    rule.create(name, trigger = triggerName, action = 
actionName)
+                }
 
                 // Create test docs in cloudant and assert that document was 
inserted successfully
                 println("Creating a test doc-1 in the cloudant")
@@ -567,7 +600,7 @@ class CloudantFeedTests
                 noNewActivations should be(1)
 
                 println("Updating trigger query_params.")
-                val feedUpdateResult = wsk.action.invoke(actionName, 
parameters = Map(
+                val feedUpdateResult = 
wsk.action.invoke(s"$packageName/$feed", parameters = Map(
                     "triggerName" -> triggerName.toJson,
                     "lifecycleEvent" -> "UPDATE".toJson,
                     "authKey" -> wskProps.authKey.toJson,
@@ -582,7 +615,7 @@ class CloudantFeedTests
                 println("Giving the trigger service a moment to process the 
update")
                 Thread.sleep(10000)
 
-                val runResult = wsk.action.invoke(actionName, parameters = Map(
+                val runResult = wsk.action.invoke(s"$packageName/$feed", 
parameters = Map(
                     "triggerName" -> triggerName.toJson,
                     "lifecycleEvent" -> "READ".toJson,
                     "authKey" -> wskProps.authKey.toJson
diff --git 
a/tests/src/test/scala/system/redundancy/CloudantRedundancyTests.scala 
b/tests/src/test/scala/system/redundancy/CloudantRedundancyTests.scala
index c029aee..e78cc24 100644
--- a/tests/src/test/scala/system/redundancy/CloudantRedundancyTests.scala
+++ b/tests/src/test/scala/system/redundancy/CloudantRedundancyTests.scala
@@ -18,7 +18,7 @@ package system.redundancy
 
 import com.jayway.restassured.RestAssured
 import com.jayway.restassured.config.SSLConfig
-import common.{WhiskProperties, Wsk, WskProps, WskTestHelpers}
+import common._
 import org.junit.runner.RunWith
 import org.scalatest.junit.JUnitRunner
 import org.scalatest.{BeforeAndAfterAll, FlatSpec, Matchers}
@@ -47,12 +47,13 @@ class CloudantRedundancyTests
     val wskprops = WskProps()
     val wsk = new Wsk
     val myCloudantCreds = 
CloudantUtil.Credential.makeFromVCAPFile("cloudantNoSQLDB", 
this.getClass.getSimpleName)
-    var edgeHost = WhiskProperties.getEdgeHost
+    val edgeHost = WhiskProperties.getEdgeHost
     val auth = WhiskProperties.getBasicAuth
     val user = auth.fst
     val password = auth.snd
 
-    var endpointPrefix = 
s"https://$user:$password@$edgeHost/cloudanttrigger/worker0/";
+    val endpointPrefix = 
s"https://$user:$password@$edgeHost/cloudanttrigger/worker0/";
+    val defaultAction = Some(TestUtils.getTestActionFilename("hello.js"))
 
     behavior of "Cloudant redundancy tests"
 
@@ -60,6 +61,8 @@ class CloudantRedundancyTests
         (wp, assetHelper) =>
             implicit val wskprops = wp // shadow global props and make implicit
             val triggerName = 
s"dummyCloudantTrigger-${System.currentTimeMillis}"
+            val ruleName = s"dummyAlarmsRule-${System.currentTimeMillis}"
+            val actionName = s"dummyAlarmsAction-${System.currentTimeMillis}"
             val packageName = "dummyCloudantPackage"
             val feed = "changes"
 
@@ -76,6 +79,11 @@ class CloudantRedundancyTests
                     (pkg, name) => pkg.bind("/whisk.system/cloudant", name)
                 }
 
+                // create action
+                assetHelper.withCleaner(wsk.action, actionName) { (action, 
name) =>
+                    action.create(name, defaultAction)
+                }
+
                 // create whisk stuff
                 val feedCreationResult = assetHelper.withCleaner(wsk.trigger, 
triggerName, confirmDelete = false) {
                     (trigger, name) =>
@@ -85,7 +93,11 @@ class CloudantRedundancyTests
                             "host" -> myCloudantCreds.host().toJson,
                             "dbname" -> myCloudantCreds.dbname.toJson))
                 }
-                feedCreationResult.stdout should include("ok")
+
+                // create rule
+                assetHelper.withCleaner(wsk.rule, ruleName) { (rule, name) =>
+                    rule.create(name, trigger = triggerName, action = 
actionName)
+                }
 
                 Thread.sleep(3000)
 
@@ -131,6 +143,8 @@ class CloudantRedundancyTests
         (wp, assetHelper) =>
             implicit val wskprops = wp // shadow global props and make implicit
             val triggerName = 
s"dummyCloudantTrigger-${System.currentTimeMillis}"
+            val ruleName = s"dummyAlarmsRule-${System.currentTimeMillis}"
+            val actionName = s"dummyAlarmsAction-${System.currentTimeMillis}"
             val packageName = "dummyCloudantPackage"
             val feed = "changes"
 
@@ -147,6 +161,11 @@ class CloudantRedundancyTests
                     (pkg, name) => pkg.bind("/whisk.system/cloudant", name)
                 }
 
+                // create action
+                assetHelper.withCleaner(wsk.action, actionName) { (action, 
name) =>
+                    action.create(name, defaultAction)
+                }
+
                 // create whisk stuff
                 val feedCreationResult = assetHelper.withCleaner(wsk.trigger, 
triggerName, confirmDelete = false) {
                     (trigger, name) =>
@@ -156,7 +175,11 @@ class CloudantRedundancyTests
                             "host" -> myCloudantCreds.host().toJson,
                             "dbname" -> myCloudantCreds.dbname.toJson))
                 }
-                feedCreationResult.stdout should include("ok")
+
+                // create rule
+                assetHelper.withCleaner(wsk.rule, ruleName) { (rule, name) =>
+                    rule.create(name, trigger = triggerName, action = 
actionName)
+                }
 
                 Thread.sleep(3000)
 


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to