@Test(priority = 2)
public void testAlterDerivedCube() throws Exception {
String name = "alter_derived_cube";
client.createDerivedCube(CUBE_NAME, name, measures, dimensions, emptyHashMap, 0L);
Table cubeTbl = client.getHiveTable(name);
DerivedCube toAlter = new DerivedCube(cubeTbl, (Cube) client.getCube(CUBE_NAME));
toAlter.addMeasure("msr4");
toAlter.removeMeasure("msr3");
toAlter.addDimension("dim1StartTime");
toAlter.removeDimension("dim1");
assertNotNull(toAlter.getMeasureByName("msr4"));
assertNotNull(toAlter.getMeasureByName("msr2"));
assertNull(toAlter.getMeasureByName("msr3"));
assertNotNull(toAlter.getDimAttributeByName("dim1StartTime"));
assertNotNull(toAlter.getDimAttributeByName("dim2"));
assertNull(toAlter.getDimAttributeByName("dim1"));
client.alterCube(name, toAlter);
DerivedCube altered = (DerivedCube) client.getCube(name);
assertEquals(toAlter, altered);
assertNotNull(altered.getMeasureByName("msr4"));
CubeMeasure addedMsr = altered.getMeasureByName("msr4");
assertEquals(addedMsr.getType(), "bigint");
assertNotNull(altered.getDimAttributeByName("dim1StartTime"));
BaseDimAttribute addedDim = (BaseDimAttribute) altered.getDimAttributeByName("dim1StartTime");
assertEquals(addedDim.getType(), "string");
assertNotNull(addedDim.getStartTime());
client.dropCube(name);
assertFalse(client.tableExists(name));
}