Repository: lens Updated Branches: refs/heads/master f7ab827e9 -> 87049563a
http://git-wip-us.apache.org/repos/asf/lens/blob/87049563/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestFactPartition.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestFactPartition.java b/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestFactPartition.java index 3f2ae6f..e802c3c 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestFactPartition.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestFactPartition.java @@ -39,8 +39,8 @@ public class TestFactPartition { @Test public void testGetFormattedFilter() throws Exception { - String dailyFormat = DAILY.format().format(DATE); - String hourlyFormat = HOURLY.format().format(DATE); + String dailyFormat = DAILY.format(DATE); + String hourlyFormat = HOURLY.format(DATE); assertEquals(fp1.getFormattedFilter("table"), "table.p = '" + dailyFormat + "'"); assertEquals(fp2.getFormattedFilter("table2"), "table2.p = '" + dailyFormat + "' AND table2.q = '" + hourlyFormat + "'"); http://git-wip-us.apache.org/repos/asf/lens/blob/87049563/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestTimePartition.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestTimePartition.java b/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestTimePartition.java index 2cbbd0c..729bcab 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestTimePartition.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestTimePartition.java @@ -39,7 +39,7 @@ public class TestTimePartition { @Test(dataProvider = "update-periods") public void test(UpdatePeriod up) throws LensException { // Normal date object parsable - String nowStr = up.format().format(NOW); + String nowStr = up.format(NOW); // Create partition by date object or it's string representation -- both should be same. TimePartition nowPartition = TimePartition.of(up, NOW); TimePartition nowStrPartition = TimePartition.of(up, nowStr); http://git-wip-us.apache.org/repos/asf/lens/blob/87049563/lens-cube/src/test/java/org/apache/lens/cube/metadata/UpdatePeriodTest.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/metadata/UpdatePeriodTest.java b/lens-cube/src/test/java/org/apache/lens/cube/metadata/UpdatePeriodTest.java index b21341d..b7ee8cc 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/metadata/UpdatePeriodTest.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/metadata/UpdatePeriodTest.java @@ -54,7 +54,7 @@ public class UpdatePeriodTest { for (int i = 0; i < 5000; i++) { Date randomDate = randomDateGenerator.nextDate(); randomDate = period.truncate(randomDate); - assertEquals(randomDate, period.format().parse(period.format().format(randomDate))); + assertEquals(randomDate, period.parse(period.format(randomDate))); } } } http://git-wip-us.apache.org/repos/asf/lens/blob/87049563/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java index 999faa0..1357035 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java @@ -19,15 +19,11 @@ package org.apache.lens.cube.parse; -import static java.util.Calendar.DAY_OF_MONTH; -import static java.util.Calendar.HOUR_OF_DAY; -import static java.util.Calendar.MONTH; +import static java.util.Calendar.*; import static org.apache.lens.cube.metadata.UpdatePeriod.*; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertTrue; +import static org.testng.Assert.*; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -58,7 +54,6 @@ import org.apache.hadoop.mapred.TextInputFormat; import com.google.common.collect.Lists; import com.google.common.collect.Maps; - import com.google.common.collect.Sets; import lombok.Getter; import lombok.extern.slf4j.Slf4j; @@ -105,7 +100,6 @@ public class CubeTestSetup { public static final String DERIVED_CUBE_NAME1 = "der1"; public static final String DERIVED_CUBE_NAME2 = "der2"; public static final String DERIVED_CUBE_NAME3 = "der3"; - public static final String DERIVED_CUBE_NAME4 = "der4"; // Time Instances as Date Type public static final Date NOW; @@ -140,9 +134,31 @@ public class CubeTestSetup { private static Map<String, String> factValidityProperties = Maps.newHashMap(); @Getter private static Map<String, List<UpdatePeriod>> storageToUpdatePeriodMap = new LinkedHashMap<>(); + public static class DateOffsetProvider extends HashMap<Integer, Date> { + private final UpdatePeriod updatePeriod; + Calendar calendar = Calendar.getInstance(); + + public DateOffsetProvider(UpdatePeriod updatePeriod) { + this.updatePeriod = updatePeriod; + } + { + put(0, calendar.getTime()); + } + + @Override + public Date get(Object key) { + if (!containsKey(key) && key instanceof Integer) { + calendar.setTime(super.get(0)); + calendar.add(updatePeriod.calendarField(), (Integer) key); + put((Integer) key, calendar.getTime()); + } + return super.get(key); + } + } static { Calendar cal = Calendar.getInstance(); + // Keep in sync NOW = cal.getTime(); log.debug("Test now:{}", NOW); @@ -280,24 +296,18 @@ public class CubeTestSetup { public static String getExpectedQuery(String cubeName, String selExpr, String whereExpr, String postWhereExpr, String rangeWhere, String storageTable, List<String> notLatestConditions) { - StringBuilder expected = new StringBuilder(); - expected.append(selExpr); - expected.append(getDbName() + storageTable); - expected.append(" "); - expected.append(cubeName); - expected.append(" WHERE "); - expected.append("("); + StringBuilder expected = new StringBuilder() + .append(selExpr).append(getDbName()).append(storageTable).append(" ").append(cubeName) + .append(" WHERE ").append("("); if (notLatestConditions != null) { for (String cond : notLatestConditions) { expected.append(cond).append(" AND "); } } if (whereExpr != null) { - expected.append(whereExpr); - expected.append(" AND "); + expected.append(whereExpr).append(" AND "); } - expected.append(rangeWhere); - expected.append(")"); + expected.append(rangeWhere).append(")"); if (postWhereExpr != null) { expected.append(postWhereExpr); } @@ -1561,7 +1571,7 @@ public class CubeTestSetup { TimePartition tp = TimePartition.of(HOURLY, temp); ttdStoreAll.add(tp); ttd2StoreAll.add(tp); - partitions.add(HOURLY.format().format(temp)); + partitions.add(HOURLY.format(temp)); StoragePartitionDesc sPartSpec = new StoragePartitionDesc(fact.getName(), timeParts, null, HOURLY); storagePartitionDescs.add(sPartSpec); cal.add(HOUR_OF_DAY, 1); @@ -2036,8 +2046,6 @@ public class CubeTestSetup { dimColumns.add(new FieldSchema("name", "string", "field1")); dimColumns.add(new FieldSchema("cyleDim2Id", "string", "link to cyclic dim 2")); - Map<String, List<TableReference>> dimensionReferences = new HashMap<String, List<TableReference>>(); - dimensionReferences.put("cyleDim2Id", Arrays.asList(new TableReference("cycleDim2", "id"))); Map<String, UpdatePeriod> dumpPeriods = new HashMap<String, UpdatePeriod>(); ArrayList<FieldSchema> partCols = new ArrayList<FieldSchema>(); http://git-wip-us.apache.org/repos/asf/lens/blob/87049563/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java index 1ea22b7..ee84a4c 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java @@ -500,8 +500,8 @@ public class TestBaseCubeQueries extends TestQueryRewrite { assertEquals( pruneCause.getDetails().get("testfact2_base").iterator().next().getMissingPartitions().iterator().next(), "ttd:[" - + UpdatePeriod.SECONDLY.format().format(DateUtils.addDays(DateUtils.truncate(TWODAYS_BACK, Calendar.HOUR), -10)) - + ", " + UpdatePeriod.SECONDLY.format().format(DateUtils.addDays(DateUtils.truncate(NOW, Calendar.HOUR), 10)) + + UpdatePeriod.SECONDLY.format(DateUtils.addDays(DateUtils.truncate(TWODAYS_BACK, Calendar.HOUR), -10)) + + ", " + UpdatePeriod.SECONDLY.format(DateUtils.addDays(DateUtils.truncate(NOW, Calendar.HOUR), 10)) + ")"); // fail on partial false. Should go to fallback column. Also testing transitivity of timedim relations http://git-wip-us.apache.org/repos/asf/lens/blob/87049563/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBetweenTimeRangeWriter.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBetweenTimeRangeWriter.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBetweenTimeRangeWriter.java index e20e0e8..9a2493c 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBetweenTimeRangeWriter.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBetweenTimeRangeWriter.java @@ -67,7 +67,7 @@ public class TestBetweenTimeRangeWriter extends TestTimeRangeWriter { public void validateSingle(String whereClause, DateFormat format) { List<String> parts = new ArrayList<String>(); if (format == null) { - parts.add(UpdatePeriod.DAILY.format().format(CubeTestSetup.ONE_DAY_BACK)); + parts.add(UpdatePeriod.DAILY.format(CubeTestSetup.ONE_DAY_BACK)); } else { parts.add(format.format(CubeTestSetup.ONE_DAY_BACK)); } http://git-wip-us.apache.org/repos/asf/lens/blob/87049563/lens-cube/src/test/java/org/apache/lens/cube/parse/TestORTimeRangeWriter.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestORTimeRangeWriter.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestORTimeRangeWriter.java index 0e7db1b..4a23818 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestORTimeRangeWriter.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestORTimeRangeWriter.java @@ -43,9 +43,9 @@ public class TestORTimeRangeWriter extends TestTimeRangeWriter { public void validateDisjoint(String whereClause, DateFormat format) { List<String> parts = new ArrayList<String>(); if (format == null) { - parts.add(UpdatePeriod.MONTHLY.format().format(CubeTestSetup.TWO_MONTHS_BACK)); - parts.add(UpdatePeriod.DAILY.format().format(CubeTestSetup.TWODAYS_BACK)); - parts.add(UpdatePeriod.HOURLY.format().format(CubeTestSetup.NOW)); + parts.add(UpdatePeriod.MONTHLY.format(CubeTestSetup.TWO_MONTHS_BACK)); + parts.add(UpdatePeriod.DAILY.format(CubeTestSetup.TWODAYS_BACK)); + parts.add(UpdatePeriod.HOURLY.format(CubeTestSetup.NOW)); } else { parts.add(format.format(CubeTestSetup.TWO_MONTHS_BACK)); parts.add(format.format(CubeTestSetup.TWODAYS_BACK)); @@ -60,9 +60,9 @@ public class TestORTimeRangeWriter extends TestTimeRangeWriter { public void validateConsecutive(String whereClause, DateFormat format) { List<String> parts = new ArrayList<String>(); if (format == null) { - parts.add(UpdatePeriod.DAILY.format().format(CubeTestSetup.ONE_DAY_BACK)); - parts.add(UpdatePeriod.DAILY.format().format(CubeTestSetup.TWODAYS_BACK)); - parts.add(UpdatePeriod.DAILY.format().format(CubeTestSetup.NOW)); + parts.add(UpdatePeriod.DAILY.format(CubeTestSetup.ONE_DAY_BACK)); + parts.add(UpdatePeriod.DAILY.format(CubeTestSetup.TWODAYS_BACK)); + parts.add(UpdatePeriod.DAILY.format(CubeTestSetup.NOW)); } else { parts.add(format.format(CubeTestSetup.ONE_DAY_BACK)); parts.add(format.format(CubeTestSetup.TWODAYS_BACK)); @@ -77,7 +77,7 @@ public class TestORTimeRangeWriter extends TestTimeRangeWriter { public void validateSingle(String whereClause, DateFormat format) { List<String> parts = new ArrayList<String>(); if (format == null) { - parts.add(UpdatePeriod.DAILY.format().format(CubeTestSetup.ONE_DAY_BACK)); + parts.add(UpdatePeriod.DAILY.format(CubeTestSetup.ONE_DAY_BACK)); } else { parts.add(format.format(CubeTestSetup.ONE_DAY_BACK)); } http://git-wip-us.apache.org/repos/asf/lens/blob/87049563/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java ---------------------------------------------------------------------- diff --git a/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java b/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java index fc57c94..722a2da 100644 --- a/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java +++ b/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java @@ -909,7 +909,7 @@ public class TestHiveDriver { p = UpdatePeriod.HOURLY; break; } - FactPartition part = new FactPartition(partEls[0], p.format().parse(partSpec), p, null, p.format(), + FactPartition part = new FactPartition(partEls[0], p.parse(partSpec), p, null, p.format(), Collections.singleton("table1")); factParts.add(part); } http://git-wip-us.apache.org/repos/asf/lens/blob/87049563/lens-server-api/src/main/java/org/apache/lens/server/api/util/LensUtil.java ---------------------------------------------------------------------- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/util/LensUtil.java b/lens-server-api/src/main/java/org/apache/lens/server/api/util/LensUtil.java index 6dcb2d7..c3b6d26 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/util/LensUtil.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/util/LensUtil.java @@ -18,6 +18,7 @@ */ package org.apache.lens.server.api.util; +import java.util.HashMap; import java.util.Set; import org.apache.lens.server.api.common.ConfigBasedObjectCreationFactory; @@ -83,4 +84,13 @@ public final class LensUtil { throw new IllegalStateException(e); } } + + public static <K, V> HashMap<K, V> getHashMap(Object... args) { + assert (args.length % 2 == 0); + HashMap<K, V> map = new HashMap<>(); + for (int i = 0; i < args.length; i += 2) { + map.put((K) args[i], (V) args[i + 1]); + } + return map; + } } http://git-wip-us.apache.org/repos/asf/lens/blob/87049563/lens-server/src/main/java/org/apache/lens/server/metastore/CubeMetastoreServiceImpl.java ---------------------------------------------------------------------- diff --git a/lens-server/src/main/java/org/apache/lens/server/metastore/CubeMetastoreServiceImpl.java b/lens-server/src/main/java/org/apache/lens/server/metastore/CubeMetastoreServiceImpl.java index 27f9e0e..66ed938 100644 --- a/lens-server/src/main/java/org/apache/lens/server/metastore/CubeMetastoreServiceImpl.java +++ b/lens-server/src/main/java/org/apache/lens/server/metastore/CubeMetastoreServiceImpl.java @@ -870,7 +870,7 @@ public class CubeMetastoreServiceImpl extends BaseLensService implements CubeMet String dateStr = partSpec.get(partCol); Date date = null; try { - date = period.format().parse(dateStr); + date = period.parse(dateStr); } catch (Exception e) { continue; } @@ -919,11 +919,9 @@ public class CubeMetastoreServiceImpl extends BaseLensService implements CubeMet String storageName, String filter) throws LensException { try { acquire(sessionid); - String tableName = MetastoreUtil.getStorageTableName(cubeTableName, - Storage.getPrefix(storageName)); + String tableName = MetastoreUtil.getStorageTableName(cubeTableName, Storage.getPrefix(storageName)); CubeMetastoreClient msClient = getClient(sessionid); - List<Partition> partitions = msClient.getPartitionsByFilter( - tableName, filter); + List<Partition> partitions = msClient.getPartitionsByFilter(tableName, filter); for (Partition part : partitions) { try { Map<String, Date> timeSpec = new HashMap<String, Date>(); http://git-wip-us.apache.org/repos/asf/lens/blob/87049563/lens-server/src/main/java/org/apache/lens/server/metastore/JAXBUtils.java ---------------------------------------------------------------------- diff --git a/lens-server/src/main/java/org/apache/lens/server/metastore/JAXBUtils.java b/lens-server/src/main/java/org/apache/lens/server/metastore/JAXBUtils.java index f5db7bc..a5883f7 100644 --- a/lens-server/src/main/java/org/apache/lens/server/metastore/JAXBUtils.java +++ b/lens-server/src/main/java/org/apache/lens/server/metastore/JAXBUtils.java @@ -859,7 +859,7 @@ public final class JAXBUtils { XTimePartSpecElement timePartSpecElement = new XTimePartSpecElement(); timePartSpecElement.setKey(entry.getKey()); timePartSpecElement - .setValue(getXMLGregorianCalendar(UpdatePeriod.valueOf(xp.getUpdatePeriod().name()).format().parse( + .setValue(getXMLGregorianCalendar(UpdatePeriod.valueOf(xp.getUpdatePeriod().name()).parse( entry.getValue()))); xp.getTimePartitionSpec().getPartSpecElement().add(timePartSpecElement); } else { http://git-wip-us.apache.org/repos/asf/lens/blob/87049563/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java ---------------------------------------------------------------------- diff --git a/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java b/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java index 5f9f639..3bc692e 100644 --- a/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java +++ b/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java @@ -28,15 +28,20 @@ import java.util.*; import javax.ws.rs.BadRequestException; import javax.ws.rs.NotFoundException; import javax.ws.rs.client.Entity; -import javax.ws.rs.client.Invocation; import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.*; +import javax.ws.rs.core.Application; +import javax.ws.rs.core.GenericType; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; import javax.xml.bind.JAXBElement; import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.XMLGregorianCalendar; -import org.apache.lens.api.*; +import org.apache.lens.api.APIResult; import org.apache.lens.api.APIResult.Status; +import org.apache.lens.api.DateTime; +import org.apache.lens.api.LensSessionHandle; +import org.apache.lens.api.StringList; import org.apache.lens.api.error.LensCommonErrorCode; import org.apache.lens.api.metastore.*; import org.apache.lens.api.result.LensAPIResult; @@ -46,6 +51,7 @@ import org.apache.lens.server.LensJerseyTest; import org.apache.lens.server.LensServices; import org.apache.lens.server.LensTestUtil; import org.apache.lens.server.api.metastore.CubeMetastoreService; +import org.apache.lens.server.api.util.LensUtil; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DateUtils; @@ -56,12 +62,17 @@ import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.mapred.SequenceFileInputFormat; import org.glassfish.jersey.client.ClientConfig; -import org.glassfish.jersey.media.multipart.*; +import org.glassfish.jersey.media.multipart.FormDataBodyPart; +import org.glassfish.jersey.media.multipart.FormDataContentDisposition; +import org.glassfish.jersey.media.multipart.FormDataMultiPart; +import org.glassfish.jersey.media.multipart.MultiPartFeature; import org.testng.Assert; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -74,6 +85,10 @@ public class TestMetastoreService extends LensJerseyTest { CubeMetastoreServiceImpl metastoreService; LensSessionHandle lensSessionId; + private void assertSuccess(APIResult result) { + assertEquals(result.getStatus(), Status.SUCCEEDED, String.valueOf(result)); + } + @BeforeTest public void setUp() throws Exception { super.setUp(); @@ -114,17 +129,17 @@ public class TestMetastoreService extends LensJerseyTest { APIResult result = target().path("metastore").path("databases") .queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(dbName), APIResult.class); assertNotNull(result); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // set result = dbTarget.queryParam("sessionid", lensSessionId).request(mediaType) .put(Entity.xml(dbName), APIResult.class); assertNotNull(result); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // set without session id, we should get bad request try { - result = dbTarget.request(mediaType).put(Entity.xml(dbName), APIResult.class); + dbTarget.request(mediaType).put(Entity.xml(dbName), APIResult.class); fail("Should have thrown bad request exception"); } catch (BadRequestException badReq) { // expected @@ -142,7 +157,7 @@ public class TestMetastoreService extends LensJerseyTest { APIResult result = dbTarget.queryParam("sessionid", lensSessionId).request(mediaType) .post(Entity.xml(newDb), APIResult.class); assertNotNull(result); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // Create again result = dbTarget.queryParam("sessionid", lensSessionId).queryParam("ignoreIfExisting", false) @@ -161,13 +176,13 @@ public class TestMetastoreService extends LensJerseyTest { // First create the database APIResult create = dbTarget.queryParam("sessionid", lensSessionId).request(mediaType) .post(Entity.xml(dbName), APIResult.class); - assertEquals(create.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(create); // Now drop it APIResult drop = dbTarget.path(dbName) .queryParam("cascade", "true") .queryParam("sessionid", lensSessionId).request(mediaType).delete(APIResult.class); - assertEquals(drop.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(drop); } @Test @@ -189,7 +204,7 @@ public class TestMetastoreService extends LensJerseyTest { Assert.assertTrue(allDbs.getElements().contains(db)); } - List<String> expected = new ArrayList<String>(Arrays.asList(dbsToCreate)); + List<String> expected = Lists.newArrayList(dbsToCreate); // Default is always there expected.add("default"); @@ -206,7 +221,7 @@ public class TestMetastoreService extends LensJerseyTest { APIResult result = dbTarget.queryParam("sessionid", lensSessionId).request(mediaType) .post(Entity.xml(dbName), APIResult.class); assertNotNull(result); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); } private void createStorage(String storageName) throws Exception { @@ -224,7 +239,7 @@ public class TestMetastoreService extends LensJerseyTest { APIResult result = target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml( cubeObjectFactory.createXStorage(xs)), APIResult.class); assertNotNull(result); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); } private void dropStorage(String storageName) throws Exception { @@ -232,7 +247,7 @@ public class TestMetastoreService extends LensJerseyTest { APIResult result = target .queryParam("sessionid", lensSessionId).request(mediaType).delete(APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); } private void dropDatabase(String dbName) throws Exception { @@ -240,21 +255,19 @@ public class TestMetastoreService extends LensJerseyTest { APIResult result = dbTarget.queryParam("cascade", "true") .queryParam("sessionid", lensSessionId).request(mediaType).delete(APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); } private void setCurrentDatabase(String dbName) throws Exception { WebTarget dbTarget = target().path("metastore").path("databases/current"); APIResult result = dbTarget.queryParam("sessionid", lensSessionId).request(mediaType).put(Entity.xml(dbName), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); } private String getCurrentDatabase() throws Exception { - WebTarget dbTarget = target().path("metastore").path("databases/current"); - Invocation.Builder builder = dbTarget.queryParam("sessionid", lensSessionId).request(mediaType); - String response = builder.get(String.class); - return response; + return target().path("metastore").path("databases/current") + .queryParam("sessionid", lensSessionId).request(mediaType).get(String.class); } private XBaseCube createTestCube(String cubeName) throws Exception { @@ -439,6 +452,16 @@ public class TestMetastoreService extends LensJerseyTest { return cube; } + private void assertCubesExistence(List<String> cubes, Map<String, Boolean> expectedExistence) { + for (String cube : cubes) { + for (Map.Entry<String, Boolean> expectedCubeEntry : expectedExistence.entrySet()) { + if (cube.equalsIgnoreCase(expectedCubeEntry.getKey())) { + assertTrue(expectedCubeEntry.getValue(), expectedCubeEntry.getKey() + " is not supposed to be in the list"); + } + } + } + } + @Test public void testCreateCube() throws Exception { final String DB = dbPFX + "test_create_cube"; @@ -448,10 +471,10 @@ public class TestMetastoreService extends LensJerseyTest { try { final XCube cube = createTestCube("testCube1"); final WebTarget target = target().path("metastore").path("cubes"); - APIResult result = null; + APIResult result; try { // first try without a session id - result = target.request(mediaType).post(Entity.xml(cubeObjectFactory.createXCube(cube)), APIResult.class); + target.request(mediaType).post(Entity.xml(cubeObjectFactory.createXCube(cube)), APIResult.class); fail("Should have thrown bad request exception"); } catch (BadRequestException badReq) { // expected @@ -459,19 +482,11 @@ public class TestMetastoreService extends LensJerseyTest { result = target.queryParam("sessionid", lensSessionId).request(mediaType) .post(Entity.xml(cubeObjectFactory.createXCube(cube)), APIResult.class); assertNotNull(result); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); StringList cubes = target().path("metastore/cubes").queryParam("sessionid", lensSessionId).request(mediaType) .get(StringList.class); - boolean foundcube = false; - for (String c : cubes.getElements()) { - if (c.equalsIgnoreCase("testCube1")) { - foundcube = true; - break; - } - } - - assertTrue(foundcube); + assertCubesExistence(cubes.getElements(), LensUtil.<String, Boolean>getHashMap("testCube1", Boolean.TRUE)); // create invalid derived cube XCube dcube = createDerivedCube("testderived", "testCube1", true); result = target.queryParam("sessionid", lensSessionId).request( @@ -484,57 +499,26 @@ public class TestMetastoreService extends LensJerseyTest { result = target.queryParam("sessionid", lensSessionId).request( mediaType).post(Entity.xml(cubeObjectFactory.createXCube(dcube)), APIResult.class); assertNotNull(result); - assertEquals(result.getStatus(), Status.SUCCEEDED); + assertSuccess(result); cubes = target().path("metastore/cubes").queryParam("sessionid", lensSessionId).request(mediaType) .get(StringList.class); - boolean foundDcube = false; - foundcube = false; - for (String c : cubes.getElements()) { - if (c.equalsIgnoreCase("testCube1")) { - foundcube = true; - } - if (c.equalsIgnoreCase("testderived")) { - foundDcube = true; - } - } - - assertTrue(foundcube); - assertTrue(foundDcube); + assertCubesExistence(cubes.getElements(), + LensUtil.<String, Boolean>getHashMap("testCube1", true, "testderived", true)); // get all base cubes cubes = target().path("metastore/cubes").queryParam("sessionid", lensSessionId) .queryParam("type", "base").request(mediaType).get(StringList.class); - foundDcube = false; - foundcube = false; - for (String c : cubes.getElements()) { - if (c.equalsIgnoreCase("testCube1")) { - foundcube = true; - } - if (c.equalsIgnoreCase("testderived")) { - foundDcube = true; - } - } - assertTrue(foundcube); - assertFalse(foundDcube); + assertCubesExistence(cubes.getElements(), + LensUtil.<String, Boolean>getHashMap("testCube1", true, "testderived", false)); // get all derived cubes cubes = target().path("metastore/cubes").queryParam("sessionid", lensSessionId) .queryParam("type", "derived").request(mediaType).get(StringList.class); - foundDcube = false; - foundcube = false; - for (String c : cubes.getElements()) { - if (c.equalsIgnoreCase("testCube1")) { - foundcube = true; - } - if (c.equalsIgnoreCase("testderived")) { - foundDcube = true; - } - } - assertFalse(foundcube); - assertTrue(foundDcube); + assertCubesExistence(cubes.getElements(), + LensUtil.<String, Boolean>getHashMap("testCube1", false, "testderived", true)); // Create a non queryable cube final XCube qcube = createTestCube("testNoQueryCube"); @@ -546,51 +530,21 @@ public class TestMetastoreService extends LensJerseyTest { result = target.queryParam("sessionid", lensSessionId).request( mediaType).post(Entity.xml(cubeObjectFactory.createXCube(qcube)), APIResult.class); assertNotNull(result); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // get all cubes cubes = target().path("metastore/cubes").queryParam("sessionid", lensSessionId) .queryParam("type", "all").request(mediaType).get(StringList.class); - foundDcube = false; - foundcube = false; - boolean foundQCube = false; - for (String c : cubes.getElements()) { - if (c.equalsIgnoreCase("testCube1")) { - foundcube = true; - } - if (c.equalsIgnoreCase("testderived")) { - foundDcube = true; - } - if (c.equalsIgnoreCase("testNoQueryCube")) { - foundQCube = true; - } - } - assertTrue(foundcube); - assertTrue(foundDcube); - assertTrue(foundQCube); + assertCubesExistence(cubes.getElements(), + LensUtil.<String, Boolean>getHashMap("testCube1", true, "testderived", true, "testNoQueryCube", true)); // get queryable cubes cubes = target().path("metastore/cubes").queryParam("sessionid", lensSessionId) .queryParam("type", "queryable").request(mediaType).get(StringList.class); - foundDcube = false; - foundcube = false; - foundQCube = false; - for (String c : cubes.getElements()) { - if (c.equalsIgnoreCase("testCube1")) { - foundcube = true; - } - if (c.equalsIgnoreCase("testderived")) { - foundDcube = true; - } - if (c.equalsIgnoreCase("testNoQueryCube")) { - foundQCube = true; - } - } + assertCubesExistence(cubes.getElements(), + LensUtil.<String, Boolean>getHashMap("testCube1", true, "testderived", true, "testNoQueryCube", false)); - assertTrue(foundcube); - assertTrue(foundDcube); - assertFalse(foundQCube); } finally { dropDatabase(DB); setCurrentDatabase(prevDb); @@ -623,7 +577,7 @@ public class TestMetastoreService extends LensJerseyTest { JAXBElement<XCube> element = cubeObjectFactory.createXCube(cube); APIResult result = target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(element), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // Now get target = target().path("metastore").path("cubes").path("testGetCube"); @@ -639,7 +593,7 @@ public class TestMetastoreService extends LensJerseyTest { cube.getDimAttributes().getDimAttribute().size()); assertEquals(actual.getExpressions().getExpression().size(), cube.getExpressions().getExpression().size()); assertEquals(actual.getJoinChains().getJoinChain().size(), cube.getJoinChains().getJoinChain().size()); - Map<String, XJoinChain> chains = new HashMap<String, XJoinChain>(); + Map<String, XJoinChain> chains = new HashMap<>(); for (XJoinChain xjc : actual.getJoinChains().getJoinChain()) { chains.put(xjc.getName(), xjc); } @@ -721,7 +675,7 @@ public class TestMetastoreService extends LensJerseyTest { element = cubeObjectFactory.createXCube(dcube); result = target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(element), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // Now get target = target().path("metastore").path("cubes").path("testGetDerivedCube"); @@ -753,7 +707,7 @@ public class TestMetastoreService extends LensJerseyTest { JAXBElement<XCube> element = cubeObjectFactory.createXCube(cube); APIResult result = target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(element), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); final XCube dcube = createDerivedCube("test_drop_derived_cube", "test_drop_cube", false); target = target().path("metastore").path("cubes"); @@ -761,11 +715,11 @@ public class TestMetastoreService extends LensJerseyTest { element = cubeObjectFactory.createXCube(dcube); result = target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(element), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); target = target().path("metastore").path("cubes").path("test_drop_derived_cube"); result = target.queryParam("sessionid", lensSessionId).request(mediaType).delete(APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // Now get should give 404 try { @@ -779,7 +733,7 @@ public class TestMetastoreService extends LensJerseyTest { target = target().path("metastore").path("cubes").path("test_drop_cube"); result = target.queryParam("sessionid", lensSessionId).request(mediaType).delete(APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // Now get should give 404 try { @@ -811,7 +765,7 @@ public class TestMetastoreService extends LensJerseyTest { JAXBElement<XCube> element = cubeObjectFactory.createXCube(cube); APIResult result = target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(element), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // Update something // Add a measure and dimension @@ -835,7 +789,7 @@ public class TestMetastoreService extends LensJerseyTest { element = cubeObjectFactory.createXCube(cube); result = target.path(cubeName) .queryParam("sessionid", lensSessionId).request(mediaType).put(Entity.xml(element), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); JAXBElement<XCube> got = target.path(cubeName) @@ -862,7 +816,7 @@ public class TestMetastoreService extends LensJerseyTest { element = cubeObjectFactory.createXCube(dcube); result = target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(element), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // Update something // Add a measure and dimension @@ -878,7 +832,7 @@ public class TestMetastoreService extends LensJerseyTest { element = cubeObjectFactory.createXCube(dcube); result = target.path("test_update_derived") .queryParam("sessionid", lensSessionId).request(mediaType).put(Entity.xml(element), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); got = target.path("test_update_derived") .queryParam("sessionid", lensSessionId).request(mediaType).get(new GenericType<JAXBElement<XCube>>() {}); @@ -938,7 +892,7 @@ public class TestMetastoreService extends LensJerseyTest { APIResult result = target.path("store1") .queryParam("sessionid", lensSessionId).queryParam("storage", "store1") .request(mediaType).put(Entity.xml(cubeObjectFactory.createXStorage(store1)), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); store1 = target.path("store1").queryParam("sessionid", lensSessionId).request(mediaType).get(XStorage.class); assertEquals(store1.getName(), "store1"); @@ -1033,7 +987,7 @@ public class TestMetastoreService extends LensJerseyTest { APIResult result = target().path("metastore").path("dimensions") .queryParam("sessionid", lensSessionId).request( mediaType).post(Entity.xml(cubeObjectFactory.createXDimension(dimension)), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); XDimensionTable dt = createDimTable("testdim", dimTableName); dt.getStorageTables().getStorageTable().add(createStorageTblElement("test", dimTableName, "HOURLY")); final FormDataMultiPart mp = new FormDataMultiPart(); @@ -1047,7 +1001,7 @@ public class TestMetastoreService extends LensJerseyTest { .path("dimtables") .request(mediaType) .post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); return dt; } @@ -1187,13 +1141,13 @@ public class TestMetastoreService extends LensJerseyTest { APIResult result = target.queryParam("sessionid", lensSessionId).request( mediaType).post(Entity.xml(cubeObjectFactory.createXDimension(dimension)), APIResult.class); assertNotNull(result); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // create result = target.queryParam("sessionid", lensSessionId).request( mediaType).post(Entity.xml(cubeObjectFactory.createXDimension(dimension2)), APIResult.class); assertNotNull(result); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); } @Test @@ -1306,7 +1260,7 @@ public class TestMetastoreService extends LensJerseyTest { APIResult result = target.path("testdim") .queryParam("sessionid", lensSessionId) .request(mediaType).put(Entity.xml(cubeObjectFactory.createXDimension(testDim)), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); XDimension altered = target.path("testdim").queryParam("sessionid", lensSessionId).request(mediaType).get( XDimension.class); @@ -1327,7 +1281,7 @@ public class TestMetastoreService extends LensJerseyTest { // drop the dimension result = target.path("testdim") .queryParam("sessionid", lensSessionId).request(mediaType).delete(APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // Now get should give 404 try { @@ -1369,11 +1323,11 @@ public class TestMetastoreService extends LensJerseyTest { target().path("metastore/dimtables").path(table) .queryParam("cascade", "true") .queryParam("sessionid", lensSessionId).request(mediaType).delete(APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // Drop again, should get 404 now try { - result = target().path("metastore/dimtables").path(table) + target().path("metastore/dimtables").path(table) .queryParam("cascade", "true") .queryParam("sessionid", lensSessionId).request(mediaType).delete(APIResult.class); fail("Should have got 404"); @@ -1428,7 +1382,7 @@ public class TestMetastoreService extends LensJerseyTest { .path(table) .queryParam("sessionid", lensSessionId).request(mediaType) .put(Entity.xml(cubeObjectFactory.createXDimensionTable(dt2)), APIResult.class); - assertEquals(result.getStatus(), Status.SUCCEEDED); + assertSuccess(result); // Get the updated table JAXBElement<XDimensionTable> dtElement2 = target().path("metastore/dimtables").path(table) @@ -1465,7 +1419,7 @@ public class TestMetastoreService extends LensJerseyTest { .path(table) .queryParam("sessionid", lensSessionId).request(mediaType) .put(Entity.xml(cubeObjectFactory.createXDimensionTable(dt3)), APIResult.class); - assertEquals(result.getStatus(), Status.SUCCEEDED); + assertSuccess(result); // Get the updated table JAXBElement<XDimensionTable> dtElement4 = target().path("metastore/dimtables").path(table) @@ -1495,7 +1449,7 @@ public class TestMetastoreService extends LensJerseyTest { target().path("metastore/dimtables").path(table) .queryParam("cascade", "true") .queryParam("sessionid", lensSessionId).request(mediaType).delete(APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); } finally { setCurrentDatabase(prevDb); dropDatabase(DB); @@ -1542,7 +1496,7 @@ public class TestMetastoreService extends LensJerseyTest { APIResult result = target().path("metastore/dimtables").path(table).path("/storages") .queryParam("sessionid", lensSessionId).request(mediaType) .post(Entity.xml(cubeObjectFactory.createXStorageTableElement(sTbl)), APIResult.class); - assertEquals(result.getStatus(), Status.SUCCEEDED); + assertSuccess(result); StringList storages = target().path("metastore").path("dimtables") .path(table).path("storages") @@ -1566,7 +1520,7 @@ public class TestMetastoreService extends LensJerseyTest { result = target().path("metastore/dimtables/").path(table).path("storages").path("test") .queryParam("sessionid", lensSessionId).request(mediaType) .delete(APIResult.class); - assertEquals(result.getStatus(), Status.SUCCEEDED); + assertSuccess(result); storages = target().path("metastore").path("dimtables") .path(table).path("storages") @@ -1591,7 +1545,7 @@ public class TestMetastoreService extends LensJerseyTest { result = target().path("metastore/dimtables").path(table).path("/storages") .queryParam("sessionid", lensSessionId).request(mediaType) .post(Entity.xml(cubeObjectFactory.createXStorageTableElement(sTbl)), APIResult.class); - assertEquals(result.getStatus(), Status.SUCCEEDED); + assertSuccess(result); storages = target().path("metastore").path("dimtables") .path(table).path("storages") @@ -1632,12 +1586,12 @@ public class TestMetastoreService extends LensJerseyTest { APIResult result = target().path("metastore/dimtables").path(table).path("/storages") .queryParam("sessionid", lensSessionId).request(mediaType) .post(Entity.xml(cubeObjectFactory.createXStorageTableElement(sTbl)), APIResult.class); - assertEquals(result.getStatus(), Status.SUCCEEDED); + assertSuccess(result); result = target().path("metastore/dimtables/").path(table).path("storages") .queryParam("sessionid", lensSessionId).request(mediaType) .delete(APIResult.class); - assertEquals(result.getStatus(), Status.SUCCEEDED); + assertSuccess(result); JAXBElement<XDimensionTable> dt = target().path("metastore/dimtables").path(table) @@ -1679,8 +1633,7 @@ public class TestMetastoreService extends LensJerseyTest { f.getColumns().getColumn().add(c2); - Map<String, String> properties = new HashMap<String, String>(); - properties.put("foo", "bar"); + Map<String, String> properties = LensUtil.getHashMap("foo", "bar"); f.getProperties().getProperty().addAll(JAXBUtils.xPropertiesFromMap(properties)); return f; } @@ -1710,7 +1663,7 @@ public class TestMetastoreService extends LensJerseyTest { .path("facts") .request(mediaType) .post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // Get all fact names, this should contain the fact table StringList factNames = target().path("metastore/facts") @@ -1748,11 +1701,11 @@ public class TestMetastoreService extends LensJerseyTest { .queryParam("sessionid", lensSessionId).request(mediaType) .delete(APIResult.class); - assertEquals(result.getStatus(), Status.SUCCEEDED); + assertSuccess(result); // Drop again, this time it should give a 404 try { - result = target().path("metastore").path("facts").path(table) + target().path("metastore").path("facts").path(table) .queryParam("cascade", "true") .queryParam("sessionid", lensSessionId).request(mediaType) .delete(APIResult.class); @@ -1792,7 +1745,7 @@ public class TestMetastoreService extends LensJerseyTest { .path("facts") .request(mediaType) .post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // Get the created table JAXBElement<XFactTable> gotFactElement = target().path("metastore/facts").path(table) @@ -1818,7 +1771,7 @@ public class TestMetastoreService extends LensJerseyTest { result = target().path("metastore").path("facts").path(table) .queryParam("sessionid", lensSessionId).request(mediaType) .put(Entity.xml(cubeObjectFactory.createXFactTable(update)), APIResult.class); - assertEquals(result.getStatus(), Status.SUCCEEDED); + assertSuccess(result); // Get the updated table gotFactElement = target().path("metastore/facts").path(table) @@ -1859,11 +1812,11 @@ public class TestMetastoreService extends LensJerseyTest { .queryParam("sessionid", lensSessionId).request(mediaType) .delete(APIResult.class); - assertEquals(result.getStatus(), Status.SUCCEEDED); + assertSuccess(result); // Drop again, this time it should give a 404 try { - result = target().path("metastore").path("facts").path(table) + target().path("metastore").path("facts").path(table) .queryParam("cascade", "true") .queryParam("sessionid", lensSessionId).request(mediaType) .delete(APIResult.class); @@ -1903,7 +1856,7 @@ public class TestMetastoreService extends LensJerseyTest { .path("facts") .request(mediaType) .post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // Test get storages StringList storageList = target().path("metastore/facts").path(table).path("storages") @@ -1916,7 +1869,7 @@ public class TestMetastoreService extends LensJerseyTest { result = target().path("metastore/facts").path(table).path("storages") .queryParam("sessionid", lensSessionId).request(mediaType) .post(Entity.xml(cubeObjectFactory.createXStorageTableElement(sTbl)), APIResult.class); - assertEquals(result.getStatus(), Status.SUCCEEDED); + assertSuccess(result); // Get the fact storage StringList got = target().path("metastore/facts").path(table).path("storages") @@ -1941,10 +1894,9 @@ public class TestMetastoreService extends LensJerseyTest { // Drop new storage result = target().path("metastore/facts").path(table).path("storages").path("S3") .queryParam("sessionid", lensSessionId).request(mediaType).delete(APIResult.class); - assertEquals(result.getStatus(), Status.SUCCEEDED); + assertSuccess(result); // Now S3 should not be available - storageList = null; storageList = target().path("metastore/facts").path(table).path("storages") .queryParam("sessionid", lensSessionId).request(mediaType).get(StringList.class); assertEquals(storageList.getElements().size(), 2); @@ -1958,15 +1910,17 @@ public class TestMetastoreService extends LensJerseyTest { private XPartition createPartition(String cubeTableName, Date partDate) { return createPartition(cubeTableName, partDate, "dt"); } + private XTimePartSpecElement createTimePartSpecElement(Date partDate, String timeDimension) { XTimePartSpecElement timePart = cubeObjectFactory.createXTimePartSpecElement(); timePart.setKey(timeDimension); timePart.setValue(JAXBUtils.getXMLGregorianCalendar(HOURLY.truncate(partDate))); return timePart; } + private XPartition createPartition(String cubeTableName, Date partDate, final String timeDimension) { - return createPartition(cubeTableName, Arrays.asList(createTimePartSpecElement(partDate, timeDimension))); + return createPartition(cubeTableName, Lists.newArrayList(createTimePartSpecElement(partDate, timeDimension))); } private XPartition createPartition(String cubeTableName, final List<XTimePartSpecElement> timePartSpecs) { @@ -2007,9 +1961,7 @@ public class TestMetastoreService extends LensJerseyTest { final XCube cube = createTestCube(cubeName); APIResult result = target().path("metastore").path("cubes").queryParam("sessionid", lensSessionId) .request(mediaType).post(Entity.xml(cubeObjectFactory.createXCube(cube)), APIResult.class); - if (!result.getStatus().equals(APIResult.Status.SUCCEEDED)) { - throw new RuntimeException("Setup failure: Cube Creation failed : " + result.getMessage()); - } + assertSuccess(result); // Create two facts and fact storage tables with one of the facts // not having one of the time dimensions in the partition @@ -2049,9 +2001,7 @@ public class TestMetastoreService extends LensJerseyTest { .path("storages/" + storages[0] + "/partition") .queryParam("sessionid", lensSessionId).request(mediaType) .post(Entity.xml(cubeObjectFactory.createXPartition(xp)), APIResult.class); - if (!partAddResult.getStatus().equals(APIResult.Status.SUCCEEDED)) { - throw new RuntimeException("Setup failure: Partition Creation failed : " + partAddResult.getMessage()); - } + assertSuccess(partAddResult); // End: Setup @@ -2106,7 +2056,7 @@ public class TestMetastoreService extends LensJerseyTest { .path("facts") .request(mediaType) .post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); APIResult partAddResult; // Add null partition @@ -2131,7 +2081,7 @@ public class TestMetastoreService extends LensJerseyTest { partAddResult = target().path("metastore/facts/").path(table).path("storages/S2/partition") .queryParam("sessionid", lensSessionId).request(mediaType) .post(Entity.xml(cubeObjectFactory.createXPartition(xp)), APIResult.class); - assertEquals(partAddResult.getStatus(), Status.SUCCEEDED); + assertSuccess(partAddResult); // add same should fail partAddResult = target().path("metastore/facts/").path(table).path("storages/S2/partition") @@ -2143,7 +2093,7 @@ public class TestMetastoreService extends LensJerseyTest { APIResult partUpdateResult = target().path("metastore/facts/").path(table).path("storages/S2/partition") .queryParam("sessionid", lensSessionId).request(mediaType) .put(Entity.xml(cubeObjectFactory.createXPartition(xp)), APIResult.class); - assertEquals(partUpdateResult.getStatus(), Status.SUCCEEDED); + assertSuccess(partUpdateResult); JAXBElement<XPartitionList> partitionsElement = target().path("metastore/facts").path(table) .path("storages/S2/partitions") @@ -2161,7 +2111,7 @@ public class TestMetastoreService extends LensJerseyTest { XTimePartSpecElement timePartSpec = readPartition.getTimePartitionSpec().getPartSpecElement().iterator().next(); XPartSpecElement fullPartSpec = readPartition.getFullPartitionSpec().getPartSpecElement().iterator().next(); assertEquals(timePartSpec.getKey(), fullPartSpec.getKey()); - assertEquals(UpdatePeriod.valueOf(xp.getUpdatePeriod().name()).format().format(JAXBUtils.getDateFromXML( + assertEquals(UpdatePeriod.valueOf(xp.getUpdatePeriod().name()).format(JAXBUtils.getDateFromXML( timePartSpec.getValue())), fullPartSpec.getValue()); DateTime date = target().path("metastore/cubes").path("testCube").path("latestdate").queryParam("timeDimension", "dt") @@ -2185,7 +2135,7 @@ public class TestMetastoreService extends LensJerseyTest { .queryParam("sessionid", lensSessionId).request(mediaType) .delete(APIResult.class); - assertEquals(dropResult.getStatus(), Status.SUCCEEDED); + assertSuccess(dropResult); // Verify partition was dropped partitionsElement = target().path("metastore/facts").path(table).path("storages/S2/partitions") @@ -2227,7 +2177,7 @@ public class TestMetastoreService extends LensJerseyTest { .queryParam("sessionid", lensSessionId).request(mediaType) .post(Entity.xml(cubeObjectFactory.createXPartitionList(toXPartitionList(xp))), APIResult.class); - assertEquals(partAddResult.getStatus(), Status.SUCCEEDED); + assertSuccess(partAddResult); // Verify partition was added partitionsElement = target().path("metastore/facts").path(table).path("storages/S2/partitions") @@ -2239,12 +2189,12 @@ public class TestMetastoreService extends LensJerseyTest { assertEquals(partitions.getPartition().size(), 1); // Drop again by values - String[] val = new String[]{HOURLY.format().format(partDate)}; + String[] val = new String[]{HOURLY.format(partDate)}; dropResult = target().path("metastore/facts").path(table).path("storages/S2/partition") .queryParam("values", StringUtils.join(val, ",")) .queryParam("sessionid", lensSessionId).request(mediaType) .delete(APIResult.class); - assertEquals(dropResult.getStatus(), Status.SUCCEEDED); + assertSuccess(dropResult); // Verify partition was dropped partitionsElement = target().path("metastore/facts").path(table).path("storages/S2/partitions") @@ -2286,7 +2236,7 @@ public class TestMetastoreService extends LensJerseyTest { partAddResult = target().path("metastore/dimtables/").path(table).path("storages/test/partition") .queryParam("sessionid", lensSessionId).request(mediaType) .post(Entity.xml(cubeObjectFactory.createXPartition(xp)), APIResult.class); - assertEquals(partAddResult.getStatus(), Status.SUCCEEDED); + assertSuccess(partAddResult); // create call for same partAddResult = target().path("metastore/dimtables/").path(table).path("storages/test/partition") @@ -2299,7 +2249,7 @@ public class TestMetastoreService extends LensJerseyTest { APIResult partUpdateResult = target().path("metastore/dimtables/").path(table).path("storages/test/partition") .queryParam("sessionid", lensSessionId).request(mediaType) .put(Entity.xml(cubeObjectFactory.createXPartition(xp)), APIResult.class); - assertEquals(partUpdateResult.getStatus(), Status.SUCCEEDED); + assertSuccess(partUpdateResult); JAXBElement<XPartitionList> partitionsElement = target().path("metastore/dimtables").path(table) .path("storages/test/partitions") @@ -2332,7 +2282,7 @@ public class TestMetastoreService extends LensJerseyTest { XTimePartSpecElement timePartSpec = postedPartition.getTimePartitionSpec().getPartSpecElement().iterator().next(); XPartSpecElement fullPartSpec = postedPartition.getFullPartitionSpec().getPartSpecElement().iterator().next(); assertEquals(timePartSpec.getKey(), fullPartSpec.getKey()); - assertEquals(UpdatePeriod.valueOf(xp.getUpdatePeriod().name()).format().format(JAXBUtils.getDateFromXML( + assertEquals(UpdatePeriod.valueOf(xp.getUpdatePeriod().name()).format(JAXBUtils.getDateFromXML( timePartSpec.getValue())), fullPartSpec.getValue()); assertNull(latestPartition.getTimePartitionSpec()); @@ -2355,7 +2305,7 @@ public class TestMetastoreService extends LensJerseyTest { .queryParam("sessionid", lensSessionId).request(mediaType) .delete(APIResult.class); - assertEquals(dropResult.getStatus(), Status.SUCCEEDED); + assertSuccess(dropResult); // Verify partition was dropped partitionsElement = target().path("metastore/dimtables").path(table).path("storages/test/partitions") @@ -2389,7 +2339,7 @@ public class TestMetastoreService extends LensJerseyTest { .queryParam("sessionid", lensSessionId).request(mediaType) .post(Entity.xml(cubeObjectFactory.createXPartitionList(toXPartitionList(xp))), APIResult.class); - assertEquals(partAddResult.getStatus(), Status.SUCCEEDED); + assertSuccess(partAddResult); // Verify partition was added partitionsElement = target().path("metastore/dimtables").path(table).path("storages/test/partitions") @@ -2401,18 +2351,39 @@ public class TestMetastoreService extends LensJerseyTest { assertEquals(partitions.getPartition().size(), 2); // Drop again by values - String[] val = new String[]{HOURLY.format().format(partDate)}; + String[] val = new String[]{HOURLY.format(partDate)}; dropResult = target().path("metastore/dimtables").path(table).path("storages/test/partition") .queryParam("values", StringUtils.join(val, ",")) .queryParam("sessionid", lensSessionId).request(mediaType) .delete(APIResult.class); - assertEquals(dropResult.getStatus(), Status.SUCCEEDED); + assertSuccess(dropResult); // Verify partition was dropped partitionsElement = target().path("metastore/dimtables").path(table).path("storages/test/partitions") .queryParam("sessionid", lensSessionId).request(mediaType) .get(new GenericType<JAXBElement<XPartitionList>>() {}); + partitions = partitionsElement.getValue(); + assertNotNull(partitions); + assertEquals(partitions.getPartition().size(), 0); + + // add again, this time we'll drop by filter + partAddResult = target().path("metastore/dimtables/").path(table).path("storages/test/partitions") + .queryParam("sessionid", lensSessionId).request(mediaType) + .post(Entity.xml(cubeObjectFactory.createXPartitionList(toXPartitionList(xp))), + APIResult.class); + assertSuccess(partAddResult); + // drop by filter + dropResult = target().path("metastore/dimtables").path(table).path("storages/test/partitions") + .queryParam("filter", "dt='" + HOURLY.format(partDate) + "'") + .queryParam("sessionid", lensSessionId).request(mediaType) + .delete(APIResult.class); + assertSuccess(dropResult); + + // Verify partition was dropped + partitionsElement = target().path("metastore/dimtables").path(table).path("storages/test/partitions") + .queryParam("sessionid", lensSessionId).request(mediaType) + .get(new GenericType<JAXBElement<XPartitionList>>() {}); partitions = partitionsElement.getValue(); assertNotNull(partitions); assertEquals(partitions.getPartition().size(), 0); @@ -2507,7 +2478,7 @@ public class TestMetastoreService extends LensJerseyTest { APIResult result = target().path("metastore").path("cubes").queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(element), APIResult.class); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // get a cube table Response response = target.path("testhiveCube").queryParam( @@ -2567,14 +2538,14 @@ public class TestMetastoreService extends LensJerseyTest { cubeTarget.queryParam("sessionid", lensSessionId).request(mediaType) .post(Entity.xml(cubeObjectFactory.createXCube(flatTestCube)), APIResult.class); assertNotNull(result); - assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED); + assertSuccess(result); // create chained dimensions - testdim and testdim2 createdChainedDimensions(); // Now test flattened view final WebTarget flatCubeTarget = target().path("metastore").path("flattened").path("flattestcube"); - XFlattenedColumns flattenedColumns = null; + XFlattenedColumns flattenedColumns; JAXBElement<XFlattenedColumns> actualElement = flatCubeTarget.queryParam("sessionid", lensSessionId).request() .get(new GenericType<JAXBElement<XFlattenedColumns>>() {}); flattenedColumns = actualElement.getValue(); @@ -2584,12 +2555,12 @@ public class TestMetastoreService extends LensJerseyTest { assertNotNull(columns); assertTrue(!columns.isEmpty()); - Set<String> tables = new HashSet<String>(); - Set<String> colSet = new HashSet<String>(); + Set<String> tables = new HashSet<>(); + Set<String> colSet = new HashSet<>(); populateActualTablesAndCols(columns, tables, colSet); - assertEquals(tables, new HashSet<String>(Arrays.asList("flattestcube", "testdim", "testdim2"))); - assertEquals(colSet, new HashSet<String>(Arrays.asList( + assertEquals(tables, Sets.newHashSet("flattestcube", "testdim", "testdim2")); + assertEquals(colSet, Sets.newHashSet( "flattestcube.msr1", "flattestcube.msr2", "flattestcube.dim1", @@ -2607,7 +2578,7 @@ public class TestMetastoreService extends LensJerseyTest { "dim2chain-testdim2.col2", "dim2chain-testdim2.col1", "dim2chain-testdim2.dimexpr" - ))); + )); // Now test flattened view for dimension final WebTarget flatDimTarget = target().path("metastore").path("flattened").path("testdim"); @@ -2620,12 +2591,12 @@ public class TestMetastoreService extends LensJerseyTest { assertNotNull(columns); assertTrue(!columns.isEmpty()); - tables = new HashSet<String>(); - colSet = new HashSet<String>(); + tables = new HashSet<>(); + colSet = new HashSet<>(); populateActualTablesAndCols(columns, tables, colSet); - assertEquals(tables, new HashSet<String>(Arrays.asList("testdim", "testdim2"))); - assertEquals(colSet, new HashSet<String>(Arrays.asList( + assertEquals(tables, Sets.newHashSet("testdim", "testdim2")); + assertEquals(colSet, Sets.newHashSet( "testdim.col2", "testdim.col1", "testdim.col3", @@ -2635,7 +2606,7 @@ public class TestMetastoreService extends LensJerseyTest { "chain1-testdim2.col2", "chain1-testdim2.col1", "chain1-testdim2.dimexpr" - ))); + )); } finally { dropDatabase(DB); @@ -2649,8 +2620,10 @@ public class TestMetastoreService extends LensJerseyTest { // Create a fact table object linked to cubeName XFactTable f = createFactTable(tableName, cubeName); // Create a storage tables - f.getStorageTables().getStorageTable().add(createStorageTblElement("S1", tableName, timePartColNames, "HOURLY")); - + for(String storage: storages) { + f.getStorageTables().getStorageTable() + .add(createStorageTblElement(storage, tableName, timePartColNames, "HOURLY")); + } // Call API to create a fact table and storage table final FormDataMultiPart mp = new FormDataMultiPart(); @@ -2664,9 +2637,7 @@ public class TestMetastoreService extends LensJerseyTest { .path("facts") .request(mediaType) .post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE), APIResult.class); - if (!result.getStatus().equals(APIResult.Status.SUCCEEDED)) { - throw new RuntimeException("Fact/Storage Table Creation failed"); - } + assertSuccess(result); } private String getUniqueDbName() {