Repository: knox Updated Branches: refs/heads/master 26361b6e7 -> 48b4ad74d
KNOX-601: Knox test failures on windows Project: http://git-wip-us.apache.org/repos/asf/knox/repo Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/48b4ad74 Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/48b4ad74 Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/48b4ad74 Branch: refs/heads/master Commit: 48b4ad74d4f4fedeeb2aa71e09043a7eff902628 Parents: 26361b6 Author: Kevin Minder <kevin.min...@hortonworks.com> Authored: Tue Sep 29 15:23:33 2015 -0400 Committer: Kevin Minder <kevin.min...@hortonworks.com> Committed: Tue Sep 29 15:23:33 2015 -0400 ---------------------------------------------------------------------- CHANGES | 1 + .../ha/provider/impl/DefaultURLManager.java | 4 +-- .../provider/impl/HS2ZookeeperURLManager.java | 3 ++- .../impl/HS2ZookeeperURLManagerTest.java | 17 ++++++------ .../provider/impl/HaDescriptorManagerTest.java | 5 ++-- .../hadoop/gateway/GatewayBasicFuncTest.java | 21 +++++++-------- .../hadoop/gateway/util/JsonUtilsTest.java | 16 +++++++++--- .../gateway/util/urltemplate/ExpanderTest.java | 12 ++++++--- .../gateway/util/urltemplate/MatcherTest.java | 16 ++++++++---- .../gateway/util/urltemplate/RewriterTest.java | 27 +++++++++++++++----- 10 files changed, 80 insertions(+), 42 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/knox/blob/48b4ad74/CHANGES ---------------------------------------------------------------------- diff --git a/CHANGES b/CHANGES index 7b33de1..cb802ad 100644 --- a/CHANGES +++ b/CHANGES @@ -22,6 +22,7 @@ Release Notes - Apache Knox - Version 0.7.0 * [KNOX-581] - Hive dispatch not propagating effective principal name * [KNOX-598] - Concurrent JDBC clients via KNOX to Kerberized HiveServer2 causes HTTP 401 error (due to Kerberos Replay attack error) * [KNOX-599] - Template with {**} in queries are expanded with =null for query params without a value + * [KNOX-601] - Knox test failures on windows ------------------------------------------------------------------------------ Release Notes - Apache Knox - Version 0.6.0 http://git-wip-us.apache.org/repos/asf/knox/blob/48b4ad74/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultURLManager.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultURLManager.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultURLManager.java index 1783d1a..e5b11ef 100644 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultURLManager.java +++ b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultURLManager.java @@ -70,8 +70,8 @@ public class DefaultURLManager implements URLManager { boolean pushToBottom = false; URI topUri = URI.create(top); URI incomingUri = URI.create(url); - String topHostPort = topUri.getHost() + topUri.getPort(); - String incomingHostPort = incomingUri.getHost() + incomingUri.getPort(); + String topHostPort = topUri.getHost() + ":" + topUri.getPort(); + String incomingHostPort = incomingUri.getHost() + ":" + incomingUri.getPort(); if ( topHostPort.equals(incomingHostPort) ) { pushToBottom = true; } http://git-wip-us.apache.org/repos/asf/knox/blob/48b4ad74/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HS2ZookeeperURLManager.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HS2ZookeeperURLManager.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HS2ZookeeperURLManager.java index ac2bfac..08b0590 100644 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HS2ZookeeperURLManager.java +++ b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HS2ZookeeperURLManager.java @@ -27,6 +27,7 @@ import org.apache.hadoop.gateway.i18n.messages.MessagesFactory; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -44,7 +45,7 @@ public class HS2ZookeeperURLManager extends DefaultURLManager { private HashSet<String> failedSet; public HS2ZookeeperURLManager() { - failedSet = new HashSet<>(); + failedSet = new LinkedHashSet<>(); } @Override http://git-wip-us.apache.org/repos/asf/knox/blob/48b4ad74/gateway-provider-ha/src/test/java/org/apache/hadoop/gateway/ha/provider/impl/HS2ZookeeperURLManagerTest.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/test/java/org/apache/hadoop/gateway/ha/provider/impl/HS2ZookeeperURLManagerTest.java b/gateway-provider-ha/src/test/java/org/apache/hadoop/gateway/ha/provider/impl/HS2ZookeeperURLManagerTest.java index 96cf7b4..05c31b6 100644 --- a/gateway-provider-ha/src/test/java/org/apache/hadoop/gateway/ha/provider/impl/HS2ZookeeperURLManagerTest.java +++ b/gateway-provider-ha/src/test/java/org/apache/hadoop/gateway/ha/provider/impl/HS2ZookeeperURLManagerTest.java @@ -83,9 +83,9 @@ public class HS2ZookeeperURLManagerTest { public void testActiveURLManagement() throws Exception { List<String> urls = manager.getURLs(); Assert.assertNotNull(urls); - String url1 = "https://host4:10004/cliservice"; - String url2 = "http://host3:10003/cliservice"; - String url3 = "http://host2:10002/foobar"; + String url1 = urls.get( 0 ); //"https://host4:10004/cliservice"; + String url2 = urls.get( 1 ); //"http://host3:10003/cliservice"; + String url3 = urls.get( 2 ); //"http://host2:10002/foobar"; assertEquals(url1, urls.get(0)); assertEquals(url1, manager.getActiveURL()); manager.markFailed(url1); @@ -96,16 +96,15 @@ public class HS2ZookeeperURLManagerTest { @Test public void testMarkingFailedURL() { - ArrayList<String> urls = new ArrayList<>(); - String url1 = "https://host4:10004/cliservice"; + List<String> urls = manager.getURLs(); + String url1 = urls.get(0); //"https://host4:10004/cliservice"; urls.add(url1); - String url2 = "http://host3:10003/cliservice"; + String url2 = urls.get(1); //"http://host3:10003/cliservice"; urls.add(url2); - String url3 = "http://host2:10002/foobar"; + String url3 = urls.get(2); //"http://host2:10002/foobar"; urls.add(url3); - String url4 = "https://host1:10001/cliservice"; + String url4 = urls.get(3); //"https://host1:10001/cliservice"; urls.add(url4); - assertTrue(manager.getURLs().containsAll(urls)); assertEquals(url1, manager.getActiveURL()); manager.markFailed(url1); assertEquals(url2, manager.getActiveURL()); http://git-wip-us.apache.org/repos/asf/knox/blob/48b4ad74/gateway-provider-ha/src/test/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorManagerTest.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/test/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorManagerTest.java b/gateway-provider-ha/src/test/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorManagerTest.java index 0e5f0b6..5d2eeb0 100644 --- a/gateway-provider-ha/src/test/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorManagerTest.java +++ b/gateway-provider-ha/src/test/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorManagerTest.java @@ -26,7 +26,7 @@ import java.io.IOException; import java.io.StringWriter; import static org.junit.Assert.*; -import static org.xmlmatchers.XmlMatchers.isEquivalentTo; +import static org.xmlmatchers.XmlMatchers.hasXPath; import static org.xmlmatchers.transform.XmlConverters.the; public class HaDescriptorManagerTest { @@ -81,7 +81,8 @@ public class HaDescriptorManagerTest { " <service enabled=\"false\" failoverSleep=\"1000\" maxFailoverAttempts=\"42\" maxRetryAttempts=\"3\" name=\"foo\" retrySleep=\"3000\" zookeeperEnsemble=\"foo:2181,bar:2181\" zookeeperNamespace=\"hiveserver2\"/>\n" + " <service enabled=\"true\" failoverSleep=\"5000\" maxFailoverAttempts=\"3\" maxRetryAttempts=\"5\" name=\"bar\" retrySleep=\"8000\"/>\n" + "</ha>\n"; - assertThat( the( descriptorXml ), isEquivalentTo( the( xml ) ) ); + assertThat( the( xml ), hasXPath( "/ha/service[@enabled='false' and @failoverSleep='1000' and @maxFailoverAttempts='42' and @maxRetryAttempts='3' and @name='foo' and @retrySleep='3000' and @zookeeperEnsemble='foo:2181,bar:2181' and @zookeeperNamespace='hiveserver2']" ) ); + assertThat( the( xml ), hasXPath( "/ha/service[@enabled='true' and @failoverSleep='5000' and @maxFailoverAttempts='3' and @maxRetryAttempts='5' and @name='bar' and @retrySleep='8000']" ) ); } http://git-wip-us.apache.org/repos/asf/knox/blob/48b4ad74/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayBasicFuncTest.java ---------------------------------------------------------------------- diff --git a/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayBasicFuncTest.java b/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayBasicFuncTest.java index 74d7885..2bcbc1a 100644 --- a/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayBasicFuncTest.java +++ b/gateway-test/src/test/java/org/apache/hadoop/gateway/GatewayBasicFuncTest.java @@ -3253,14 +3253,14 @@ public class GatewayBasicFuncTest { .header("X-Forwarded-Proto", "http") .header("X-Forwarded-Port", Integer.toString(gatewayPort)) .header("X-Forwarded-Context", "/gateway/cluster") - .header("X-Forwarded-Server", gatewayHostName) - .header("X-Forwarded-For", Matchers.isOneOf(gatewayHostName, gatewayAddrName)) - .pathInfo(path) - .queryParam("user.name", username) + .header( "X-Forwarded-Server", Matchers.isOneOf( gatewayHostName, gatewayAddrName ) ) + .header( "X-Forwarded-For", Matchers.isOneOf( gatewayHostName, gatewayAddrName ) ) + .pathInfo( path ) + .queryParam( "user.name", username ) .respond() - .status(HttpStatus.SC_OK) - .content(driver.getResourceBytes(resourceName)) - .contentType(ContentType.JSON.toString()); + .status( HttpStatus.SC_OK ) + .content( driver.getResourceBytes( resourceName ) ) + .contentType( ContentType.JSON.toString() ); Response response = given() .auth().preemptive().basic(username, password) @@ -3293,6 +3293,7 @@ public class GatewayBasicFuncTest { InetSocketAddress gatewayAddress = driver.gateway.getAddresses()[0]; String gatewayHostName = gatewayAddress.getHostName(); + String gatewayAddrName = InetAddress.getByName( gatewayHostName ).getHostAddress(); //Test rewriting of body with X-Forwarded headers (using storm) String resourceName = "storm/topology-id.json"; @@ -3305,7 +3306,7 @@ public class GatewayBasicFuncTest { .header("X-Forwarded-Proto", scheme) .header("X-Forwarded-Port", port) .header("X-Forwarded-Context", "/gateway/cluster") - .header("X-Forwarded-Server", gatewayHostName) + .header("X-Forwarded-Server", Matchers.isOneOf( gatewayHostName, gatewayAddrName ) ) .header("X-Forwarded-For", Matchers.containsString("what, boo")) .pathInfo(path) .queryParam("user.name", username) @@ -3345,7 +3346,7 @@ public class GatewayBasicFuncTest { .header("X-Forwarded-Proto", scheme) .header("X-Forwarded-Port", port) .header("X-Forwarded-Context", "/gateway/cluster") - .header("X-Forwarded-Server", gatewayHostName) + .header("X-Forwarded-Server", Matchers.isOneOf( gatewayHostName, gatewayAddrName ) ) .header("X-Forwarded-For", Matchers.containsString("what, boo")) .pathInfo(path) .queryParam("user.name", username) @@ -3388,7 +3389,7 @@ public class GatewayBasicFuncTest { .header("X-Forwarded-Proto", scheme) .header("X-Forwarded-Port", port) .header("X-Forwarded-Context", "/gateway/cluster") - .header("X-Forwarded-Server", gatewayHostName) + .header("X-Forwarded-Server", Matchers.isOneOf( gatewayHostName, gatewayAddrName ) ) .header("X-Forwarded-For", Matchers.containsString("what, boo")) .queryParam("op", "CREATE") .queryParam( "user.name", username ) http://git-wip-us.apache.org/repos/asf/knox/blob/48b4ad74/gateway-util-common/src/test/java/org/apache/hadoop/gateway/util/JsonUtilsTest.java ---------------------------------------------------------------------- diff --git a/gateway-util-common/src/test/java/org/apache/hadoop/gateway/util/JsonUtilsTest.java b/gateway-util-common/src/test/java/org/apache/hadoop/gateway/util/JsonUtilsTest.java index 294f5a4..00776e2 100644 --- a/gateway-util-common/src/test/java/org/apache/hadoop/gateway/util/JsonUtilsTest.java +++ b/gateway-util-common/src/test/java/org/apache/hadoop/gateway/util/JsonUtilsTest.java @@ -23,19 +23,27 @@ import org.junit.Test; import junit.framework.TestCase; +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.MatcherAssert.assertThat; + public class JsonUtilsTest extends TestCase { - String test = '{' + "\"expires_in\":\"1364487943100\",\"token_type\":\"Bearer\",\"access_token\":\"ksdfh3489tyiodhfjk\"" + '}'; + String expiresIn = "\"expires_in\":\"1364487943100\""; + String tokenType = "\"token_type\":\"Bearer\""; + String accessToken = "\"access_token\":\"ksdfh3489tyiodhfjk\""; + String test = '{' + expiresIn + "," + tokenType + "," + accessToken + '}'; @Test public void testRenderAsJson() throws Exception { HashMap map = new HashMap(); map.put("access_token", "ksdfh3489tyiodhfjk"); map.put("token_type", "Bearer"); - map.put("expires_in", "1364487943100"); + map.put( "expires_in", "1364487943100" ); String result = JsonUtils.renderAsJsonString(map); -// System.out.println(result); - assertEquals(test, result); + + assertThat( result, containsString( expiresIn ) ); + assertThat( result, containsString( tokenType ) ); + assertThat( result, containsString( accessToken ) ); } @Test http://git-wip-us.apache.org/repos/asf/knox/blob/48b4ad74/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/ExpanderTest.java ---------------------------------------------------------------------- diff --git a/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/ExpanderTest.java b/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/ExpanderTest.java index fb3166e..2cf8134 100644 --- a/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/ExpanderTest.java +++ b/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/ExpanderTest.java @@ -29,6 +29,7 @@ import java.util.Arrays; import java.util.List; import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalToIgnoringCase; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; @@ -333,9 +334,14 @@ public class ExpanderTest { // is that if something within {} isn't resolve to a param it should be dropped from the output. template = Parser.parse( "{scheme}://host/{path=**}?{server=host}&{query=**}&{**}" ); expandedUri = Expander.expand( template, params, null ); - assertThat( - expandedUri.toString(), - equalTo( "schemeA://host/pathA/pathB?server=host&query=queryA&query=queryB&host=hostA&extra=extraA" ) ); + expandedString = expandedUri.toString(); + assertThat( expandedString, containsString( "schemeA://host/pathA/pathB?" ) ); + assertThat( expandedString, containsString( "server=host" ) ); + assertThat( expandedString, containsString( "query=queryA" ) ); + assertThat( expandedString, containsString( "query=queryB" ) ); + assertThat( expandedString, containsString( "host=hostA" ) ); + assertThat( expandedString, containsString( "extra=extraA" ) ); + assertThat( expandedString, containsString( "&" ) ); } http://git-wip-us.apache.org/repos/asf/knox/blob/48b4ad74/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/MatcherTest.java ---------------------------------------------------------------------- diff --git a/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/MatcherTest.java b/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/MatcherTest.java index b172f99..4d09a47 100644 --- a/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/MatcherTest.java +++ b/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/MatcherTest.java @@ -20,13 +20,13 @@ package org.apache.hadoop.gateway.util.urltemplate; import org.apache.hadoop.test.category.FastTests; import org.apache.hadoop.test.category.UnitTests; -import org.hamcrest.CoreMatchers; import org.junit.Test; import org.junit.experimental.categories.Category; import java.net.URI; import java.net.URISyntaxException; +import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.hasItems; import static org.hamcrest.CoreMatchers.is; @@ -963,10 +963,16 @@ public class MatcherTest { assertThat( (String)match.getValue(), is( "test-value" ) ); template = Parser.parse( "http://host:42/root/webhdfs/v1/{path=**}?{**}" ); - URI expanded = Expander.expand( template, match.getParams(), null ); - assertThat( - expanded.toString(), - equalTo( "http://host:42/root/webhdfs/v1/user/hrt_qa/knox-ha/knox_webhdfs_client_dir/test_file?delegation=XXX&op=CREATE&namenoderpcaddress=nameservice&createflag=&overwrite=true&createparent=true" ) ) ; + URI expandedUri = Expander.expand( template, match.getParams(), null ); + String expandedStr = expandedUri.toString(); + assertThat( expandedStr, containsString( "http://host:42/root/webhdfs/v1/user/hrt_qa/knox-ha/knox_webhdfs_client_dir/test_file?" ) ); + assertThat( expandedStr, containsString( "delegation=XXX" ) ); + assertThat( expandedStr, containsString( "op=CREATE" ) ); + assertThat( expandedStr, containsString( "namenoderpcaddress=nameservice" ) ); + assertThat( expandedStr, containsString( "createflag=&" ) ); + assertThat( expandedStr, containsString( "overwrite=true" ) ); + assertThat( expandedStr, containsString( "createparent=true" ) ); + assertThat( expandedStr, containsString( "&" ) ); } } http://git-wip-us.apache.org/repos/asf/knox/blob/48b4ad74/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/RewriterTest.java ---------------------------------------------------------------------- diff --git a/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/RewriterTest.java b/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/RewriterTest.java index 285b025..3cdda85 100644 --- a/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/RewriterTest.java +++ b/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/RewriterTest.java @@ -39,6 +39,7 @@ import java.net.URL; import java.net.URLDecoder; import java.io.UnsupportedEncodingException; +import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @@ -285,15 +286,23 @@ public class RewriterTest { EasyMock.replay( config ); Template sourcePattern, targetPattern; - URI actualInput, actualOutput, expectOutput; + URI actualInput, actualOutput; + String actualString; sourcePattern = Parser.parse( "*://{host}:{port}/webhdfs/v1/{path=**}?{**}" ); targetPattern = Parser.parse( "{gateway.url}/webhdfs/data/v1/{path=**}?{host}&{port}&{**}" ); actualInput = new URI( "http://vm.local:50075/webhdfs/v1/tmp/GatewayWebHdfsFuncTest/dirA700/fileA700?op=CREATE&user.name=hdfs&overwrite=false&permission=700" ); - expectOutput = new URI( "http://gw:8888/gateway/cluster/webhdfs/data/v1/tmp/GatewayWebHdfsFuncTest/dirA700/fileA700?host=vm.local&port=50075&op=CREATE&user.name=hdfs&overwrite=false&permission=700" ); actualOutput = Rewriter.rewrite( actualInput, sourcePattern, targetPattern, new TestResolver( config, request ), null ); - assertThat( actualOutput, equalTo( expectOutput ) ); + actualString = actualOutput.toString(); + assertThat( actualString, containsString( "http://gw:8888/gateway/cluster/webhdfs/data/v1/tmp/GatewayWebHdfsFuncTest/dirA700/fileA700?" ) ); + assertThat( actualString, containsString( "host=vm.local" ) ); + assertThat( actualString, containsString( "port=50075" ) ); + assertThat( actualString, containsString( "op=CREATE" ) ); + assertThat( actualString, containsString( "user.name=hdfs" ) ); + assertThat( actualString, containsString( "overwrite=false" ) ); + assertThat( actualString, containsString( "permission=700" ) ); + assertThat( actualString, containsString( "&" ) ); } @Test @@ -306,15 +315,21 @@ public class RewriterTest { EasyMock.replay( config ); Template sourcePattern, targetPattern; - URI actualInput, actualOutput, expectOutput; + URI actualInput, actualOutput; + String actualString; sourcePattern = Parser.parse( "/webhdfs/data/v1/{path=**}?{host}&{port}&{**}" ); targetPattern = Parser.parse( "http://{host}:{port}/webhdfs/v1/{path=**}?{**}" ); actualInput = new URI( "/webhdfs/data/v1/tmp/GatewayWebHdfsFuncTest/dirA700/fileA700?host=vm.local&port=50075&op=CREATE&user.name=hdfs&overwrite=false&permission=700" ); - expectOutput = new URI( "http://vm.local:50075/webhdfs/v1/tmp/GatewayWebHdfsFuncTest/dirA700/fileA700?op=CREATE&user.name=hdfs&overwrite=false&permission=700" ); actualOutput = Rewriter.rewrite( actualInput, sourcePattern, targetPattern, new TestResolver( config, request ), null ); - assertThat( actualOutput, equalTo( expectOutput ) ); + actualString = actualOutput.toString(); + assertThat( actualString, containsString( "http://vm.local:50075/webhdfs/v1/tmp/GatewayWebHdfsFuncTest/dirA700/fileA700?" ) ); + assertThat( actualString, containsString( "op=CREATE" ) ); + assertThat( actualString, containsString( "user.name=hdfs" ) ); + assertThat( actualString, containsString( "overwrite=false" ) ); + assertThat( actualString, containsString( "permission=700" ) ); + assertThat( actualString, containsString( "&" ) ); } @Test