You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2012/07/28 02:25:44 UTC
svn commit: r1366571 [2/2] - in /activemq/activemq-apollo/trunk:
apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/store/
apollo-network/src/main/scala/org/apache/activemq/apollo/broker/network/web/
apollo-stomp/src/test/scala/org/apache/a...
Added: activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompSslSecurityTest.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompSslSecurityTest.scala?rev=1366571&view=auto
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompSslSecurityTest.scala (added)
+++ activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompSslSecurityTest.scala Sat Jul 28 00:25:43 2012
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.apollo.stomp.test
+
+import java.lang.String
+import org.apache.activemq.apollo.util._
+import FileSupport._
+import org.apache.activemq.apollo.broker._
+import org.apache.activemq.apollo.dto.KeyStorageDTO
+
+class StompSslSecurityTest extends StompTestSupport {
+
+ override def broker_config_uri: String = "xml:classpath:apollo-stomp-ssl-secure.xml"
+
+ override def is_parallel_test_class: Boolean = false
+
+ override def beforeAll = {
+ // System.setProperty("javax.net.debug", "all")
+ try {
+ val login_file = new java.io.File(getClass.getClassLoader.getResource("login.config").getFile())
+ System.setProperty("java.security.auth.login.config", login_file.getCanonicalPath)
+ } catch {
+ case x: Throwable => x.printStackTrace
+ }
+ super.beforeAll
+ }
+
+ def use_client_cert = {
+ val config = new KeyStorageDTO
+ config.file = basedir / "src" / "test" / "resources" / "client.ks"
+ config.password = "password"
+ config.key_password = "password"
+ client.key_storeage = new KeyStorage(config)
+ }
+
+ test("Connect with cert and no id password") {
+ use_client_cert
+ connect("1.1", client)
+ }
+
+}
Added: activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompSslTest.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompSslTest.scala?rev=1366571&view=auto
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompSslTest.scala (added)
+++ activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompSslTest.scala Sat Jul 28 00:25:43 2012
@@ -0,0 +1,39 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.apollo.stomp.test
+
+import java.lang.String
+import org.apache.activemq.apollo.util._
+import FileSupport._
+import org.apache.activemq.apollo.broker._
+import org.apache.activemq.apollo.dto.KeyStorageDTO
+
+class StompSslTest extends StompTestSupport with BrokerParallelTestExecution {
+
+ override def broker_config_uri: String = "xml:classpath:apollo-stomp-ssl.xml"
+
+ val config = new KeyStorageDTO
+ config.file = basedir / "src" / "test" / "resources" / "client.ks"
+ config.password = "password"
+ config.key_password = "password"
+
+ client.key_storeage = new KeyStorage(config)
+
+ test("Connect over SSL") {
+ connect("1.1")
+ }
+}
Added: activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompTestSupport.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompTestSupport.scala?rev=1366571&view=auto
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompTestSupport.scala (added)
+++ activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompTestSupport.scala Sat Jul 28 00:25:43 2012
@@ -0,0 +1,171 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.apollo.stomp.test
+
+import org.scalatest.matchers.ShouldMatchers
+import org.scalatest._
+import java.lang.String
+import java.util.concurrent.atomic.AtomicLong
+import org.apache.activemq.apollo.broker._
+
+class StompTestSupport extends BrokerFunSuiteSupport with ShouldMatchers with BeforeAndAfterEach {
+
+ override def broker_config_uri = "xml:classpath:apollo-stomp.xml"
+
+ var client = new StompClient
+ var clients = List[StompClient]()
+
+ override protected def afterEach() = {
+ super.afterEach
+ clients.foreach(_.close)
+ clients = Nil
+ }
+
+ def connect_request(version: String, c: StompClient, headers: String = "", connector: String = null) = {
+ val p = connector_port(connector).getOrElse(port)
+ c.open("localhost", p)
+ version match {
+ case "1.0" =>
+ c.write(
+ "CONNECT\n" +
+ headers +
+ "\n")
+ case "1.1" =>
+ c.write(
+ "CONNECT\n" +
+ "accept-version:1.1\n" +
+ "host:localhost\n" +
+ headers +
+ "\n")
+ case x => throw new RuntimeException("invalid version: %f".format(x))
+ }
+ clients ::= c
+ c.receive()
+ }
+
+ def connect(version: String, c: StompClient = client, headers: String = "", connector: String = null) = {
+ val frame = connect_request(version, c, headers, connector)
+ frame should startWith("CONNECTED\n")
+ frame should include regex ("""session:.+?\n""")
+ frame should include("version:" + version + "\n")
+ c
+ }
+
+ def disconnect(c: StompClient = client) = {
+ val rid = receipt_counter.incrementAndGet()
+ client.write(
+ "DISCONNECT\n" +
+ "receipt:" + rid + "\n" +
+ "\n")
+ wait_for_receipt("" + rid, c)
+ close(c)
+ }
+
+ def close(c: StompClient = client) = c.close()
+
+ val receipt_counter = new AtomicLong()
+
+ def sync_send(dest: String, body: Any, headers: String = "", c: StompClient = client) = {
+ val rid = receipt_counter.incrementAndGet()
+ c.write(
+ "SEND\n" +
+ "destination:" + dest + "\n" +
+ "receipt:" + rid + "\n" +
+ headers +
+ "\n" +
+ body)
+ wait_for_receipt("" + rid, c)
+ }
+
+ def async_send(dest: String, body: Any, headers: String = "", c: StompClient = client) = {
+ c.write(
+ "SEND\n" +
+ "destination:" + dest + "\n" +
+ headers +
+ "\n" +
+ body)
+ }
+
+ def subscribe(id: String, dest: String, mode: String = "auto", persistent: Boolean = false, headers: String = "", sync: Boolean = true, c: StompClient = client) = {
+ val rid = receipt_counter.incrementAndGet()
+ c.write(
+ "SUBSCRIBE\n" +
+ "destination:" + dest + "\n" +
+ "id:" + id + "\n" +
+ (if (persistent) "persistent:true\n" else "") +
+ "ack:" + mode + "\n" +
+ (if (sync) "receipt:" + rid + "\n" else "") +
+ headers +
+ "\n")
+ if (sync) {
+ wait_for_receipt("" + rid, c)
+ }
+ }
+
+ def unsubscribe(id: String, headers: String = "", c: StompClient = client) = {
+ val rid = receipt_counter.incrementAndGet()
+ c.write(
+ "UNSUBSCRIBE\n" +
+ "id:" + id + "\n" +
+ "receipt:" + rid + "\n" +
+ headers +
+ "\n")
+ wait_for_receipt("" + rid, c)
+ }
+
+ def assert_received(body: Any, sub: String = null, c: StompClient = client, txid: String = null): (Boolean) => Unit = {
+ val frame = c.receive()
+ frame should startWith("MESSAGE\n")
+ if (sub != null) {
+ frame should include("subscription:" + sub + "\n")
+ }
+ body match {
+ case null =>
+ case body: scala.util.matching.Regex => frame should endWith regex (body)
+ case body => frame should endWith("\n\n" + body)
+ }
+ // return a func that can ack the message.
+ (ack: Boolean) => {
+ val sub_regex = """(?s).*\nsubscription:([^\n]+)\n.*""".r
+ val msgid_regex = """(?s).*\nmessage-id:([^\n]+)\n.*""".r
+ val sub_regex(sub) = frame
+ val msgid_regex(msgid) = frame
+ c.write(
+ (if (ack) "ACK\n" else "NACK\n") +
+ "subscription:" + sub + "\n" +
+ "message-id:" + msgid + "\n" +
+ (if (txid != null) "transaction:" + txid + "\n" else "") +
+
+ "\n")
+ }
+ }
+
+ def wait_for_receipt(id: String, c: StompClient = client, discard_others: Boolean = false): Unit = {
+ if (!discard_others) {
+ val frame = c.receive()
+ frame should startWith("RECEIPT\n")
+ frame should include("receipt-id:" + id + "\n")
+ } else {
+ while (true) {
+ val frame = c.receive()
+ if (frame.startsWith("RECEIPT\n") && frame.indexOf("receipt-id:" + id + "\n") >= 0) {
+ return
+ }
+ }
+ }
+ }
+}
Added: activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompWildcardCustomParallelTest.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompWildcardCustomParallelTest.scala?rev=1366571&view=auto
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompWildcardCustomParallelTest.scala (added)
+++ activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompWildcardCustomParallelTest.scala Sat Jul 28 00:25:43 2012
@@ -0,0 +1,25 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.apollo.stomp.test
+
+import java.lang.String
+
+class StompWildcardCustomParallelTest extends StompWildcardParallelTest {
+ override def broker_config_uri: String = "xml:classpath:apollo-stomp-custom-dest-delimiters.xml"
+
+ override def path_separator = "/"
+}
Added: activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompWildcardParallelTest.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompWildcardParallelTest.scala?rev=1366571&view=auto
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompWildcardParallelTest.scala (added)
+++ activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/test/StompWildcardParallelTest.scala Sat Jul 28 00:25:43 2012
@@ -0,0 +1,61 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.apollo.stomp.test
+
+import java.lang.String
+import org.apache.activemq.apollo.broker._
+
+class StompWildcardParallelTest extends StompTestSupport with BrokerParallelTestExecution {
+
+ def path_separator = "."
+
+ test("Wildcard subscription") {
+ connect("1.1")
+
+ client.write(
+ "SUBSCRIBE\n" +
+ "destination:/queue/foo" + path_separator + "*\n" +
+ "id:1\n" +
+ "receipt:0\n" +
+ "\n")
+
+ wait_for_receipt("0")
+
+ def put(dest: String) = {
+ client.write(
+ "SEND\n" +
+ "destination:/queue/" + dest + "\n" +
+ "\n" +
+ "message:" + dest + "\n")
+ }
+
+ def get(dest: String) = {
+ val frame = client.receive()
+ frame should startWith("MESSAGE\n")
+ frame should endWith("\n\nmessage:%s\n".format(dest))
+ }
+
+ // We should not get this one..
+ put("bar" + path_separator + "a")
+
+ put("foo" + path_separator + "a")
+ get("foo" + path_separator + "a")
+
+ put("foo" + path_separator + "b")
+ get("foo" + path_separator + "b")
+ }
+}