@Override public void create(NamespaceMeta namespaceMeta) throws Exception { namespaceAdmin.create(namespaceMeta); }
@Override public void execute(EmptyArguments arguments) throws FileAlreadyExistsException { try { if (!namespaceAdmin.exists(NamespaceId.DEFAULT)) { namespaceAdmin.create(NamespaceMeta.DEFAULT); LOG.info("Successfully created namespace '{}'.", NamespaceMeta.DEFAULT); } } catch (FileAlreadyExistsException e) { // avoid retrying if its a FileAlreadyExistsException throw e; } catch (NamespaceAlreadyExistsException e) { // default namespace already exists, move on } catch (Exception e) { // the default namespace is valid so any exception here is transient and should be retried. throw new RetryableException(e); } }
@Override public void execute(EmptyArguments arguments) throws FileAlreadyExistsException { try { if (!namespaceAdmin.exists(NamespaceId.DEFAULT)) { namespaceAdmin.create(NamespaceMeta.DEFAULT); LOG.info("Successfully created namespace '{}'.", NamespaceMeta.DEFAULT); } } catch (FileAlreadyExistsException e) { // avoid retrying if its a FileAlreadyExistsException throw e; } catch (NamespaceAlreadyExistsException e) { // default namespace already exists, move on } catch (Exception e) { // the default namespace is valid so any exception here is transient and should be retried. throw new RetryableException(e); } }
@BeforeClass public static void before() throws Exception { lf = new LocalLocationFactory(TMP_FOLDER.newFolder()); NamespaceAdmin namespaceAdmin = AppFabricTestHelper.getInjector().getInstance(NamespaceAdmin.class); namespaceAdmin.create(NamespaceMeta.DEFAULT); }
private static void verifyAlreadyExist(NamespaceMeta namespaceMeta, NamespaceId existingNamespace) throws Exception { try { namespaceAdmin.create(namespaceMeta); Assert.fail(String.format("Namespace '%s' should not have been created", namespaceMeta.getName())); } catch (BadRequestException e) { Assert.assertTrue(e.getMessage().contains(existingNamespace.getNamespace())); } }
private void createAuthNamespace() throws Exception { Authorizer authorizer = getAuthorizer(); grantAndAssertSuccess(AUTH_NAMESPACE, ALICE, ImmutableSet.of(Action.ADMIN)); getNamespaceAdmin().create(AUTH_NAMESPACE_META); Assert.assertEquals(ImmutableSet.of(new Privilege(AUTH_NAMESPACE, Action.ADMIN)), authorizer.listPrivileges(ALICE)); }
@Before public void before() throws Exception { store.clear(); NamespacePathLocator namespacePathLocator = AppFabricTestHelper.getInjector().getInstance(NamespacePathLocator.class); namespacePathLocator.get(NamespaceId.DEFAULT).delete(true); NamespaceAdmin admin = AppFabricTestHelper.getInjector().getInstance(NamespaceAdmin.class); admin.create(NamespaceMeta.DEFAULT); }
@BeforeClass public static void beforeClass() throws Exception { CConfiguration conf = CConfiguration.create(); // allow subclasses to override the following two parameters Integer txTimeout = Integer.getInteger(TxConstants.Manager.CFG_TX_TIMEOUT); if (txTimeout != null) { conf.setInt(TxConstants.Manager.CFG_TX_TIMEOUT, txTimeout); } Integer txCleanupInterval = Integer.getInteger(TxConstants.Manager.CFG_TX_CLEANUP_INTERVAL); if (txCleanupInterval != null) { conf.setInt(TxConstants.Manager.CFG_TX_CLEANUP_INTERVAL, txCleanupInterval); } injector = AppFabricTestHelper.getInjector(conf); txService = injector.getInstance(TransactionManager.class); txExecutorFactory = injector.getInstance(TransactionExecutorFactory.class); dsFramework = injector.getInstance(DatasetFramework.class); datasetCache = new SingleThreadDatasetCache( new SystemDatasetInstantiator(dsFramework, MapReduceRunnerTestBase.class.getClassLoader(), null), injector.getInstance(TransactionSystemClient.class), NamespaceId.DEFAULT, DatasetDefinition.NO_ARGUMENTS, null, null); metricStore = injector.getInstance(MetricStore.class); txService.startAndWait(); // Always create the default namespace injector.getInstance(NamespaceAdmin.class).create(NamespaceMeta.DEFAULT); }
private static void ensureNamespaceExists(NamespaceId namespaceId, CConfiguration cConf) throws Exception { NamespaceAdmin namespaceAdmin = getInjector(cConf).getInstance(NamespaceAdmin.class); try { if (!namespaceAdmin.exists(namespaceId)) { namespaceAdmin.create(new NamespaceMeta.Builder().setName(namespaceId).build()); } } catch (NamespaceAlreadyExistsException e) { // There can be race between exists() and create() call. if (!namespaceAdmin.exists(namespaceId)) { throw new IllegalStateException("Failed to create namespace " + namespaceId.getNamespace(), e); } } }
@BeforeClass public static void setup() throws Exception { NamespacePathLocator namespacePathLocator = AppFabricTestHelper.getInjector().getInstance(NamespacePathLocator.class); namespaceHomeLocation = namespacePathLocator.get(DefaultId.NAMESPACE); NamespaceAdmin namespaceAdmin = AppFabricTestHelper.getInjector().getInstance(NamespaceAdmin.class); namespaceAdmin.create(new NamespaceMeta.Builder().setName(DefaultId.NAMESPACE).build()); Locations.mkdirsIfNotExists(namespaceHomeLocation); }
private void createNamespace(NamespaceId namespaceId) throws Exception { // since the namespace admin here is an in memory one we need to create the location explicitly namespacePathLocator.get(namespaceId).mkdirs(); // the framework.delete looks up namespace config through namespaceadmin add the meta there too. namespaceAdmin.create(new NamespaceMeta.Builder().setName(namespaceId).build()); }
private void testDeployAppWithOwner() throws Exception { NamespaceId namespaceId = new NamespaceId("appImpersonation"); NamespaceMeta nsMeta = new NamespaceMeta.Builder().setName(namespaceId.getNamespace()).build(); // grant ALICE admin on namespace and create namespace grantAndAssertSuccess(namespaceId, ALICE, EnumSet.of(Action.ADMIN)); cleanUpEntities.add(namespaceId); getNamespaceAdmin().create(nsMeta); // deploy dummy app with app impersonation deployDummyAppWithImpersonation(nsMeta, BOB.getName()); }
@Before public void setUp() throws Exception { getNamespaceAdmin().create(new NamespaceMeta.Builder().setName(testSpace).build()); }
@Before public void setUp() throws Exception { getNamespaceAdmin().create(new NamespaceMeta.Builder().setName(testSpace).build()); }
@Test(timeout = 90000L) public void testSQLQuerySimpleNS() throws Exception { namespaceAdmin.create(new NamespaceMeta.Builder().setName(testSpace).build()); testSQLQuery(); namespaceAdmin.delete(testSpace); }
private void testDeployAppWithoutOwner() throws Exception { NamespaceId namespaceId = new NamespaceId("namespaceImpersonation"); // We will create a namespace as owner bob, the keytab url is provided to pass the check for DefaultNamespaceAdmin // in unit test, it is useless, since impersonation will never happen NamespaceMeta ownerNSMeta = new NamespaceMeta.Builder().setName(namespaceId.getNamespace()) .setPrincipal(BOB.getName()).setKeytabURI("/tmp/").build(); KerberosPrincipalId bobPrincipalId = new KerberosPrincipalId(BOB.getName()); // grant alice admin to the namespace, but creation should still fail since alice needs to have privilege on // principal bob grantAndAssertSuccess(namespaceId, ALICE, EnumSet.of(Action.ADMIN)); cleanUpEntities.add(namespaceId); try { getNamespaceAdmin().create(ownerNSMeta); Assert.fail("Namespace creation should fail since alice does not have privilege on principal bob"); } catch (UnauthorizedException e) { // expected } // grant alice admin on principal bob, now creation of namespace should work grantAndAssertSuccess(bobPrincipalId, ALICE, EnumSet.of(Action.ADMIN)); cleanUpEntities.add(bobPrincipalId); getNamespaceAdmin().create(ownerNSMeta); // deploy dummy app with ns impersonation deployDummyAppWithImpersonation(ownerNSMeta, null); }
@Before public void beforeTest() throws Exception { super.beforeTest(); getNamespaceAdmin().create(new NamespaceMeta.Builder().setName(NAMESPACE).build()); getMessagingAdmin(NAMESPACE).createTopic(MessagingApp.CONTROL_TOPIC); }
@Test public void testScalaSparkCrossNSDataset() throws Exception { // Deploy and create a dataset in namespace datasetSpaceForSpark NamespaceMeta inputDSNSMeta = new NamespaceMeta.Builder().setName("datasetSpaceForSpark").build(); getNamespaceAdmin().create(inputDSNSMeta); deploy(inputDSNSMeta.getNamespaceId(), SparkAppUsingObjectStore.class); DataSetManager<ObjectStore<String>> keysManager = getDataset(inputDSNSMeta.getNamespaceId().dataset("keys")); prepareInputData(keysManager); Map<String, String> args = ImmutableMap.of(ScalaCharCountProgram.INPUT_DATASET_NAMESPACE(), inputDSNSMeta.getNamespaceId().getNamespace(), ScalaCharCountProgram.INPUT_DATASET_NAME(), "keys"); ApplicationManager applicationManager = deploy(NamespaceId.DEFAULT, SparkAppUsingObjectStore.class); SparkManager sparkManager = applicationManager.getSparkManager(ScalaCharCountProgram.class.getSimpleName()).start(args); sparkManager.waitForRun(ProgramRunStatus.RUNNING, 10, TimeUnit.SECONDS); sparkManager.waitForStopped(60, TimeUnit.SECONDS); DataSetManager<KeyValueTable> countManager = getDataset("count"); checkOutputData(countManager); }
@Category(SlowTests.class) @Test public void testCrossNSMapperDatasetAccess() throws Exception { NamespaceMeta inputNS = new NamespaceMeta.Builder().setName("inputNS").build(); NamespaceMeta outputNS = new NamespaceMeta.Builder().setName("outputNS").build(); getNamespaceAdmin().create(inputNS); getNamespaceAdmin().create(outputNS); addDatasetInstance(inputNS.getNamespaceId().dataset("table1"), "keyValueTable"); addDatasetInstance(outputNS.getNamespaceId().dataset("table2"), "keyValueTable"); DataSetManager<KeyValueTable> tableManager = getDataset(inputNS.getNamespaceId().dataset("table1")); KeyValueTable inputTable = tableManager.get(); inputTable.write("hello", "world"); tableManager.flush(); ApplicationManager appManager = deployApplication(DatasetCrossNSAccessWithMAPApp.class); Map<String, String> argsForMR = ImmutableMap.of( DatasetCrossNSAccessWithMAPApp.INPUT_DATASET_NS, inputNS.getName(), DatasetCrossNSAccessWithMAPApp.INPUT_DATASET_NAME, "table1", DatasetCrossNSAccessWithMAPApp.OUTPUT_DATASET_NS, outputNS.getName(), DatasetCrossNSAccessWithMAPApp.OUTPUT_DATASET_NAME, "table2"); MapReduceManager mrManager = appManager.getMapReduceManager(DatasetCrossNSAccessWithMAPApp.MAPREDUCE_PROGRAM) .start(argsForMR); mrManager.waitForRun(ProgramRunStatus.COMPLETED, 5, TimeUnit.MINUTES); appManager.stopAll(); DataSetManager<KeyValueTable> outTableManager = getDataset(outputNS.getNamespaceId().dataset("table2")); verifyMapperJobOutput(DatasetCrossNSAccessWithMAPApp.class, outTableManager); }
@Test public void testUpdateExistingKeytab() throws Exception { String namespace = "updateNamespace"; NamespaceId namespaceId = new NamespaceId(namespace); NamespaceMeta nsMeta = new NamespaceMeta.Builder().setName(namespaceId) .setPrincipal("alice").setKeytabURI("/alice/keytab").build(); namespaceAdmin.create(nsMeta); Assert.assertTrue(namespaceAdmin.exists(namespaceId)); // update the keytab URI String newKeytab = "/alice/new_keytab"; NamespaceMeta newKeytabMeta = new NamespaceMeta.Builder(nsMeta).setKeytabURI(newKeytab).build(); namespaceAdmin.updateProperties(nsMeta.getNamespaceId(), newKeytabMeta); // assert the keytab URI is updated and the version remains 0 Assert.assertEquals(newKeytab, namespaceAdmin.get(namespaceId).getConfig().getKeytabURIWithoutVersion()); Assert.assertEquals(0, namespaceAdmin.get(namespaceId).getConfig().getKeytabURIVersion()); // update the namespace with the same keytab URI namespaceAdmin.updateProperties(nsMeta.getNamespaceId(), newKeytabMeta); // assert the keytab URI without version remains the same and the version is incremented to 1 Assert.assertEquals(newKeytab, namespaceAdmin.get(namespaceId).getConfig().getKeytabURIWithoutVersion()); Assert.assertEquals(1, namespaceAdmin.get(namespaceId).getConfig().getKeytabURIVersion()); //clean up namespaceAdmin.delete(namespaceId); }