You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by km...@apache.org on 2015/11/03 15:43:35 UTC
knox git commit: KNOX-394: Request and response URLs must be parsed
as literals not templates. Part 2.
Repository: knox
Updated Branches:
refs/heads/master 33bb1ce57 -> 34b1cd03d
KNOX-394: Request and response URLs must be parsed as literals not templates. Part 2.
Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/34b1cd03
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/34b1cd03
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/34b1cd03
Branch: refs/heads/master
Commit: 34b1cd03d57c742bfe182c54a4fef21103a15fb6
Parents: 33bb1ce
Author: Kevin Minder <ke...@hortonworks.com>
Authored: Tue Nov 3 09:43:31 2015 -0500
Committer: Kevin Minder <ke...@hortonworks.com>
Committed: Tue Nov 3 09:43:31 2015 -0500
----------------------------------------------------------------------
CHANGES | 1 +
.../gateway/OozieServiceDefinitionTest.java | 50 ++++++++++++++++++++
.../oozie-request-with-complex-var.xml | 14 ++++++
3 files changed, 65 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/knox/blob/34b1cd03/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 65ddf39..c0c5d42 100644
--- a/CHANGES
+++ b/CHANGES
@@ -29,6 +29,7 @@ Release Notes - Apache Knox - Version 0.7.0
* [KNOX-603] - Coverity: Potential resource leak in BaseKeystoreService.createKeystore
* [KNOX-614] - Incorrect URI template expansion with {**} query params #fragments
* [KNOX-616] - XmlUrlRewriteStreamFilter unscapes escaped special characters
+ * [KNOX-394] - Request and response URLs must be parsed as literals not templates
------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.6.0
http://git-wip-us.apache.org/repos/asf/knox/blob/34b1cd03/gateway-test/src/test/java/org/apache/hadoop/gateway/OozieServiceDefinitionTest.java
----------------------------------------------------------------------
diff --git a/gateway-test/src/test/java/org/apache/hadoop/gateway/OozieServiceDefinitionTest.java b/gateway-test/src/test/java/org/apache/hadoop/gateway/OozieServiceDefinitionTest.java
index 96d8fbd..6b09c2a 100644
--- a/gateway-test/src/test/java/org/apache/hadoop/gateway/OozieServiceDefinitionTest.java
+++ b/gateway-test/src/test/java/org/apache/hadoop/gateway/OozieServiceDefinitionTest.java
@@ -96,6 +96,56 @@ public class OozieServiceDefinitionTest {
}
@Test
+ public void testOozieRewriteRulesForLiteralComplexTemplateValuesBugKnox394() throws Exception {
+
+ // This is a unique part of this test.
+ String testResource = "oozie-request-with-complex-var.xml";
+
+ // Mock out the service url registry which is required for several url rewrite functions to work.
+ ServiceRegistry registry = EasyMock.createNiceMock( ServiceRegistry.class );
+ EasyMock.expect( registry.lookupServiceURL( "test-cluster", "NAMENODE" ) ).andReturn( "test-scheme://test-host:42" ).anyTimes();
+
+ // Mock out the gateway services registry which is required for several url rewrite functions to work.
+ GatewayServices services = EasyMock.createNiceMock( GatewayServices.class );
+ EasyMock.expect( services.getService( GatewayServices.SERVICE_REGISTRY_SERVICE ) ).andReturn( registry ).anyTimes();
+
+ UrlRewriteProcessor rewriteProcessor = new UrlRewriteProcessor();
+
+ ServletContext servletContext = EasyMock.createNiceMock( ServletContext.class );
+ EasyMock.expect( servletContext.getAttribute( UrlRewriteServletContextListener.PROCESSOR_ATTRIBUTE_NAME ) ).andReturn( rewriteProcessor ).anyTimes();
+ EasyMock.expect( servletContext.getAttribute( GatewayServices.GATEWAY_SERVICES_ATTRIBUTE ) ).andReturn( services ).anyTimes();
+ EasyMock.expect( servletContext.getAttribute( GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE ) ).andReturn( "test-cluster" ).anyTimes();
+
+ HttpServletRequest servletRequest = EasyMock.createNiceMock( HttpServletRequest.class );
+ EasyMock.expect( servletRequest.getInputStream() ).andReturn( new MockServletInputStream( TestUtils.getResourceStream( OozieServiceDefinitionTest.class, testResource ) ) ).anyTimes();
+ EasyMock.expect( servletRequest.getContentType() ).andReturn( "text/xml" ).anyTimes();
+
+ FilterConfig filterConfig = EasyMock.createNiceMock( FilterConfig.class );
+ EasyMock.expect( filterConfig.getServletContext() ).andReturn( servletContext ).anyTimes();
+ EasyMock.expect( filterConfig.getInitParameter( UrlRewriteServletFilter.REQUEST_BODY_FILTER_PARAM ) ).andReturn( "OOZIE/oozie/configuration" ).anyTimes();
+
+ EasyMock.replay( registry, services, servletContext, servletRequest, filterConfig );
+
+ UrlRewriteEnvironment rewriteEnvironment = new UrlRewriteServletEnvironment( servletContext );
+
+ Reader rulesReader = TestUtils.getResourceReader( "services/oozie/4.0.0/rewrite.xml", "UTF-8" );
+ UrlRewriteRulesDescriptor rewriteRules = UrlRewriteRulesDescriptorFactory.load( "xml", rulesReader );
+ rulesReader.close();
+
+ rewriteProcessor.initialize( rewriteEnvironment, rewriteRules );
+
+ UrlRewriteRequest rewriteRequest = new UrlRewriteRequest( filterConfig, servletRequest );
+
+ InputStream stream = rewriteRequest.getInputStream();
+
+ Document document = TestUtils.parseXml( stream );
+
+ assertThat( document,
+ hasXPath( "/configuration/property[name='oozie.wf.application.path']/value",
+ equalTo( "${nameNode}/user/${user.name}/${examplesRoot}/apps/hive" ) ) );
+ }
+
+ @Test
public void testOozieRewriteRulesForValuesRelativeToServiceRegistry() throws Exception {
// This is a unique part of this test.
http://git-wip-us.apache.org/repos/asf/knox/blob/34b1cd03/gateway-test/src/test/resources/org/apache/hadoop/gateway/OozieServiceDefinitionTest/oozie-request-with-complex-var.xml
----------------------------------------------------------------------
diff --git a/gateway-test/src/test/resources/org/apache/hadoop/gateway/OozieServiceDefinitionTest/oozie-request-with-complex-var.xml b/gateway-test/src/test/resources/org/apache/hadoop/gateway/OozieServiceDefinitionTest/oozie-request-with-complex-var.xml
new file mode 100644
index 0000000..ad1cff5
--- /dev/null
+++ b/gateway-test/src/test/resources/org/apache/hadoop/gateway/OozieServiceDefinitionTest/oozie-request-with-complex-var.xml
@@ -0,0 +1,14 @@
+<configuration><property><name>oozie.use.system.libpath</name><value>true</value></property>
+ <property><name>examplesRoot</name><value>examples-path</value></property>
+ <property><name>cluster_name</name><value>hdp</value></property>
+ <property><name>knox_truth</name><value>true</value></property>
+ <property><name>oozie_port</name><value>11000</value>
+ </property><property><name>oozie_host</name><value>hostname</value></property>
+ <property><name>jobTracker</name><value>hostname</value></property>
+ <property><name>oozie.wf.application.path</name><value>${nameNode}/user/${user.name}/${examplesRoot}/apps/hive</value></property>
+ <property><name>knox_gateway_port</name><value>8443</value></property>
+ <property><name>knox_gateway_path</name><value>gateway</value></property>
+ <property><name>user.name</name><value>svbigred</value></property>
+ <property><name>ENV</name><value>dev</value></property>
+ <property><name>nameNode</name><value>hdfs://hostname:8020</value></property>
+</configuration>
\ No newline at end of file