diff options
Diffstat (limited to 'config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java')
-rw-r--r-- | config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java new file mode 100644 index 00000000000..3b55c05c7c6 --- /dev/null +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java @@ -0,0 +1,80 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.config.provision; + +import com.yahoo.config.provisioning.FlavorsConfig; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import java.util.ArrayList; +import java.util.List; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + + +public class NodeFlavorsTest { + + @Rule + public final ExpectedException exception = ExpectedException.none(); + + @Test + public void testReplacesWithBadValue() { + FlavorsConfig.Builder builder = new FlavorsConfig.Builder(); + List<FlavorsConfig.Flavor.Builder> flavorBuilderList = new ArrayList<>(); + FlavorsConfig.Flavor.Builder flavorBuilder = new FlavorsConfig.Flavor.Builder(); + FlavorsConfig.Flavor.Replaces.Builder flavorReplacesBuilder = new FlavorsConfig.Flavor.Replaces.Builder(); + flavorReplacesBuilder.name("non-existing-config"); + flavorBuilder.name("strawberry").cost(2).replaces.add(flavorReplacesBuilder); + flavorBuilderList.add(flavorBuilder); + builder.flavor(flavorBuilderList); + FlavorsConfig config = new FlavorsConfig(builder); + exception.expect(IllegalStateException.class); + exception.expectMessage("Replaces for strawberry pointing to a non existing flavor: non-existing-config"); + new NodeFlavors(config); + } + + @Test + public void testConfigParsing() { + FlavorsConfig.Builder builder = new FlavorsConfig.Builder(); + List<FlavorsConfig.Flavor.Builder> flavorBuilderList = new ArrayList<>(); + { + FlavorsConfig.Flavor.Builder flavorBuilder = new FlavorsConfig.Flavor.Builder(); + FlavorsConfig.Flavor.Replaces.Builder flavorReplacesBuilder = new FlavorsConfig.Flavor.Replaces.Builder(); + flavorReplacesBuilder.name("banana"); + flavorBuilder.name("strawberry").cost(2).replaces.add(flavorReplacesBuilder); + flavorBuilderList.add(flavorBuilder); + } + { + FlavorsConfig.Flavor.Builder flavorBuilder = new FlavorsConfig.Flavor.Builder(); + flavorBuilder.name("banana").cost(3); + flavorBuilderList.add(flavorBuilder); + } + builder.flavor(flavorBuilderList); + FlavorsConfig config = new FlavorsConfig(builder); + NodeFlavors nodeFlavors = new NodeFlavors(config); + assertThat(nodeFlavors.getFlavor("banana").get().cost(), is(3)); + } + + @Test + public void testRetiredFlavorWithoutReplacement() { + FlavorsConfig.Builder builder = new FlavorsConfig.Builder(); + List<FlavorsConfig.Flavor.Builder> flavorBuilderList = new ArrayList<>(); + { + FlavorsConfig.Flavor.Builder flavorBuilder = new FlavorsConfig.Flavor.Builder(); + flavorBuilder.name("retired").retired(true); + flavorBuilderList.add(flavorBuilder); + } + { + FlavorsConfig.Flavor.Builder flavorBuilder = new FlavorsConfig.Flavor.Builder(); + flavorBuilder.name("chocolate"); + flavorBuilderList.add(flavorBuilder); + } + builder.flavor(flavorBuilderList); + FlavorsConfig config = new FlavorsConfig(builder); + exception.expect(IllegalStateException.class); + exception.expectMessage("Flavor 'retired' is retired, but has no replacement"); + new NodeFlavors(config); + } + +} |