summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--datarouter-node/src/main/resources/EelfMessages.properties16
-rw-r--r--datarouter-node/src/main/resources/misc/node.properties59
-rw-r--r--datarouter-node/src/main/resources/node.properties58
-rw-r--r--datarouter-prov/src/main/resources/EelfMessages.properties16
-rw-r--r--datarouter-prov/src/main/resources/docker-compose/node_data/node.properties58
-rw-r--r--datarouter-prov/src/main/resources/docker-compose/prov_data/provserver.properties95
-rw-r--r--datarouter-prov/src/main/resources/provserver.properties95
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/AllTests.java33
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/FillDB.java176
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestBase.java177
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestCleanup.java (renamed from datarouter-prov/src/test/java/datarouter/provisioning/testCleanup.java)91
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestDrFeedsDelete.java (renamed from datarouter-prov/src/test/java/datarouter/provisioning/testDRFeedsDelete.java)42
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestDrFeedsGet.java207
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestDrFeedsPost.java308
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestDrFeedsPut.java (renamed from datarouter-prov/src/test/java/datarouter/provisioning/testDRFeedsPut.java)42
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestFeedDelete.java (renamed from datarouter-prov/src/test/java/datarouter/provisioning/testFeedDelete.java)103
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestFeedPut.java214
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestInternalGet.java106
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestInternalMisc.java155
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestLogGet.java205
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestPublish.java126
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestRleBitSet.java289
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestRouteApi.java (renamed from datarouter-prov/src/test/java/datarouter/provisioning/testRouteAPI.java)8
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestSubscribePost.java192
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/testBase.java159
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/testDRFeedsGet.java187
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/testDRFeedsPost.java281
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/testFeedPut.java201
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/testInternalGet.java104
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/testInternalMisc.java150
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/testLogGet.java180
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/testPublish.java118
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/testRLEBitSet.java230
-rw-r--r--datarouter-prov/src/test/java/datarouter/provisioning/testSubscribePost.java179
34 files changed, 2437 insertions, 2223 deletions
diff --git a/datarouter-node/src/main/resources/EelfMessages.properties b/datarouter-node/src/main/resources/EelfMessages.properties
index 8c17417d..659748e9 100644
--- a/datarouter-node/src/main/resources/EelfMessages.properties
+++ b/datarouter-node/src/main/resources/EelfMessages.properties
@@ -7,9 +7,9 @@
# * Licensed 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.
@@ -33,12 +33,12 @@
#
######
#Error code classification category
-#100 Permission errors
-#200 Availability errors/Timeouts
-#300 Data errors
-#400 Schema Interface type/validation errors
-#500 Business process errors
-#900 Unknown errors
+#100 Permission errors
+#200 Availability errors/Timeouts
+#300 Data errors
+#400 Schema Interface type/validation errors
+#500 Business process errors
+#900 Unknown errors
#
########################################################################
diff --git a/datarouter-node/src/main/resources/misc/node.properties b/datarouter-node/src/main/resources/misc/node.properties
index fb97702f..fc707413 100644
--- a/datarouter-node/src/main/resources/misc/node.properties
+++ b/datarouter-node/src/main/resources/misc/node.properties
@@ -7,9 +7,9 @@
# * Licensed 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.
@@ -21,92 +21,91 @@
# *
#-------------------------------------------------------------------------------
#
-# Configuration parameters fixed at startup for the DataRouter node
+# Configuration parameters fixed at startup for the DataRouter node
#
-# URL to retrieve dynamic configuration
+# URL to retrieve dynamic configuration
#
-#ProvisioningURL: ${DRTR_PROV_INTURL}
+#ProvisioningURL: ${DRTR_PROV_INTURL}
ProvisioningURL=https://prov.datarouternew.com:8443/internal/prov
#
-# URL to upload PUB/DEL/EXP logs
+# URL to upload PUB/DEL/EXP logs
#
-#LogUploadURL: ${DRTR_LOG_URL}
+#LogUploadURL: ${DRTR_LOG_URL}
LogUploadURL=https://prov.datarouternew.com:8443/internal/logs
#
-# The port number for http as seen within the server
+# The port number for http as seen within the server
#
-#IntHttpPort: ${DRTR_NODE_INTHTTPPORT:-8080}
+#IntHttpPort: ${DRTR_NODE_INTHTTPPORT:-8080}
IntHttpPort=8080
#
-# The port number for https as seen within the server
+# The port number for https as seen within the server
#
IntHttpsPort=8443
#
-# The external port number for https taking port mapping into account
+# The external port number for https taking port mapping into account
#
ExtHttpsPort=443
#
-# The minimum interval between fetches of the dynamic configuration
-# from the provisioning server
+# The minimum interval between fetches of the dynamic configuration
+# from the provisioning server
#
MinProvFetchInterval=10000
#
-# The minimum interval between saves of the redirection data file
+# The minimum interval between saves of the redirection data file
#
MinRedirSaveInterval=10000
#
-# The path to the directory where log files are stored
+# The path to the directory where log files are stored
#
LogDir=/opt/app/datartr/logs
#
-# The retention interval (in days) for log files
+# The retention interval (in days) for log files
#
LogRetention=30
#
-# The path to the directories where data and meta data files are stored
+# The path to the directories where data and meta data files are stored
#
SpoolDir=/opt/app/datartr/spool
#
-# The path to the redirection data file
-#
-#RedirectionFile: etc/redirections.dat
+# The path to the redirection data file
#
-# The type of keystore for https
+#RedirectionFile: etc/redirections.dat
#
-KeyStoreType: jks
+# The type of keystore for https
+KeyStoreType: jks
#
-# The path to the keystore for https
+# The path to the keystore for https
#
KeyStoreFile:/opt/app/datartr/self_signed/keystore.jks
#
-# The password for the https keystore
+# The password for the https keystore
#
KeyStorePassword=changeit
#
-# The password for the private key in the https keystore
+# The password for the private key in the https keystore
#
KeyPassword=changeit
#
-# The type of truststore for https
+# The type of truststore for https
#
TrustStoreType=jks
#
-# The path to the truststore for https
+# The path to the truststore for https
#
#TrustStoreFile=/usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
TrustStoreFile=/opt/app/datartr/self_signed/cacerts.jks
#
-# The password for the https truststore
+# The password for the https truststore
#
TrustStorePassword=changeit
#
-# The path to the file used to trigger an orderly shutdown
+# The path to the file used to trigger an orderly shutdown
#
QuiesceFile=etc/SHUTDOWN
#
-# The key used to generate passwords for node to node transfers
+# The key used to generate passwords for node to node transfers
#
NodeAuthKey=Node123!
diff --git a/datarouter-node/src/main/resources/node.properties b/datarouter-node/src/main/resources/node.properties
index fb97702f..411cc2b9 100644
--- a/datarouter-node/src/main/resources/node.properties
+++ b/datarouter-node/src/main/resources/node.properties
@@ -7,9 +7,9 @@
# * Licensed 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.
@@ -21,92 +21,92 @@
# *
#-------------------------------------------------------------------------------
#
-# Configuration parameters fixed at startup for the DataRouter node
+# Configuration parameters fixed at startup for the DataRouter node
#
-# URL to retrieve dynamic configuration
+# URL to retrieve dynamic configuration
#
-#ProvisioningURL: ${DRTR_PROV_INTURL}
+#ProvisioningURL: ${DRTR_PROV_INTURL}
ProvisioningURL=https://prov.datarouternew.com:8443/internal/prov
#
-# URL to upload PUB/DEL/EXP logs
+# URL to upload PUB/DEL/EXP logs
#
-#LogUploadURL: ${DRTR_LOG_URL}
+#LogUploadURL: ${DRTR_LOG_URL}
LogUploadURL=https://prov.datarouternew.com:8443/internal/logs
#
-# The port number for http as seen within the server
+# The port number for http as seen within the server
#
-#IntHttpPort: ${DRTR_NODE_INTHTTPPORT:-8080}
+#IntHttpPort: ${DRTR_NODE_INTHTTPPORT:-8080}
IntHttpPort=8080
#
-# The port number for https as seen within the server
+# The port number for https as seen within the server
#
IntHttpsPort=8443
#
-# The external port number for https taking port mapping into account
+# The external port number for https taking port mapping into account
#
ExtHttpsPort=443
#
-# The minimum interval between fetches of the dynamic configuration
-# from the provisioning server
+# The minimum interval between fetches of the dynamic configuration
+# from the provisioning server
#
MinProvFetchInterval=10000
#
-# The minimum interval between saves of the redirection data file
+# The minimum interval between saves of the redirection data file
#
MinRedirSaveInterval=10000
#
-# The path to the directory where log files are stored
+# The path to the directory where log files are stored
#
LogDir=/opt/app/datartr/logs
#
-# The retention interval (in days) for log files
+# The retention interval (in days) for log files
#
LogRetention=30
#
-# The path to the directories where data and meta data files are stored
+# The path to the directories where data and meta data files are stored
#
SpoolDir=/opt/app/datartr/spool
#
-# The path to the redirection data file
+# The path to the redirection data file
#
-#RedirectionFile: etc/redirections.dat
+#RedirectionFile: etc/redirections.dat
#
-# The type of keystore for https
+# The type of keystore for https
#
-KeyStoreType: jks
+KeyStoreType: jks
#
-# The path to the keystore for https
+# The path to the keystore for https
#
KeyStoreFile:/opt/app/datartr/self_signed/keystore.jks
#
-# The password for the https keystore
+# The password for the https keystore
#
KeyStorePassword=changeit
#
-# The password for the private key in the https keystore
+# The password for the private key in the https keystore
#
KeyPassword=changeit
#
-# The type of truststore for https
+# The type of truststore for https
#
TrustStoreType=jks
#
-# The path to the truststore for https
+# The path to the truststore for https
#
#TrustStoreFile=/usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
TrustStoreFile=/opt/app/datartr/self_signed/cacerts.jks
#
-# The password for the https truststore
+# The password for the https truststore
#
TrustStorePassword=changeit
#
-# The path to the file used to trigger an orderly shutdown
+# The path to the file used to trigger an orderly shutdown
#
QuiesceFile=etc/SHUTDOWN
#
-# The key used to generate passwords for node to node transfers
+# The key used to generate passwords for node to node transfers
#
NodeAuthKey=Node123!
diff --git a/datarouter-prov/src/main/resources/EelfMessages.properties b/datarouter-prov/src/main/resources/EelfMessages.properties
index 5e8b179c..b0afa488 100644
--- a/datarouter-prov/src/main/resources/EelfMessages.properties
+++ b/datarouter-prov/src/main/resources/EelfMessages.properties
@@ -7,9 +7,9 @@
# * Licensed 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.
@@ -33,12 +33,12 @@
#
######
#Error code classification category
-#100 Permission errors
-#200 Availability errors/Timeouts
-#300 Data errors
-#400 Schema Interface type/validation errors
-#500 Business process errors
-#900 Unknown errors
+#100 Permission errors
+#200 Availability errors/Timeouts
+#300 Data errors
+#400 Schema Interface type/validation errors
+#500 Business process errors
+#900 Unknown errors
#
########################################################################
diff --git a/datarouter-prov/src/main/resources/docker-compose/node_data/node.properties b/datarouter-prov/src/main/resources/docker-compose/node_data/node.properties
index f57833c8..48485023 100644
--- a/datarouter-prov/src/main/resources/docker-compose/node_data/node.properties
+++ b/datarouter-prov/src/main/resources/docker-compose/node_data/node.properties
@@ -7,9 +7,9 @@
# * Licensed 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.
@@ -21,92 +21,92 @@
# *
#-------------------------------------------------------------------------------
#
-# Configuration parameters fixed at startup for the DataRouter node
+# Configuration parameters fixed at startup for the DataRouter node
#
-# URL to retrieve dynamic configuration
+# URL to retrieve dynamic configuration
#
-#ProvisioningURL: ${DRTR_PROV_INTURL:-https://feeds-drtr.web.att.com/internal/prov}
+#ProvisioningURL: ${DRTR_PROV_INTURL:-https://feeds-drtr.web.att.com/internal/prov}
ProvisioningURL=https://prov.datarouternew.com:8443/internal/prov
#
-# URL to upload PUB/DEL/EXP logs
+# URL to upload PUB/DEL/EXP logs
#
-#LogUploadURL: ${DRTR_LOG_URL:-https://feeds-drtr.web.att.com/internal/logs}
+#LogUploadURL: ${DRTR_LOG_URL:-https://feeds-drtr.web.att.com/internal/logs}
LogUploadURL=https://prov.datarouternew.com:8443/internal/logs
#
-# The port number for http as seen within the server
+# The port number for http as seen within the server
#
-#IntHttpPort: ${DRTR_NODE_INTHTTPPORT:-8080}
+#IntHttpPort: ${DRTR_NODE_INTHTTPPORT:-8080}
IntHttpPort=8080
#
-# The port number for https as seen within the server
+# The port number for https as seen within the server
#
IntHttpsPort=8443
#
-# The external port number for https taking port mapping into account
+# The external port number for https taking port mapping into account
#
ExtHttpsPort=443
#
-# The minimum interval between fetches of the dynamic configuration
-# from the provisioning server
+# The minimum interval between fetches of the dynamic configuration
+# from the provisioning server
#
MinProvFetchInterval=10000
#
-# The minimum interval between saves of the redirection data file
+# The minimum interval between saves of the redirection data file
#
MinRedirSaveInterval=10000
#
-# The path to the directory where log files are stored
+# The path to the directory where log files are stored
#
LogDir=/opt/app/datartr/logs
#
-# The retention interval (in days) for log files
+# The retention interval (in days) for log files
#
LogRetention=30
#
-# The path to the directories where data and meta data files are stored
+# The path to the directories where data and meta data files are stored
#
SpoolDir=/opt/app/datartr/spool
#
-# The path to the redirection data file
+# The path to the redirection data file
#
-#RedirectionFile: etc/redirections.dat
+#RedirectionFile: etc/redirections.dat
#
-# The type of keystore for https
+# The type of keystore for https
#
-KeyStoreType: jks
+KeyStoreType: jks
#
-# The path to the keystore for https
+# The path to the keystore for https
#
KeyStoreFile:/opt/app/datartr/self_signed/keystore.jks
#
-# The password for the https keystore
+# The password for the https keystore
#
KeyStorePassword=changeit
#
-# The password for the private key in the https keystore
+# The password for the private key in the https keystore
#
KeyPassword=changeit
#
-# The type of truststore for https
+# The type of truststore for https
#
TrustStoreType=jks
#
-# The path to the truststore for https
+# The path to the truststore for https
#
#TrustStoreFile=/usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
TrustStoreFile=/opt/app/datartr/self_signed/cacerts.jks
#
-# The password for the https truststore
+# The password for the https truststore
#
TrustStorePassword=changeit
#
-# The path to the file used to trigger an orderly shutdown
+# The path to the file used to trigger an orderly shutdown
#
QuiesceFile=etc/SHUTDOWN
#
-# The key used to generate passwords for node to node transfers
+# The key used to generate passwords for node to node transfers
#
NodeAuthKey=Node123!
diff --git a/datarouter-prov/src/main/resources/docker-compose/prov_data/provserver.properties b/datarouter-prov/src/main/resources/docker-compose/prov_data/provserver.properties
index f37330ae..d733cc2a 100644
--- a/datarouter-prov/src/main/resources/docker-compose/prov_data/provserver.properties
+++ b/datarouter-prov/src/main/resources/docker-compose/prov_data/provserver.properties
@@ -1,48 +1,47 @@
-#-------------------------------------------------------------------------------
-# ============LICENSE_START==================================================
-# * org.onap.dmaap
-# * ===========================================================================
-# * Copyright � 2017 AT&T Intellectual Property. All rights reserved.
-# * ===========================================================================
-# * Licensed 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.
-# * ============LICENSE_END====================================================
-# *
-# * ECOMP is a trademark and service mark of AT&T Intellectual Property.
-# *
-#-------------------------------------------------------------------------------
-
-
-#Jetty Server properties
-org.onap.dmaap.datarouter.provserver.http.port = 8080
-org.onap.dmaap.datarouter.provserver.https.port = 8443
-org.onap.dmaap.datarouter.provserver.https.relaxation = false
-org.onap.dmaap.datarouter.provserver.keymanager.password = changeit
-org.onap.dmaap.datarouter.provserver.keystore.type = jks
-org.onap.dmaap.datarouter.provserver.keystore.path = /opt/app/datartr/self_signed/keystore.jks
-
-org.onap.dmaap.datarouter.provserver.keystore.password = changeit
-#org.onap.dmaap.datarouter.provserver.truststore.path = /home/eby/dr2/misc/cacerts+1
-#org.onap.dmaap.datarouter.provserver.truststore.path = /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
-org.onap.dmaap.datarouter.provserver.truststore.path = /opt/app/datartr/self_signed/cacerts.jks
-
-org.onap.dmaap.datarouter.provserver.truststore.password = changeit
-org.onap.dmaap.datarouter.provserver.accesslog.dir = /opt/app/datartr/logs
-org.onap.dmaap.datarouter.provserver.spooldir = /opt/app/datartr/spool
-org.onap.dmaap.datarouter.provserver.dbscripts = /opt/app/datartr/etc/misc
-org.onap.dmaap.datarouter.provserver.logretention = 30
-
-# Database access
-org.onap.dmaap.datarouter.db.driver = org.mariadb.jdbc.Driver
-org.onap.dmaap.datarouter.db.url = jdbc:mariadb://172.100.0.2:3306/datarouter
-org.onap.dmaap.datarouter.db.login = datarouter
-org.onap.dmaap.datarouter.db.password = datarouter
+#-------------------------------------------------------------------------------
+# ============LICENSE_START==================================================
+# * org.onap.dmaap
+# * ===========================================================================
+# * Copyright � 2017 AT&T Intellectual Property. All rights reserved.
+# * ===========================================================================
+# * Licensed 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.
+# * ============LICENSE_END====================================================
+# *
+# * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+# *
+#-------------------------------------------------------------------------------
+
+#Jetty Server properties
+org.onap.dmaap.datarouter.provserver.http.port = 8080
+org.onap.dmaap.datarouter.provserver.https.port = 8443
+org.onap.dmaap.datarouter.provserver.https.relaxation = false
+org.onap.dmaap.datarouter.provserver.keymanager.password = changeit
+org.onap.dmaap.datarouter.provserver.keystore.type = jks
+org.onap.dmaap.datarouter.provserver.keystore.path = /opt/app/datartr/self_signed/keystore.jks
+
+org.onap.dmaap.datarouter.provserver.keystore.password = changeit
+#org.onap.dmaap.datarouter.provserver.truststore.path = /home/eby/dr2/misc/cacerts+1
+#org.onap.dmaap.datarouter.provserver.truststore.path = /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
+org.onap.dmaap.datarouter.provserver.truststore.path = /opt/app/datartr/self_signed/cacerts.jks
+
+org.onap.dmaap.datarouter.provserver.truststore.password = changeit
+org.onap.dmaap.datarouter.provserver.accesslog.dir = /opt/app/datartr/logs
+org.onap.dmaap.datarouter.provserver.spooldir = /opt/app/datartr/spool
+org.onap.dmaap.datarouter.provserver.dbscripts = /opt/app/datartr/etc/misc
+org.onap.dmaap.datarouter.provserver.logretention = 30
+
+# Database access
+org.onap.dmaap.datarouter.db.driver = org.mariadb.jdbc.Driver
+org.onap.dmaap.datarouter.db.url = jdbc:mariadb://172.100.0.2:3306/datarouter
+org.onap.dmaap.datarouter.db.login = datarouter
+org.onap.dmaap.datarouter.db.password = datarouter
diff --git a/datarouter-prov/src/main/resources/provserver.properties b/datarouter-prov/src/main/resources/provserver.properties
index f37330ae..28ffb981 100644
--- a/datarouter-prov/src/main/resources/provserver.properties
+++ b/datarouter-prov/src/main/resources/provserver.properties
@@ -1,48 +1,47 @@
-#-------------------------------------------------------------------------------
-# ============LICENSE_START==================================================
-# * org.onap.dmaap
-# * ===========================================================================
-# * Copyright � 2017 AT&T Intellectual Property. All rights reserved.
-# * ===========================================================================
-# * Licensed 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.
-# * ============LICENSE_END====================================================
-# *
-# * ECOMP is a trademark and service mark of AT&T Intellectual Property.
-# *
-#-------------------------------------------------------------------------------
-
-
-#Jetty Server properties
-org.onap.dmaap.datarouter.provserver.http.port = 8080
-org.onap.dmaap.datarouter.provserver.https.port = 8443
-org.onap.dmaap.datarouter.provserver.https.relaxation = false
-org.onap.dmaap.datarouter.provserver.keymanager.password = changeit
-org.onap.dmaap.datarouter.provserver.keystore.type = jks
-org.onap.dmaap.datarouter.provserver.keystore.path = /opt/app/datartr/self_signed/keystore.jks
-
-org.onap.dmaap.datarouter.provserver.keystore.password = changeit
-#org.onap.dmaap.datarouter.provserver.truststore.path = /home/eby/dr2/misc/cacerts+1
-#org.onap.dmaap.datarouter.provserver.truststore.path = /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
-org.onap.dmaap.datarouter.provserver.truststore.path = /opt/app/datartr/self_signed/cacerts.jks
-
-org.onap.dmaap.datarouter.provserver.truststore.password = changeit
-org.onap.dmaap.datarouter.provserver.accesslog.dir = /opt/app/datartr/logs
-org.onap.dmaap.datarouter.provserver.spooldir = /opt/app/datartr/spool
-org.onap.dmaap.datarouter.provserver.dbscripts = /opt/app/datartr/etc/misc
-org.onap.dmaap.datarouter.provserver.logretention = 30
-
-# Database access
-org.onap.dmaap.datarouter.db.driver = org.mariadb.jdbc.Driver
-org.onap.dmaap.datarouter.db.url = jdbc:mariadb://172.100.0.2:3306/datarouter
-org.onap.dmaap.datarouter.db.login = datarouter
-org.onap.dmaap.datarouter.db.password = datarouter
+#-------------------------------------------------------------------------------
+# ============LICENSE_START==================================================
+# * org.onap.dmaap
+# * ===========================================================================
+# * Copyright � 2017 AT&T Intellectual Property. All rights reserved.
+# * ===========================================================================
+# * Licensed 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.
+# * ============LICENSE_END====================================================
+# *
+# * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+# *
+#-------------------------------------------------------------------------------
+
+#Jetty Server properties
+org.onap.dmaap.datarouter.provserver.http.port = 8080
+org.onap.dmaap.datarouter.provserver.https.port = 8443
+org.onap.dmaap.datarouter.provserver.https.relaxation = false
+org.onap.dmaap.datarouter.provserver.keymanager.password = changeit
+org.onap.dmaap.datarouter.provserver.keystore.type = jks
+org.onap.dmaap.datarouter.provserver.keystore.path = /opt/app/datartr/self_signed/keystore.jks
+
+org.onap.dmaap.datarouter.provserver.keystore.password = changeit
+#org.onap.dmaap.datarouter.provserver.truststore.path = /home/eby/dr2/misc/cacerts+1
+#org.onap.dmaap.datarouter.provserver.truststore.path = /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
+org.onap.dmaap.datarouter.provserver.truststore.path = /opt/app/datartr/self_signed/cacerts.jks
+
+org.onap.dmaap.datarouter.provserver.truststore.password = changeit
+org.onap.dmaap.datarouter.provserver.accesslog.dir = /opt/app/datartr/logs
+org.onap.dmaap.datarouter.provserver.spooldir = /opt/app/datartr/spool
+org.onap.dmaap.datarouter.provserver.dbscripts = /opt/app/datartr/etc/misc
+org.onap.dmaap.datarouter.provserver.logretention = 30
+
+# Database access
+org.onap.dmaap.datarouter.db.driver = org.mariadb.jdbc.Driver
+org.onap.dmaap.datarouter.db.url = jdbc:mariadb://172.100.0.2:3306/datarouter
+org.onap.dmaap.datarouter.db.login = datarouter
+org.onap.dmaap.datarouter.db.password = datarouter
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/AllTests.java b/datarouter-prov/src/test/java/datarouter/provisioning/AllTests.java
index 92159552..34fb144f 100644
--- a/datarouter-prov/src/test/java/datarouter/provisioning/AllTests.java
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/AllTests.java
@@ -7,9 +7,9 @@
* * Licensed 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.
@@ -30,19 +30,20 @@ import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({
- testDRFeedsPost.class,
- testDRFeedsGet.class,
- testDRFeedsPut.class,
- testDRFeedsDelete.class,
- testFeedPut.class,
- testSubscribePost.class,
- testInternalGet.class,
- testInternalMisc.class,
- testPublish.class,
- testLogGet.class,
- testFeedDelete.class,
- testCleanup.class,
- testRLEBitSet.class
-})
+ IntegrationTestDrFeedsPost.class,
+ IntegrationTestDrFeedsGet.class,
+ IntegrationTestDrFeedsPut.class,
+ IntegrationTestDrFeedsDelete.class,
+ IntegrationTestFeedPut.class,
+ IntegrationTestSubscribePost.class,
+ IntegrationTestInternalGet.class,
+ IntegrationTestInternalMisc.class,
+ IntegrationTestPublish.class,
+ IntegrationTestLogGet.class,
+ IntegrationTestFeedDelete.class,
+ IntegrationTestCleanup.class,
+ IntegrationTestRleBitSet.class
+ })
+
public class AllTests {
}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/FillDB.java b/datarouter-prov/src/test/java/datarouter/provisioning/FillDB.java
index f83113ef..fd682bb3 100644
--- a/datarouter-prov/src/test/java/datarouter/provisioning/FillDB.java
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/FillDB.java
@@ -7,9 +7,9 @@
* * Licensed 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.
@@ -20,6 +20,7 @@
* * ECOMP is a trademark and service mark of AT&T Intellectual Property.
* *
******************************************************************************/
+
package datarouter.provisioning;
import java.io.File;
@@ -46,79 +47,102 @@ import org.json.JSONArray;
import org.json.JSONObject;
import org.onap.dmaap.datarouter.provisioning.FeedServlet;
+/**
+ * The FillDB class
+ *
+ * @version 1.0.1
+ */
public class FillDB {
- public static void main(String[] args)
- throws KeyStoreException, FileNotFoundException, KeyManagementException, UnrecoverableKeyException, NoSuchAlgorithmException
- {
- AbstractHttpClient httpclient = new DefaultHttpClient();
-
- String keystore = "/home/eby/dr2/misc/client.keystore";
- String kspass = "changeit";
- KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
- FileInputStream instream = new FileInputStream(new File(keystore));
- try {
- trustStore.load(instream, kspass.toCharArray());
- } catch (Exception x) {
- System.err.println("READING KEYSTORE: "+x);
- } finally {
- try { instream.close(); } catch (Exception ignore) {}
- }
-
- SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore, "changeit", trustStore);
- Scheme sch = new Scheme("https", 443, socketFactory);
- httpclient.getConnectionManager().getSchemeRegistry().register(sch);
-
- JSONObject jo = buildFeedRequest();
- for (int i = 0; i < 10000; i++) {
- jo.put("version", ""+System.currentTimeMillis());
- int rv = -1;
- String url = "https://conwy.proto.research.att.com:6443/";
- HttpPost httpPost = new HttpPost(url);
- try {
- httpPost.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
- String t = jo.toString();
- HttpEntity body = new ByteArrayEntity(t.getBytes(), ContentType.create(FeedServlet.FEED_CONTENT_TYPE));
- httpPost.setEntity(body);
-
- HttpResponse response = httpclient.execute(httpPost);
- rv = response.getStatusLine().getStatusCode();
- HttpEntity entity = response.getEntity();
- EntityUtils.consume(entity);
- } catch (IOException e) {
- System.err.println(e);
- } finally {
- httpPost.releaseConnection();
- }
- System.out.println(i + " " + rv);
- }
- }
- private static JSONObject buildFeedRequest() {
- JSONObject jo = new JSONObject();
- jo.put("name", "feed");
- jo.put("version", ""+System.currentTimeMillis());
- jo.put("description", "Sample feed used by JUnit to test");
-
- JSONObject jo2 = new JSONObject();
- jo2.put("classification", "unrestricted");
-
- JSONArray ja = new JSONArray();
- JSONObject jo3 = new JSONObject();
- jo3.put("id", "id001");
- jo3.put("password", "re1kwelj");
- JSONObject jo4 = new JSONObject();
- jo4.put("id", "id002");
- jo4.put("password", "o9eqlmbd");
- ja.put(jo3);
- ja.put(jo4);
- jo2.put("endpoint_ids", ja);
-
- ja = new JSONArray();
- ja.put("10.0.0.1");
- ja.put("192.168.0.1");
- ja.put("135.207.136.128/25");
- jo2.put("endpoint_addrs", ja);
-
- jo.put("authorization", jo2);
- return jo;
- }
+ /**
+ * This is the main method of the FillDB class.
+ *
+ * @throws KeyStoreException KeyStore exception
+ * @throws FileNotFoundException Exeception thrown when error locating file
+ * @throws KeyManagementException KeyManagement exception
+ * @throws UnrecoverableKeyException Exception thrown when Key cannot be recovered
+ * @throws NoSuchAlgorithmException Exception thrown when algorithm does not exist
+ */
+ public static void main(String[] args)
+ throws KeyStoreException, FileNotFoundException, KeyManagementException, UnrecoverableKeyException,
+ NoSuchAlgorithmException {
+ AbstractHttpClient httpclient = new DefaultHttpClient();
+
+ String keystore = "/home/eby/dr2/misc/client.keystore";
+ String kspass = "changeit";
+ KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
+ FileInputStream instream = new FileInputStream(new File(keystore));
+ try {
+ trustStore.load(instream, kspass.toCharArray());
+ } catch (Exception x) {
+ System.err.println("READING KEYSTORE: " + x);
+ } finally {
+ try {
+ instream.close();
+ } catch (Exception ignore) {
+ // Ignore exception
+ }
+ }
+
+ SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore, "changeit", trustStore);
+ Scheme sch = new Scheme("https", 443, socketFactory);
+ httpclient.getConnectionManager().getSchemeRegistry().register(sch);
+
+ JSONObject jo = buildFeedRequest();
+ for (int i = 0; i < 10000; i++) {
+ jo.put("version", "" + System.currentTimeMillis());
+ int rv = -1;
+ String url = "https://conwy.proto.research.att.com:6443/";
+ HttpPost httpPost = new HttpPost(url);
+ try {
+ httpPost.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
+ String feedRequestString = jo.toString();
+ HttpEntity body = new ByteArrayEntity(feedRequestString.getBytes(),
+ ContentType.create(FeedServlet.FEED_CONTENT_TYPE));
+ httpPost.setEntity(body);
+
+ HttpResponse response = httpclient.execute(httpPost);
+ rv = response.getStatusLine().getStatusCode();
+ HttpEntity entity = response.getEntity();
+ EntityUtils.consume(entity);
+ } catch (IOException e) {
+ System.err.println(e);
+ } finally {
+ httpPost.releaseConnection();
+ }
+ System.out.println(i + " " + rv);
+ }
+ }
+
+ private static JSONObject buildFeedRequest() {
+ JSONObject jo = new JSONObject();
+ jo.put("name", "feed");
+ jo.put("version", "" + System.currentTimeMillis());
+ jo.put("description", "Sample feed used by JUnit to test");
+
+ JSONObject jo2 = new JSONObject();
+ jo2.put("classification", "unrestricted");
+
+
+ JSONObject jo3 = new JSONObject();
+ jo3.put("id", "id001");
+ jo3.put("password", "re1kwelj");
+
+ JSONObject jo4 = new JSONObject();
+ jo4.put("id", "id002");
+ jo4.put("password", "o9eqlmbd");
+
+ JSONArray ja = new JSONArray();
+ ja.put(jo3);
+ ja.put(jo4);
+ jo2.put("endpoint_ids", ja);
+
+ ja = new JSONArray();
+ ja.put("10.0.0.1");
+ ja.put("192.168.0.1");
+ ja.put("135.207.136.128/25");
+ jo2.put("endpoint_addrs", ja);
+
+ jo.put("authorization", jo2);
+ return jo;
+ }
}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestBase.java b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestBase.java
new file mode 100644
index 00000000..52e80a8f
--- /dev/null
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestBase.java
@@ -0,0 +1,177 @@
+/*******************************************************************************
+ * ============LICENSE_START==================================================
+ * * org.onap.dmaap
+ * * ===========================================================================
+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * * ===========================================================================
+ * * Licensed 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.
+ * * ============LICENSE_END====================================================
+ * *
+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * *
+ ******************************************************************************/
+
+package datarouter.provisioning;
+
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.KeyStore;
+import java.util.Properties;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.StatusLine;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.conn.scheme.Scheme;
+import org.apache.http.conn.ssl.SSLSocketFactory;
+import org.apache.http.impl.client.AbstractHttpClient;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.util.EntityUtils;
+import org.json.JSONObject;
+import org.json.JSONTokener;
+import org.junit.After;
+import org.junit.Before;
+import org.onap.dmaap.datarouter.provisioning.FeedServlet;
+
+public class IntegrationTestBase {
+ /** The properties file to read the DB properties from. */
+ public static final String CONFIG_FILE = "integration_test.properties";
+
+ public Properties props;
+ protected AbstractHttpClient httpclient;
+ protected String s33;
+ protected String s257;
+ protected static JSONObject db_state;
+
+ /**
+ * This is the setUp method.
+ */
+ @Before
+ public void setUp() throws Exception {
+ if (props == null) {
+ props = new Properties();
+ InputStream inStream = getClass().getClassLoader().getResourceAsStream(CONFIG_FILE);
+ try {
+ props.load(inStream);
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ inStream.close();
+ }
+ }
+
+ httpclient = new DefaultHttpClient();
+ String str = "0123456789ABCDEF";
+ s33 = str + str + "!";
+ str = str + str + str + str;
+ s257 = str + str + str + str + "!";
+
+ // keystore
+ String store = props.getProperty("test.keystore");
+ String pass = props.getProperty("test.kspassword");
+ KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
+ FileInputStream instream = new FileInputStream(new File(store));
+ try {
+ keyStore.load(instream, pass.toCharArray());
+ } catch (Exception x) {
+ System.err.println("READING KEYSTORE: " + x);
+ } finally {
+ try {
+ instream.close();
+ } catch (Exception ignore) {
+ // Ignore exception
+ }
+ }
+
+ store = props.getProperty("test.truststore");
+ pass = props.getProperty("test.tspassword");
+ KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
+ instream = new FileInputStream(new File(store));
+ try {
+ trustStore.load(instream, pass.toCharArray());
+ } catch (Exception x) {
+ System.err.println("READING TRUSTSTORE: " + x);
+ } finally {
+ try {
+ instream.close();
+ } catch (Exception ignore) {
+ // Ignore exception
+ }
+ }
+
+ SSLSocketFactory socketFactory = new SSLSocketFactory(keyStore, "changeit", trustStore);
+ Scheme sch = new Scheme("https", 443, socketFactory);
+ httpclient.getConnectionManager().getSchemeRegistry().register(sch);
+ }
+
+ /**
+ * This is the getDBstate method.
+ */
+ public JSONObject getDBstate() {
+ // set db_state!
+ if (db_state == null) {
+ String url = props.getProperty("test.host") + "/internal/prov";
+ HttpGet httpGet = new HttpGet(url);
+ try {
+ httpGet.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
+ HttpResponse response = httpclient.execute(httpGet);
+ HttpEntity entity = response.getEntity();
+ String ctype = entity.getContentType().getValue().trim();
+ // save the response body as db_state
+ boolean ok = ctype.equals(FeedServlet.PROVFULL_CONTENT_TYPE1);
+ ok |= ctype.equals(FeedServlet.PROVFULL_CONTENT_TYPE2);
+ if (ok) {
+ db_state = null;
+ try {
+ db_state = new JSONObject(new JSONTokener(entity.getContent()));
+ } catch (Exception e) {
+ fail("Bad JSON: " + e.getMessage());
+ }
+ } else {
+ EntityUtils.consume(entity);
+ }
+ } catch (IOException e) {
+ fail(e.getMessage());
+ } finally {
+ httpGet.releaseConnection();
+ }
+ }
+ return db_state;
+ }
+
+ /**
+ * This is the tearDown method.
+ */
+ @After
+ public void tearDown() throws Exception {
+ // When HttpClient instance is no longer needed,
+ // shut down the connection manager to ensure
+ // immediate deallocation of all system resources
+ httpclient.getConnectionManager().shutdown();
+ FileUtils.deleteDirectory(new File("./unit-test-logs"));
+ }
+
+ protected void ckResponse(HttpResponse response, int expect) {
+ System.out.println(response.getStatusLine());
+ StatusLine sl = response.getStatusLine();
+ int code = sl.getStatusCode();
+ if (code != expect) {
+ fail("Unexpected response, expect " + expect + " got " + code + " " + sl.getReasonPhrase());
+ }
+ }
+}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testCleanup.java b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestCleanup.java
index bf991fdd..fba77548 100644
--- a/datarouter-prov/src/test/java/datarouter/provisioning/testCleanup.java
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestCleanup.java
@@ -7,9 +7,9 @@
* * Licensed 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.
@@ -37,48 +37,49 @@ import org.junit.Before;
import org.junit.Test;
import org.onap.dmaap.datarouter.provisioning.FeedServlet;
-public class testCleanup extends testBase {
- @Before
- public void setUp() throws Exception {
- super.setUp();
- getDBstate();
- }
+public class IntegrationTestCleanup extends IntegrationTestBase {
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ getDBstate();
+ }
+
+ @Test
+ public void testNormal() {
+ // Delete all feeds w/JUnit as publisher
+ JSONArray ja = db_state.getJSONArray("feeds");
+ for (int i = 0; i < ja.length(); i++) {
+ JSONObject feed = ja.getJSONObject(i);
+ if (feed != null && !feed.getBoolean("deleted")) {
+ if (feed.getString("publisher").equals("JUnit")) {
+ int feedid = feed.getInt("feedid");
+ delete("/feed/" + feedid);
+ }
+ }
+ }
+ // Delete all subscriptions w/JUnit as subscriber
+ ja = db_state.getJSONArray("subscriptions");
+ for (int i = 0; i < ja.length(); i++) {
+ JSONObject sub = ja.getJSONObject(i);
+ if (sub != null && sub.getString("subscriber").equals("JUnit")) {
+ int subid = sub.getInt("subid");
+ delete("/subs/" + subid);
+ }
+ }
+ }
- @Test
- public void testNormal() {
- // Delete all feeds w/JUnit as publisher
- JSONArray ja = db_state.getJSONArray("feeds");
- for (int i = 0; i < ja.length(); i++) {
- JSONObject feed = ja.getJSONObject(i);
- if (feed != null && !feed.getBoolean("deleted")) {
- if (feed.getString("publisher").equals("JUnit")) {
- int feedid = feed.getInt("feedid");
- delete("/feed/"+feedid);
- }
- }
- }
- // Delete all subscriptions w/JUnit as subscriber
- ja = db_state.getJSONArray("subscriptions");
- for (int i = 0; i < ja.length(); i++) {
- JSONObject sub = ja.getJSONObject(i);
- if (sub != null && sub.getString("subscriber").equals("JUnit")) {
- int subid = sub.getInt("subid");
- delete("/subs/"+subid);
- }
- }
- }
- private void delete(String uri) {
- String url = props.getProperty("test.host") + uri;;
- HttpDelete del = new HttpDelete(url);
- try {
- del.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
- HttpResponse response = httpclient.execute(del);
- HttpEntity entity = response.getEntity();
- EntityUtils.consume(entity);
- } catch (IOException e) {
- fail(e.getMessage());
- } finally {
- del.releaseConnection();
- }
- }
+ private void delete(String uri) {
+ String url = props.getProperty("test.host") + uri;;
+ HttpDelete del = new HttpDelete(url);
+ try {
+ del.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
+ HttpResponse response = httpclient.execute(del);
+ HttpEntity entity = response.getEntity();
+ EntityUtils.consume(entity);
+ } catch (IOException e) {
+ fail(e.getMessage());
+ } finally {
+ del.releaseConnection();
+ }
+ }
}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testDRFeedsDelete.java b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestDrFeedsDelete.java
index c7768b35..47a3071f 100644
--- a/datarouter-prov/src/test/java/datarouter/provisioning/testDRFeedsDelete.java
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestDrFeedsDelete.java
@@ -7,9 +7,9 @@
* * Licensed 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.
@@ -36,23 +36,23 @@ import org.apache.http.util.EntityUtils;
import org.junit.Test;
import org.onap.dmaap.datarouter.provisioning.FeedServlet;
-public class testDRFeedsDelete extends testBase {
- @Test
- public void testNotAllowed() {
- String url = props.getProperty("test.host") + "/";
- HttpDelete del = new HttpDelete(url);
- try {
- del.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
-
- HttpResponse response = httpclient.execute(del);
- ckResponse(response, HttpServletResponse.SC_METHOD_NOT_ALLOWED);
-
- HttpEntity entity = response.getEntity();
- EntityUtils.consume(entity);
- } catch (IOException e) {
- fail(e.getMessage());
- } finally {
- del.releaseConnection();
- }
- }
+public class IntegrationTestDrFeedsDelete extends IntegrationTestBase {
+ @Test
+ public void testNotAllowed() {
+ String url = props.getProperty("test.host") + "/";
+ HttpDelete del = new HttpDelete(url);
+ try {
+ del.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
+
+ HttpResponse response = httpclient.execute(del);
+ ckResponse(response, HttpServletResponse.SC_METHOD_NOT_ALLOWED);
+
+ HttpEntity entity = response.getEntity();
+ EntityUtils.consume(entity);
+ } catch (IOException e) {
+ fail(e.getMessage());
+ } finally {
+ del.releaseConnection();
+ }
+ }
}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestDrFeedsGet.java b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestDrFeedsGet.java
new file mode 100644
index 00000000..70be1f22
--- /dev/null
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestDrFeedsGet.java
@@ -0,0 +1,207 @@
+/*******************************************************************************
+ * ============LICENSE_START==================================================
+ * * org.onap.dmaap
+ * * ===========================================================================
+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * * ===========================================================================
+ * * Licensed 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.
+ * * ============LICENSE_END====================================================
+ * *
+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * *
+ ******************************************************************************/
+
+package datarouter.provisioning;
+
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.util.EntityUtils;
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.json.JSONTokener;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.dmaap.datarouter.provisioning.FeedServlet;
+
+public class IntegrationTestDrFeedsGet extends IntegrationTestBase {
+ private JSONArray returnedlist;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ getDBstate();
+ }
+
+ @Test
+ public void testNormal() {
+ testCommon(HttpServletResponse.SC_OK);
+ int expect = 0;
+ JSONArray ja = db_state.getJSONArray("feeds");
+ for (int i = 0; i < ja.length(); i++) {
+ JSONObject jo = ja.getJSONObject(i);
+ if (!jo.getBoolean("deleted")) {
+ expect++;
+ }
+ }
+ if (returnedlist.length() != expect) {
+ fail("bad length, got " + returnedlist.length() + " expect " + expect);
+ }
+ }
+
+ @Test
+ public void testNormalGoodName() {
+ JSONArray ja = db_state.getJSONArray("feeds");
+ JSONObject feed0 = ja.getJSONObject(0);
+ String name = feed0.getString("name");
+ String query = "?name=" + name;
+ int expect = 0;
+ for (int n = 0; n < ja.length(); n++) {
+ JSONObject jo = ja.getJSONObject(n);
+ if (!jo.getBoolean("deleted") && jo.getString("name").equals(name)) {
+ expect++;
+ }
+ }
+ testCommon(HttpServletResponse.SC_OK, query, FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
+ if (returnedlist.length() != expect) {
+ fail("bad length, got " + returnedlist.length() + " expect " + expect);
+ }
+ }
+
+ @Test
+ public void testNormalBadName() {
+ String query = "?name=ZZTOP123456";
+ testCommon(HttpServletResponse.SC_OK, query, FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
+ if (returnedlist.length() != 0) {
+ fail("bad length, got " + returnedlist.length() + " expect 0");
+ }
+ }
+
+ @Test
+ public void testNormalBadPath() {
+ String query = "flarg/?publisher=JUnit";
+ testCommon(HttpServletResponse.SC_NOT_FOUND, query, "text/html;charset=ISO-8859-1", "JUnit");
+ }
+
+ @Test
+ public void testNormalGoodPublisher() {
+ JSONArray ja = db_state.getJSONArray("feeds");
+ JSONObject feed0 = ja.getJSONObject(0);
+ String query = "?publisher=" + feed0.getString("publisher");
+ testCommon(HttpServletResponse.SC_OK, query, FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
+ int expect = 0;
+ for (int i = 0; i < ja.length(); i++) {
+ JSONObject jo = ja.getJSONObject(i);
+ if (jo.getString("publisher").equals(feed0.getString("publisher")) && !jo.getBoolean("deleted")) {
+ expect++;
+ }
+ }
+ if (returnedlist.length() != expect) {
+ fail("bad length, got " + returnedlist.length() + " expected " + expect);
+ }
+ }
+
+ @Test
+ public void testNormalBadPublisher() {
+ String query = "?publisher=ZZTOP123456";
+ testCommon(HttpServletResponse.SC_OK, query, FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
+ if (returnedlist.length() != 0) {
+ fail("bad length");
+ }
+ }
+
+ @Test
+ public void testNormalGoodSubscriber() {
+ JSONArray ja = db_state.getJSONArray("subscriptions");
+ if (ja.length() > 0) {
+ JSONObject sub0 = ja.getJSONObject(0);
+ String query = "?subscriber=" + sub0.getString("subscriber");
+ testCommon(HttpServletResponse.SC_OK, query, FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
+// aarg! - this is complicated!
+// int expect = 0;
+// for (int i = 0; i < ja.length(); i++) {
+// JSONObject jo = ja.getJSONObject(i);
+// if (jo.getString("subscriber").equals(sub0.getString("subscriber")))
+// expect++;
+// }
+// if (returnedlist.length() != 1)
+// fail("bad length " + returnedlist.toString());
+ } else {
+ // There are no subscriptions yet, so use a made up name
+ testCommon(HttpServletResponse.SC_OK, "?subscriber=foo", FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
+ }
+ }
+
+ @Test
+ public void testNormalBadSubscriber() {
+ String query = "?subscriber=ZZTOP123456";
+ testCommon(HttpServletResponse.SC_OK, query, FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
+ if (returnedlist.length() != 0) {
+ fail("bad length");
+ }
+ }
+
+ private void testCommon(int expect) {
+ testCommon(expect, "", FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
+ }
+
+ private void testCommon(int expect, String query, String ectype, String bhdr) {
+ String url = props.getProperty("test.host") + "/" + query;
+ HttpGet httpGet = new HttpGet(url);
+ try {
+ if (bhdr != null) {
+ httpGet.addHeader(FeedServlet.BEHALF_HEADER, bhdr);
+ }
+
+ HttpResponse response = httpclient.execute(httpGet);
+ ckResponse(response, expect);
+
+ HttpEntity entity = response.getEntity();
+ String ctype = entity.getContentType().getValue().trim();
+ if (!ctype.equals(ectype)) {
+ fail("Got wrong content type: " + ctype);
+ }
+
+ // do something useful with the response body and ensure it is fully consumed
+ if (ctype.equals(FeedServlet.FEEDLIST_CONTENT_TYPE)) {
+ try {
+ returnedlist = new JSONArray(new JSONTokener(entity.getContent()));
+ } catch (Exception e) {
+ fail("Bad JSON: " + e.getMessage());
+ }
+ } else {
+ EntityUtils.consume(entity);
+ }
+ } catch (IOException e) {
+ fail(e.getMessage());
+ } finally {
+ httpGet.releaseConnection();
+ }
+ }
+}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestDrFeedsPost.java b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestDrFeedsPost.java
new file mode 100644
index 00000000..ca328b1f
--- /dev/null
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestDrFeedsPost.java
@@ -0,0 +1,308 @@
+/*******************************************************************************
+ * ============LICENSE_START==================================================
+ * * org.onap.dmaap
+ * * ===========================================================================
+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * * ===========================================================================
+ * * Licensed 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.
+ * * ============LICENSE_END====================================================
+ * *
+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * *
+ ******************************************************************************/
+
+package datarouter.provisioning;
+
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.http.Header;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ByteArrayEntity;
+import org.apache.http.entity.ContentType;
+import org.apache.http.util.EntityUtils;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.json.JSONTokener;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.dmaap.datarouter.provisioning.FeedServlet;
+
+public class IntegrationTestDrFeedsPost extends IntegrationTestBase {
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ }
+
+ @Test
+ public void testNormal() {
+ JSONObject jo = buildFeedRequest();
+ testCommon(jo, HttpServletResponse.SC_CREATED);
+ }
+
+ @Test
+ public void testNormalNoCtVersion() {
+ JSONObject jo = buildFeedRequest();
+ testCommon(jo, HttpServletResponse.SC_CREATED, "application/vnd.att-dr.feed", "JUnit");
+ }
+
+ @Test
+ public void testBadContentType() {
+ JSONObject jo = buildFeedRequest();
+ testCommon(jo, HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, "bad/bad", "Junit");
+ }
+
+ @Test
+ public void testNoBehalfHeader() {
+ JSONObject jo = buildFeedRequest();
+ testCommon(jo, HttpServletResponse.SC_BAD_REQUEST, FeedServlet.FEED_CONTENT_TYPE, null);
+ }
+
+ @Test
+ public void testMissingName() {
+ JSONObject jo = buildFeedRequest();
+ jo.remove("name");
+ testCommon(jo, 400);
+ }
+
+ @Test
+ public void testTooLongName() {
+ JSONObject jo = buildFeedRequest();
+ jo.put("name", "123456789012345678901234567890");
+ testCommon(jo, 400);
+ }
+
+ @Test
+ public void testMissingVersion() {
+ JSONObject jo = buildFeedRequest();
+ jo.remove("version");
+ testCommon(jo, 400);
+ }
+
+ @Test
+ public void testTooLongVersion() {
+ JSONObject jo = buildFeedRequest();
+ jo.put("version", "123456789012345678901234567890");
+ testCommon(jo, 400);
+ }
+
+ @Test
+ public void testTooLongDescription() {
+ // normal request
+ JSONObject jo = buildFeedRequest();
+ jo.put("description", s257);
+ testCommon(jo, 400);
+ }
+
+ @Test
+ public void testMissingAuthorization() {
+ JSONObject jo = buildFeedRequest();
+ jo.remove("authorization");
+ testCommon(jo, 400);
+ }
+
+ @Test
+ public void testMissingClassification() {
+ JSONObject jo = buildFeedRequest();
+ JSONObject j2 = jo.getJSONObject("authorization");
+ j2.remove("classification");
+ testCommon(jo, 400);
+ }
+
+ @Test
+ public void testTooLongClassification() {
+ JSONObject jo = buildFeedRequest();
+ JSONObject j2 = jo.getJSONObject("authorization");
+ j2.put("classification", s33);
+ testCommon(jo, 400);
+ }
+
+ @Test
+ public void testNoEndpointIds() {
+ JSONObject jo = buildFeedRequest();
+ JSONObject j2 = jo.getJSONObject("authorization");
+ j2.put("endpoint_ids", new JSONArray());
+ testCommon(jo, 400);
+ }
+
+ @Test
+ public void testBadIpAddress1() {
+ JSONObject jo = buildFeedRequest();
+ JSONObject j2 = jo.getJSONObject("authorization");
+ JSONArray ja = j2.getJSONArray("endpoint_addrs");
+ ja.put("ZZZ^&#$%@#&^%$@#&^");
+ testCommon(jo, 400);
+ }
+
+ @Test
+ public void testBadIpAddress2() {
+ JSONObject jo = buildFeedRequest();
+ JSONObject j2 = jo.getJSONObject("authorization");
+ JSONArray ja = j2.getJSONArray("endpoint_addrs");
+ ja.put("135.207.136.678"); // bad IPv4 addr
+ testCommon(jo, 400);
+ }
+
+ @Test
+ public void testBadIpAddress3() {
+ JSONObject jo = buildFeedRequest();
+ JSONObject j2 = jo.getJSONObject("authorization");
+ JSONArray ja = j2.getJSONArray("endpoint_addrs");
+ ja.put("2001:1890:1110:d000:1a29::17567"); // bad IPv6 addr
+ testCommon(jo, 400);
+ }
+
+ @Test
+ public void testBadNetMask() {
+ JSONObject jo = buildFeedRequest();
+ JSONObject j2 = jo.getJSONObject("authorization");
+ JSONArray ja = j2.getJSONArray("endpoint_addrs");
+ ja.put("10.10.10.10/64");
+ testCommon(jo, 400);
+ }
+
+ @Test
+ public void testGoodIpAddress1() {
+ JSONObject jo = buildFeedRequest();
+ JSONObject j2 = jo.getJSONObject("authorization");
+ JSONArray ja = j2.getJSONArray("endpoint_addrs");
+ ja.put("135.207.136.175"); // good IPv4 addr
+ testCommon(jo, 201);
+ }
+
+ @Test
+ public void testGoodIpAddress2() {
+ JSONObject jo = buildFeedRequest();
+ JSONObject j2 = jo.getJSONObject("authorization");
+ JSONArray ja = j2.getJSONArray("endpoint_addrs");
+ ja.put("2001:1890:1110:d000:1a29::175"); // good IPv6 addr
+ testCommon(jo, 201);
+ }
+
+ @Test
+ public void testGoodNetMask() {
+ JSONObject jo = buildFeedRequest();
+ JSONObject j2 = jo.getJSONObject("authorization");
+ JSONArray ja = j2.getJSONArray("endpoint_addrs");
+ ja.put("2001:1890:1110:d000:1a29::175/120");
+ testCommon(jo, 201);
+ }
+
+ private void testCommon(JSONObject jo, int expect) {
+ testCommon(jo, expect, FeedServlet.FEED_CONTENT_TYPE, "JUnit");
+ }
+
+ private void testCommon(JSONObject jo, int expect, String ctype, String bhdr) {
+ String url = props.getProperty("test.host") + "/";
+ HttpPost httpPost = new HttpPost(url);
+ try {
+ if (bhdr != null) {
+ httpPost.addHeader(FeedServlet.BEHALF_HEADER, bhdr);
+ }
+ String strJo = jo.toString();
+ HttpEntity body = new ByteArrayEntity(strJo.getBytes(), ContentType.create(ctype));
+ httpPost.setEntity(body);
+
+ HttpResponse response = httpclient.execute(httpPost);
+ ckResponse(response, expect);
+
+ HttpEntity entity = response.getEntity();
+ ctype = entity.getContentType().getValue().trim();
+ int code = response.getStatusLine().getStatusCode();
+ if (code == HttpServletResponse.SC_CREATED && !ctype.equals(FeedServlet.FEEDFULL_CONTENT_TYPE)) {
+ fail("Got wrong content type: " + ctype);
+ }
+
+ if (code == HttpServletResponse.SC_CREATED) {
+ Header[] loc = response.getHeaders("Location");
+ if (loc == null) {
+ fail("Missing Location header.");
+ }
+ }
+
+ // do something useful with the response body and ensure it is fully consumed
+ if (ctype.equals(FeedServlet.FEEDFULL_CONTENT_TYPE)) {
+ // ck Location header!
+ JSONObject jo2 = null;
+ try {
+ jo2 = new JSONObject(new JSONTokener(entity.getContent()));
+ System.err.println(jo2.toString());
+ } catch (Exception e) {
+ fail("Bad JSON: " + e.getMessage());
+ }
+ try {
+ jo2.getString("publisher");
+ JSONObject jo3 = jo2.getJSONObject("links");
+ jo3.getString("self");
+ jo3.getString("publish");
+ jo3.getString("subscribe");
+ jo3.getString("log");
+ } catch (JSONException e) {
+ fail("required field missing from result: " + e.getMessage());
+ }
+ } else {
+ EntityUtils.consume(entity);
+ }
+ } catch (IOException e) {
+ fail(e.getMessage());
+ } finally {
+ httpPost.releaseConnection();
+ }
+ }
+
+ private JSONObject buildFeedRequest() {
+ JSONObject jo = new JSONObject();
+ jo.put("name", "JunitFeed");
+ jo.put("version", "" + System.currentTimeMillis()); // make version unique
+ jo.put("description", "Sample feed used by JUnit to test");
+
+ JSONObject jo2 = new JSONObject();
+ jo2.put("classification", "unrestricted");
+
+ JSONObject jo3 = new JSONObject();
+ jo3.put("id", "id001");
+ jo3.put("password", "re1kwelj");
+ JSONObject jo4 = new JSONObject();
+ jo4.put("id", "id002");
+ jo4.put("password", "o9eqlmbd");
+
+ JSONArray ja = new JSONArray();
+ ja.put(jo3);
+ ja.put(jo4);
+ jo2.put("endpoint_ids", ja);
+
+ ja = new JSONArray();
+ ja.put("10.0.0.1");
+ ja.put("192.168.0.1");
+ ja.put("135.207.136.128/25");
+ jo2.put("endpoint_addrs", ja);
+
+ jo.put("authorization", jo2);
+ return jo;
+ }
+}
+/*
+curl -v -X POST -H 'X-ATT-DR-ON-BEHALF-OF: tester' -H 'Content-type: application/vnd.att-dr.feed' \
+ --user publisher:tomcat \
+ --data "$data" http://127.0.0.1:8080/prov/feed/
+*/
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testDRFeedsPut.java b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestDrFeedsPut.java
index 0d133566..4220ef17 100644
--- a/datarouter-prov/src/test/java/datarouter/provisioning/testDRFeedsPut.java
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestDrFeedsPut.java
@@ -7,9 +7,9 @@
* * Licensed 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.
@@ -36,23 +36,23 @@ import org.apache.http.util.EntityUtils;
import org.junit.Test;
import org.onap.dmaap.datarouter.provisioning.FeedServlet;
-public class testDRFeedsPut extends testBase {
- @Test
- public void testNotAllowed() {
- String url = props.getProperty("test.host") + "/";
- HttpPut put = new HttpPut(url);
- try {
- put.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
-
- HttpResponse response = httpclient.execute(put);
- ckResponse(response, HttpServletResponse.SC_METHOD_NOT_ALLOWED);
-
- HttpEntity entity = response.getEntity();
- EntityUtils.consume(entity);
- } catch (IOException e) {
- fail(e.getMessage());
- } finally {
- put.releaseConnection();
- }
- }
+public class IntegrationTestDrFeedsPut extends IntegrationTestBase {
+ @Test
+ public void testNotAllowed() {
+ String url = props.getProperty("test.host") + "/";
+ HttpPut put = new HttpPut(url);
+ try {
+ put.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
+
+ HttpResponse response = httpclient.execute(put);
+ ckResponse(response, HttpServletResponse.SC_METHOD_NOT_ALLOWED);
+
+ HttpEntity entity = response.getEntity();
+ EntityUtils.consume(entity);
+ } catch (IOException e) {
+ fail(e.getMessage());
+ } finally {
+ put.releaseConnection();
+ }
+ }
}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testFeedDelete.java b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestFeedDelete.java
index 657da4e0..f451f5a3 100644
--- a/datarouter-prov/src/test/java/datarouter/provisioning/testFeedDelete.java
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestFeedDelete.java
@@ -7,9 +7,9 @@
* * Licensed 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.
@@ -41,57 +41,60 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.onap.dmaap.datarouter.provisioning.FeedServlet;
-public class testFeedDelete extends testBase {
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- }
+public class IntegrationTestFeedDelete extends IntegrationTestBase {
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ getDBstate();
+ }
+
+ @Test
+ public void testDeleteNormal() {
+ // Delete the first non-deleted feed in the DB
+ JSONArray ja = db_state.getJSONArray("feeds");
+ for (int i = ja.length() - 1; i >= 0; i--) {
+ JSONObject feed = ja.getJSONObject(i);
+ if (!feed.getBoolean("deleted")) {
+ int feedid = feed.getInt("feedid");
+ testCommon(HttpServletResponse.SC_NO_CONTENT, "/feed/" + feedid);
+ return;
+ }
+ }
+ }
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
- }
+ @Test
+ public void testDeleteNoFeedId() {
+ testCommon(HttpServletResponse.SC_BAD_REQUEST, "/feed/");
+ }
- @Before
- public void setUp() throws Exception {
- super.setUp();
- getDBstate();
- }
+ @Test
+ public void testDeleteNoFeed() {
+ testCommon(HttpServletResponse.SC_NOT_FOUND, "/feed/999999");
+ }
- @Test
- public void testDeleteNormal() {
- // Delete the first non-deleted feed in the DB
- JSONArray ja = db_state.getJSONArray("feeds");
- for (int i = ja.length()-1; i >= 0; i--) {
- JSONObject feed = ja.getJSONObject(i);
- if (!feed.getBoolean("deleted")) {
- int feedid = feed.getInt("feedid");
- testCommon(HttpServletResponse.SC_NO_CONTENT, "/feed/"+feedid);
- return;
- }
- }
- }
- @Test
- public void testDeleteNoFeedID() {
- testCommon(HttpServletResponse.SC_BAD_REQUEST, "/feed/");
- }
- @Test
- public void testDeleteNoFeed() {
- testCommon(HttpServletResponse.SC_NOT_FOUND, "/feed/999999");
- }
- private void testCommon(int expect, String uri) {
- String url = props.getProperty("test.host") + uri;
- HttpDelete del = new HttpDelete(url);
- try {
- del.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
+ private void testCommon(int expect, String uri) {
+ String url = props.getProperty("test.host") + uri;
+ HttpDelete del = new HttpDelete(url);
+ try {
+ del.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
- HttpResponse response = httpclient.execute(del);
- ckResponse(response, expect);
+ HttpResponse response = httpclient.execute(del);
+ ckResponse(response, expect);
- HttpEntity entity = response.getEntity();
- EntityUtils.consume(entity);
- } catch (IOException e) {
- fail(e.getMessage());
- } finally {
- del.releaseConnection();
- }
- }
+ HttpEntity entity = response.getEntity();
+ EntityUtils.consume(entity);
+ } catch (IOException e) {
+ fail(e.getMessage());
+ } finally {
+ del.releaseConnection();
+ }
+ }
}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestFeedPut.java b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestFeedPut.java
new file mode 100644
index 00000000..7a02931e
--- /dev/null
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestFeedPut.java
@@ -0,0 +1,214 @@
+/*******************************************************************************
+ * ============LICENSE_START==================================================
+ * * org.onap.dmaap
+ * * ===========================================================================
+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * * ===========================================================================
+ * * Licensed 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.
+ * * ============LICENSE_END====================================================
+ * *
+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * *
+ ******************************************************************************/
+
+package datarouter.provisioning;
+
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.http.Header;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpPut;
+import org.apache.http.entity.ByteArrayEntity;
+import org.apache.http.entity.ContentType;
+import org.apache.http.util.EntityUtils;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.json.JSONTokener;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.dmaap.datarouter.provisioning.FeedServlet;
+
+public class IntegrationTestFeedPut extends IntegrationTestBase {
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ getDBstate();
+ }
+
+ @Test
+ public void testPutNoFeedId() {
+ JSONObject jo = buildFeedRequest();
+ testCommon(jo, HttpServletResponse.SC_BAD_REQUEST, "/feed/");
+ }
+
+ @Test
+ public void testPutNoFeed() {
+ JSONObject jo = buildFeedRequest();
+ testCommon(jo, HttpServletResponse.SC_NOT_FOUND, "/feed/999999");
+ }
+
+ @Test
+ public void testBadContentType() {
+ JSONObject jo = buildFeedRequest();
+ testCommon(jo, HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, "bad/bad", "JUnit");
+ }
+
+ @Test
+ public void testChangeName() {
+ JSONObject jo = buildFeedRequest();
+ jo.put("name", "badname");
+ testCommon(jo, HttpServletResponse.SC_BAD_REQUEST, FeedServlet.FEED_CONTENT_TYPE, "JUnit");
+ }
+
+ @Test
+ public void testChangeVersion() {
+ JSONObject jo = buildFeedRequest();
+ jo.put("version", "badvers");
+ testCommon(jo, HttpServletResponse.SC_BAD_REQUEST, FeedServlet.FEED_CONTENT_TYPE, "JUnit");
+ }
+
+ @Test
+ public void testBadPublisher() {
+ JSONObject jo = buildFeedRequest();
+ testCommon(jo, HttpServletResponse.SC_BAD_REQUEST, FeedServlet.FEED_CONTENT_TYPE, "BadBadBad");
+ }
+
+ @Test
+ public void testChangeDescription() {
+ JSONObject jo = buildFeedRequest();
+ // change descr
+ jo.put("description", "This description HAS BEEN CHANGED!!!");
+ testCommon(jo, HttpServletResponse.SC_OK, FeedServlet.FEED_CONTENT_TYPE, "JUnit");
+ }
+
+ private void testCommon(JSONObject jo, int expect, String uri) {
+ testCommon(jo, expect, FeedServlet.FEED_CONTENT_TYPE, "Junit", uri);
+ }
+
+ private void testCommon(JSONObject jo, int expect, String ctype, String bhdr) {
+ JSONArray ja = db_state.getJSONArray("feeds");
+ for (int i = 0; i < ja.length(); i++) {
+ JSONObject feed0 = ja.getJSONObject(i);
+ if (!feed0.getBoolean("deleted") && feed0.getString("publisher").equals(bhdr)) {
+ int feedid = feed0.getInt("feedid");
+ testCommon(jo, expect, ctype, bhdr, "/feed/" + feedid);
+ return;
+ }
+ }
+ }
+
+ private void testCommon(JSONObject jo, int expect, String ctype, String bhdr, String uri) {
+ String url = props.getProperty("test.host") + uri;
+ HttpPut put = new HttpPut(url);
+ try {
+ if (bhdr != null) {
+ put.addHeader(FeedServlet.BEHALF_HEADER, bhdr);
+ }
+ String strJo = jo.toString();
+ HttpEntity body = new ByteArrayEntity(strJo.getBytes(), ContentType.create(ctype));
+ put.setEntity(body);
+
+ HttpResponse response = httpclient.execute(put);
+ ckResponse(response, expect);
+
+ HttpEntity entity = response.getEntity();
+ ctype = entity.getContentType().getValue().trim();
+ int code = response.getStatusLine().getStatusCode();
+ if (code == HttpServletResponse.SC_CREATED && !ctype.equals(FeedServlet.FEEDFULL_CONTENT_TYPE)) {
+ fail("Got wrong content type: " + ctype);
+ }
+
+ if (code == HttpServletResponse.SC_CREATED) {
+ Header[] loc = response.getHeaders("Location");
+ if (loc == null) {
+ fail("Missing Location header.");
+ }
+ }
+
+ // do something useful with the response body and ensure it is fully consumed
+ if (ctype.equals(FeedServlet.FEEDFULL_CONTENT_TYPE)) {
+ // ck Location header!
+ JSONObject jo2 = null;
+ try {
+ jo2 = new JSONObject(new JSONTokener(entity.getContent()));
+ System.err.println(jo2.toString());
+ } catch (Exception e) {
+ fail("Bad JSON: " + e.getMessage());
+ }
+ try {
+ jo2.getString("publisher");
+ JSONObject jo3 = jo2.getJSONObject("links");
+ jo3.getString("self");
+ jo3.getString("publish");
+ jo3.getString("subscribe");
+ jo3.getString("log");
+ } catch (JSONException e) {
+ fail("required field missing from result: " + e.getMessage());
+ }
+ } else {
+ EntityUtils.consume(entity);
+ }
+ } catch (IOException e) {
+ fail(e.getMessage());
+ } finally {
+ put.releaseConnection();
+ }
+ }
+
+ private JSONObject buildFeedRequest() {
+ JSONObject jo = new JSONObject();
+ jo.put("name", "feed");
+ jo.put("version", "1.0.0");
+ jo.put("description", "Sample feed used by JUnit to test");
+
+ JSONObject jo2 = new JSONObject();
+ jo2.put("classification", "unrestricted");
+
+ JSONObject jo3 = new JSONObject();
+ jo3.put("id", "id001");
+ jo3.put("password", "re1kwelj");
+ JSONObject jo4 = new JSONObject();
+ jo4.put("id", "id002");
+ jo4.put("password", "o9eqlmbd");
+
+ JSONArray ja = new JSONArray();
+ ja.put(jo3);
+ ja.put(jo4);
+ jo2.put("endpoint_ids", ja);
+
+ ja = new JSONArray();
+ ja.put("20.0.0.1");
+ ja.put("195.68.12.15");
+ ja.put("135.207.136.128/25");
+ jo2.put("endpoint_addrs", ja);
+
+ jo.put("authorization", jo2);
+ return jo;
+ }
+}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestInternalGet.java b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestInternalGet.java
new file mode 100644
index 00000000..25397f7f
--- /dev/null
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestInternalGet.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * ============LICENSE_START==================================================
+ * * org.onap.dmaap
+ * * ===========================================================================
+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * * ===========================================================================
+ * * Licensed 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.
+ * * ============LICENSE_END====================================================
+ * *
+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * *
+ ******************************************************************************/
+
+package datarouter.provisioning;
+
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.util.EntityUtils;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.json.JSONTokener;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.dmaap.datarouter.provisioning.FeedServlet;
+import org.onap.dmaap.datarouter.provisioning.beans.Parameters;
+
+public class IntegrationTestInternalGet extends IntegrationTestBase {
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ }
+
+ @Test
+ public void testNormal() {
+ String url = props.getProperty("test.host") + "/internal/prov";
+ HttpGet httpPost = new HttpGet(url);
+ try {
+ httpPost.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
+
+ HttpResponse response = httpclient.execute(httpPost);
+ int code = response.getStatusLine().getStatusCode();
+ if (code != 200) {
+ fail("Unexpected response, expect " + 200 + " got " + code);
+ }
+
+ HttpEntity entity = response.getEntity();
+ String ctype = entity.getContentType().getValue().trim();
+ boolean ok = ctype.equals(FeedServlet.PROVFULL_CONTENT_TYPE1);
+ ok |= ctype.equals(FeedServlet.PROVFULL_CONTENT_TYPE2);
+ if (!ok) {
+ fail("Got wrong content type: " + ctype);
+ }
+
+ // do something useful with the response body and ensure it is fully consumed
+ if (ok) {
+ JSONObject jo = null;
+ try {
+ jo = new JSONObject(new JSONTokener(entity.getContent()));
+ } catch (Exception e) {
+ fail("Bad JSON: " + e.getMessage());
+ }
+ try {
+ jo.getJSONArray("feeds");
+ jo.getJSONArray("subscriptions");
+ JSONObject jo2 = jo.getJSONObject("parameters");
+ jo2.getJSONArray(Parameters.NODES);
+ jo2.getString(Parameters.ACTIVE_POD);
+ jo2.getString(Parameters.STANDBY_POD);
+ jo2.getInt(Parameters.LOGROLL_INTERVAL);
+ jo2.getInt(Parameters.DELIVERY_INIT_RETRY_INTERVAL);
+ jo2.getInt(Parameters.DELIVERY_MAX_RETRY_INTERVAL);
+ jo2.getInt(Parameters.DELIVERY_RETRY_RATIO);
+ jo2.getInt(Parameters.DELIVERY_MAX_AGE);
+ } catch (JSONException e) {
+ fail("required field missing from result: " + e.getMessage());
+ }
+ } else {
+ EntityUtils.consume(entity);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ } finally {
+ httpPost.releaseConnection();
+ }
+ }
+}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestInternalMisc.java b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestInternalMisc.java
new file mode 100644
index 00000000..fd00ea51
--- /dev/null
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestInternalMisc.java
@@ -0,0 +1,155 @@
+/*******************************************************************************
+ * ============LICENSE_START==================================================
+ * * org.onap.dmaap
+ * * ===========================================================================
+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * * ===========================================================================
+ * * Licensed 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.
+ * * ============LICENSE_END====================================================
+ * *
+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * *
+ ******************************************************************************/
+
+package datarouter.provisioning;
+
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.util.EntityUtils;
+import org.json.JSONArray;
+import org.json.JSONTokener;
+import org.junit.Test;
+import org.onap.dmaap.datarouter.provisioning.FeedServlet;
+
+public class IntegrationTestInternalMisc extends IntegrationTestBase {
+ @Test
+ public void testInternalDrlogs() {
+ String url = props.getProperty("test.host") + "/internal/drlogs";
+ HttpGet httpPost = new HttpGet(url);
+ try {
+ httpPost.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
+ HttpResponse response = httpclient.execute(httpPost);
+ int code = response.getStatusLine().getStatusCode();
+ if (code != 200) {
+ fail("Unexpected response, expect " + HttpServletResponse.SC_NOT_FOUND + " got " + code);
+ }
+
+ HttpEntity entity = response.getEntity();
+ String ctype = entity.getContentType().getValue().trim();
+ boolean ok = ctype.equals("text/plain");
+ if (!ok) {
+ fail("Got wrong content type: " + ctype);
+ }
+
+ EntityUtils.consume(entity);
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ } finally {
+ httpPost.releaseConnection();
+ }
+ }
+
+ @Test
+ public void testInternalHalt() {
+ String url = props.getProperty("test.host") + "/internal/halt";
+ HttpGet httpPost = new HttpGet(url);
+ try {
+ httpPost.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
+
+ HttpResponse response = httpclient.execute(httpPost);
+ int code = response.getStatusLine().getStatusCode();
+ if (code != HttpServletResponse.SC_NOT_FOUND) {
+ fail("Unexpected response, expect " + HttpServletResponse.SC_NOT_FOUND + " got " + code);
+ }
+
+ HttpEntity entity = response.getEntity();
+ EntityUtils.consume(entity);
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ } finally {
+ httpPost.releaseConnection();
+ }
+ }
+
+ @SuppressWarnings("unused")
+ @Test
+ public void testInternalLogs() {
+ String url = props.getProperty("test.host") + "/internal/logs";
+ HttpGet httpPost = new HttpGet(url);
+ try {
+ httpPost.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
+
+ HttpResponse response = httpclient.execute(httpPost);
+ int code = response.getStatusLine().getStatusCode();
+ if (code != 200) {
+ fail("Unexpected response, expect " + 200 + " got " + code);
+ }
+
+ HttpEntity entity = response.getEntity();
+ String ctype = entity.getContentType().getValue().trim();
+ boolean ok = ctype.equals("application/json");
+ if (!ok) {
+ fail("Got wrong content type: " + ctype);
+ }
+
+ // do something useful with the response body and ensure it is fully consumed
+ if (ok) {
+ try {
+ new JSONArray(new JSONTokener(entity.getContent()));
+ } catch (Exception e) {
+ fail("Bad JSON: " + e.getMessage());
+ }
+ } else {
+ EntityUtils.consume(entity);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ } finally {
+ httpPost.releaseConnection();
+ }
+ }
+
+ @Test
+ public void testInternalBadUrl() {
+ String url = props.getProperty("test.host") + "/internal/badurl";
+ HttpGet httpPost = new HttpGet(url);
+ try {
+ httpPost.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
+
+ HttpResponse response = httpclient.execute(httpPost);
+ int code = response.getStatusLine().getStatusCode();
+ if (code != HttpServletResponse.SC_NOT_FOUND) {
+ fail("Unexpected response, expect " + HttpServletResponse.SC_NOT_FOUND + " got " + code);
+ }
+
+ HttpEntity entity = response.getEntity();
+ EntityUtils.consume(entity);
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ } finally {
+ httpPost.releaseConnection();
+ }
+ }
+
+}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestLogGet.java b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestLogGet.java
new file mode 100644
index 00000000..ba28da11
--- /dev/null
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestLogGet.java
@@ -0,0 +1,205 @@
+/*******************************************************************************
+ * ============LICENSE_START==================================================
+ * * org.onap.dmaap
+ * * ===========================================================================
+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * * ===========================================================================
+ * * Licensed 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.
+ * * ============LICENSE_END====================================================
+ * *
+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * *
+ ******************************************************************************/
+
+package datarouter.provisioning;
+
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.util.EntityUtils;
+import org.json.JSONArray;
+import org.json.JSONTokener;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.dmaap.datarouter.provisioning.FeedServlet;
+
+public class IntegrationTestLogGet extends IntegrationTestBase {
+ private JSONArray returnedlist;
+ private int feedid = 4;
+ private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ // need to seed the DB here
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ // need to "unseed" the DB
+ }
+
+ /**
+ * This is the setUp method.
+ */
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ getDBstate();
+// JSONArray ja = db_state.getJSONArray("feeds");
+// for (int i = 0; i < ja.length(); i++) {
+// JSONObject jo = ja.getJSONObject(i);
+// if (!jo.getBoolean("deleted"))
+// feedid = jo.getInt("feedid");
+// }
+ }
+
+ @Test
+ public void testNormal() {
+ testCommon(HttpServletResponse.SC_OK);
+ }
+
+ @Test
+ public void testNormalPubOnly() {
+ testCommon(HttpServletResponse.SC_OK, "?type=pub");
+ }
+
+ @Test
+ public void testNormalDelOnly() {
+ testCommon(HttpServletResponse.SC_OK, "?type=del");
+ }
+
+ @Test
+ public void testNormalExpOnly() {
+ testCommon(HttpServletResponse.SC_OK, "?type=exp");
+ }
+
+ @Test
+ public void testNormalXxxOnly() {
+ testCommon(HttpServletResponse.SC_BAD_REQUEST, "?type=xxx");
+ }
+
+ @Test
+ public void testNormalStatusSuccess() {
+ testCommon(HttpServletResponse.SC_OK, "?statusCode=success");
+ }
+
+ @Test
+ public void testNormalStatusRedirect() {
+ testCommon(HttpServletResponse.SC_OK, "?statusCode=redirect");
+ }
+
+ @Test
+ public void testNormalStatusFailure() {
+ testCommon(HttpServletResponse.SC_OK, "?statusCode=failure");
+ }
+
+ @Test
+ public void testNormalStatus200() {
+ testCommon(HttpServletResponse.SC_OK, "?statusCode=200");
+ }
+
+ @Test
+ public void testNormalStatusXxx() {
+ testCommon(HttpServletResponse.SC_BAD_REQUEST, "?statusCode=xxx");
+ }
+
+ @Test
+ public void testNormalExpiryNotRetryable() {
+ testCommon(HttpServletResponse.SC_OK, "?expiryReason=notRetryable");
+ }
+
+ @Test
+ public void testNormalExpiryRetriesExhausted() {
+ testCommon(HttpServletResponse.SC_OK, "?expiryReason=retriesExhausted");
+ }
+
+ @Test
+ public void testNormalExpiryXxx() {
+ testCommon(HttpServletResponse.SC_BAD_REQUEST, "?expiryReason=xxx");
+ }
+
+ @Test
+ public void testNormalPublishId() {
+ testCommon(HttpServletResponse.SC_OK, "?publishId=1366985877801.mtdvnj00-drtr.proto.research.att.com");
+ }
+
+ @Test
+ public void testNormalStart() {
+ long nowMinus5Days = System.currentTimeMillis() - (5 * 24 * 60 * 60 * 1000L); // 5 days
+ testCommon(HttpServletResponse.SC_OK, String.format("?start=%s", sdf.format(nowMinus5Days)));
+ }
+
+ @Test
+ public void testBadStart() {
+ testCommon(HttpServletResponse.SC_BAD_REQUEST, "?start=xxx");
+ }
+
+ @Test
+ public void testLongEnd() {
+ testCommon(HttpServletResponse.SC_OK, "?end=1364837896220");
+ }
+
+ @Test
+ public void testBadEnd() {
+ testCommon(HttpServletResponse.SC_BAD_REQUEST, "?end=2013-04-25T11:01:25Q");
+ }
+
+ private void testCommon(int expect) {
+ testCommon(expect, "");
+ }
+
+ private void testCommon(int expect, String query) {
+ String url = props.getProperty("test.host") + "/feedlog/" + feedid + query;
+ HttpGet httpGet = new HttpGet(url);
+ try {
+ HttpResponse response = httpclient.execute(httpGet);
+ ckResponse(response, expect);
+
+ HttpEntity entity = response.getEntity();
+ String ctype = entity.getContentType().getValue().trim();
+ if (expect == HttpServletResponse.SC_OK) {
+ if (!ctype.equals(FeedServlet.LOGLIST_CONTENT_TYPE)) {
+ fail("Got wrong content type: " + ctype);
+ }
+ }
+
+ // do something useful with the response body and ensure it is fully consumed
+ if (ctype.equals(FeedServlet.LOGLIST_CONTENT_TYPE)) {
+ try {
+ returnedlist = new JSONArray(new JSONTokener(entity.getContent()));
+ int returnedListLength = returnedlist.length();
+ if (returnedListLength != 0) {
+ System.err.println(returnedListLength + " items");
+ }
+ } catch (Exception e) {
+ fail("Bad JSON: " + e.getMessage());
+ }
+ } else {
+ EntityUtils.consume(entity);
+ }
+ } catch (IOException e) {
+ fail(e.getMessage());
+ } finally {
+ httpGet.releaseConnection();
+ }
+ }
+}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestPublish.java b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestPublish.java
new file mode 100644
index 00000000..833380a6
--- /dev/null
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestPublish.java
@@ -0,0 +1,126 @@
+/*******************************************************************************
+ * ============LICENSE_START==================================================
+ * * org.onap.dmaap
+ * * ===========================================================================
+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * * ===========================================================================
+ * * Licensed 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.
+ * * ============LICENSE_END====================================================
+ * *
+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * *
+ ******************************************************************************/
+
+package datarouter.provisioning;
+
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.http.Header;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.RedirectStrategy;
+import org.apache.http.client.methods.HttpDelete;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpPut;
+import org.apache.http.client.methods.HttpRequestBase;
+import org.apache.http.impl.client.DefaultRedirectStrategy;
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.dmaap.datarouter.provisioning.FeedServlet;
+
+public class IntegrationTestPublish extends IntegrationTestBase {
+ private String publishUrl;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ }
+
+ /**
+ * This is the setUp method.
+ */
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ getDBstate();
+ // Get publish URL from first feed
+ JSONArray ja = db_state.getJSONArray("feeds");
+ for (int i = ja.length() - 1; i >= 0; i--) {
+ JSONObject feed = ja.getJSONObject(i);
+ if (!feed.getBoolean("deleted")) {
+ publishUrl = feed.getJSONObject("links").getString("publish");
+ publishUrl += "/" + System.currentTimeMillis();
+ return;
+ }
+ }
+ }
+
+ @Test
+ public void testDelete() {
+ HttpDelete httpDelete = new HttpDelete(publishUrl);
+ testCommon(httpDelete);
+ }
+
+ @Test
+ public void testGet() {
+ HttpGet httpGet = new HttpGet(publishUrl);
+ testCommon(httpGet);
+ }
+
+ @Test
+ public void testPut() {
+ HttpPut httpPut = new HttpPut(publishUrl);
+ testCommon(httpPut);
+ }
+
+ @Test
+ public void testPost() {
+ HttpPost httpPost = new HttpPost(publishUrl);
+ testCommon(httpPost);
+ }
+
+ private void testCommon(HttpRequestBase rb) {
+ try {
+ rb.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
+ RedirectStrategy strategy = new DefaultRedirectStrategy() {
+ protected boolean isRedirectable(String method) {
+ return false;
+ }
+ };
+ httpclient.setRedirectStrategy(strategy);
+ HttpResponse response = httpclient.execute(rb);
+ ckResponse(response, HttpServletResponse.SC_MOVED_PERMANENTLY);
+
+ // Make sure there is a Location hdr
+ Header[] loc = response.getHeaders("Location");
+ if (loc == null || loc.length == 0) {
+ fail("No location header");
+ }
+ } catch (IOException e) {
+ fail(e.getMessage());
+ } finally {
+ rb.releaseConnection();
+ }
+ }
+}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestRleBitSet.java b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestRleBitSet.java
new file mode 100644
index 00000000..133e7dc1
--- /dev/null
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestRleBitSet.java
@@ -0,0 +1,289 @@
+/*******************************************************************************
+ * ============LICENSE_START==================================================
+ * * org.onap.dmaap
+ * * ===========================================================================
+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * * ===========================================================================
+ * * Licensed 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.
+ * * ============LICENSE_END====================================================
+ * *
+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * *
+ ******************************************************************************/
+
+package datarouter.provisioning;
+
+import static org.junit.Assert.fail;
+
+import java.util.Iterator;
+
+import org.junit.Test;
+import org.onap.dmaap.datarouter.provisioning.utils.RLEBitSet;
+
+public class IntegrationTestRleBitSet {
+ @Test
+ public void testBasicConstructor() {
+ RLEBitSet bs = new RLEBitSet();
+ if (!bs.isEmpty()) {
+ fail("bit set not empty");
+ }
+ }
+
+ @Test
+ public void testStringConstructor() {
+ RLEBitSet bs = new RLEBitSet("1-10");
+ if (bs.isEmpty()) {
+ fail("bit set is empty");
+ }
+ if (!bs.toString().equals("1-10")) {
+ fail("bad value");
+ }
+ bs = new RLEBitSet("69,70,71");
+ if (bs.isEmpty()) {
+ fail("bit set is empty");
+ }
+ if (!bs.toString().equals("69-71")) {
+ fail("bad value");
+ }
+ bs = new RLEBitSet("555 444 443 442");
+ if (!bs.toString().equals("442-444,555")) {
+ fail("bad value");
+ }
+ }
+
+ @Test
+ public void testLength() {
+ RLEBitSet bs = new RLEBitSet();
+ if (bs.length() != 0) {
+ fail("testLength fail " + bs + " " + bs.length());
+ }
+ bs = new RLEBitSet("1-10");
+ if (bs.length() != 11) {
+ fail("testLength fail " + bs + " " + bs.length());
+ }
+ bs = new RLEBitSet("1-20,100000000-100000005");
+ if (bs.length() != 100000006) {
+ fail("testLength fail " + bs + " " + bs.length());
+ }
+ }
+
+ @Test
+ public void testGet() {
+ RLEBitSet bs = new RLEBitSet("1-10");
+ if (!bs.get(5)) {
+ fail("get");
+ }
+ if (bs.get(69)) {
+ fail("get");
+ }
+ }
+
+ @Test
+ public void testSetOneBit() {
+ RLEBitSet bs = new RLEBitSet();
+ for (int i = 12; i < 200; i++) {
+ bs.set(i);
+ }
+ bs.set(690);
+ for (int i = 305; i < 309; i++) {
+ bs.set(i);
+ }
+ bs.set(304);
+ if (!bs.toString().equals("12-199,304-308,690")) {
+ fail("testSetOneBit fail " + bs);
+ }
+ }
+
+ @Test
+ public void testSetString() {
+ RLEBitSet bs = new RLEBitSet();
+ bs.set("1-100");
+ if (!bs.toString().equals("1-100")) {
+ fail("testSetString fail " + bs);
+ }
+ }
+
+ @Test
+ public void testSetRange() {
+ RLEBitSet bs = new RLEBitSet();
+ bs.set(50,60);
+ if (!bs.toString().equals("50-59")) {
+ fail("testSetRange fail " + bs);
+ }
+ }
+
+ @Test
+ public void testClearOneBit() {
+ RLEBitSet bs = new RLEBitSet("1-10");
+ bs.clear(5);
+ if (!bs.toString().equals("1-4,6-10")) {
+ fail("testClearOneBit fail");
+ }
+ bs = new RLEBitSet("1-10");
+ bs.clear(11);
+ if (!bs.toString().equals("1-10")) {
+ fail("testClearOneBit fail " + bs);
+ }
+ }
+
+ @Test
+ public void testClearRangeLeft() {
+ RLEBitSet bs = new RLEBitSet("100-200");
+ bs.clear(40,50);
+ if (!bs.toString().equals("100-200")) {
+ fail("testClearRangeLeft fail " + bs);
+ }
+ }
+
+ @Test
+ public void testClearRangeRight() {
+ RLEBitSet bs = new RLEBitSet("100-200");
+ bs.clear(400,500);
+ if (!bs.toString().equals("100-200")) {
+ fail("testClearRangeRight fail " + bs);
+ }
+ }
+
+ @Test
+ public void testClearRangeMiddle() {
+ RLEBitSet bs = new RLEBitSet("100-200");
+ bs.clear(120,130);
+ if (!bs.toString().equals("100-119,130-200")) {
+ fail("testClearRangeRight fail " + bs);
+ }
+ }
+
+ @Test
+ public void testClearRangeIntersect() {
+ RLEBitSet bs = new RLEBitSet("100-200");
+ bs.clear(100,200);
+ if (!bs.toString().equals("200")) {
+ fail("testClearRangeIntersect fail " + bs);
+ }
+ }
+
+ @Test
+ public void testClearOverlapLeft() {
+ RLEBitSet bs = new RLEBitSet("100-200");
+ bs.clear(50,150);
+ if (!bs.toString().equals("150-200")) {
+ fail("testClearOverlapLeft fail " + bs);
+ }
+ }
+
+ @Test
+ public void testClearOverlapRight() {
+ RLEBitSet bs = new RLEBitSet("100-200");
+ bs.clear(150,250);
+ if (!bs.toString().equals("100-149")) {
+ fail("testClearOverlapRight fail " + bs);
+ }
+ }
+
+ @Test
+ public void testClearOverlapAll() {
+ RLEBitSet bs = new RLEBitSet("100-200");
+ bs.clear(50,250);
+ if (!bs.toString().equals("")) {
+ fail("testClearOverlapAll fail " + bs);
+ }
+ }
+
+ @Test
+ public void testAnd() {
+ RLEBitSet bs = new RLEBitSet("100-200");
+ RLEBitSet b2 = new RLEBitSet("150-400");
+ bs.and(b2);
+ if (!bs.toString().equals("150-200")) {
+ fail("testAnd fail " + bs);
+ }
+ bs = new RLEBitSet("100-200");
+ b2 = new RLEBitSet("1500-4000");
+ bs.and(b2);
+ if (!bs.isEmpty()) {
+ fail("testAnd fail " + bs);
+ }
+ }
+
+ @Test
+ public void testAndNot() {
+ RLEBitSet bs = new RLEBitSet("100-200");
+ RLEBitSet b2 = new RLEBitSet("150-159");
+ bs.andNot(b2);
+ if (!bs.toString().equals("100-149,160-200")) {
+ fail("testAndNot fail " + bs);
+ }
+ }
+
+ @Test
+ public void testIsEmpty() {
+ RLEBitSet bs = new RLEBitSet("");
+ if (!bs.isEmpty()) {
+ fail("testIsEmpty fail " + bs);
+ }
+ bs.set(1);
+ if (bs.isEmpty()) {
+ fail("testIsEmpty fail " + bs);
+ }
+ }
+
+ @Test
+ public void testCardinality() {
+ RLEBitSet bs = new RLEBitSet("1-120,10000000-10000005");
+ if (bs.cardinality() != 126) {
+ fail("testCardinality fail 1");
+ }
+ }
+
+ @Test
+ public void testIterator() {
+ RLEBitSet rleBitSet = new RLEBitSet("1,5,10-12");
+ Iterator<Long[]> rleBitSetRangeIterator = rleBitSet.getRangeIterator();
+ if (!rleBitSetRangeIterator.hasNext()) {
+ fail("iterator fail 1");
+ }
+ Long[] ll = rleBitSetRangeIterator.next();
+ if (ll == null || ll[0] != 1 || ll[1] != 1) {
+ fail("iterator fail 2");
+ }
+
+ if (!rleBitSetRangeIterator.hasNext()) {
+ fail("iterator fail 3");
+ }
+ ll = rleBitSetRangeIterator.next();
+ if (ll == null || ll[0] != 5 || ll[1] != 5) {
+ fail("iterator fail 4");
+ }
+
+ if (!rleBitSetRangeIterator.hasNext()) {
+ fail("iterator fail 5");
+ }
+ ll = rleBitSetRangeIterator.next();
+ if (ll == null || ll[0] != 10 || ll[1] != 12) {
+ fail("iterator fail 6");
+ }
+
+ if (rleBitSetRangeIterator.hasNext()) {
+ fail("iterator fail 7");
+ }
+ }
+
+ @Test
+ public void testClone() {
+ RLEBitSet bs1 = new RLEBitSet("1,5,10-12");
+ RLEBitSet bs2 = (RLEBitSet) bs1.clone();
+ if (!bs1.toString().equals(bs2.toString())) {
+ fail("clone");
+ }
+ }
+}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testRouteAPI.java b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestRouteApi.java
index 7295d00f..365ceab2 100644
--- a/datarouter-prov/src/test/java/datarouter/provisioning/testRouteAPI.java
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestRouteApi.java
@@ -7,9 +7,9 @@
* * Licensed 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.
@@ -23,8 +23,6 @@
package datarouter.provisioning;
-import datarouter.provisioning.testBase;
-
-public class testRouteAPI extends testBase {
+public class IntegrationTestRouteApi extends IntegrationTestBase {
}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestSubscribePost.java b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestSubscribePost.java
new file mode 100644
index 00000000..1f21c1f6
--- /dev/null
+++ b/datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestSubscribePost.java
@@ -0,0 +1,192 @@
+/*******************************************************************************
+ * ============LICENSE_START==================================================
+ * * org.onap.dmaap
+ * * ===========================================================================
+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * * ===========================================================================
+ * * Licensed 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.
+ * * ============LICENSE_END====================================================
+ * *
+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * *
+ ******************************************************************************/
+
+package datarouter.provisioning;
+
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ByteArrayEntity;
+import org.apache.http.entity.ContentType;
+import org.apache.http.util.EntityUtils;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.json.JSONTokener;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.dmaap.datarouter.provisioning.FeedServlet;
+import org.onap.dmaap.datarouter.provisioning.SubscribeServlet;
+
+public class IntegrationTestSubscribePost extends IntegrationTestBase {
+ private int feednum = 0;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ }
+
+ /**
+ * This is the setUp method.
+ */
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ getDBstate();
+ // use the first feed to subscribe to
+ JSONArray ja = db_state.getJSONArray("feeds");
+ for (int i = 0; i < ja.length(); i++) {
+ JSONObject feed0 = ja.getJSONObject(i);
+ if (feed0 != null && !feed0.getBoolean("deleted")) {
+ feednum = feed0.getInt("feedid");
+ return;
+ }
+ }
+ }
+
+ @Test
+ public void testNormal() {
+ JSONObject jo = buildSubRequest();
+ testCommon(jo, HttpServletResponse.SC_CREATED);
+ }
+
+ @Test
+ public void testMissingUrl() {
+ JSONObject jo = buildSubRequest();
+ jo.getJSONObject("delivery").remove("url");
+ testCommon(jo, HttpServletResponse.SC_BAD_REQUEST);
+ }
+
+ @Test
+ public void testTooLongUrl() {
+ JSONObject jo = buildSubRequest();
+ jo.getJSONObject("delivery").put("url", "https://" + s257);
+ testCommon(jo, HttpServletResponse.SC_BAD_REQUEST);
+ }
+
+ @Test
+ public void testMissingUser() {
+ JSONObject jo = buildSubRequest();
+ jo.getJSONObject("delivery").remove("user");
+ testCommon(jo, HttpServletResponse.SC_BAD_REQUEST);
+ }
+
+ @Test
+ public void testTooLongUser() {
+ JSONObject jo = buildSubRequest();
+ jo.getJSONObject("delivery").put("user", s33);
+ testCommon(jo, HttpServletResponse.SC_BAD_REQUEST);
+ }
+
+ @Test
+ public void testMissingPassword() {
+ JSONObject jo = buildSubRequest();
+ jo.getJSONObject("delivery").remove("password");
+ testCommon(jo, HttpServletResponse.SC_BAD_REQUEST);
+ }
+
+ @Test
+ public void testTooLongPassword() {
+ JSONObject jo = buildSubRequest();
+ jo.getJSONObject("delivery").put("password", s33);
+ testCommon(jo, HttpServletResponse.SC_BAD_REQUEST);
+ }
+
+ @Test
+ public void testNonBooleanMetadata() {
+ JSONObject jo = buildSubRequest();
+ jo.put("metadataOnly", s33);
+ testCommon(jo, HttpServletResponse.SC_BAD_REQUEST);
+ }
+
+ private void testCommon(JSONObject jo, int expect) {
+ String url = props.getProperty("test.host") + "/subscribe/" + feednum;
+ HttpPost httpPost = new HttpPost(url);
+ try {
+ httpPost.addHeader(SubscribeServlet.BEHALF_HEADER, "JUnit");
+ String strJo = jo.toString();
+ HttpEntity body = new ByteArrayEntity(strJo.getBytes(),
+ ContentType.create(SubscribeServlet.SUB_CONTENT_TYPE));
+ httpPost.setEntity(body);
+
+ HttpResponse response = httpclient.execute(httpPost);
+ ckResponse(response, expect);
+
+ HttpEntity entity = response.getEntity();
+ String ctype = entity.getContentType().getValue();
+ int code = response.getStatusLine().getStatusCode();
+ if (code == HttpServletResponse.SC_CREATED && !ctype.equals(SubscribeServlet.SUBFULL_CONTENT_TYPE)) {
+ fail("Got wrong content type: " + ctype);
+ }
+
+ // do something useful with the response body and ensure it is fully consumed
+ if (ctype.equals(FeedServlet.SUBFULL_CONTENT_TYPE)) {
+ JSONObject jo2 = null;
+ try {
+ jo2 = new JSONObject(new JSONTokener(entity.getContent()));
+ } catch (Exception e) {
+ fail("Bad JSON: " + e.getMessage());
+ }
+ try {
+ jo2.getString("subscriber");
+ JSONObject jo3 = jo2.getJSONObject("links");
+ jo3.getString("self");
+ jo3.getString("feed");
+ jo3.getString("log");
+ } catch (JSONException e) {
+ fail("required field missing from result: " + e.getMessage());
+ }
+ } else {
+ EntityUtils.consume(entity);
+ }
+ } catch (IOException e) {
+ fail(e.getMessage());
+ } finally {
+ httpPost.releaseConnection();
+ }
+ }
+
+ private JSONObject buildSubRequest() {
+ JSONObject jo2 = new JSONObject();
+ jo2.put("url", "https://www.att.com/");
+ jo2.put("user", "dmr");
+ jo2.put("password", "passw0rd");
+ jo2.put("use100", true);
+
+ JSONObject jo = new JSONObject();
+ jo.put("delivery", jo2);
+ jo.put("metadataOnly", Boolean.FALSE);
+ return jo;
+ }
+}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testBase.java b/datarouter-prov/src/test/java/datarouter/provisioning/testBase.java
deleted file mode 100644
index dd8e86cc..00000000
--- a/datarouter-prov/src/test/java/datarouter/provisioning/testBase.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START==================================================
- * * org.onap.dmaap
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed 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.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-
-package datarouter.provisioning;
-
-import static org.junit.Assert.fail;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.KeyStore;
-import java.util.Properties;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.conn.ssl.SSLSocketFactory;
-import org.apache.http.impl.client.AbstractHttpClient;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.util.EntityUtils;
-import org.json.JSONObject;
-import org.json.JSONTokener;
-import org.junit.After;
-import org.junit.Before;
-import org.onap.dmaap.datarouter.provisioning.FeedServlet;
-
-public class testBase {
- /** The properties file to read the DB properties from */
- public static final String CONFIG_FILE = "integration_test.properties";
-
- public Properties props;
- protected AbstractHttpClient httpclient;
- protected String s_33;
- protected String s_257;
- protected static JSONObject db_state;
-
- @Before
- public void setUp() throws Exception {
- if (props == null) {
- props = new Properties();
- InputStream inStream = getClass().getClassLoader().getResourceAsStream(CONFIG_FILE);
- try {
- props.load(inStream);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- inStream.close();
- }
- }
-
- httpclient = new DefaultHttpClient();
- String s = "0123456789ABCDEF";
- s_33 = s + s + "!";
- s = s + s + s + s;
- s_257 = s + s + s + s + "!";
-
- // keystore
- String store = props.getProperty("test.keystore");
- String pass = props.getProperty("test.kspassword");
- KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
- FileInputStream instream = new FileInputStream(new File(store));
- try {
- keyStore.load(instream, pass.toCharArray());
- } catch (Exception x) {
- System.err.println("READING KEYSTORE: "+x);
- } finally {
- try { instream.close(); } catch (Exception ignore) {}
- }
-
- store = props.getProperty("test.truststore");
- pass = props.getProperty("test.tspassword");
- KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
- instream = new FileInputStream(new File(store));
- try {
- trustStore.load(instream, pass.toCharArray());
- } catch (Exception x) {
- System.err.println("READING TRUSTSTORE: "+x);
- } finally {
- try { instream.close(); } catch (Exception ignore) {}
- }
-
- SSLSocketFactory socketFactory = new SSLSocketFactory(keyStore, "changeit", trustStore);
- Scheme sch = new Scheme("https", 443, socketFactory);
- httpclient.getConnectionManager().getSchemeRegistry().register(sch);
- }
-
- public JSONObject getDBstate() {
- // set db_state!
- if (db_state == null) {
- String url = props.getProperty("test.host") + "/internal/prov";
- HttpGet httpGet = new HttpGet(url);
- try {
- httpGet.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
- HttpResponse response = httpclient.execute(httpGet);
- HttpEntity entity = response.getEntity();
- String ctype = entity.getContentType().getValue().trim();
- // save the response body as db_state
- boolean ok = ctype.equals(FeedServlet.PROVFULL_CONTENT_TYPE1);
- ok |= ctype.equals(FeedServlet.PROVFULL_CONTENT_TYPE2);
- if (ok) {
- db_state = null;
- try {
- db_state = new JSONObject(new JSONTokener(entity.getContent()));
- } catch (Exception e) {
- fail("Bad JSON: "+e.getMessage());
- }
- } else {
- EntityUtils.consume(entity);
- }
- } catch (IOException e) {
- fail(e.getMessage());
- } finally {
- httpGet.releaseConnection();
- }
- }
- return db_state;
- }
-
- @After
- public void tearDown() throws Exception {
- // When HttpClient instance is no longer needed,
- // shut down the connection manager to ensure
- // immediate deallocation of all system resources
- httpclient.getConnectionManager().shutdown();
- FileUtils.deleteDirectory(new File("./unit-test-logs"));
- }
-
- protected void ckResponse(HttpResponse response, int expect) {
- System.out.println(response.getStatusLine());
- StatusLine sl = response.getStatusLine();
- int code = sl.getStatusCode();
- if (code != expect)
- fail("Unexpected response, expect "+expect+" got "+code+" "+sl.getReasonPhrase());
- }
-}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testDRFeedsGet.java b/datarouter-prov/src/test/java/datarouter/provisioning/testDRFeedsGet.java
deleted file mode 100644
index 4ad90364..00000000
--- a/datarouter-prov/src/test/java/datarouter/provisioning/testDRFeedsGet.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START==================================================
- * * org.onap.dmaap
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed 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.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-
-package datarouter.provisioning;
-
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.util.EntityUtils;
-import org.json.JSONArray;
-import org.json.JSONObject;
-import org.json.JSONTokener;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.dmaap.datarouter.provisioning.FeedServlet;
-
-public class testDRFeedsGet extends testBase {
- private JSONArray returnedlist;
-
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
- }
-
- @Before
- public void setUp() throws Exception {
- super.setUp();
- getDBstate();
- }
-
- @Test
- public void testNormal() {
- testCommon(HttpServletResponse.SC_OK);
- int expect = 0;
- JSONArray ja = db_state.getJSONArray("feeds");
- for (int i = 0; i < ja.length(); i++) {
- JSONObject jo = ja.getJSONObject(i);
- if (!jo.getBoolean("deleted"))
- expect++;
- }
- if (returnedlist.length() != expect)
- fail("bad length, got "+ returnedlist.length() + " expect " + expect);
- }
- @Test
- public void testNormalGoodName() {
- JSONArray ja = db_state.getJSONArray("feeds");
- JSONObject feed0 = ja.getJSONObject(0);
- String name = feed0.getString("name");
- String query = "?name=" + name;
- int expect = 0;
- for (int n = 0; n < ja.length(); n++) {
- JSONObject jo = ja.getJSONObject(n);
- if (!jo.getBoolean("deleted") && jo.getString("name").equals(name))
- expect++;
- }
- testCommon(HttpServletResponse.SC_OK, query, FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
- if (returnedlist.length() != expect)
- fail("bad length, got "+ returnedlist.length() + " expect "+expect);
- }
- @Test
- public void testNormalBadName() {
- String query = "?name=ZZTOP123456";
- testCommon(HttpServletResponse.SC_OK, query, FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
- if (returnedlist.length() != 0)
- fail("bad length, got "+ returnedlist.length() + " expect 0");
- }
- @Test
- public void testNormalBadPath() {
- String query = "flarg/?publisher=JUnit";
- testCommon(HttpServletResponse.SC_NOT_FOUND, query, "text/html;charset=ISO-8859-1", "JUnit");
- }
- @Test
- public void testNormalGoodPublisher() {
- JSONArray ja = db_state.getJSONArray("feeds");
- JSONObject feed0 = ja.getJSONObject(0);
- String query = "?publisher=" + feed0.getString("publisher");
- testCommon(HttpServletResponse.SC_OK, query, FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
- int expect = 0;
- for (int i = 0; i < ja.length(); i++) {
- JSONObject jo = ja.getJSONObject(i);
- if (jo.getString("publisher").equals(feed0.getString("publisher")) && !jo.getBoolean("deleted"))
- expect++;
- }
- if (returnedlist.length() != expect)
- fail("bad length, got "+returnedlist.length()+" expected "+expect);
- }
- @Test
- public void testNormalBadPublisher() {
- String query = "?publisher=ZZTOP123456";
- testCommon(HttpServletResponse.SC_OK, query, FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
- if (returnedlist.length() != 0)
- fail("bad length");
- }
- @Test
- public void testNormalGoodSubscriber() {
- JSONArray ja = db_state.getJSONArray("subscriptions");
- if (ja.length() > 0) {
- JSONObject sub0 = ja.getJSONObject(0);
- String query = "?subscriber=" + sub0.getString("subscriber");
- testCommon(HttpServletResponse.SC_OK, query, FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
-// aarg! - this is complicated!
-// int expect = 0;
-// for (int i = 0; i < ja.length(); i++) {
-// JSONObject jo = ja.getJSONObject(i);
-// if (jo.getString("subscriber").equals(sub0.getString("subscriber")))
-// expect++;
-// }
-// if (returnedlist.length() != 1)
-// fail("bad length "+returnedlist.toString());
- } else {
- // There are no subscriptions yet, so use a made up name
- testCommon(HttpServletResponse.SC_OK, "?subscriber=foo", FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
- }
- }
- @Test
- public void testNormalBadSubscriber() {
- String query = "?subscriber=ZZTOP123456";
- testCommon(HttpServletResponse.SC_OK, query, FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
- if (returnedlist.length() != 0)
- fail("bad length");
- }
- private void testCommon(int expect) {
- testCommon(expect, "", FeedServlet.FEEDLIST_CONTENT_TYPE, "JUnit");
- }
- private void testCommon(int expect, String query, String ectype, String bhdr) {
- String url = props.getProperty("test.host") + "/" + query;
- HttpGet httpGet = new HttpGet(url);
- try {
- if (bhdr != null)
- httpGet.addHeader(FeedServlet.BEHALF_HEADER, bhdr);
-
- HttpResponse response = httpclient.execute(httpGet);
- ckResponse(response, expect);
-
- HttpEntity entity = response.getEntity();
- String ctype = entity.getContentType().getValue().trim();
- if (!ctype.equals(ectype))
- fail("Got wrong content type: "+ctype);
-
- // do something useful with the response body and ensure it is fully consumed
- if (ctype.equals(FeedServlet.FEEDLIST_CONTENT_TYPE)) {
- try {
- returnedlist = new JSONArray(new JSONTokener(entity.getContent()));
- } catch (Exception e) {
- fail("Bad JSON: "+e.getMessage());
- }
- } else {
- EntityUtils.consume(entity);
- }
- } catch (IOException e) {
- fail(e.getMessage());
- } finally {
- httpGet.releaseConnection();
- }
- }
-}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testDRFeedsPost.java b/datarouter-prov/src/test/java/datarouter/provisioning/testDRFeedsPost.java
deleted file mode 100644
index 51424230..00000000
--- a/datarouter-prov/src/test/java/datarouter/provisioning/testDRFeedsPost.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START==================================================
- * * org.onap.dmaap
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed 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.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-
-package datarouter.provisioning;
-
-import static org.junit.Assert.*;
-
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.ByteArrayEntity;
-import org.apache.http.entity.ContentType;
-import org.apache.http.util.EntityUtils;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.json.JSONTokener;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.dmaap.datarouter.provisioning.FeedServlet;
-
-public class testDRFeedsPost extends testBase {
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
- }
-
- @Test
- public void testNormal() {
- JSONObject jo = buildFeedRequest();
- testCommon(jo, HttpServletResponse.SC_CREATED);
- }
- @Test
- public void testNormalNoCTVersion() {
- JSONObject jo = buildFeedRequest();
- testCommon(jo, HttpServletResponse.SC_CREATED, "application/vnd.att-dr.feed", "JUnit");
- }
- @Test
- public void testBadContentType() {
- JSONObject jo = buildFeedRequest();
- testCommon(jo, HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, "bad/bad", "Junit");
- }
- @Test
- public void testNoBehalfHeader() {
- JSONObject jo = buildFeedRequest();
- testCommon(jo, HttpServletResponse.SC_BAD_REQUEST, FeedServlet.FEED_CONTENT_TYPE, null);
- }
- @Test
- public void testMissingName() {
- JSONObject jo = buildFeedRequest();
- jo.remove("name");
- testCommon(jo, 400);
- }
- @Test
- public void testTooLongName() {
- JSONObject jo = buildFeedRequest();
- jo.put("name", "123456789012345678901234567890");
- testCommon(jo, 400);
- }
- @Test
- public void testMissingVersion() {
- JSONObject jo = buildFeedRequest();
- jo.remove("version");
- testCommon(jo, 400);
- }
- @Test
- public void testTooLongVersion() {
- JSONObject jo = buildFeedRequest();
- jo.put("version", "123456789012345678901234567890");
- testCommon(jo, 400);
- }
- @Test
- public void testTooLongDescription() {
- // normal request
- JSONObject jo = buildFeedRequest();
- jo.put("description", s_257);
- testCommon(jo, 400);
- }
- @Test
- public void testMissingAuthorization() {
- JSONObject jo = buildFeedRequest();
- jo.remove("authorization");
- testCommon(jo, 400);
- }
- @Test
- public void testMissingClassification() {
- JSONObject jo = buildFeedRequest();
- JSONObject j2 = jo.getJSONObject("authorization");
- j2.remove("classification");
- testCommon(jo, 400);
- }
- @Test
- public void testTooLongClassification() {
- JSONObject jo = buildFeedRequest();
- JSONObject j2 = jo.getJSONObject("authorization");
- j2.put("classification", s_33);
- testCommon(jo, 400);
- }
- @Test
- public void testNoEndpointIds() {
- JSONObject jo = buildFeedRequest();
- JSONObject j2 = jo.getJSONObject("authorization");
- j2.put("endpoint_ids", new JSONArray());
- testCommon(jo, 400);
- }
- @Test
- public void testBadIPAddress1() {
- JSONObject jo = buildFeedRequest();
- JSONObject j2 = jo.getJSONObject("authorization");
- JSONArray ja = j2.getJSONArray("endpoint_addrs");
- ja.put("ZZZ^&#$%@#&^%$@#&^");
- testCommon(jo, 400);
- }
- @Test
- public void testBadIPAddress2() {
- JSONObject jo = buildFeedRequest();
- JSONObject j2 = jo.getJSONObject("authorization");
- JSONArray ja = j2.getJSONArray("endpoint_addrs");
- ja.put("135.207.136.678"); // bad IPv4 addr
- testCommon(jo, 400);
- }
- @Test
- public void testBadIPAddress3() {
- JSONObject jo = buildFeedRequest();
- JSONObject j2 = jo.getJSONObject("authorization");
- JSONArray ja = j2.getJSONArray("endpoint_addrs");
- ja.put("2001:1890:1110:d000:1a29::17567"); // bad IPv6 addr
- testCommon(jo, 400);
- }
- @Test
- public void testBadNetMask() {
- JSONObject jo = buildFeedRequest();
- JSONObject j2 = jo.getJSONObject("authorization");
- JSONArray ja = j2.getJSONArray("endpoint_addrs");
- ja.put("10.10.10.10/64");
- testCommon(jo, 400);
- }
- @Test
- public void testGoodIPAddress1() {
- JSONObject jo = buildFeedRequest();
- JSONObject j2 = jo.getJSONObject("authorization");
- JSONArray ja = j2.getJSONArray("endpoint_addrs");
- ja.put("135.207.136.175"); // good IPv4 addr
- testCommon(jo, 201);
- }
- @Test
- public void testGoodIPAddress2() {
- JSONObject jo = buildFeedRequest();
- JSONObject j2 = jo.getJSONObject("authorization");
- JSONArray ja = j2.getJSONArray("endpoint_addrs");
- ja.put("2001:1890:1110:d000:1a29::175"); // good IPv6 addr
- testCommon(jo, 201);
- }
- @Test
- public void testGoodNetMask() {
- JSONObject jo = buildFeedRequest();
- JSONObject j2 = jo.getJSONObject("authorization");
- JSONArray ja = j2.getJSONArray("endpoint_addrs");
- ja.put("2001:1890:1110:d000:1a29::175/120");
- testCommon(jo, 201);
- }
- private void testCommon(JSONObject jo, int expect) {
- testCommon(jo, expect, FeedServlet.FEED_CONTENT_TYPE, "JUnit");
- }
- private void testCommon(JSONObject jo, int expect, String ctype, String bhdr) {
- String url = props.getProperty("test.host") + "/";
- HttpPost httpPost = new HttpPost(url);
- try {
- if (bhdr != null)
- httpPost.addHeader(FeedServlet.BEHALF_HEADER, bhdr);
- String t = jo.toString();
- HttpEntity body = new ByteArrayEntity(t.getBytes(), ContentType.create(ctype));
- httpPost.setEntity(body);
-
- HttpResponse response = httpclient.execute(httpPost);
- ckResponse(response, expect);
-
- HttpEntity entity = response.getEntity();
- ctype = entity.getContentType().getValue().trim();
- int code = response.getStatusLine().getStatusCode();
- if (code == HttpServletResponse.SC_CREATED && !ctype.equals(FeedServlet.FEEDFULL_CONTENT_TYPE))
- fail("Got wrong content type: "+ctype);
-
- if (code == HttpServletResponse.SC_CREATED) {
- Header[] loc = response.getHeaders("Location");
- if (loc == null)
- fail("Missing Location header.");
- }
-
- // do something useful with the response body and ensure it is fully consumed
- if (ctype.equals(FeedServlet.FEEDFULL_CONTENT_TYPE)) {
- // ck Location header!
- JSONObject jo2 = null;
- try {
- jo2 = new JSONObject(new JSONTokener(entity.getContent()));
- System.err.println(jo2.toString());
- } catch (Exception e) {
- fail("Bad JSON: "+e.getMessage());
- }
- try {
- jo2.getString("publisher");
- JSONObject jo3 = jo2.getJSONObject("links");
- jo3.getString("self");
- jo3.getString("publish");
- jo3.getString("subscribe");
- jo3.getString("log");
- } catch (JSONException e) {
- fail("required field missing from result: "+e.getMessage());
- }
- } else {
- EntityUtils.consume(entity);
- }
- } catch (IOException e) {
- fail(e.getMessage());
- } finally {
- httpPost.releaseConnection();
- }
- }
- private JSONObject buildFeedRequest() {
- JSONObject jo = new JSONObject();
- jo.put("name", "JunitFeed");
- jo.put("version", ""+System.currentTimeMillis()); // make version unique
- jo.put("description", "Sample feed used by JUnit to test");
-
- JSONObject jo2 = new JSONObject();
- jo2.put("classification", "unrestricted");
-
- JSONArray ja = new JSONArray();
- JSONObject jo3 = new JSONObject();
- jo3.put("id", "id001");
- jo3.put("password", "re1kwelj");
- JSONObject jo4 = new JSONObject();
- jo4.put("id", "id002");
- jo4.put("password", "o9eqlmbd");
- ja.put(jo3);
- ja.put(jo4);
- jo2.put("endpoint_ids", ja);
-
- ja = new JSONArray();
- ja.put("10.0.0.1");
- ja.put("192.168.0.1");
- ja.put("135.207.136.128/25");
- jo2.put("endpoint_addrs", ja);
-
- jo.put("authorization", jo2);
- return jo;
- }
-}
-/*
-curl -v -X POST -H 'X-ATT-DR-ON-BEHALF-OF: tester' -H 'Content-type: application/vnd.att-dr.feed' --user publisher:tomcat \
- --data "$data" http://127.0.0.1:8080/prov/feed/
-*/
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testFeedPut.java b/datarouter-prov/src/test/java/datarouter/provisioning/testFeedPut.java
deleted file mode 100644
index 1f845402..00000000
--- a/datarouter-prov/src/test/java/datarouter/provisioning/testFeedPut.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START==================================================
- * * org.onap.dmaap
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed 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.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-
-package datarouter.provisioning;
-
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.entity.ByteArrayEntity;
-import org.apache.http.entity.ContentType;
-import org.apache.http.util.EntityUtils;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.json.JSONTokener;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.dmaap.datarouter.provisioning.FeedServlet;
-
-public class testFeedPut extends testBase {
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
- }
-
- @Before
- public void setUp() throws Exception {
- super.setUp();
- getDBstate();
- }
-
- @Test
- public void testPutNoFeedID() {
- JSONObject jo = buildFeedRequest();
- testCommon(jo, HttpServletResponse.SC_BAD_REQUEST, "/feed/");
- }
- @Test
- public void testPutNoFeed() {
- JSONObject jo = buildFeedRequest();
- testCommon(jo, HttpServletResponse.SC_NOT_FOUND, "/feed/999999");
- }
- @Test
- public void testBadContentType() {
- JSONObject jo = buildFeedRequest();
- testCommon(jo, HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, "bad/bad", "JUnit");
- }
- @Test
- public void testChangeName() {
- JSONObject jo = buildFeedRequest();
- jo.put("name", "badname");
- testCommon(jo, HttpServletResponse.SC_BAD_REQUEST, FeedServlet.FEED_CONTENT_TYPE, "JUnit");
- }
- @Test
- public void testChangeVersion() {
- JSONObject jo = buildFeedRequest();
- jo.put("version", "badvers");
- testCommon(jo, HttpServletResponse.SC_BAD_REQUEST, FeedServlet.FEED_CONTENT_TYPE, "JUnit");
- }
- @Test
- public void testBadPublisher() {
- JSONObject jo = buildFeedRequest();
- testCommon(jo, HttpServletResponse.SC_BAD_REQUEST, FeedServlet.FEED_CONTENT_TYPE, "BadBadBad");
- }
- @Test
- public void testChangeDescription() {
- JSONObject jo = buildFeedRequest();
- // change descr
- jo.put("description", "This description HAS BEEN CHANGED!!!");
- testCommon(jo, HttpServletResponse.SC_OK, FeedServlet.FEED_CONTENT_TYPE, "JUnit");
- }
-
- private void testCommon(JSONObject jo, int expect, String uri) {
- testCommon(jo, expect, FeedServlet.FEED_CONTENT_TYPE, "Junit", uri);
- }
- private void testCommon(JSONObject jo, int expect, String ctype, String bhdr) {
- JSONArray ja = db_state.getJSONArray("feeds");
- for (int i = 0; i < ja.length(); i++) {
- JSONObject feed0 = ja.getJSONObject(i);
- if (!feed0.getBoolean("deleted") && feed0.getString("publisher").equals(bhdr)) {
- int feedid = feed0.getInt("feedid");
- testCommon(jo, expect, ctype, bhdr, "/feed/"+feedid);
- return;
- }
- }
- }
- private void testCommon(JSONObject jo, int expect, String ctype, String bhdr, String uri) {
- String url = props.getProperty("test.host") + uri;
- HttpPut put = new HttpPut(url);
- try {
- if (bhdr != null)
- put.addHeader(FeedServlet.BEHALF_HEADER, bhdr);
- String t = jo.toString();
- HttpEntity body = new ByteArrayEntity(t.getBytes(), ContentType.create(ctype));
- put.setEntity(body);
-
- HttpResponse response = httpclient.execute(put);
- ckResponse(response, expect);
-
- HttpEntity entity = response.getEntity();
- ctype = entity.getContentType().getValue().trim();
- int code = response.getStatusLine().getStatusCode();
- if (code == HttpServletResponse.SC_CREATED && !ctype.equals(FeedServlet.FEEDFULL_CONTENT_TYPE))
- fail("Got wrong content type: "+ctype);
-
- if (code == HttpServletResponse.SC_CREATED) {
- Header[] loc = response.getHeaders("Location");
- if (loc == null)
- fail("Missing Location header.");
- }
-
- // do something useful with the response body and ensure it is fully consumed
- if (ctype.equals(FeedServlet.FEEDFULL_CONTENT_TYPE)) {
- // ck Location header!
- JSONObject jo2 = null;
- try {
- jo2 = new JSONObject(new JSONTokener(entity.getContent()));
- System.err.println(jo2.toString());
- } catch (Exception e) {
- fail("Bad JSON: "+e.getMessage());
- }
- try {
- jo2.getString("publisher");
- JSONObject jo3 = jo2.getJSONObject("links");
- jo3.getString("self");
- jo3.getString("publish");
- jo3.getString("subscribe");
- jo3.getString("log");
- } catch (JSONException e) {
- fail("required field missing from result: "+e.getMessage());
- }
- } else {
- EntityUtils.consume(entity);
- }
- } catch (IOException e) {
- fail(e.getMessage());
- } finally {
- put.releaseConnection();
- }
- }
- private JSONObject buildFeedRequest() {
- JSONObject jo = new JSONObject();
- jo.put("name", "feed");
- jo.put("version", "1.0.0");
- jo.put("description", "Sample feed used by JUnit to test");
-
- JSONObject jo2 = new JSONObject();
- jo2.put("classification", "unrestricted");
-
- JSONArray ja = new JSONArray();
- JSONObject jo3 = new JSONObject();
- jo3.put("id", "id001");
- jo3.put("password", "re1kwelj");
- JSONObject jo4 = new JSONObject();
- jo4.put("id", "id002");
- jo4.put("password", "o9eqlmbd");
- ja.put(jo3);
- ja.put(jo4);
- jo2.put("endpoint_ids", ja);
-
- ja = new JSONArray();
- ja.put("20.0.0.1");
- ja.put("195.68.12.15");
- ja.put("135.207.136.128/25");
- jo2.put("endpoint_addrs", ja);
-
- jo.put("authorization", jo2);
- return jo;
- }
-}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testInternalGet.java b/datarouter-prov/src/test/java/datarouter/provisioning/testInternalGet.java
deleted file mode 100644
index 02c295e2..00000000
--- a/datarouter-prov/src/test/java/datarouter/provisioning/testInternalGet.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START==================================================
- * * org.onap.dmaap
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed 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.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-
-package datarouter.provisioning;
-
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.util.EntityUtils;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.json.JSONTokener;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.dmaap.datarouter.provisioning.FeedServlet;
-import org.onap.dmaap.datarouter.provisioning.beans.Parameters;
-
-public class testInternalGet extends testBase {
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
- }
-
- @Test
- public void testNormal() {
- String url = props.getProperty("test.host") + "/internal/prov";
- HttpGet httpPost = new HttpGet(url);
- try {
- httpPost.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
-
- HttpResponse response = httpclient.execute(httpPost);
- int code = response.getStatusLine().getStatusCode();
- if (code != 200)
- fail("Unexpected response, expect "+200+" got "+code);
-
- HttpEntity entity = response.getEntity();
- String ctype = entity.getContentType().getValue().trim();
- boolean ok = ctype.equals(FeedServlet.PROVFULL_CONTENT_TYPE1);
- ok |= ctype.equals(FeedServlet.PROVFULL_CONTENT_TYPE2);
- if (!ok)
- fail("Got wrong content type: "+ctype);
-
- // do something useful with the response body and ensure it is fully consumed
- if (ok) {
- JSONObject jo = null;
- try {
- jo = new JSONObject(new JSONTokener(entity.getContent()));
- } catch (Exception e) {
- fail("Bad JSON: "+e.getMessage());
- }
- try {
- jo.getJSONArray("feeds");
- jo.getJSONArray("subscriptions");
- JSONObject jo2 = jo.getJSONObject("parameters");
- jo2.getJSONArray(Parameters.NODES);
- jo2.getString(Parameters.ACTIVE_POD);
- jo2.getString(Parameters.STANDBY_POD);
- jo2.getInt(Parameters.LOGROLL_INTERVAL);
- jo2.getInt(Parameters.DELIVERY_INIT_RETRY_INTERVAL);
- jo2.getInt(Parameters.DELIVERY_MAX_RETRY_INTERVAL);
- jo2.getInt(Parameters.DELIVERY_RETRY_RATIO);
- jo2.getInt(Parameters.DELIVERY_MAX_AGE);
- } catch (JSONException e) {
- fail("required field missing from result: "+e.getMessage());
- }
- } else {
- EntityUtils.consume(entity);
- }
- } catch (IOException e) {
- e.printStackTrace();
- fail(e.getMessage());
- } finally {
- httpPost.releaseConnection();
- }
- }
-}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testInternalMisc.java b/datarouter-prov/src/test/java/datarouter/provisioning/testInternalMisc.java
deleted file mode 100644
index d4339cc4..00000000
--- a/datarouter-prov/src/test/java/datarouter/provisioning/testInternalMisc.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START==================================================
- * * org.onap.dmaap
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed 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.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-
-package datarouter.provisioning;
-
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.util.EntityUtils;
-import org.json.JSONArray;
-import org.json.JSONTokener;
-import org.junit.Test;
-import org.onap.dmaap.datarouter.provisioning.FeedServlet;
-
-public class testInternalMisc extends testBase {
- @Test
- public void testInternalDrlogs() {
- String url = props.getProperty("test.host") + "/internal/drlogs";
- HttpGet httpPost = new HttpGet(url);
- try {
- httpPost.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
-
- HttpResponse response = httpclient.execute(httpPost);
- int code = response.getStatusLine().getStatusCode();
- if (code != 200)
- fail("Unexpected response, expect "+HttpServletResponse.SC_NOT_FOUND+" got "+code);
-
- HttpEntity entity = response.getEntity();
- String ctype = entity.getContentType().getValue().trim();
- boolean ok = ctype.equals("text/plain");
- if (!ok)
- fail("Got wrong content type: "+ctype);
-
- EntityUtils.consume(entity);
- } catch (IOException e) {
- e.printStackTrace();
- fail(e.getMessage());
- } finally {
- httpPost.releaseConnection();
- }
- }
-
- @Test
- public void testInternalHalt() {
- String url = props.getProperty("test.host") + "/internal/halt";
- HttpGet httpPost = new HttpGet(url);
- try {
- httpPost.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
-
- HttpResponse response = httpclient.execute(httpPost);
- int code = response.getStatusLine().getStatusCode();
- if (code != HttpServletResponse.SC_NOT_FOUND)
- fail("Unexpected response, expect "+HttpServletResponse.SC_NOT_FOUND+" got "+code);
-
- HttpEntity entity = response.getEntity();
- EntityUtils.consume(entity);
- } catch (IOException e) {
- e.printStackTrace();
- fail(e.getMessage());
- } finally {
- httpPost.releaseConnection();
- }
- }
-
- @SuppressWarnings("unused")
- @Test
- public void testInternalLogs() {
- String url = props.getProperty("test.host") + "/internal/logs";
- HttpGet httpPost = new HttpGet(url);
- try {
- httpPost.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
-
- HttpResponse response = httpclient.execute(httpPost);
- int code = response.getStatusLine().getStatusCode();
- if (code != 200)
- fail("Unexpected response, expect "+200+" got "+code);
-
- HttpEntity entity = response.getEntity();
- String ctype = entity.getContentType().getValue().trim();
- boolean ok = ctype.equals("application/json");
- if (!ok)
- fail("Got wrong content type: "+ctype);
-
- // do something useful with the response body and ensure it is fully consumed
- if (ok) {
- try {
- new JSONArray(new JSONTokener(entity.getContent()));
- } catch (Exception e) {
- fail("Bad JSON: "+e.getMessage());
- }
- } else {
- EntityUtils.consume(entity);
- }
- } catch (IOException e) {
- e.printStackTrace();
- fail(e.getMessage());
- } finally {
- httpPost.releaseConnection();
- }
- }
-
- @Test
- public void testInternalBadURL() {
- String url = props.getProperty("test.host") + "/internal/badurl";
- HttpGet httpPost = new HttpGet(url);
- try {
- httpPost.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
-
- HttpResponse response = httpclient.execute(httpPost);
- int code = response.getStatusLine().getStatusCode();
- if (code != HttpServletResponse.SC_NOT_FOUND)
- fail("Unexpected response, expect "+HttpServletResponse.SC_NOT_FOUND+" got "+code);
-
- HttpEntity entity = response.getEntity();
- EntityUtils.consume(entity);
- } catch (IOException e) {
- e.printStackTrace();
- fail(e.getMessage());
- } finally {
- httpPost.releaseConnection();
- }
- }
-
-}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testLogGet.java b/datarouter-prov/src/test/java/datarouter/provisioning/testLogGet.java
deleted file mode 100644
index cf0bc99c..00000000
--- a/datarouter-prov/src/test/java/datarouter/provisioning/testLogGet.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START==================================================
- * * org.onap.dmaap
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed 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.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-package datarouter.provisioning;
-
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.util.EntityUtils;
-import org.json.JSONArray;
-import org.json.JSONTokener;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.dmaap.datarouter.provisioning.FeedServlet;
-
-public class testLogGet extends testBase {
- private JSONArray returnedlist;
- private int feedid = 4;
- private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
-
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- // need to seed the DB here
- }
-
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
- // need to "unseed" the DB
- }
-
- @Before
- public void setUp() throws Exception {
- super.setUp();
- getDBstate();
-// JSONArray ja = db_state.getJSONArray("feeds");
-// for (int i = 0; i < ja.length(); i++) {
-// JSONObject jo = ja.getJSONObject(i);
-// if (!jo.getBoolean("deleted"))
-// feedid = jo.getInt("feedid");
-// }
- }
-
- @Test
- public void testNormal() {
- testCommon(HttpServletResponse.SC_OK);
- }
- @Test
- public void testNormalPubOnly() {
- testCommon(HttpServletResponse.SC_OK, "?type=pub");
- }
- @Test
- public void testNormalDelOnly() {
- testCommon(HttpServletResponse.SC_OK, "?type=del");
- }
- @Test
- public void testNormalExpOnly() {
- testCommon(HttpServletResponse.SC_OK, "?type=exp");
- }
- @Test
- public void testNormalXXXOnly() {
- testCommon(HttpServletResponse.SC_BAD_REQUEST, "?type=xxx");
- }
- @Test
- public void testNormalStatusSuccess() {
- testCommon(HttpServletResponse.SC_OK, "?statusCode=success");
- }
- @Test
- public void testNormalStatusRedirect() {
- testCommon(HttpServletResponse.SC_OK, "?statusCode=redirect");
- }
- @Test
- public void testNormalStatusFailure() {
- testCommon(HttpServletResponse.SC_OK, "?statusCode=failure");
- }
- @Test
- public void testNormalStatus200() {
- testCommon(HttpServletResponse.SC_OK, "?statusCode=200");
- }
- @Test
- public void testNormalStatusXXX() {
- testCommon(HttpServletResponse.SC_BAD_REQUEST, "?statusCode=xxx");
- }
- @Test
- public void testNormalExpiryNotRetryable() {
- testCommon(HttpServletResponse.SC_OK, "?expiryReason=notRetryable");
- }
- @Test
- public void testNormalExpiryRetriesExhausted() {
- testCommon(HttpServletResponse.SC_OK, "?expiryReason=retriesExhausted");
- }
- @Test
- public void testNormalExpiryXXX() {
- testCommon(HttpServletResponse.SC_BAD_REQUEST, "?expiryReason=xxx");
- }
- @Test
- public void testNormalPublishId() {
- testCommon(HttpServletResponse.SC_OK, "?publishId=1366985877801.mtdvnj00-drtr.proto.research.att.com");
- }
- @Test
- public void testNormalStart() {
- long n = System.currentTimeMillis() - (5 * 24 * 60 * 60 * 1000L); // 5 days
- testCommon(HttpServletResponse.SC_OK, String.format("?start=%s", sdf.format(n)));
- }
- @Test
- public void testBadStart() {
- testCommon(HttpServletResponse.SC_BAD_REQUEST, "?start=xxx");
- }
- @Test
- public void testLongEnd() {
- testCommon(HttpServletResponse.SC_OK, "?end=1364837896220");
- }
- @Test
- public void testBadEnd() {
- testCommon(HttpServletResponse.SC_BAD_REQUEST, "?end=2013-04-25T11:01:25Q");
- }
- private void testCommon(int expect) {
- testCommon(expect, "");
- }
- private void testCommon(int expect, String query) {
- String url = props.getProperty("test.host") + "/feedlog/" + feedid + query;
- HttpGet httpGet = new HttpGet(url);
- try {
- HttpResponse response = httpclient.execute(httpGet);
- ckResponse(response, expect);
-
- HttpEntity entity = response.getEntity();
- String ctype = entity.getContentType().getValue().trim();
- if (expect == HttpServletResponse.SC_OK) {
- if (!ctype.equals(FeedServlet.LOGLIST_CONTENT_TYPE))
- fail("Got wrong content type: "+ctype);
- }
-
- // do something useful with the response body and ensure it is fully consumed
- if (ctype.equals(FeedServlet.LOGLIST_CONTENT_TYPE)) {
- try {
- returnedlist = new JSONArray(new JSONTokener(entity.getContent()));
- int n = returnedlist.length();
- if (n != 0)
- System.err.println(n + " items");
- } catch (Exception e) {
- fail("Bad JSON: "+e.getMessage());
- }
- } else {
- EntityUtils.consume(entity);
- }
- } catch (IOException e) {
- fail(e.getMessage());
- } finally {
- httpGet.releaseConnection();
- }
- }
-}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testPublish.java b/datarouter-prov/src/test/java/datarouter/provisioning/testPublish.java
deleted file mode 100644
index ebbf43f4..00000000
--- a/datarouter-prov/src/test/java/datarouter/provisioning/testPublish.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START==================================================
- * * org.onap.dmaap
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed 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.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-
-package datarouter.provisioning;
-
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.RedirectStrategy;
-import org.apache.http.client.methods.HttpDelete;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.client.methods.HttpRequestBase;
-import org.apache.http.impl.client.DefaultRedirectStrategy;
-import org.json.JSONArray;
-import org.json.JSONObject;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.dmaap.datarouter.provisioning.FeedServlet;
-
-public class testPublish extends testBase {
- private String publish_url;
-
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
- }
-
- @Before
- public void setUp() throws Exception {
- super.setUp();
- getDBstate();
- // Get publish URL from first feed
- JSONArray ja = db_state.getJSONArray("feeds");
- for (int i = ja.length()-1; i >= 0; i--) {
- JSONObject feed = ja.getJSONObject(i);
- if (!feed.getBoolean("deleted")) {
- publish_url = feed.getJSONObject("links").getString("publish");
- publish_url += "/" + System.currentTimeMillis();
- return;
- }
- }
- }
-
- @Test
- public void testDelete() {
- HttpDelete x = new HttpDelete(publish_url);
- testCommon(x);
- }
- @Test
- public void testGet() {
- HttpGet x = new HttpGet(publish_url);
- testCommon(x);
- }
- @Test
- public void testPut() {
- HttpPut x = new HttpPut(publish_url);
- testCommon(x);
- }
- @Test
- public void testPost() {
- HttpPost x = new HttpPost(publish_url);
- testCommon(x);
- }
- private void testCommon(HttpRequestBase rb) {
- try {
- rb.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
- RedirectStrategy strategy = new DefaultRedirectStrategy() {
- protected boolean isRedirectable(String method) {
- return false;
- }
- };
- httpclient.setRedirectStrategy(strategy);
- HttpResponse response = httpclient.execute(rb);
- ckResponse(response, HttpServletResponse.SC_MOVED_PERMANENTLY);
-
- // Make sure there is a Location hdr
- Header[] loc = response.getHeaders("Location");
- if (loc == null || loc.length == 0)
- fail("No location header");
- } catch (IOException e) {
- fail(e.getMessage());
- } finally {
- rb.releaseConnection();
- }
- }
-}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testRLEBitSet.java b/datarouter-prov/src/test/java/datarouter/provisioning/testRLEBitSet.java
deleted file mode 100644
index bd777adc..00000000
--- a/datarouter-prov/src/test/java/datarouter/provisioning/testRLEBitSet.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START==================================================
- * * org.onap.dmaap
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed 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.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-
-package datarouter.provisioning;
-
-import static org.junit.Assert.fail;
-
-import java.util.Iterator;
-
-import org.junit.Test;
-import org.onap.dmaap.datarouter.provisioning.utils.RLEBitSet;
-
-public class testRLEBitSet {
- @Test
- public void testBasicConstructor() {
- RLEBitSet bs = new RLEBitSet();
- if (!bs.isEmpty())
- fail("bit set not empty");
- }
- @Test
- public void testStringConstructor() {
- RLEBitSet bs = new RLEBitSet("1-10");
- if (bs.isEmpty())
- fail("bit set is empty");
- if (!bs.toString().equals("1-10"))
- fail("bad value");
- bs = new RLEBitSet("69,70,71");
- if (bs.isEmpty())
- fail("bit set is empty");
- if (!bs.toString().equals("69-71"))
- fail("bad value");
- bs = new RLEBitSet("555 444 443 442");
- if (!bs.toString().equals("442-444,555"))
- fail("bad value");
- }
- @Test
- public void testLength() {
- RLEBitSet bs = new RLEBitSet();
- if (bs.length() != 0)
- fail("testLength fail "+bs + " " + bs.length());
- bs = new RLEBitSet("1-10");
- if (bs.length() != 11)
- fail("testLength fail "+bs + " " + bs.length());
- bs = new RLEBitSet("1-20,100000000-100000005");
- if (bs.length() != 100000006)
- fail("testLength fail "+bs + " " + bs.length());
- }
- @Test
- public void testGet() {
- RLEBitSet bs = new RLEBitSet("1-10");
- if (!bs.get(5))
- fail("get");
- if (bs.get(69))
- fail("get");
- }
- @Test
- public void testSetOneBit() {
- RLEBitSet bs = new RLEBitSet();
- for (int i = 12; i < 200; i++)
- bs.set(i);
- bs.set(690);
- for (int i = 305; i < 309; i++)
- bs.set(i);
- bs.set(304);
- if (!bs.toString().equals("12-199,304-308,690"))
- fail("testSetOneBit fail "+bs);
- }
- @Test
- public void testSetString() {
- RLEBitSet bs = new RLEBitSet();
- bs.set("1-100");
- if (!bs.toString().equals("1-100"))
- fail("testSetString fail "+bs);
- }
- @Test
- public void testSetRange() {
- RLEBitSet bs = new RLEBitSet();
- bs.set(50,60);
- if (!bs.toString().equals("50-59"))
- fail("testSetRange fail "+bs);
- }
- @Test
- public void testClearOneBit() {
- RLEBitSet bs = new RLEBitSet("1-10");
- bs.clear(5);
- if (!bs.toString().equals("1-4,6-10"))
- fail("testClearOneBit fail");
- bs = new RLEBitSet("1-10");
- bs.clear(11);
- if (!bs.toString().equals("1-10"))
- fail("testClearOneBit fail "+bs);
- }
- @Test
- public void testClearRangeLeft() {
- RLEBitSet bs = new RLEBitSet("100-200");
- bs.clear(40,50);
- if (!bs.toString().equals("100-200"))
- fail("testClearRangeLeft fail "+bs);
- }
- @Test
- public void testClearRangeRight() {
- RLEBitSet bs = new RLEBitSet("100-200");
- bs.clear(400,500);
- if (!bs.toString().equals("100-200"))
- fail("testClearRangeRight fail "+bs);
- }
- @Test
- public void testClearRangeMiddle() {
- RLEBitSet bs = new RLEBitSet("100-200");
- bs.clear(120,130);
- if (!bs.toString().equals("100-119,130-200"))
- fail("testClearRangeRight fail "+bs);
- }
- @Test
- public void testClearRangeIntersect() {
- RLEBitSet bs = new RLEBitSet("100-200");
- bs.clear(100,200);
- if (!bs.toString().equals("200"))
- fail("testClearRangeIntersect fail "+bs);
- }
- @Test
- public void testClearOverlapLeft() {
- RLEBitSet bs = new RLEBitSet("100-200");
- bs.clear(50,150);
- if (!bs.toString().equals("150-200"))
- fail("testClearOverlapLeft fail "+bs);
- }
- @Test
- public void testClearOverlapRight() {
- RLEBitSet bs = new RLEBitSet("100-200");
- bs.clear(150,250);
- if (!bs.toString().equals("100-149"))
- fail("testClearOverlapRight fail "+bs);
- }
- @Test
- public void testClearOverlapAll() {
- RLEBitSet bs = new RLEBitSet("100-200");
- bs.clear(50,250);
- if (!bs.toString().equals(""))
- fail("testClearOverlapAll fail "+bs);
- }
- @Test
- public void testAnd() {
- RLEBitSet bs = new RLEBitSet("100-200");
- RLEBitSet b2 = new RLEBitSet("150-400");
- bs.and(b2);
- if (!bs.toString().equals("150-200"))
- fail("testAnd fail "+bs);
- bs = new RLEBitSet("100-200");
- b2 = new RLEBitSet("1500-4000");
- bs.and(b2);
- if (!bs.isEmpty())
- fail("testAnd fail "+bs);
- }
- @Test
- public void testAndNot() {
- RLEBitSet bs = new RLEBitSet("100-200");
- RLEBitSet b2 = new RLEBitSet("150-159");
- bs.andNot(b2);
- if (!bs.toString().equals("100-149,160-200"))
- fail("testAndNot fail "+bs);
- }
- @Test
- public void testIsEmpty() {
- RLEBitSet bs = new RLEBitSet("");
- if (!bs.isEmpty())
- fail("testIsEmpty fail "+bs);
- bs.set(1);
- if (bs.isEmpty())
- fail("testIsEmpty fail "+bs);
- }
- @Test
- public void testCardinality() {
- RLEBitSet bs = new RLEBitSet("1-120,10000000-10000005");
- if (bs.cardinality() != 126)
- fail("testCardinality fail 1");
- }
- @Test
- public void testIterator() {
- RLEBitSet bs = new RLEBitSet("1,5,10-12");
- Iterator<Long[]> i = bs.getRangeIterator();
- if (!i.hasNext())
- fail("iterator fail 1");
- Long[] ll = i.next();
- if (ll == null || ll[0] != 1 || ll[1] != 1)
- fail("iterator fail 2");
-
- if (!i.hasNext())
- fail("iterator fail 3");
- ll = i.next();
- if (ll == null || ll[0] != 5 || ll[1] != 5)
- fail("iterator fail 4");
-
- if (!i.hasNext())
- fail("iterator fail 5");
- ll = i.next();
- if (ll == null || ll[0] != 10 || ll[1] != 12)
- fail("iterator fail 6");
-
- if (i.hasNext())
- fail("iterator fail 7");
- }
- @Test
- public void testClone() {
- RLEBitSet bs1 = new RLEBitSet("1,5,10-12");
- RLEBitSet bs2 = (RLEBitSet) bs1.clone();
- if (!bs1.toString().equals(bs2.toString()))
- fail("clone");
- }
-}
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testSubscribePost.java b/datarouter-prov/src/test/java/datarouter/provisioning/testSubscribePost.java
deleted file mode 100644
index 49ed88d7..00000000
--- a/datarouter-prov/src/test/java/datarouter/provisioning/testSubscribePost.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START==================================================
- * * org.onap.dmaap
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed 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.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-
-package datarouter.provisioning;
-
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.ByteArrayEntity;
-import org.apache.http.entity.ContentType;
-import org.apache.http.util.EntityUtils;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.json.JSONTokener;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.dmaap.datarouter.provisioning.FeedServlet;
-import org.onap.dmaap.datarouter.provisioning.SubscribeServlet;
-
-public class testSubscribePost extends testBase {
- private int feednum = 0;
-
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
- }
-
- @Before
- public void setUp() throws Exception {
- super.setUp();
- getDBstate();
- // use the first feed to subscribe to
- JSONArray ja = db_state.getJSONArray("feeds");
- for (int i = 0; i < ja.length(); i++) {
- JSONObject feed0 = ja.getJSONObject(i);
- if (feed0 != null && !feed0.getBoolean("deleted")) {
- feednum = feed0.getInt("feedid");
- return;
- }
- }
- }
-
- @Test
- public void testNormal() {
- JSONObject jo = buildSubRequest();
- testCommon(jo, HttpServletResponse.SC_CREATED);
- }
- @Test
- public void testMissingUrl() {
- JSONObject jo = buildSubRequest();
- jo.getJSONObject("delivery").remove("url");
- testCommon(jo, HttpServletResponse.SC_BAD_REQUEST);
- }
- @Test
- public void testTooLongUrl() {
- JSONObject jo = buildSubRequest();
- jo.getJSONObject("delivery").put("url", "https://"+s_257);
- testCommon(jo, HttpServletResponse.SC_BAD_REQUEST);
- }
- @Test
- public void testMissingUser() {
- JSONObject jo = buildSubRequest();
- jo.getJSONObject("delivery").remove("user");
- testCommon(jo, HttpServletResponse.SC_BAD_REQUEST);
- }
- @Test
- public void testTooLongUser() {
- JSONObject jo = buildSubRequest();
- jo.getJSONObject("delivery").put("user", s_33);
- testCommon(jo, HttpServletResponse.SC_BAD_REQUEST);
- }
- @Test
- public void testMissingPassword() {
- JSONObject jo = buildSubRequest();
- jo.getJSONObject("delivery").remove("password");
- testCommon(jo, HttpServletResponse.SC_BAD_REQUEST);
- }
- @Test
- public void testTooLongPassword() {
- JSONObject jo = buildSubRequest();
- jo.getJSONObject("delivery").put("password", s_33);
- testCommon(jo, HttpServletResponse.SC_BAD_REQUEST);
- }
- @Test
- public void testNonBooleanMetadata() {
- JSONObject jo = buildSubRequest();
- jo.put("metadataOnly", s_33);
- testCommon(jo, HttpServletResponse.SC_BAD_REQUEST);
- }
- private void testCommon(JSONObject jo, int expect) {
- String url = props.getProperty("test.host") + "/subscribe/" + feednum;
- HttpPost httpPost = new HttpPost(url);
- try {
- httpPost.addHeader(SubscribeServlet.BEHALF_HEADER, "JUnit");
- String t = jo.toString();
- HttpEntity body = new ByteArrayEntity(t.getBytes(), ContentType.create(SubscribeServlet.SUB_CONTENT_TYPE));
- httpPost.setEntity(body);
-
- HttpResponse response = httpclient.execute(httpPost);
- ckResponse(response, expect);
-
- HttpEntity entity = response.getEntity();
- String ctype = entity.getContentType().getValue();
- int code = response.getStatusLine().getStatusCode();
- if (code == HttpServletResponse.SC_CREATED && !ctype.equals(SubscribeServlet.SUBFULL_CONTENT_TYPE))
- fail("Got wrong content type: "+ctype);
-
- // do something useful with the response body and ensure it is fully consumed
- if (ctype.equals(FeedServlet.SUBFULL_CONTENT_TYPE)) {
- JSONObject jo2 = null;
- try {
- jo2 = new JSONObject(new JSONTokener(entity.getContent()));
- } catch (Exception e) {
- fail("Bad JSON: "+e.getMessage());
- }
- try {
- jo2.getString("subscriber");
- JSONObject jo3 = jo2.getJSONObject("links");
- jo3.getString("self");
- jo3.getString("feed");
- jo3.getString("log");
- } catch (JSONException e) {
- fail("required field missing from result: "+e.getMessage());
- }
- } else {
- EntityUtils.consume(entity);
- }
- } catch (IOException e) {
- fail(e.getMessage());
- } finally {
- httpPost.releaseConnection();
- }
- }
- private JSONObject buildSubRequest() {
- JSONObject jo = new JSONObject();
-
- JSONObject jo2 = new JSONObject();
- jo2.put("url", "https://www.att.com/");
- jo2.put("user", "dmr");
- jo2.put("password", "passw0rd");
- jo2.put("use100", true);
-
- jo.put("delivery", jo2);
- jo.put("metadataOnly", Boolean.FALSE);
- return jo;
- }
-}