public void testValidate() { { Settings settings = Settings.builder().put("cluster.routing.allocation.balance.shard", "2.0").build(); SettingsModule module = new SettingsModule(settings); assertInstanceBinding(module, Settings.class, (s) -> s == settings); } { Settings settings = Settings.builder().put("cluster.routing.allocation.balance.shard", "[2.0]").build(); IllegalArgumentException ex = expectThrows(IllegalArgumentException.class, () -> new SettingsModule(settings)); assertEquals( "Failed to parse value [[2.0]] for setting [cluster.routing.allocation.balance.shard]", ex.getMessage()); } { Settings settings = Settings.builder() .put("cluster.routing.allocation.balance.shard", "[2.0]") .put("some.foo.bar", 1) .build(); IllegalArgumentException ex = expectThrows(IllegalArgumentException.class, () -> new SettingsModule(settings)); assertEquals( "Failed to parse value [[2.0]] for setting [cluster.routing.allocation.balance.shard]", ex.getMessage()); assertEquals(1, ex.getSuppressed().length); assertEquals( "unknown setting [some.foo.bar] please check that any required plugins are installed, or check the breaking " + "changes documentation for removed settings", ex.getSuppressed()[0].getMessage()); } { Settings settings = Settings.builder().put("index.codec", "default").put("index.foo.bar", 1).build(); IllegalArgumentException ex = expectThrows(IllegalArgumentException.class, () -> new SettingsModule(settings)); assertEquals("node settings must not contain any index level settings", ex.getMessage()); } { Settings settings = Settings.builder().put("index.codec", "default").build(); SettingsModule module = new SettingsModule(settings); assertInstanceBinding(module, Settings.class, (s) -> s == settings); } }