[
https://issues.apache.org/jira/browse/GEODE-1617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15667814#comment-15667814
]
ASF GitHub Bot commented on GEODE-1617:
---------------------------------------
Github user kirklund commented on a diff in the pull request:
https://github.com/apache/incubator-geode/pull/285#discussion_r88075502
--- Diff:
geode-core/src/test/java/org/apache/geode/cache/RegionNameValidationJUnitTest.java
---
@@ -0,0 +1,75 @@
+package org.apache.geode.cache;
+
+import static org.junit.Assert.fail;
+
+import org.apache.geode.internal.cache.InternalRegionArguments;
+import org.apache.geode.internal.cache.LocalRegion;
+import org.apache.geode.test.junit.categories.UnitTest;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+@Category(UnitTest.class)
+public class RegionNameValidationJUnitTest {
+ private static final Pattern NAME_PATTERN =
Pattern.compile("[aA-zZ0-9-_.]+");
+ private static final String REGION_NAME = "MyRegion";
+
+
+ @Test
+ public void testInvalidNames() {
+ InternalRegionArguments ira = new InternalRegionArguments();
+ ira.setInternalRegion(false);
+ try {
+ LocalRegion.validateRegionName(null, ira);
+ fail();
+ } catch (IllegalArgumentException ignore) {
+ }
+ try {
+ LocalRegion.validateRegionName("", ira);
+ fail();
+ } catch (IllegalArgumentException ignore) {
+ }
+ try {
+ LocalRegion.validateRegionName("FOO" + Region.SEPARATOR, ira);
+ fail();
+ } catch (IllegalArgumentException ignore) {
+ }
+
+ }
+
+ @Test
+ public void testExternalRegionNames() {
+ InternalRegionArguments ira = new InternalRegionArguments();
+ ira.setInternalRegion(false);
+ validateCharacters(ira);
+ try {
+ LocalRegion.validateRegionName("__InvalidInternalRegionName", ira);
+ } catch (IllegalArgumentException ignore) {
+ }
+ }
+
+ @Test
+ public void testInternalRegionNames() {
+ InternalRegionArguments ira = new InternalRegionArguments();
+ ira.setInternalRegion(true);
+ LocalRegion.validateRegionName("__ValidInternalRegionName", ira);
+ }
+
+ private void validateCharacters(InternalRegionArguments ira) {
+ for (int x = 0; x < Character.MAX_VALUE; x++) {
+ String name = (char) x + REGION_NAME;
+ Matcher matcher = NAME_PATTERN.matcher(name);
+ if (matcher.matches()) {
+ LocalRegion.validateRegionName(name, ira);
+ } else {
+ try {
+ LocalRegion.validateRegionName(name, ira);
+ fail("Should have received an IllegalArgumentException");
--- End diff --
Recommend adding which character to the message so we get instant info
about which character should have been illegal but was allowed.
> Regions can be created with a variety of characters that are unsupported
> ------------------------------------------------------------------------
>
> Key: GEODE-1617
> URL: https://issues.apache.org/jira/browse/GEODE-1617
> Project: Geode
> Issue Type: Bug
> Components: gfsh
> Affects Versions: 1.0.0-incubating.M2
> Reporter: Kevin Duling
> Assignee: Kevin Duling
> Fix For: 1.0.0-incubating
>
>
> Per this
> [thread|https://www.mail-archive.com/[email protected]/msg04046.html],
> and this
> [thread|https://www.mail-archive.com/[email protected]/msg07079.html]
> on the dev forums and [geode
> documentation|http://docs-geode-develop.cfapps.io/docs/basic_config/data_regions/region_naming.html],
> region names may only consist of alphanumeric characters, an underscore, and
> a hyphen. These rules are not enforced.
> E.g., it is possible to create a region with:
> {{gfsh> create region --name=not^good --type=REPLICATE}}
> Some of these regions may be removed with the {{destroy}} command, while
> others cannot be located.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)