Repository: ranger Updated Branches: refs/heads/master e71b452f6 -> 567d2c914
RANGER-1940 - Upgrade to Knox 0.14.0 Project: http://git-wip-us.apache.org/repos/asf/ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/ranger/commit/567d2c91 Tree: http://git-wip-us.apache.org/repos/asf/ranger/tree/567d2c91 Diff: http://git-wip-us.apache.org/repos/asf/ranger/diff/567d2c91 Branch: refs/heads/master Commit: 567d2c9149dbb625ba65d2668178210eaf1932a2 Parents: e71b452 Author: Colm O hEigeartaigh <[email protected]> Authored: Wed Dec 20 11:08:22 2017 +0000 Committer: Colm O hEigeartaigh <[email protected]> Committed: Wed Dec 20 11:08:22 2017 +0000 ---------------------------------------------------------------------- .../ranger/services/knox/KnoxRangerTest.java | 138 ++++--------------- pom.xml | 2 +- 2 files changed, 31 insertions(+), 109 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ranger/blob/567d2c91/knox-agent/src/test/java/org/apache/ranger/services/knox/KnoxRangerTest.java ---------------------------------------------------------------------- diff --git a/knox-agent/src/test/java/org/apache/ranger/services/knox/KnoxRangerTest.java b/knox-agent/src/test/java/org/apache/ranger/services/knox/KnoxRangerTest.java index 53e66df..f504f2e 100644 --- a/knox-agent/src/test/java/org/apache/ranger/services/knox/KnoxRangerTest.java +++ b/knox-agent/src/test/java/org/apache/ranger/services/knox/KnoxRangerTest.java @@ -21,26 +21,15 @@ import static io.restassured.RestAssured.given; import static org.hamcrest.CoreMatchers.is; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; -import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; -import org.apache.directory.server.protocol.shared.transport.TcpTransport; -import org.apache.hadoop.gateway.GatewayServer; import org.apache.hadoop.gateway.GatewayTestConfig; -import org.apache.hadoop.gateway.security.ldap.SimpleLdapDirectoryServer; -import org.apache.hadoop.gateway.services.DefaultGatewayServices; -import org.apache.hadoop.gateway.services.ServiceLifecycleException; -import org.apache.hadoop.test.mock.MockServer; +import org.apache.hadoop.gateway.GatewayTestDriver; import org.apache.http.HttpStatus; import org.junit.AfterClass; -import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; @@ -55,91 +44,25 @@ import io.restassured.response.ValidatableResponse; */ public class KnoxRangerTest { - private static GatewayTestConfig config; - private static GatewayServer gateway; - private static SimpleLdapDirectoryServer ldap; - private static TcpTransport ldapTransport; - private static MockServer hdfsServer; - private static MockServer stormServer; - private static MockServer hbaseServer; - private static MockServer kafkaServer; - private static MockServer solrServer; + private static GatewayTestDriver driver = new GatewayTestDriver(); @BeforeClass public static void setupSuite() throws Exception { - setupLdap(); - hdfsServer = new MockServer( "hdfs", true ); - stormServer = new MockServer( "storm", true ); - hbaseServer = new MockServer( "hbase", true ); - kafkaServer = new MockServer( "kafka", true ); - solrServer = new MockServer( "solr", true ); - - setupGateway(); + driver.setResourceBase(KnoxRangerTest.class); + driver.setupLdap(0); + GatewayTestConfig config = new GatewayTestConfig(); + driver.setupService("WEBHDFS", "http://localhost:50070/webhdfs", "/cluster/webhdfs", true); + driver.setupService("STORM", "http://localhost:8477", "/cluster/storm", true); + driver.setupService("SOLR", "http://localhost:8983", "/cluster/solr", true); + driver.setupService("WEBHBASE", "http://localhost:60080", "/cluster/hbase", true); + driver.setupService("KAFKA", "http://localhost:8477", "/cluster/kafka", true); + + driver.setupGateway(config, "cluster", createTopology(), true); } @AfterClass public static void cleanupSuite() throws Exception { - gateway.stop(); - - FileUtils.deleteQuietly( new File( config.getGatewayTopologyDir() ) ); - FileUtils.deleteQuietly( new File( config.getGatewayConfDir() ) ); - FileUtils.deleteQuietly( new File( config.getGatewaySecurityDir() ) ); - FileUtils.deleteQuietly( new File( config.getGatewayDeploymentDir() ) ); - FileUtils.deleteQuietly( new File( config.getGatewayDataDir() ) ); - - hdfsServer.stop(); - stormServer.stop(); - hbaseServer.stop(); - kafkaServer.stop(); - solrServer.stop(); - - ldap.stop( true ); - } - - private static void setupLdap() throws Exception { - String basedir = System.getProperty("basedir"); - if (basedir == null) { - basedir = new File(".").getCanonicalPath(); - } - Path path = FileSystems.getDefault().getPath(basedir, "/src/test/resources/users.ldif"); - ldapTransport = new TcpTransport( 0 ); - ldap = new SimpleLdapDirectoryServer( "dc=hadoop,dc=apache,dc=org", path.toFile(), ldapTransport ); - ldap.start(); - } - - private static void setupGateway() throws Exception { - - File targetDir = new File( System.getProperty( "user.dir" ), "target" ); - File gatewayDir = new File( targetDir, "gateway-home-" + UUID.randomUUID() ); - Assert.assertTrue(gatewayDir.mkdirs()); - - config = new GatewayTestConfig(); - config.setGatewayHomeDir( gatewayDir.getAbsolutePath() ); - - config.setGatewayServicesDir(targetDir.getPath() + File.separator + "services"); - - File topoDir = new File( config.getGatewayTopologyDir() ); - Assert.assertTrue(topoDir.mkdirs()); - - File deployDir = new File( config.getGatewayDeploymentDir() ); - Assert.assertTrue(deployDir.mkdirs()); - - File descriptor = new File( topoDir, "cluster.xml" ); - FileOutputStream stream = new FileOutputStream( descriptor ); - createTopology().toStream( stream ); - stream.close(); - - DefaultGatewayServices srvcs = new DefaultGatewayServices(); - Map<String,String> options = new HashMap<>(); - options.put( "persist-master", "false" ); - options.put( "master", "password" ); - try { - srvcs.init( config, options ); - } catch ( ServiceLifecycleException e ) { - e.printStackTrace(); // I18N not required. - } - - gateway = GatewayServer.startGateway( config, srvcs ); + driver.cleanup(); } /** @@ -170,8 +93,7 @@ public class KnoxRangerTest { .addTag( "value" ).addText( "uid={0},ou=people,dc=hadoop,dc=apache,dc=org" ).gotoParent() .addTag( "param" ) .addTag( "name" ).addText( "main.ldapRealm.contextFactory.url" ) - .addTag( "value" ).addText( "ldap://localhost:" + ldapTransport.getAcceptor().getLocalAddress().getPort() ).gotoParent() - //.addTag( "value" ).addText(driver.getLdapUrl() ).gotoParent() + .addTag( "value" ).addText(driver.getLdapUrl() ).gotoParent() .addTag( "param" ) .addTag( "name" ).addText( "main.ldapRealm.contextFactory.authenticationMechanism" ) .addTag( "value" ).addText( "simple" ).gotoParent() @@ -189,19 +111,19 @@ public class KnoxRangerTest { .gotoRoot() .addTag("service") .addTag("role").addText("WEBHDFS") - .addTag("url").addText("http://localhost:" + hdfsServer.getPort()).gotoParent() + .addTag("url").addText(driver.getRealUrl("WEBHDFS")).gotoParent() .addTag("service") .addTag("role").addText("STORM") - .addTag("url").addText("http://localhost:" + stormServer.getPort()).gotoParent() + .addTag("url").addText(driver.getRealUrl("STORM")).gotoParent() .addTag("service") .addTag("role").addText("WEBHBASE") - .addTag("url").addText("http://localhost:" + hbaseServer.getPort()).gotoParent() + .addTag("url").addText(driver.getRealUrl("WEBHBASE")).gotoParent() .addTag("service") .addTag("role").addText("KAFKA") - .addTag("url").addText("http://localhost:" + kafkaServer.getPort()).gotoParent() + .addTag("url").addText(driver.getRealUrl("KAFKA")).gotoParent() .addTag("service") .addTag("role").addText("SOLR") - .addTag("url").addText("http://localhost:" + solrServer.getPort() + "/solr").gotoParent() + .addTag("url").addText(driver.getRealUrl("SOLR")).gotoParent() .gotoRoot(); return xml; } @@ -264,7 +186,7 @@ public class KnoxRangerTest { } Path path = FileSystems.getDefault().getPath(basedir, "/src/test/resources/webhdfs-liststatus-test.json"); - hdfsServer + driver.getMock("WEBHDFS") .expect() .method( "GET" ) .pathInfo( "/v1/hdfstest" ) @@ -280,7 +202,7 @@ public class KnoxRangerTest { .header("X-XSRF-Header", "jksdhfkhdsf") .queryParam( "op", "LISTSTATUS" ) .when() - .get( "http://localhost:" + gateway.getAddresses()[0].getPort() + "/gateway/cluster/webhdfs" + "/v1/hdfstest" ) + .get( driver.getUrl("WEBHDFS") + "/v1/hdfstest" ) .then() .statusCode(statusCode) .log().body(); @@ -297,7 +219,7 @@ public class KnoxRangerTest { } Path path = FileSystems.getDefault().getPath(basedir, "/src/test/resources/cluster-configuration.json"); - stormServer + driver.getMock("STORM") .expect() .method("GET") .pathInfo("/api/v1/cluster/configuration") @@ -310,7 +232,7 @@ public class KnoxRangerTest { .auth().preemptive().basic(user, password) .header("X-XSRF-Header", "jksdhfkhdsf") .header("Accept", "application/json") - .when().get( "http://localhost:" + gateway.getAddresses()[0].getPort() + "/gateway/cluster/storm" + "/api/v1/cluster/configuration") + .when().get( driver.getUrl("STORM") + "/api/v1/cluster/configuration") .then() .log().all() .statusCode(statusCode); @@ -325,7 +247,7 @@ public class KnoxRangerTest { Path path = FileSystems.getDefault().getPath(basedir, "/src/test/resources/webhbase-table-list.xml"); - hbaseServer + driver.getMock("WEBHBASE") .expect() .method( "GET" ) .pathInfo( "/" ) @@ -340,7 +262,7 @@ public class KnoxRangerTest { .auth().preemptive().basic( user, password ) .header("X-XSRF-Header", "jksdhfkhdsf") .header( "Accept", ContentType.XML.toString() ) - .when().get( "http://localhost:" + gateway.getAddresses()[0].getPort() + "/gateway/cluster/hbase" ) + .when().get( driver.getUrl("WEBHBASE") ) .then() .statusCode( statusCode ) .log().body(); @@ -348,7 +270,7 @@ public class KnoxRangerTest { private void makeKafkaInvocation(int statusCode, String user, String password) throws IOException { - kafkaServer + driver.getMock("KAFKA") .expect() .method( "GET" ) .pathInfo( "/topics" ) @@ -360,7 +282,7 @@ public class KnoxRangerTest { .auth().preemptive().basic( user, password ) .header("X-XSRF-Header", "jksdhfkhdsf") .when() - .get( "http://localhost:" + gateway.getAddresses()[0].getPort() + "/gateway/cluster/kafka" + "/topics" ) + .get( driver.getUrl("KAFKA") + "/topics" ) .then() .statusCode(statusCode) .log().body(); @@ -374,10 +296,10 @@ public class KnoxRangerTest { } Path path = FileSystems.getDefault().getPath(basedir, "/src/test/resources/query_response.xml"); - solrServer + driver.getMock("SOLR") .expect() .method("GET") - .pathInfo("/solr/gettingstarted/select") + .pathInfo("/gettingstarted/select") .queryParam("q", "author_s:William+Shakespeare") .respond() .status(HttpStatus.SC_OK) @@ -388,7 +310,7 @@ public class KnoxRangerTest { .auth().preemptive().basic(user, password) .header("X-XSRF-Header", "jksdhfkhdsf") .header("Accept", "application/json") - .when().get( "http://localhost:" + gateway.getAddresses()[0].getPort() + "/gateway/cluster/solr" + .when().get( driver.getUrl("SOLR") + "/gettingstarted/select?q=author_s:William+Shakespeare") .then() .log().all() http://git-wip-us.apache.org/repos/asf/ranger/blob/567d2c91/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 255b02a..6ee5839 100644 --- a/pom.xml +++ b/pom.xml @@ -183,7 +183,7 @@ <junit.version>4.12</junit.version> <kafka.version>0.10.0.0</kafka.version> <kerby.version>1.0.0</kerby.version> - <knox.gateway.version>0.13.0</knox.gateway.version> + <knox.gateway.version>0.14.0</knox.gateway.version> <libpam4j.version>1.8</libpam4j.version> <local.lib.dir>${project.basedir}/../lib/local</local.lib.dir> <log4j.version>1.2.17</log4j.version>
