Skip to content
This repository was archived by the owner on Sep 16, 2024. It is now read-only.

Commit 35ded29

Browse files
committed
#204 Replica directories now default to primary directories
1 parent 1a68385 commit 35ded29

File tree

2 files changed

+98
-22
lines changed

2 files changed

+98
-22
lines changed

src/main/java/com/marklogic/appdeployer/command/forests/ConfigureForestReplicasCommand.java

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -240,10 +240,42 @@ protected ForestReplica buildForestReplica(String databaseName, String name, Str
240240
ForestReplica replica = new ForestReplica();
241241
replica.setHost(replicaHostId);
242242
replica.setReplicaName(name);
243-
replica.setDataDirectory(appConfig.getReplicaForestDataDirectory());
244-
replica.setLargeDataDirectory(appConfig.getReplicaForestLargeDataDirectory());
245-
replica.setFastDataDirectory(appConfig.getReplicaForestFastDataDirectory());
246243

244+
// First set to the database-agnostic forest directories
245+
replica.setDataDirectory(appConfig.getForestDataDirectory());
246+
replica.setFastDataDirectory(appConfig.getForestFastDataDirectory());
247+
replica.setLargeDataDirectory(appConfig.getForestLargeDataDirectory());
248+
249+
// Now set to the database-specific forest directories if set
250+
if (databaseName != null) {
251+
Map<String, String> map = appConfig.getDatabaseDataDirectories();
252+
if (map != null && map.containsKey(databaseName)) {
253+
replica.setDataDirectory(map.get(databaseName));
254+
}
255+
256+
map = appConfig.getDatabaseFastDataDirectories();
257+
if (map != null && map.containsKey(databaseName)) {
258+
replica.setFastDataDirectory(map.get(databaseName));
259+
}
260+
261+
map = appConfig.getDatabaseLargeDataDirectories();
262+
if (map != null && map.containsKey(databaseName)) {
263+
replica.setLargeDataDirectory(map.get(databaseName));
264+
}
265+
}
266+
267+
// Now set to the replica forest directories if set
268+
if (appConfig.getReplicaForestDataDirectory() != null) {
269+
replica.setDataDirectory(appConfig.getReplicaForestDataDirectory());
270+
}
271+
if (appConfig.getReplicaForestFastDataDirectory() != null) {
272+
replica.setFastDataDirectory(appConfig.getReplicaForestFastDataDirectory());
273+
}
274+
if (appConfig.getReplicaForestLargeDataDirectory() != null) {
275+
replica.setLargeDataDirectory(appConfig.getReplicaForestLargeDataDirectory());
276+
}
277+
278+
// And now set to the database-specific replica forest directories if set
247279
if (databaseName != null) {
248280
Map<String, String> map = appConfig.getDatabaseReplicaDataDirectories();
249281
if (map != null && map.containsKey(databaseName)) {

src/test/java/com/marklogic/appdeployer/command/forests/BuildForestReplicaTest.java

Lines changed: 63 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,40 +10,84 @@
1010
public class BuildForestReplicaTest extends Assert {
1111

1212
@Test
13-
public void databaseAgnosticReplicaDirectories() {
14-
AppConfig config = new AppConfig();
15-
config.setReplicaForestFastDataDirectory("/var/fast");
16-
config.setReplicaForestLargeDataDirectory("/var/large");
17-
config.setReplicaForestDataDirectory("/var/data");
13+
public void databaseAgnosticDirectories() {
14+
ForestReplica replica = buildForestReplica(
15+
"mlForestDataDirectory", "/var/data",
16+
"mlForestFastDataDirectory", "/var/fast",
17+
"mlForestLargeDataDirectory", "/var/large"
18+
);
1819

19-
ConfigureForestReplicasCommand command = new ConfigureForestReplicasCommand();
20-
ForestReplica replica = command.buildForestReplica(null, "test-name", "host-1", config);
21-
assertEquals("test-name", replica.getReplicaName());
22-
assertEquals("host-1", replica.getHost());
2320
assertEquals("/var/data", replica.getDataDirectory());
2421
assertEquals("/var/fast", replica.getFastDataDirectory());
2522
assertEquals("/var/large", replica.getLargeDataDirectory());
2623
}
2724

25+
@Test
26+
public void databaseSpecificDirectories() {
27+
ForestReplica replica = buildForestReplica(
28+
"mlForestDataDirectory", "/var/data",
29+
"mlForestFastDataDirectory", "/var/fast",
30+
"mlForestLargeDataDirectory", "/var/large",
31+
"mlDatabaseDataDirectories", "my-database,/my/data",
32+
"mlDatabaseFastDataDirectories", "my-database,/my/fast",
33+
"mlDatabaseLargeDataDirectories", "my-database,/my/large"
34+
);
35+
36+
assertEquals("/my/data", replica.getDataDirectory());
37+
assertEquals("/my/fast", replica.getFastDataDirectory());
38+
assertEquals("/my/large", replica.getLargeDataDirectory());
39+
}
40+
41+
@Test
42+
public void databaseAgnosticReplicaDirectories() {
43+
ForestReplica replica = buildForestReplica(
44+
"mlDatabaseDataDirectories", "my-database,/my/data",
45+
"mlDatabaseFastDataDirectories", "my-database,/my/fast",
46+
"mlDatabaseLargeDataDirectories", "my-database,/my/large",
47+
"mlForestDataDirectory", "/var/data",
48+
"mlForestFastDataDirectory", "/var/fast",
49+
"mlForestLargeDataDirectory", "/var/large",
50+
"mlReplicaForestDataDirectory", "/replica/data",
51+
"mlReplicaForestFastDataDirectory", "/replica/fast",
52+
"mlReplicaForestLargeDataDirectory", "/replica/large"
53+
);
54+
55+
assertEquals("/replica/data", replica.getDataDirectory());
56+
assertEquals("/replica/fast", replica.getFastDataDirectory());
57+
assertEquals("/replica/large", replica.getLargeDataDirectory());
58+
}
59+
2860
@Test
2961
public void databaseSpecificReplicaDirectories() {
30-
SimplePropertySource source = new SimplePropertySource(
31-
"mlReplicaForestDataDirectory", "/var/data",
32-
"mlReplicaForestFastDataDirectory", "/var/fast",
33-
"mlReplicaForestLargeDataDirectory", "/var/large",
34-
"mlDatabaseReplicaDataDirectories", "my-database,/opt/data",
35-
"mlDatabaseReplicaFastDataDirectories", "my-database,/opt/fast",
36-
"mlDatabaseReplicaLargeDataDirectories", "my-database,/opt/large"
62+
ForestReplica replica = buildForestReplica(
63+
"mlForestDataDirectory", "/var/data",
64+
"mlForestFastDataDirectory", "/var/fast",
65+
"mlForestLargeDataDirectory", "/var/large",
66+
"mlDatabaseDataDirectories", "my-database,/my/data",
67+
"mlDatabaseFastDataDirectories", "my-database,/my/fast",
68+
"mlDatabaseLargeDataDirectories", "my-database,/my/large",
69+
"mlReplicaForestDataDirectory", "/replica/data",
70+
"mlReplicaForestFastDataDirectory", "/replica/fast",
71+
"mlReplicaForestLargeDataDirectory", "/replica/large",
72+
"mlDatabaseReplicaDataDirectories", "my-database,/my/replica/data",
73+
"mlDatabaseReplicaFastDataDirectories", "my-database,/my/replica/fast",
74+
"mlDatabaseReplicaLargeDataDirectories", "my-database,/my/replica/large"
3775
);
76+
77+
assertEquals("/my/replica/data", replica.getDataDirectory());
78+
assertEquals("/my/replica/fast", replica.getFastDataDirectory());
79+
assertEquals("/my/replica/large", replica.getLargeDataDirectory());
80+
}
81+
82+
private ForestReplica buildForestReplica(String... propertyNamesAndValues) {
83+
SimplePropertySource source = new SimplePropertySource(propertyNamesAndValues);
3884
DefaultAppConfigFactory f = new DefaultAppConfigFactory(source);
3985
AppConfig config = f.newAppConfig();
4086

4187
ConfigureForestReplicasCommand command = new ConfigureForestReplicasCommand();
4288
ForestReplica replica = command.buildForestReplica("my-database", "test-name", "host-1", config);
4389
assertEquals("test-name", replica.getReplicaName());
4490
assertEquals("host-1", replica.getHost());
45-
assertEquals("/opt/data", replica.getDataDirectory());
46-
assertEquals("/opt/fast", replica.getFastDataDirectory());
47-
assertEquals("/opt/large", replica.getLargeDataDirectory());
91+
return replica;
4892
}
4993
}

0 commit comments

Comments
 (0)