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
|
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.application.Xml;
import com.yahoo.text.XML;
import com.yahoo.vespa.config.ConfigDefinitionKey;
import com.yahoo.vespa.config.ConfigPayloadBuilder;
import com.yahoo.vespa.config.GenericConfig;
import com.yahoo.vespa.model.HostResource;
import com.yahoo.vespa.model.HostSystem;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
import org.junit.jupiter.api.Test;
import org.w3c.dom.Element;
import java.io.StringReader;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
/**
* @author gjoranv
*/
public class VespaDomBuilderTest {
private final static String hosts = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" +
"<hosts>" +
" <host name=\"localhost\">" +
" <alias>node1</alias>" +
" <alias>node2</alias>" +
" </host>" +
"</hosts>";
private final static String services = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" +
"<services>" +
" <config name=\"a.standard\">" +
" <basicStruct>" +
" <stringVal>default</stringVal>" +
" </basicStruct>" +
" </config> " +
" <config name=\"container.core.container-http\"><port><search>6745</search></port></config>" +
" <admin version=\"2.0\">" +
" <adminserver hostalias=\"node1\" />" +
" </admin>" +
" <container version=\"1.0\">" +
" <config name=\"a.standard\">" +
" <basicStruct>" +
" <stringVal>qrservers</stringVal>" +
" </basicStruct>" +
" </config> " +
" <nodes>\n" +
" <node hostalias=\"node1\"/>\n" +
" </nodes>\n" +
" </container>\n" +
"</services>";
private final static String servicesWithNamespace = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" +
"<services>" +
" <config name=\"foo.testnamespace\">" +
" <basicStruct>" +
" <stringVal>default</stringVal>" +
" </basicStruct>" +
" </config> " +
" <admin version=\"2.0\">" +
" <adminserver hostalias=\"node1\" />" +
" </admin>" +
"</services>";
@Test
void testUserConfigsWithNamespace() {
VespaModel model = createModel(hosts, servicesWithNamespace);
GenericConfig.GenericConfigBuilder builder =
new GenericConfig.GenericConfigBuilder(new ConfigDefinitionKey("testnamespace", "foo"), new ConfigPayloadBuilder());
model.getConfig(builder, "admin");
assertEquals("{\n" +
" \"basicStruct\": {\n" +
" \"stringVal\": \"default\"\n" +
" }\n" +
"}\n", builder.getPayload().toString());
}
@Test
void testGetElement() {
Element e = Xml.getElement(new StringReader("<chain><foo>sdf</foo></chain>"));
assertEquals(e.getTagName(), "chain");
assertEquals(XML.getChild(e, "foo").getTagName(), "foo");
assertEquals(XML.getValue(XML.getChild(e, "foo")), "sdf");
}
@Test
void testHostSystem() {
VespaModel model = createModel(hosts, services);
HostSystem hostSystem = model.hostSystem();
assertEquals(1, hostSystem.getHosts().size());
HostResource host = hostSystem.getHosts().get(0);
assertEquals(hostSystem.getHostByHostname(host.getHostname()), host);
assertNotNull(hostSystem.getHost("node1"));
assertEquals("hosts [" + host.getHostname() + "]", hostSystem.toString());
}
private VespaModel createModel(String hosts, String services) {
VespaModelCreatorWithMockPkg creator = new VespaModelCreatorWithMockPkg(hosts, services);
return creator.create();
}
}
|