diff --git a/dynamometer-infra/src/test/java/com/linkedin/dynamometer/TestDynamometerInfra.java b/dynamometer-infra/src/test/java/com/linkedin/dynamometer/TestDynamometerInfra.java index d36474d8ec..44a108dfb9 100644 --- a/dynamometer-infra/src/test/java/com/linkedin/dynamometer/TestDynamometerInfra.java +++ b/dynamometer-infra/src/test/java/com/linkedin/dynamometer/TestDynamometerInfra.java @@ -9,12 +9,15 @@ import com.google.common.collect.Sets; import com.linkedin.dynamometer.workloadgenerator.audit.AuditLogDirectParser; import com.linkedin.dynamometer.workloadgenerator.audit.AuditReplayMapper; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.net.URI; import java.net.URISyntaxException; +import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -152,8 +155,6 @@ public static void setupClass() throws Exception { fail("Unable to execute tar to expand Hadoop binary"); } - conf.setBoolean(YarnConfiguration.YARN_MINICLUSTER_FIXED_PORTS, true); - conf.setBoolean(YarnConfiguration.YARN_MINICLUSTER_USE_RPC, true); conf.setInt(YarnConfiguration.RM_SCHEDULER_MINIMUM_ALLOCATION_MB, 128); conf.setBoolean(YarnConfiguration.NODE_LABELS_ENABLED, true); for (String q : new String[] { "root", "root.default" } ) { @@ -182,6 +183,21 @@ public static void setupClass() throws Exception { FileSystem.setDefaultUri(yarnConf, miniDFSCluster.getURI()); fs = miniDFSCluster.getFileSystem(); + URL url = Thread.currentThread().getContextClassLoader().getResource("yarn-site.xml"); + if (url == null) { + throw new RuntimeException("Could not find 'yarn-site.xml' dummy file in classpath"); + } + yarnConf.set(YarnConfiguration.YARN_APPLICATION_CLASSPATH, new File(url.getPath()).getParent()); + // Write the XML to a buffer before writing to the file. writeXml() can trigger a read of the existing + // yarn-site.xml, so writing directly could trigger a read of the file while it is in an inconsistent state + // (partially written) + try (ByteArrayOutputStream bytesOut = new ByteArrayOutputStream()) { + yarnConf.writeXml(bytesOut); + try (OutputStream fileOut = new FileOutputStream(new File(url.getPath()))) { + fileOut.write(bytesOut.toByteArray()); + } + } + yarnClient = YarnClient.createYarnClient(); yarnClient.init(new Configuration(yarnConf)); yarnClient.start(); diff --git a/dynamometer-infra/src/test/resources/yarn-site.xml b/dynamometer-infra/src/test/resources/yarn-site.xml new file mode 100644 index 0000000000..4adae53303 --- /dev/null +++ b/dynamometer-infra/src/test/resources/yarn-site.xml @@ -0,0 +1,12 @@ + + + + + + +