From c60c77398f49d2b3119cde96009a9525601688d5 Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Fri, 11 Jan 2019 13:31:31 +0100 Subject: Make pre-processing respect region for dev environments --- .../config/application/OverrideProcessor.java | 8 ++--- .../application/MultiOverrideProcessorTest.java | 4 +-- .../config/application/OverrideProcessorTest.java | 42 ++++++++++++++++++---- .../com/yahoo/config/provision/Environment.java | 3 ++ 4 files changed, 45 insertions(+), 12 deletions(-) diff --git a/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java b/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java index 9443339624a..0599afa056d 100644 --- a/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java +++ b/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java @@ -136,11 +136,11 @@ class OverrideProcessor implements PreProcessor { } if ( ! elementRegions.isEmpty()) { // match region - // match region in prod only - if ( environment.equals(Environment.prod) && ! elementRegions.contains(region)) return false; + // match region in multi-region environments only + if ( environment.isMultiRegion() && ! elementRegions.contains(region)) return false; - // explicit region implies prod - if ( ! environment.equals(Environment.prod) && elementEnvironments.isEmpty() ) return false; + // explicit region implies multi-region environment + if ( ! environment.isMultiRegion() && elementEnvironments.isEmpty() ) return false; } return true; diff --git a/config-application-package/src/test/java/com/yahoo/config/application/MultiOverrideProcessorTest.java b/config-application-package/src/test/java/com/yahoo/config/application/MultiOverrideProcessorTest.java index c450e478c85..7c054ec62ee 100644 --- a/config-application-package/src/test/java/com/yahoo/config/application/MultiOverrideProcessorTest.java +++ b/config-application-package/src/test/java/com/yahoo/config/application/MultiOverrideProcessorTest.java @@ -89,7 +89,7 @@ public class MultiOverrideProcessorTest { " \n" + " \n" + ""; - assertOverride(Environment.dev, RegionName.defaultName(), expected); + assertOverride(Environment.dev, RegionName.from("us-east-3"), expected); } @Test @@ -118,7 +118,7 @@ public class MultiOverrideProcessorTest { " \n" + " \n" + ""; - assertOverrideWithIds(Environment.dev, RegionName.defaultName(), expected); + assertOverrideWithIds(Environment.dev, RegionName.from("us-east-3"), expected); } private void assertOverride(Environment environment, RegionName region, String expected) throws TransformerException { diff --git a/config-application-package/src/test/java/com/yahoo/config/application/OverrideProcessorTest.java b/config-application-package/src/test/java/com/yahoo/config/application/OverrideProcessorTest.java index e4690418847..57213efcd0d 100644 --- a/config-application-package/src/test/java/com/yahoo/config/application/OverrideProcessorTest.java +++ b/config-application-package/src/test/java/com/yahoo/config/application/OverrideProcessorTest.java @@ -6,12 +6,8 @@ import com.yahoo.config.provision.RegionName; import org.custommonkey.xmlunit.XMLUnit; import org.junit.Test; import org.w3c.dom.Document; -import org.xml.sax.SAXException; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.stream.XMLStreamException; import javax.xml.transform.TransformerException; -import java.io.IOException; import java.io.StringReader; /** @@ -42,6 +38,11 @@ public class OverrideProcessorTest { " \n" + " \n" + " " + + " " + + " \n" + + " \n" + + " \n" + + " " + " " + " \n" + " \n" + @@ -214,7 +215,7 @@ public class OverrideProcessorTest { " 1" + " " + " " + - " " + + " " + " " + " " + " " + @@ -231,6 +232,35 @@ public class OverrideProcessorTest { assertOverride(Environment.from("dev"), RegionName.defaultName(), expected); } + @Test + public void testParsingDevEnvironmentAndRegion() throws Exception { + String expected = + "" + + "" + + " " + + " " + + " " + + " " + + " 1" + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + ""; + + assertOverride(Environment.from("dev"), RegionName.from("us-east-1"), expected); + } + @Test public void testParsingTestEnvironmentUnknownRegion() throws TransformerException { String expected = @@ -317,7 +347,7 @@ public class OverrideProcessorTest { } private void assertOverride(Environment environment, RegionName region, String expected) throws TransformerException { - Document inputDoc = Xml.getDocument(new StringReader(input)); + Document inputDoc = Xml.getDocument(new StringReader(OverrideProcessorTest.input)); Document newDoc = new OverrideProcessor(environment, region).process(inputDoc); TestBase.assertDocument(expected, newDoc); } diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Environment.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Environment.java index a980866ff64..b9573b21199 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/Environment.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Environment.java @@ -33,6 +33,9 @@ public enum Environment { /** Returns whether this environment is production (prod) */ public boolean isProduction() { return this == prod; } + /** Returns whether this environment can exist in multiple regions */ + public boolean isMultiRegion() { return this == prod || this == dev; } + /** Returns the prod environment. This is useful for non-hosted properties where we just need any consistent value */ public static Environment defaultEnvironment() { return prod; } -- cgit v1.2.3