[ https://issues.apache.org/jira/browse/ARTEMIS-4356?focusedWorklogId=870854&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-870854 ]
ASF GitHub Bot logged work on ARTEMIS-4356: ------------------------------------------- Author: ASF GitHub Bot Created on: 13/Jul/23 19:34 Start Date: 13/Jul/23 19:34 Worklog Time Spent: 10m Work Description: jbertram commented on code in PR #4549: URL: https://github.com/apache/activemq-artemis/pull/4549#discussion_r1262980591 ########## artemis-server/src/test/java/org/apache/activemq/artemis/core/settings/impl/MatchTest.java: ########## @@ -0,0 +1,82 @@ +/* + * 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.artemis.core.settings.impl; + +import java.util.function.Predicate; +import java.util.regex.Pattern; + +import org.apache.activemq.artemis.core.config.WildcardConfiguration; +import org.junit.Assert; +import org.junit.Test; + +public class MatchTest { + + @Test + public void predicateTestAnyChild() { + + final Match<?> underTest = new Match<>("test.#", null, new WildcardConfiguration()); + final Predicate<String> predicate = underTest.getPattern().asPredicate(); + + Assert.assertTrue(predicate.test("test")); + Assert.assertTrue(predicate.test("test.A")); + Assert.assertTrue(predicate.test("test.A.B")); + + Assert.assertFalse(predicate.test("testing.A")); + } + + @Test + public void predicateTestAnyWord() { + + final Match<?> underTest = new Match<>("test.*", null, new WildcardConfiguration()); + final Predicate<String> predicate = underTest.getPattern().asPredicate(); + + Assert.assertTrue(predicate.test("test.A")); + + Assert.assertFalse(predicate.test("testing.A")); + Assert.assertFalse(predicate.test("test")); + Assert.assertFalse(predicate.test("test.A.B")); + } + + @Test + public void patterDirectAnyChild() { + + final Pattern pattern = Match.createPattern("test.#", new WildcardConfiguration(), true); + final Predicate<String> predicate = pattern.asPredicate(); + + Assert.assertTrue(predicate.test("test.A")); + Assert.assertTrue(predicate.test("test.A.B")); + + Assert.assertFalse(predicate.test("testing.A")); + Assert.assertFalse(predicate.test("test")); // Is this correct? Review Comment: As far as I understand, that is intentional. This is for the MQTT subscription identifier functionality tested at `org.apache.activemq.artemis.tests.integration.mqtt5.spec.controlpackets.PublishTests#testSubscriptionIdentifierMultiLevel`. The broker sets the proper subscription identifiers in `org.apache.activemq.artemis.core.protocol.mqtt.MQTTSessionState#getMatchingSubscriptionIdentifiers`. Issue Time Tracking ------------------- Worklog Id: (was: 870854) Time Spent: 40m (was: 0.5h) > address match with wildcards seems to be broken > ----------------------------------------------- > > Key: ARTEMIS-4356 > URL: https://issues.apache.org/jira/browse/ARTEMIS-4356 > Project: ActiveMQ Artemis > Issue Type: Bug > Components: Broker > Affects Versions: 2.29.0 > Reporter: Gary Tully > Assignee: Gary Tully > Priority: Major > Fix For: 2.30.0 > > Attachments: MatchTest.java > > Time Spent: 40m > Remaining Estimate: 0h > > Using a wildcard address include match in federation, include test.# is too > lenient which points to a bug in the address settings matcher that is in play. > > the attached test shows the problem. > {{final Match<?> underTest = new Match<>("test.#", null, new > WildcardConfiguration());}} > {{Predicate<String> predicate = underTest.getPattern().asPredicate();}} > {{assertTrue(predicate.test("test.A"));}} > {{assertFalse(predicate.test("testing.A"));}} -- This message was sent by Atlassian Jira (v8.20.10#820010)