Repository: ranger Updated Branches: refs/heads/master 567d2c914 -> 6841f14d5
Revert "RANGER-1940 - Upgrade to Knox 0.14.0" This reverts commit 567d2c9149dbb625ba65d2668178210eaf1932a2. Project: http://git-wip-us.apache.org/repos/asf/ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/ranger/commit/6841f14d Tree: http://git-wip-us.apache.org/repos/asf/ranger/tree/6841f14d Diff: http://git-wip-us.apache.org/repos/asf/ranger/diff/6841f14d Branch: refs/heads/master Commit: 6841f14d563e00e3f94c4dc979528c885d1f1dfe Parents: 567d2c9 Author: Colm O hEigeartaigh <[email protected]> Authored: Wed Dec 20 11:10:19 2017 +0000 Committer: Colm O hEigeartaigh <[email protected]> Committed: Wed Dec 20 11:10:19 2017 +0000 ---------------------------------------------------------------------- .../ranger/services/knox/KnoxRangerTest.java | 138 +++++++++++++++---- pom.xml | 2 +- 2 files changed, 109 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ranger/blob/6841f14d/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 f504f2e..53e66df 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,15 +21,26 @@ 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.GatewayTestDriver; +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.http.HttpStatus; import org.junit.AfterClass; +import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; @@ -44,25 +55,91 @@ import io.restassured.response.ValidatableResponse; */ public class KnoxRangerTest { - private static GatewayTestDriver driver = new GatewayTestDriver(); + 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; @BeforeClass public static void setupSuite() throws Exception { - 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); + 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(); } @AfterClass public static void cleanupSuite() throws Exception { - driver.cleanup(); + 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 ); } /** @@ -93,7 +170,8 @@ 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(driver.getLdapUrl() ).gotoParent() + .addTag( "value" ).addText( "ldap://localhost:" + ldapTransport.getAcceptor().getLocalAddress().getPort() ).gotoParent() + //.addTag( "value" ).addText(driver.getLdapUrl() ).gotoParent() .addTag( "param" ) .addTag( "name" ).addText( "main.ldapRealm.contextFactory.authenticationMechanism" ) .addTag( "value" ).addText( "simple" ).gotoParent() @@ -111,19 +189,19 @@ public class KnoxRangerTest { .gotoRoot() .addTag("service") .addTag("role").addText("WEBHDFS") - .addTag("url").addText(driver.getRealUrl("WEBHDFS")).gotoParent() + .addTag("url").addText("http://localhost:" + hdfsServer.getPort()).gotoParent() .addTag("service") .addTag("role").addText("STORM") - .addTag("url").addText(driver.getRealUrl("STORM")).gotoParent() + .addTag("url").addText("http://localhost:" + stormServer.getPort()).gotoParent() .addTag("service") .addTag("role").addText("WEBHBASE") - .addTag("url").addText(driver.getRealUrl("WEBHBASE")).gotoParent() + .addTag("url").addText("http://localhost:" + hbaseServer.getPort()).gotoParent() .addTag("service") .addTag("role").addText("KAFKA") - .addTag("url").addText(driver.getRealUrl("KAFKA")).gotoParent() + .addTag("url").addText("http://localhost:" + kafkaServer.getPort()).gotoParent() .addTag("service") .addTag("role").addText("SOLR") - .addTag("url").addText(driver.getRealUrl("SOLR")).gotoParent() + .addTag("url").addText("http://localhost:" + solrServer.getPort() + "/solr").gotoParent() .gotoRoot(); return xml; } @@ -186,7 +264,7 @@ public class KnoxRangerTest { } Path path = FileSystems.getDefault().getPath(basedir, "/src/test/resources/webhdfs-liststatus-test.json"); - driver.getMock("WEBHDFS") + hdfsServer .expect() .method( "GET" ) .pathInfo( "/v1/hdfstest" ) @@ -202,7 +280,7 @@ public class KnoxRangerTest { .header("X-XSRF-Header", "jksdhfkhdsf") .queryParam( "op", "LISTSTATUS" ) .when() - .get( driver.getUrl("WEBHDFS") + "/v1/hdfstest" ) + .get( "http://localhost:" + gateway.getAddresses()[0].getPort() + "/gateway/cluster/webhdfs" + "/v1/hdfstest" ) .then() .statusCode(statusCode) .log().body(); @@ -219,7 +297,7 @@ public class KnoxRangerTest { } Path path = FileSystems.getDefault().getPath(basedir, "/src/test/resources/cluster-configuration.json"); - driver.getMock("STORM") + stormServer .expect() .method("GET") .pathInfo("/api/v1/cluster/configuration") @@ -232,7 +310,7 @@ public class KnoxRangerTest { .auth().preemptive().basic(user, password) .header("X-XSRF-Header", "jksdhfkhdsf") .header("Accept", "application/json") - .when().get( driver.getUrl("STORM") + "/api/v1/cluster/configuration") + .when().get( "http://localhost:" + gateway.getAddresses()[0].getPort() + "/gateway/cluster/storm" + "/api/v1/cluster/configuration") .then() .log().all() .statusCode(statusCode); @@ -247,7 +325,7 @@ public class KnoxRangerTest { Path path = FileSystems.getDefault().getPath(basedir, "/src/test/resources/webhbase-table-list.xml"); - driver.getMock("WEBHBASE") + hbaseServer .expect() .method( "GET" ) .pathInfo( "/" ) @@ -262,7 +340,7 @@ public class KnoxRangerTest { .auth().preemptive().basic( user, password ) .header("X-XSRF-Header", "jksdhfkhdsf") .header( "Accept", ContentType.XML.toString() ) - .when().get( driver.getUrl("WEBHBASE") ) + .when().get( "http://localhost:" + gateway.getAddresses()[0].getPort() + "/gateway/cluster/hbase" ) .then() .statusCode( statusCode ) .log().body(); @@ -270,7 +348,7 @@ public class KnoxRangerTest { private void makeKafkaInvocation(int statusCode, String user, String password) throws IOException { - driver.getMock("KAFKA") + kafkaServer .expect() .method( "GET" ) .pathInfo( "/topics" ) @@ -282,7 +360,7 @@ public class KnoxRangerTest { .auth().preemptive().basic( user, password ) .header("X-XSRF-Header", "jksdhfkhdsf") .when() - .get( driver.getUrl("KAFKA") + "/topics" ) + .get( "http://localhost:" + gateway.getAddresses()[0].getPort() + "/gateway/cluster/kafka" + "/topics" ) .then() .statusCode(statusCode) .log().body(); @@ -296,10 +374,10 @@ public class KnoxRangerTest { } Path path = FileSystems.getDefault().getPath(basedir, "/src/test/resources/query_response.xml"); - driver.getMock("SOLR") + solrServer .expect() .method("GET") - .pathInfo("/gettingstarted/select") + .pathInfo("/solr/gettingstarted/select") .queryParam("q", "author_s:William+Shakespeare") .respond() .status(HttpStatus.SC_OK) @@ -310,7 +388,7 @@ public class KnoxRangerTest { .auth().preemptive().basic(user, password) .header("X-XSRF-Header", "jksdhfkhdsf") .header("Accept", "application/json") - .when().get( driver.getUrl("SOLR") + .when().get( "http://localhost:" + gateway.getAddresses()[0].getPort() + "/gateway/cluster/solr" + "/gettingstarted/select?q=author_s:William+Shakespeare") .then() .log().all() http://git-wip-us.apache.org/repos/asf/ranger/blob/6841f14d/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 6ee5839..255b02a 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.14.0</knox.gateway.version> + <knox.gateway.version>0.13.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>
