diff --git a/activemq-tooling/maven-activemq-perf-plugin/src/test/java/org/apache/activemq/tool/properties/JmsProducerPropertiesTest.java b/activemq-tooling/maven-activemq-perf-plugin/src/test/java/org/apache/activemq/tool/properties/JmsProducerPropertiesTest.java new file mode 100644 index 0000000000..007e7218b0 --- /dev/null +++ b/activemq-tooling/maven-activemq-perf-plugin/src/test/java/org/apache/activemq/tool/properties/JmsProducerPropertiesTest.java @@ -0,0 +1,120 @@ +/** + * 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.tool.properties; + +import junit.framework.TestCase; + +import java.util.Set; + +public class JmsProducerPropertiesTest extends TestCase { + + /** + * Tests the correct parsing of message headers. + * @See JmsProducerProperties.setHeader(String encodedHeader) + * + */ + public void testMessageHeaders() { + + // first test correct header values + String header = "a=b"; + JmsProducerProperties props = new JmsProducerProperties(); + props.setHeader(header); + assertEquals(1, props.headerMap.size()); + Set keys = props.getHeaderKeys(); + assertEquals(1, keys.size()); + assertTrue(keys.contains("a")); + assertEquals("b", props.getHeaderValue("a")); + props.clearHeaders(); + + header = "a=b:c=d"; + props.setHeader(header); + assertEquals(2, props.headerMap.size()); + keys = props.getHeaderKeys(); + assertEquals(2, keys.size()); + assertTrue(keys.contains("a")); + assertTrue(keys.contains("c")); + assertEquals("b", props.getHeaderValue("a")); + assertEquals("d", props.getHeaderValue("c")); + props.clearHeaders(); + + header = "a=b:c=d:e=f"; + props.setHeader(header); + assertEquals(3, props.headerMap.size()); + keys = props.getHeaderKeys(); + assertEquals(3, keys.size()); + assertTrue(keys.contains("a")); + assertTrue(keys.contains("c")); + assertTrue(keys.contains("e")); + assertEquals("b", props.getHeaderValue("a")); + assertEquals("d", props.getHeaderValue("c")); + assertEquals("f", props.getHeaderValue("e")); + props.clearHeaders(); + + header = "a=b:c=d:e=f:"; + props.setHeader(header); + assertEquals(3, props.headerMap.size()); + keys = props.getHeaderKeys(); + assertEquals(3, keys.size()); + assertTrue(keys.contains("a")); + assertTrue(keys.contains("c")); + assertTrue(keys.contains("e")); + assertEquals("b", props.getHeaderValue("a")); + assertEquals("d", props.getHeaderValue("c")); + assertEquals("f", props.getHeaderValue("e")); + props.clearHeaders(); + + + // test incorrect header values + header = "a:="; + props.setHeader(header); + assertEquals(0, props.headerMap.size()); + props.clearHeaders(); + + header = "a:=b"; + props.setHeader(header); + assertEquals(0, props.headerMap.size()); + props.clearHeaders(); + + header = "a=:"; + props.setHeader(header); + assertEquals(0, props.headerMap.size()); + props.clearHeaders(); + + header = "a=b::"; + props.setHeader(header); + assertEquals(1, props.headerMap.size()); + keys = props.getHeaderKeys(); + assertEquals(1, keys.size()); + assertTrue(keys.contains("a")); + assertEquals("b", props.getHeaderValue("a")); + props.clearHeaders(); + + header = "a=b:\":"; + props.setHeader(header); + assertEquals(1, props.headerMap.size()); + keys = props.getHeaderKeys(); + assertEquals(1, keys.size()); + assertTrue(keys.contains("a")); + assertEquals("b", props.getHeaderValue("a")); + props.clearHeaders(); + + header = " : "; + props.setHeader(header); + assertEquals(0, props.headerMap.size()); + props.clearHeaders(); + } +} \ No newline at end of file