aboutsummaryrefslogtreecommitdiffstats
path: root/config-application-package
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2021-01-06 13:18:34 +0100
committerHarald Musum <musum@verizonmedia.com>2021-01-06 13:18:34 +0100
commit4a46bed162bad77baaf955cfc3eb3f6b0ed1d4b2 (patch)
treec5063e2a05d3b03640e1e1854eff141890053672 /config-application-package
parent12b1ce99916dab082504479c82993562ca5d0c80 (diff)
Throw exception if services.xml is empty
Diffstat (limited to 'config-application-package')
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java10
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java20
2 files changed, 27 insertions, 3 deletions
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
index ffc975d8668..341e22ce312 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
@@ -616,13 +616,21 @@ public class FilesApplicationPackage implements ApplicationPackage {
! name.equals(SERVICES) &&
! name.equals(HOSTS) &&
! name.equals(CONFIG_DEFINITIONS_DIR));
- preprocessXML(new File(preprocessedDir, SERVICES), getServicesFile(), zone);
+ File servicesFile = validateServicesFile();
+ preprocessXML(new File(preprocessedDir, SERVICES), servicesFile, zone);
preprocessXML(new File(preprocessedDir, HOSTS), getHostsFile(), zone);
FilesApplicationPackage preprocessed = FilesApplicationPackage.fromFile(preprocessedDir, includeSourceFiles);
preprocessed.copyUserDefsIntoApplication();
return preprocessed;
}
+ private File validateServicesFile() throws IOException {
+ File servicesFile = getServicesFile();
+ if ( ! servicesFile.exists() || IOUtils.readFile(servicesFile).isEmpty())
+ throw new IllegalArgumentException(SERVICES + " in application package is empty");
+ return servicesFile;
+ }
+
private void copyUserDefsIntoApplication() {
File destination = appSubDirs.configDefs();
destination.mkdir();
diff --git a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java
index dcc75fff540..2a1ba3adc36 100644
--- a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.config.application.TestBase;
@@ -9,25 +9,30 @@ import com.yahoo.config.provision.Zone;
import com.yahoo.io.IOUtils;
import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
import org.junit.rules.TemporaryFolder;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
+import java.nio.file.Files;
+import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* @author Ulf Lilleengen
- * @since 5.25
*/
public class FilesApplicationPackageTest {
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
@Test
public void testPreprocessing() throws IOException {
File appDir = temporaryFolder.newFolder();
@@ -101,4 +106,15 @@ public class FilesApplicationPackageTest {
assertEquals(IOUtils.readAll(app.getDeployment().get()), IOUtils.readAll(new FileReader(deployment)));
}
+ @Test
+ public void failOnEmptyServicesXml() throws IOException {
+ File appDir = temporaryFolder.newFolder();
+ IOUtils.copyDirectory(new File("src/test/resources/multienvapp"), appDir);
+ Files.delete(new File(appDir, "services.xml").toPath());
+ FilesApplicationPackage app = FilesApplicationPackage.fromFile(appDir);
+ expectedException.expect(IllegalArgumentException.class);
+ expectedException.expectMessage(containsString("services.xml in application package is empty"));
+ app.preprocess(new Zone(Environment.dev, RegionName.defaultName()), new BaseDeployLogger());
+ }
+
}