Enable dependencies in the metadata for BAD entities
Allow Channels and Procedures to store dependencies on
Datasets and Functions
Prevent dropping of these dependencies
Add Error tests
Change-Id: Ic6ac2daad03844a042aded8e17bb231a06f59cbe
diff --git a/asterix-bad/src/test/resources/runtimets/testsuite.xml b/asterix-bad/src/test/resources/runtimets/testsuite.xml
index 1b2844b..3c72a14 100644
--- a/asterix-bad/src/test/resources/runtimets/testsuite.xml
+++ b/asterix-bad/src/test/resources/runtimets/testsuite.xml
@@ -22,6 +22,11 @@
QueryFileExtension=".sqlpp">
<test-group name="channel">
<test-case FilePath="procedure">
+ <compilation-unit name="create_procedure_check_metadata">
+ <output-dir compare="Text">create_procedure_check_metadata</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="procedure">
<compilation-unit name="delete_procedure">
<output-dir compare="Text">delete_procedure</output-dir>
</compilation-unit>
@@ -52,13 +57,50 @@
</compilation-unit>
</test-case>
<test-case FilePath="procedure">
- <compilation-unit name="repetitive_insert_procedure">
- <output-dir compare="Text">repetitive_insert_procedure</output-dir>
+ <compilation-unit name="insert_procedure_drop_dataset">
+ <output-dir compare="Text">insert_procedure_drop_dataset</output-dir>
+ <expected-error>Cannot alter dataset channels.UserLocations. two.addMe(Procedure) depends on it!</expected-error>
</compilation-unit>
</test-case>
- <test-case FilePath="channel">
- <compilation-unit name="room_occupants">
- <output-dir compare="Text">room_occupants</output-dir>
+ <test-case FilePath="procedure">
+ <compilation-unit name="insert_procedure_drop_dataverse">
+ <output-dir compare="Text">insert_procedure_drop_dataverse</output-dir>
+ <expected-error>Cannot drop dataverse channels. two.addMe(Procedure) depends on it!</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="procedure">
+ <compilation-unit name="delete_procedure_drop_dataset">
+ <output-dir compare="Text">delete_procedure_drop_dataset</output-dir>
+ <expected-error>Cannot alter dataset channels.UserLocations. two.deleteAll(Procedure) depends on it!</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="procedure">
+ <compilation-unit name="delete_procedure_drop_function">
+ <output-dir compare="Text">delete_procedure_drop_function</output-dir>
+ <expected-error>Cannot drop function two.really_contains@2. two.deleteSome(Procedure) depends on it!</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="procedure">
+ <compilation-unit name="delete_procedure_drop_index">
+ <output-dir compare="Text">delete_procedure_drop_index</output-dir>
+ <expected-error>Cannot alter dataset channels.UserLocations. two.deleteAll(Procedure) depends on it!</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="procedure">
+ <compilation-unit name="query_procedure_drop_dataset">
+ <output-dir compare="Text">query_procedure_drop_dataset</output-dir>
+ <expected-error>Cannot alter dataset channels.UserLocations. two.findMe(Procedure) depends on it!</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="procedure">
+ <compilation-unit name="query_procedure_drop_function">
+ <output-dir compare="Text">query_procedure_drop_function</output-dir>
+ <expected-error>Cannot drop function channels.really_contains@2. two.selectSome(Procedure) depends on it!</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="procedure">
+ <compilation-unit name="repetitive_insert_procedure">
+ <output-dir compare="Text">repetitive_insert_procedure</output-dir>
</compilation-unit>
</test-case>
<test-case FilePath="channel">
@@ -87,6 +129,35 @@
</compilation-unit>
</test-case>
<test-case FilePath="channel">
+ <compilation-unit name="drop_function">
+ <output-dir compare="Text">drop_function</output-dir>
+ <expected-error>Cannot drop function channels.NearbyTweetsContainingText@2. two.nearbyTweetChannel(Channel) depends on it!</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="channel">
+ <compilation-unit name="drop_results">
+ <output-dir compare="Text">drop_results</output-dir>
+ <expected-error>Cannot alter dataset two.nearbyTweetChannelResults. two.nearbyTweetChannel(Channel) depends on it!</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="channel">
+ <compilation-unit name="drop_subscriptions">
+ <output-dir compare="Text">drop_subscriptions</output-dir>
+ <expected-error>Cannot alter dataset two.nearbyTweetChannelSubscriptions. two.nearbyTweetChannel(Channel) depends on it!</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="channel">
+ <compilation-unit name="drop_function_dataverse">
+ <output-dir compare="Text">drop_function_dataverse</output-dir>
+ <expected-error>Cannot drop dataverse channels. two.nearbyTweetChannel(Channel) depends on it!</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="channel">
+ <compilation-unit name="room_occupants">
+ <output-dir compare="Text">room_occupants</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="channel">
<compilation-unit name="disasters_with_friends">
<output-dir compare="Text">disasters_with_friends</output-dir>
</compilation-unit>