1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
package com.yahoo.config.application;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeploymentInstanceSpec;
import com.yahoo.config.application.api.xml.DeploymentSpecXmlReader;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
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 javax.xml.transform.TransformerException;
import java.io.File;
import java.io.IOException;
import static org.junit.Assert.assertEquals;
public class HostedOverrideProcessorComplexTest {
private static final String servicesFile = "src/test/resources/complex-app/services.xml";
@Test
public void testProdBetaUsWest2a() throws TransformerException, IOException {
String expected =
"""
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<services xmlns:deploy="vespa" xmlns:preprocess="properties" version="1.0">
<container id="docsgateway" version="1.0">
<nodes count="3">
<resources disk="1800Gb" disk-speed="fast" memory="96Gb" storage-type="local" vcpu="48"/>
</nodes>
</container>
<container id="qrs" version="1.0">
<nodes count="3" required="true">
<resources disk="64Gb" memory="32Gb" vcpu="16"/>
</nodes>
<search/>
</container>
<container id="visitor" version="1.0">
<nodes count="2">
<resources disk="32Gb" memory="16Gb" vcpu="8"/>
</nodes>
<search/>
</container>
<content id="all" version="1.0">
<nodes count="3" groups="3" required="true">
<resources disk="1800Gb" disk-speed="fast" memory="96Gb" storage-type="local" vcpu="48"/>
</nodes>
<redundancy>1</redundancy>
</content>
<content id="filedocument" version="1.0">
<nodes count="2" groups="2">
<resources disk="32Gb" memory="8Gb" vcpu="4"/>
</nodes>
<redundancy>1</redundancy>
</content>
</services>
""";
assertOverride(InstanceName.from("beta1"),
Environment.prod,
RegionName.from("aws-us-west-2a"),
expected);
}
@Test
public void testProdBetaUsEast1b() throws TransformerException, IOException {
String expected =
"""
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<services xmlns:deploy="vespa" xmlns:preprocess="properties" version="1.0">
<container id="docsgateway" version="1.0">
<nodes count="3">
<resources disk="1800Gb" disk-speed="fast" memory="96Gb" storage-type="local" vcpu="48"/>
</nodes>
</container>
<container id="qrs" version="1.0">
<nodes count="5" required="true">
<resources disk="64Gb" memory="32Gb" vcpu="16"/>
</nodes>
<search/>
</container>
<container id="visitor" version="1.0">
<nodes count="2">
<resources disk="32Gb" memory="16Gb" vcpu="8"/>
</nodes>
<search/>
</container>
<content id="all" version="1.0">
<nodes count="10" groups="10" required="true">
<resources disk="1800Gb" disk-speed="fast" memory="96Gb" storage-type="local" vcpu="48"/>
</nodes>
<redundancy>1</redundancy>
</content>
<content id="filedocument" version="1.0">
<nodes count="2" groups="2">
<resources disk="32Gb" memory="8Gb" vcpu="4"/>
</nodes>
<redundancy>1</redundancy>
</content>
</services>
""";
assertOverride(InstanceName.from("beta1"),
Environment.prod,
RegionName.from("aws-us-east-1b"),
expected);
}
private void assertOverride(InstanceName instance, Environment environment, RegionName region, String expected) throws TransformerException {
ApplicationPackage app = FilesApplicationPackage.fromFile(new File(servicesFile).getParentFile());
Document inputDoc = Xml.getDocument(app.getServices());
Tags tags = app.getDeploymentSpec().instance(instance).map(DeploymentInstanceSpec::tags).orElse(Tags.empty());
Document newDoc = new OverrideProcessor(instance, environment, region, tags).process(inputDoc);
assertEquals(expected, Xml.documentAsString(newDoc, true));
}
}
|