diff --git a/core/src/main/scala/org/apache/spark/deploy/master/ui/EnvironmentPage.scala b/core/src/main/scala/org/apache/spark/deploy/master/ui/EnvironmentPage.scala index 087453175257..06a65d3641e5 100644 --- a/core/src/main/scala/org/apache/spark/deploy/master/ui/EnvironmentPage.scala +++ b/core/src/main/scala/org/apache/spark/deploy/master/ui/EnvironmentPage.scala @@ -62,7 +62,7 @@ private[ui] class EnvironmentPage( val content =
-

Back to Master

+

Back to Master

++
-

Back to Master

+

Back to Master

{range}
{moreButton}
diff --git a/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterPage.scala b/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterPage.scala index c89f586f7e6d..68cabe63ecf8 100644 --- a/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterPage.scala +++ b/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterPage.scala @@ -193,8 +193,8 @@ private[ui] class MasterPage(parent: MasterWebUI) extends WebUIPage("") { {state.completedDrivers.count(_.state == DriverState.RELAUNCHING)} Relaunching)
  • Status: {state.status} - (Environment, - Log) + (Environment, + Log)
  • diff --git a/core/src/test/scala/org/apache/spark/deploy/master/MasterSuiteBase.scala b/core/src/test/scala/org/apache/spark/deploy/master/MasterSuiteBase.scala index 70291625cdb4..800ce81657e3 100644 --- a/core/src/test/scala/org/apache/spark/deploy/master/MasterSuiteBase.scala +++ b/core/src/test/scala/org/apache/spark/deploy/master/MasterSuiteBase.scala @@ -144,6 +144,9 @@ trait MasterSuiteBase extends SparkFunSuite // groups represent URL and worker ID val WORKER_LINK_RE = """\s*(worker-.+?)\s*""".r + // regex to extract site-relative links from the webui HTML + val SITE_RELATIVE_LINK_RE = """href="(/[^"]*)"""".r + private var _master: Master = _ after { @@ -179,6 +182,9 @@ trait MasterSuiteBase extends SparkFunSuite html should include (s"""href="$proxyUrl/static""") html should not include ("""src="/static""") html should include (s"""src="$proxyUrl/static""") + // other site-relative links, e.g. "Back to Master", must not bypass the proxy either + (SITE_RELATIVE_LINK_RE findAllMatchIn html).map(_.group(1)) + .filterNot(_.startsWith(proxyUrl)).toSeq shouldBe empty } protected def verifyDrivers( diff --git a/core/src/test/scala/org/apache/spark/deploy/master/MasterWorkerUISuite.scala b/core/src/test/scala/org/apache/spark/deploy/master/MasterWorkerUISuite.scala index 5f206f611fe6..47ecdb3dd044 100644 --- a/core/src/test/scala/org/apache/spark/deploy/master/MasterWorkerUISuite.scala +++ b/core/src/test/scala/org/apache/spark/deploy/master/MasterWorkerUISuite.scala @@ -133,6 +133,13 @@ class MasterWorkerUISuite extends MasterSuiteBase { .tryWithResource(Source.fromURL(s"$masterUrl/"))(_.getLines().mkString("\n")) html should include ("Spark Master at spark://") verifyStaticResourcesServedByProxy(html, reverseProxyUrl) + Seq("environment/", "logPage/?self&logType=out").foreach { path => + val pageHtml = Utils + .tryWithResource(Source.fromURL(s"$masterUrl/$path"))(_.getLines().mkString("\n")) + withClue(s"$path: ") { + verifyStaticResourcesServedByProxy(pageHtml, reverseProxyUrl) + } + } verifyWorkerUI(html, masterUrl, reverseProxyUrl) } } finally {