Introducing BAD-CQ
a. Active datasets
Active datasets are like regular datasets that can be
inserted/upserted/deleted with statements and fed with data feeds
directly. Records stored in active datasets contain an additional
active timestamp field (implemented using meta-records). The active
timestamp is assigned inside the storage, right before persistence.
This patch introduced new syntactic components to enable creating
active datasets. It also created a BAD query translator to make sure
all DML statements can operate on active datasets.
b. Continuous channels
Continuous channels are built on repetitive channels but provide
continuous query semantics. To ensure that, this patch introduced an
active timestamp manager on each node to manage channel execution
times locally. Active timestamp managers are a local class that is
tied to a JVM on a node. There is also an optimization rule for
ensuring continuous query semantics in a distributed environment.
c. Active functions
Active functions are used for helping users create continuous queries.
They were added through the extension APIs.
d. BAD Islands
As an application built on BAD-CQ, BAD islands show how we connect
data channels to data feeds and share data between different BAD
systems declaratively.
e. Cleanups and fixes
This patch also cleaned up the BAD codebase and introduced tests for
metadata, optimizer, and runtime. It fixed a type inferencing issue in
InsertBrokerNotifierForChannelRule when there is a group-by in the
query. Also, it optimized the broker notification delivery to use
separate threads.
Change-Id: I77263c3fedd03205b83fe13978649b33fccda11c
diff --git a/asterix-bad/src/test/resources/metadata/queries/bad_cq/continuous_channel/continuous_channel.1.ddl.sqlpp b/asterix-bad/src/test/resources/metadata/queries/bad_cq/continuous_channel/continuous_channel.1.ddl.sqlpp
new file mode 100644
index 0000000..6f47dd1
--- /dev/null
+++ b/asterix-bad/src/test/resources/metadata/queries/bad_cq/continuous_channel/continuous_channel.1.ddl.sqlpp
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+DROP DATAVERSE test IF EXISTS;
+CREATE DATAVERSE test;
+USE test;
+
+CREATE TYPE Tweet AS OPEN {
+ tid: bigint,
+ area_code: string,
+ text: string,
+ location: point,
+ timestamp: datetime
+};
+
+CREATE ACTIVE DATASET Tweets(Tweet) PRIMARY KEY tid;
+
+CREATE TYPE School AS OPEN {
+ sid: bigint,
+ area_code: string,
+ name: string
+};
+CREATE DATASET Schools(School) PRIMARY KEY sid;
\ No newline at end of file
diff --git a/asterix-bad/src/test/resources/metadata/queries/bad_cq/continuous_channel/continuous_channel.2.update.sqlpp b/asterix-bad/src/test/resources/metadata/queries/bad_cq/continuous_channel/continuous_channel.2.update.sqlpp
new file mode 100644
index 0000000..39eef7a
--- /dev/null
+++ b/asterix-bad/src/test/resources/metadata/queries/bad_cq/continuous_channel/continuous_channel.2.update.sqlpp
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+USE test;
+
+CREATE FEED TweetFeed WITH {
+ "adapter-name" : "localfs",
+ "path" : "asterix_nc1:///Users/xikuiw/Projects/NotBAD/tweets_publisher/output/tweets.txt",
+ "type-name":"Tweet",
+ "format" : "adm",
+ "insert-feed" : true
+};
+
+CONNECT FEED TweetFeed TO DATASET Tweets;
\ No newline at end of file
diff --git a/asterix-bad/src/test/resources/metadata/queries/bad_cq/continuous_channel/continuous_channel.3.update.sqlpp b/asterix-bad/src/test/resources/metadata/queries/bad_cq/continuous_channel/continuous_channel.3.update.sqlpp
new file mode 100644
index 0000000..b9f8643
--- /dev/null
+++ b/asterix-bad/src/test/resources/metadata/queries/bad_cq/continuous_channel/continuous_channel.3.update.sqlpp
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+USE test;
+
+CREATE CONTINUOUS CHANNEL TweetsWithSchools(code) PERIOD duration("PT3S")
+{
+ SELECT t
+ FROM Tweets t WHERE area_code = t.area_code AND current_channel_time(t) > current_datetime()
+};
+
+CREATE BROKER brokerA AT "http://127.0.0.1:10100";
\ No newline at end of file
diff --git a/asterix-bad/src/test/resources/metadata/queries/bad_cq/continuous_channel/continuous_channel.4.query.sqlpp b/asterix-bad/src/test/resources/metadata/queries/bad_cq/continuous_channel/continuous_channel.4.query.sqlpp
new file mode 100644
index 0000000..04917e0
--- /dev/null
+++ b/asterix-bad/src/test/resources/metadata/queries/bad_cq/continuous_channel/continuous_channel.4.query.sqlpp
@@ -0,0 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+SELECT VALUE d FROM Metadata.`Dataset` d WHERE d.DataverseName = "test";
\ No newline at end of file
diff --git a/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_active_datasets/create_active_datasets.1.ddl.sqlpp b/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_active_datasets/create_active_datasets.1.ddl.sqlpp
new file mode 100644
index 0000000..2fc3783
--- /dev/null
+++ b/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_active_datasets/create_active_datasets.1.ddl.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+DROP DATAVERSE test IF EXISTS;
+CREATE DATAVERSE test;
+USE test;
+
+DROP DATASET Tweets IF EXISTS;
+DROP TYPE Tweet IF EXISTS;
+
+CREATE TYPE Tweet AS OPEN {
+ tid: bigint,
+ area_code: string,
+ text: string,
+ location: point,
+ timestamp: datetime
+};
+
+CREATE ACTIVE DATASET Tweets(Tweet) PRIMARY KEY tid;
\ No newline at end of file
diff --git a/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_active_datasets/create_active_datasets.2.query.sqlpp b/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_active_datasets/create_active_datasets.2.query.sqlpp
new file mode 100644
index 0000000..81589bd
--- /dev/null
+++ b/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_active_datasets/create_active_datasets.2.query.sqlpp
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+USE test;
+SELECT VALUE d FROM Metadata.`Dataset` d WHERE d.DatasetName = "Tweets";
\ No newline at end of file
diff --git a/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_bad_broker/create_bad_broker.1.ddl.sqlpp b/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_bad_broker/create_bad_broker.1.ddl.sqlpp
new file mode 100644
index 0000000..5a6ba82
--- /dev/null
+++ b/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_bad_broker/create_bad_broker.1.ddl.sqlpp
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+drop dataverse test if exists;
+create dataverse test;
+use test;
+
+CREATE BROKER brokerA AT "http://127.0.0.1:10100" with {
+ "broker-type" : "BAD"
+};
+
+CREATE BROKER brokerB AT "http://127.0.0.1:10100";
\ No newline at end of file
diff --git a/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_bad_broker/create_bad_broker.2.query.sqlpp b/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_bad_broker/create_bad_broker.2.query.sqlpp
new file mode 100644
index 0000000..549c59c
--- /dev/null
+++ b/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_bad_broker/create_bad_broker.2.query.sqlpp
@@ -0,0 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+SELECT * FROM Metadata.`Broker`;
\ No newline at end of file
diff --git a/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_bad_feed/create_bad_feed.1.ddl.sqlpp b/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_bad_feed/create_bad_feed.1.ddl.sqlpp
new file mode 100644
index 0000000..0e7495d
--- /dev/null
+++ b/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_bad_feed/create_bad_feed.1.ddl.sqlpp
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+drop dataverse test if exists;
+create dataverse test;
+use test;
+
+CREATE TYPE LocalThreateningTweet AS {
+ channelExecutionEpochTime: bigint,
+ dataverseName: string,
+ channelName: string
+};
+
+CREATE FEED LocalThreateningTweetFeed WITH {
+ "adapter-name" : "http_adapter",
+ "addresses" : "127.0.0.1:10013",
+ "address-type" : "IP",
+ "type-name" : "LocalThreateningTweet",
+ "format" : "ADM",
+ "bad-host" : "127.0.0.1",
+ "bad-channel" : "ThreateningTweetsAt",
+ "bad-channel-parameters": "OC",
+ "bad-dataverse": "test"
+};
diff --git a/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_bad_feed/create_bad_feed.2.query.sqlpp b/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_bad_feed/create_bad_feed.2.query.sqlpp
new file mode 100644
index 0000000..d29e4d2
--- /dev/null
+++ b/asterix-bad/src/test/resources/metadata/queries/bad_cq/create_bad_feed/create_bad_feed.2.query.sqlpp
@@ -0,0 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+SELECT * FROM Metadata.`Feed`;
\ No newline at end of file
diff --git a/asterix-bad/src/test/resources/metadata/results/bad_cq/continuous_channel/continuous_channel.1.adm b/asterix-bad/src/test/resources/metadata/results/bad_cq/continuous_channel/continuous_channel.1.adm
new file mode 100644
index 0000000..ba2bf9a
--- /dev/null
+++ b/asterix-bad/src/test/resources/metadata/results/bad_cq/continuous_channel/continuous_channel.1.adm
@@ -0,0 +1,4 @@
+{ "DataverseName": "test", "DatasetName": "Schools", "DatatypeDataverseName": "test", "DatatypeName": "School", "DatasetType": "INTERNAL", "GroupName": "test.Schools", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "sid" ] ], "PrimaryKey": [ [ "sid" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Wed May 27 19:01:09 PDT 2020", "DatasetId": 102, "PendingOp": 0, "BlockLevelStorageCompression": { "DatasetCompressionScheme": "snappy" } }
+{ "DataverseName": "test", "DatasetName": "Tweets", "DatatypeDataverseName": "test", "DatatypeName": "Tweet", "DatasetType": "INTERNAL", "GroupName": "test.Tweets", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "tid" ] ], "PrimaryKey": [ [ "tid" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Wed May 27 19:01:09 PDT 2020", "DatasetId": 101, "PendingOp": 0, "MetatypeDataverseName": "Metadata", "MetatypeName": "ActiveRecordType", "BlockLevelStorageCompression": { "DatasetCompressionScheme": "snappy" } }
+{ "DataverseName": "test", "DatasetName": "TweetsWithSchoolsResults", "DatatypeDataverseName": "Metadata", "DatatypeName": "ChannelResultsType", "DatasetType": "INTERNAL", "GroupName": "test.TweetsWithSchoolsResults", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "resultId" ] ], "PrimaryKey": [ [ "resultId" ] ], "Autogenerated": true }, "Hints": {{ }}, "Timestamp": "Wed May 27 19:01:09 PDT 2020", "DatasetId": 104, "PendingOp": 0, "BlockLevelStorageCompression": { "DatasetCompressionScheme": "snappy" } }
+{ "DataverseName": "test", "DatasetName": "TweetsWithSchoolsSubscriptions", "DatatypeDataverseName": "Metadata", "DatatypeName": "ChannelSubscriptionsType", "DatasetType": "INTERNAL", "GroupName": "test.TweetsWithSchoolsSubscriptions", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "subscriptionId" ] ], "PrimaryKey": [ [ "subscriptionId" ] ], "Autogenerated": true }, "Hints": {{ }}, "Timestamp": "Wed May 27 19:01:09 PDT 2020", "DatasetId": 103, "PendingOp": 0, "BlockLevelStorageCompression": { "DatasetCompressionScheme": "snappy" } }
diff --git a/asterix-bad/src/test/resources/metadata/results/bad_cq/create_active_datasets/create_active_datasets.1.adm b/asterix-bad/src/test/resources/metadata/results/bad_cq/create_active_datasets/create_active_datasets.1.adm
new file mode 100644
index 0000000..da2fdfb
--- /dev/null
+++ b/asterix-bad/src/test/resources/metadata/results/bad_cq/create_active_datasets/create_active_datasets.1.adm
@@ -0,0 +1 @@
+{ "DataverseName": "test", "DatasetName": "Tweets", "DatatypeDataverseName": "test", "DatatypeName": "Tweet", "DatasetType": "INTERNAL", "GroupName": "test.Tweets", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "tid" ] ], "PrimaryKey": [ [ "tid" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Mon Aug 17 10:23:56 PDT 2020", "DatasetId": 101, "PendingOp": 0, "MetatypeDataverseName": "Metadata", "MetatypeName": "ActiveRecordType", "BlockLevelStorageCompression": { "DatasetCompressionScheme": "snappy" } }
diff --git a/asterix-bad/src/test/resources/metadata/results/bad_cq/create_bad_broker/create_bad_broker.1.adm b/asterix-bad/src/test/resources/metadata/results/bad_cq/create_bad_broker/create_bad_broker.1.adm
new file mode 100644
index 0000000..d939759
--- /dev/null
+++ b/asterix-bad/src/test/resources/metadata/results/bad_cq/create_bad_broker/create_bad_broker.1.adm
@@ -0,0 +1,2 @@
+{ "Broker": { "DataverseName": "test", "BrokerName": "brokerA", "BrokerEndPoint": "http://127.0.0.1:10100", "BrokerType": "bad" } }
+{ "Broker": { "DataverseName": "test", "BrokerName": "brokerB", "BrokerEndPoint": "http://127.0.0.1:10100", "BrokerType": "general" } }
diff --git a/asterix-bad/src/test/resources/metadata/results/bad_cq/create_bad_feed/create_bad_feed.1.adm b/asterix-bad/src/test/resources/metadata/results/bad_cq/create_bad_feed/create_bad_feed.1.adm
new file mode 100644
index 0000000..f498a0d
--- /dev/null
+++ b/asterix-bad/src/test/resources/metadata/results/bad_cq/create_bad_feed/create_bad_feed.1.adm
@@ -0,0 +1 @@
+{ "Feed": { "DataverseName": "test", "FeedName": "LocalThreateningTweetFeed", "AdapterConfiguration": {{ { "Name": "addresses", "Value": "127.0.0.1:10013" }, { "Name": "reader", "Value": "http_adapter" }, { "Name": "bad-channel", "Value": "ThreateningTweetsAt" }, { "Name": "format", "Value": "adm" }, { "Name": "bad-dataverse", "Value": "test" }, { "Name": "type-name", "Value": "LocalThreateningTweet" }, { "Name": "bad-host", "Value": "127.0.0.1" }, { "Name": "feed", "Value": "LocalThreateningTweetFeed" }, { "Name": "address-type", "Value": "IP" }, { "Name": "adapter-name", "Value": "http_adapter" }, { "Name": "is-feed", "Value": "true" }, { "Name": "parser", "Value": "adm" }, { "Name": "bad-channel-parameters", "Value": "OC" }, { "Name": "dataverse", "Value": "test" } }}, "Timestamp": "Mon Aug 17 10:35:46 PDT 2020" } }
diff --git a/asterix-bad/src/test/resources/metadata/testsuite.xml b/asterix-bad/src/test/resources/metadata/testsuite.xml
new file mode 100644
index 0000000..e12cd7b
--- /dev/null
+++ b/asterix-bad/src/test/resources/metadata/testsuite.xml
@@ -0,0 +1,43 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+<test-suite xmlns="urn:xml.testframework.asterix.apache.org"
+ ResultOffsetPath="results"
+ QueryOffsetPath="queries"
+ QueryFileExtension=".sqlpp">
+ <test-group name="bad_cq">
+ <test-case FilePath="bad_cq">
+ <compilation-unit name="create_active_datasets">
+ <output-dir compare="Text">create_active_datasets</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="bad_cq">
+ <compilation-unit name="create_bad_broker">
+ <output-dir compare="Text">create_bad_broker</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="bad_cq">
+ <compilation-unit name="create_bad_feed">
+ <output-dir compare="Text">create_bad_feed</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="bad_cq">
+ <compilation-unit name="continuous_channel">
+ <output-dir compare="Text">continuous_channel</output-dir>
+ </compilation-unit>
+ </test-case>
+ </test-group>
+</test-suite>