public RpcClientResult put(String path, String content) { if (null == serverUri) { throw new RuntimeException("service url is null"); } WebTarget target = client.target(serverUri).path(path); return target.request().buildPut(Entity.entity(content, MediaType.APPLICATION_JSON)).invoke(RpcClientResult.class); }
@Override public ModelResponse perform(WebTarget target) throws IOException { try(PushbackInputStream is = new PushbackInputStream(new FileInputStream(getFile()), 16)){ String encoding = getContentEncoding(is); Variant variant = new Variant(MediaType.APPLICATION_XML_TYPE, (Locale)null, encoding); Invocation invocation = target.request(MediaType.APPLICATION_JSON).buildPut(Entity.entity(is, variant)); Response response = invocation.invoke(); return response.readEntity(ModelResponse.class); } } };
@Override Invocation buildRequest(WebTarget initial, ContextListener context) { WebTarget target = initial.path(index).path("_mapping").path(type); context.addContext(target); return target.request().buildPut(Entity.json(mapping)); } }
@Test public void testReapplyAndSave(){ expectSuccess(getBuilder(getAPIv2().path("space/reapplyAndSave")).buildPut(Entity.json(new Space(null, "reapplyAndSave", null, null, null, 0, null))), Space.class); DatasetPath d1Path = new DatasetPath("reapplyAndSave.ds1"); createDatasetFromSQLAndSave(d1Path, "select s_name, s_phone from cp.\"tpch/supplier.parquet\"", asList("cp")); final DatasetUI d2 = createDatasetFromParent("reapplyAndSave.ds1").getDataset(); DatasetVersionResourcePath newVersion = getDatasetVersionPath(d2); DatasetUIWithHistory reapply = expectSuccess(getBuilder(getAPIv2().path(newVersion.toString() + "/reapplyAndSave").queryParam("as", "reapplyAndSave.ds3")).buildPost(null), DatasetUIWithHistory.class); assertContains("supplier.parquet", reapply.getDataset().getSql()); List<HistoryItem> historyItems = reapply.getHistory().getItems(); assertEquals("Number of history items incorrect", 1, historyItems.size()); assertEquals(historyItems.get(0).getVersionedResourcePath().getVersion(), reapply.getDataset().getDatasetVersion()); assertEquals(historyItems.get(0).getDataset(), new DatasetPath(reapply.getDataset().getFullPath())); }
@Test public void testVirtualDatasetWithNotNullFields() throws Exception { final LocalJobsService jobsService = (LocalJobsService) l(JobsService.class); expectSuccess(getBuilder(getAPIv2().path("space/space1")).buildPut(Entity.json(new Space(null, "space1", null, null, null, 0, null))), Space.class); final String pathName = "space1.v1"; final DatasetPath numbersJsonPath = new DatasetPath(pathName); DatasetUI numbersJsonVD = createDatasetFromSQLAndSave(numbersJsonPath, "select row_number() over (order by a) as rnk, a from cp.\"json/numbers.json\"", asList("cp")); final SqlQuery query = getQueryFromSQL(String.format("select t1.rnk, t1.a from %s t1 join %s t2 on t1.rnk = t2.rnk+1", pathName, pathName)); final Job ctasJob = jobsService.submitJob(JobRequest.newBuilder() .setSqlQuery(query) .build(), NoOpJobStatusListener.INSTANCE); ctasJob.getData().loadIfNecessary(); }
@Override public Invocation buildPut(Entity<?> entity) { return builder.buildPut(entity); }
@Override public Invocation buildPut(Entity<?> entity) { return delegate().buildPut(entity); }
@Test public void testQueryOnFolder() throws Exception { ParquetFileConfig fileConfig = new ParquetFileConfig(); fileConfig.setName("parquet"); String filePath = getUrlPath("/datasets/folderdataset"); String fileParentPath = getUrlPath("/datasets/"); doc("preview data for source folder"); JobDataFragment data = expectSuccess(getBuilder(getAPIv2().path("/source/dacfs_test/folder_preview/" + filePath)).buildPost(Entity.json(fileConfig)), JobDataFragment.class); assertEquals(25, data.getReturnedRowCount()); expectSuccess(getBuilder(getAPIv2().path("/source/dacfs_test/folder_format/" + filePath)).buildPut(Entity.json(fileConfig))); doc("creating dataset from source folder"); expectSuccess(getBuilder(getAPIv2().path("/source/dacfs_test/new_untitled_from_folder/" + filePath)).buildPost(Entity.json("")), InitialPreviewResponse.class); checkCounts(fileParentPath, "folderdataset", true, 1, 0, 0); }
@Test public void testValidSpace() throws Exception { expectSuccess(getBuilder(getAPIv2().path("space/AB")).buildPut(Entity.json(new Space(null, "AB", null, null, null, 0, null)))); }
@Test public void testInvalidSpace() throws Exception { expectError(CLIENT_ERROR, getBuilder(getAPIv2().path("space/A.B")).buildPut(Entity.json(new Space(null, "A.B", null, null, null, 0, null))), ValidationErrorMessage.class); }
@Test public void testFolderParentNotFound() throws Exception { expectSuccess(getBuilder(getAPIv2().path("space/s1")).buildPut(Entity.json(new Space(null, "s1", null, null, null, 0, null))), Space.class); expectSuccess(getBuilder(getAPIv2().path("space/s1/folder/")).buildPost(Entity.json("{\"name\": \"f1\"}")), Folder.class); expectStatus(Status.BAD_REQUEST, getBuilder(getAPIv2().path("space/s1/folder/wrongfolder/")).buildPost(Entity.json("{\"name\": \"f1\"}"))); }
@Test public void testInvalidSource() throws Exception { SourceUI sourceUI = new SourceUI(); sourceUI.setName("A.B"); NASConf sourceConfig = new NASConf(); sourceConfig.path = "/"; sourceUI.setConfig(sourceConfig); expectError(CLIENT_ERROR, getBuilder(getAPIv2().path("source/A.B")).buildPut(Entity.json(sourceUI)), ValidationErrorMessage.class); }
@Test public void testCreateDatasets() throws Exception { expectSuccess(getBuilder(getAPIv2().path("space/spaceCreateDataset")).buildPut(Entity.json(new Space(null, "spaceCreateDataset", null, null, null, 0, null))), Space.class); DatasetPath datasetPath = new DatasetPath("spaceCreateDataset.ds1"); DatasetUI ds1 = createDatasetFromSQLAndSave(datasetPath, "select s.s_name from cp.\"tpch/supplier.parquet\" s", asList("cp")); DatasetConfig dataset = l(NamespaceService.class).getDataset(datasetPath.toNamespaceKey()); assertEquals(ds1.getVersion(), dataset.getTag()); getDataset(getDatasetPath(ds1)); DatasetUI ds2 = createDatasetFromParentAndSave(new DatasetPath("spaceCreateDataset.ds3"), getDatasetPath(ds1).toPathString()); getDataset(getDatasetPath(ds2)); }
@Test public void testReapplyAndSaveWrongFolder(){ expectSuccess(getBuilder(getAPIv2().path("space/reapplyAndSave")).buildPut(Entity.json(new Space(null, "reapplyAndSave", null, null, null, 0, null))), Space.class); DatasetPath d1Path = new DatasetPath("reapplyAndSave.ds1"); createDatasetFromSQLAndSave(d1Path, "select s_name, s_phone from cp.\"tpch/supplier.parquet\"", asList("cp")); final DatasetUI d2 = createDatasetFromParent("reapplyAndSave.ds1").getDataset(); DatasetVersionResourcePath newVersion = getDatasetVersionPath(d2); expectStatus(Status.BAD_REQUEST, getBuilder(getAPIv2().path(newVersion.toString() + "/reapplyAndSave").queryParam("as", "reapplyAndSaveNotFound.ds3")).buildPost(null)); }
@Test public void getAndSetSetting(){ TextSetting setting = (TextSetting) expectSuccess(getBuilder(getAPIv2().path("settings").path(ExecConstants.OUTPUT_FORMAT_OPTION)).buildGet(), Setting.class); TextSetting update = new TextSetting(setting.getId(), "csv", true); TextSetting updatedSetting = expectSuccess(getBuilder(getAPIv2().path("settings").path(ExecConstants.OUTPUT_FORMAT_OPTION)).buildPut(Entity.entity(update, JSON)), Setting.TextSetting.class); assertEquals(update.getValue(), updatedSetting.getValue()); expectSuccess(getBuilder(getAPIv2().path("settings").path(ExecConstants.OUTPUT_FORMAT_OPTION)).buildPut(Entity.entity(setting, JSON)), Setting.TextSetting.class); } }
@Override Result getResult(WebTarget target) { String settingsString = toString(); return new JsonResult(target.path(index).request().buildPut(Entity.json(settingsString)).invoke(byte[].class)); }
@Override @Test public void testUpdateStreamState() throws Exception { final String resourceURI = getURI() + "v1/scopes/scope1/streams/stream1/state"; StreamState streamState = new StreamState().streamState(StreamState.StreamStateEnum.SEALED); Response response = addAuthHeaders(client.target(resourceURI).request()).buildPut(Entity.json(streamState)).invoke(); assertEquals("Update Stream State response code", expectedResult, response.getStatus()); response.close(); }
@Override @Test public void testUpdateStream() throws ExecutionException, InterruptedException { String resourceURI = getURI() + "v1/scopes/" + scope1 + "/streams/stream1"; // Test to update an existing stream Response response = addAuthHeaders(client.target(resourceURI).request()).buildPut(Entity.json(updateStreamRequest)).invoke(); assertEquals("Update Stream Status", expectedResult, response.getStatus()); }
@Test public void testValidSource() throws Exception { SourceUI sourceUI = new SourceUI(); sourceUI.setName("AB"); NASConf sourceConfig = new NASConf(); sourceConfig.path = "/"; sourceUI.setConfig(sourceConfig); expectSuccess(getBuilder(getAPIv2().path("source/AB")).buildPut(Entity.json(sourceUI))); }
@Test public void testSaveDatasetWrongFolder() throws Exception { setSpace(); expectSuccess(getBuilder(getAPIv2().path("space/space1")).buildPut(Entity.json(new Space(null, "space1", null, null, null, 0, null))), Space.class); DatasetPath datasetPath = new DatasetPath("spacefoo.folderbar.folderblahz.datasetbuzz"); InitialPreviewResponse preview = createDatasetFromParent("cp.\"tpch/supplier.parquet\""); expectStatus( Status.BAD_REQUEST, getBuilder( getAPIv2().path(versionedResourcePath(preview.getDataset()) + "/save").queryParam("as", datasetPath)) .buildPost(entity("", JSON))); }