// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.Tags;
import org.junit.Test;
import org.w3c.dom.Document;
import java.io.File;
import java.io.StringReader;
/**
* @author hmusum
*/
public class XmlPreprocessorTest {
private static final File appDir = new File("src/test/resources/multienvapp");
private static final File services = new File(appDir, "services.xml");
@Test
public void testPreProcessing() throws Exception {
String expectedDev =
"""
1
""";
TestBase.assertDocument(expectedDev,
new XmlPreProcessor(appDir,
services,
InstanceName.defaultName(),
Environment.dev,
RegionName.defaultName(),
Tags.empty()).run());
// Difference from dev: node1
// Difference from dev: no TestBar
String expectedStaging =
"""
1
""";
TestBase.assertDocument(expectedStaging,
new XmlPreProcessor(appDir,
services,
InstanceName.defaultName(),
Environment.staging,
RegionName.defaultName(),
Tags.empty()).run());
String expectedPerfUsWest =
"""
1
""";
TestBase.assertDocument(expectedPerfUsWest,
new XmlPreProcessor(appDir,
services,
InstanceName.defaultName(),
Environment.perf,
RegionName.from("us-west"),
Tags.empty()).run());
String expectedPerfUsEastAndCentral =
"""
1
""";
TestBase.assertDocument(expectedPerfUsEastAndCentral,
new XmlPreProcessor(appDir,
services,
InstanceName.defaultName(),
Environment.perf,
RegionName.from("us-east"),
Tags.empty()).run());
TestBase.assertDocument(expectedPerfUsEastAndCentral,
new XmlPreProcessor(appDir,
services,
InstanceName.defaultName(),
Environment.perf,
RegionName.from("us-central"),
Tags.empty()).run());
String expectedProdUsWest =
"""
1
""";
TestBase.assertDocument(expectedProdUsWest,
new XmlPreProcessor(appDir,
services,
InstanceName.defaultName(),
Environment.prod,
RegionName.from("us-west"),
Tags.empty()).run());
String expectedProdUsEastAndCentral =
"""
1
""";
TestBase.assertDocument(expectedProdUsEastAndCentral,
new XmlPreProcessor(appDir,
services,
InstanceName.defaultName(),
Environment.prod,
RegionName.from("us-east"),
Tags.empty()).run());
TestBase.assertDocument(expectedProdUsEastAndCentral,
new XmlPreProcessor(appDir,
services,
InstanceName.defaultName(),
Environment.prod,
RegionName.from("us-central"),
Tags.empty()).run());
}
@Test
public void testPropertiesWithOverlappingNames() throws Exception {
String input =
"""
gamma-usnc1.dht.yahoo.com
4080
3600
36000
50000
50000000
0.01
0.91
${lidspacecompaction_interval}
${lidspacecompaction_allowedlidbloat}
${lidspacecompaction_allowedlidbloatfactor}
${sherpa.host}
${sherpa.port}
""";
String expectedProd =
"""
36000
50000000
0.91
gamma-usnc1.dht.yahoo.com
4080
""";
Document docDev = (new XmlPreProcessor(appDir,
new StringReader(input),
InstanceName.defaultName(),
Environment.prod,
RegionName.defaultName(),
Tags.empty()).run());
TestBase.assertDocument(expectedProd, docDev);
}
}