From 5c0240219a1450aab3d14067605bc35d0b6b3c0b Mon Sep 17 00:00:00 2001 From: Alan Woodward Date: Sat, 27 Feb 2016 10:03:01 +0000 Subject: [PATCH] SOLR-8712: Variable solr.core.instanceDir was not being resolved --- solr/CHANGES.txt | 3 + .../org/apache/solr/core/CoreDescriptor.java | 1 + .../solr/core/TestImplicitCoreProperties.java | 61 +++++++++++++------ 3 files changed, 48 insertions(+), 17 deletions(-) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 0d57b6d3a70..db70d28eaac 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -342,6 +342,9 @@ Bug Fixes on their own or combined with is a warning. (Christine Poerschke, Shai Erera) +* SOLR-8712: Variable solr.core.instanceDir was not being resolved (Kristine + Jetzke, Shawn Heisey, Alan Woodward) + ======================= 5.5.0 ======================= Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release diff --git a/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java b/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java index d2e95580131..9545549a8c0 100644 --- a/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java +++ b/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java @@ -261,6 +261,7 @@ public class CoreDescriptor { propName = SOLR_CORE_PROP_PREFIX + propName; substitutableProperties.setProperty(propName, propValue); } + substitutableProperties.setProperty("solr.core.instanceDir", instanceDir.toAbsolutePath().toString()); } /** diff --git a/solr/core/src/test/org/apache/solr/core/TestImplicitCoreProperties.java b/solr/core/src/test/org/apache/solr/core/TestImplicitCoreProperties.java index 3c3d61abeae..149d2870f80 100644 --- a/solr/core/src/test/org/apache/solr/core/TestImplicitCoreProperties.java +++ b/solr/core/src/test/org/apache/solr/core/TestImplicitCoreProperties.java @@ -16,32 +16,59 @@ */ package org.apache.solr.core; +import java.util.Properties; + import org.apache.solr.SolrTestCaseJ4; +import org.junit.AfterClass; +import org.junit.BeforeClass; import org.junit.Test; public class TestImplicitCoreProperties extends SolrTestCaseJ4 { + private static CoreContainer cc; + + @BeforeClass + public static void setupContainer() { + cc = createCoreContainer("collection1", "data", "solrconfig-implicitproperties.xml", "schema.xml"); + } + + @AfterClass + public static void teardownContainer() { + if (cc != null) + cc.shutdown(); + } + @Test public void testImplicitPropertiesAreSubstitutedInSolrConfig() { + assertQ(req("q", "*:*") + , "//str[@name='dummy1'][.='collection1']" + , "//str[@name='dummy2'][.='data']" + , "//str[@name='dummy3'][.='solrconfig-implicitproperties.xml']" + , "//str[@name='dummy4'][.='schema.xml']" + , "//str[@name='dummy5'][.='false']" + ); + } - CoreContainer cc - = createCoreContainer("collection1", "data", "solrconfig-implicitproperties.xml", "schema.xml"); - - try { - assertQ(req("q", "*:*") - , "//str[@name='dummy1'][.='collection1']" - , "//str[@name='dummy2'][.='data']" - , "//str[@name='dummy3'][.='solrconfig-implicitproperties.xml']" - , "//str[@name='dummy4'][.='schema.xml']" - , "//str[@name='dummy5'][.='false']" - ); - // Test for SOLR-5279 - make sure properties are there on core reload - cc.reload("collection1"); - } - finally { - cc.shutdown(); - } + // SOLR-5279 + @Test + public void testPropertiesArePersistedAcrossReload() { + cc.reload("collection1"); + assertQ(req("q", "*:*") + , "//str[@name='dummy1'][.='collection1']" + , "//str[@name='dummy2'][.='data']" + , "//str[@name='dummy3'][.='solrconfig-implicitproperties.xml']" + , "//str[@name='dummy4'][.='schema.xml']" + , "//str[@name='dummy5'][.='false']" + ); + } + // SOLR-8712 + @Test + public void testDefaultProperties() { + Properties props = cc.getCoreDescriptor("collection1").getSubstitutableProperties(); + assertEquals("collection1", props.getProperty("solr.core.name")); + assertTrue("solr.core.instanceDir not set correctly", + props.getProperty("solr.core.instanceDir").contains("collection1")); } }