use of io.cdap.cdap.data2.dataset2.lib.table.MDSKey in project cdap by caskdata.
the class DefaultPreviewStore method getAllInWaitingState.
@Override
public List<PreviewRequest> getAllInWaitingState() {
// PreviewStore is a singleton and we have to create gson for each operation since gson is not thread safe.
Gson gson = new GsonBuilder().registerTypeAdapter(Schema.class, new SchemaTypeAdapter()).create();
byte[] startRowKey = new MDSKey.Builder().add(WAITING).build().getKey();
byte[] stopRowKey = new MDSKey(Bytes.stopKeyForPrefix(startRowKey)).getKey();
List<PreviewRequest> result = new ArrayList<>();
try (Scanner scanner = previewQueueTable.scan(startRowKey, stopRowKey, null, null, null)) {
Row indexRow;
while ((indexRow = scanner.next()) != null) {
Map<byte[], byte[]> columns = indexRow.getColumns();
AppRequest request = gson.fromJson(Bytes.toString(columns.get(CONFIG)), AppRequest.class);
ApplicationId applicationId = gson.fromJson(Bytes.toString(columns.get(APPID)), ApplicationId.class);
Principal principal = gson.fromJson(Bytes.toString(columns.get(PRINCIPAL)), Principal.class);
result.add(new PreviewRequest(applicationId, request, principal));
}
} catch (IOException e) {
throw new RuntimeException("Error while listing the waiting preview requests.", e);
}
return result;
}
use of io.cdap.cdap.data2.dataset2.lib.table.MDSKey in project cdap by caskdata.
the class MetadataKeyTest method testGetMetadataKey.
@Test
public void testGetMetadataKey() {
MDSKey mdsValueKey = MetadataKey.createValueRowKey(new ApplicationId("ns1", "app1").toMetadataEntity(), "key1");
MDSKey mdsIndexKey = MetadataKey.createIndexRowKey(new ApplicationId("ns1", "app1").toMetadataEntity(), "key1", "value1");
// assert that metadata key for both index and value column is key1
Assert.assertEquals("key1", MetadataKey.extractMetadataKey(mdsValueKey.getKey()));
Assert.assertEquals("key1", MetadataKey.extractMetadataKey(mdsIndexKey.getKey()));
}
use of io.cdap.cdap.data2.dataset2.lib.table.MDSKey in project cdap by caskdata.
the class MetadataKeyTest method testGetTargetTypeChild.
@Test
public void testGetTargetTypeChild() {
ApplicationId expectedAppId = new ApplicationId("ns1", "app1");
MDSKey mdsValueKey = MetadataKey.createValueRowKey(expectedAppId.toMetadataEntity(), "key1");
ProgramId expectedProgramId = expectedAppId.spark("spark1");
MDSKey mdsValueKey2 = MetadataKey.createValueRowKey(expectedProgramId.toMetadataEntity(), "key2");
// assert that the key for parent child are independent and correct
MetadataEntity actualAppId = MetadataKey.extractMetadataEntityFromKey(mdsValueKey.getKey());
Assert.assertEquals(expectedAppId.toMetadataEntity(), actualAppId);
MetadataEntity actualProgramId = MetadataKey.extractMetadataEntityFromKey(mdsValueKey2.getKey());
Assert.assertEquals(expectedProgramId.toMetadataEntity(), actualProgramId);
}
use of io.cdap.cdap.data2.dataset2.lib.table.MDSKey in project cdap by caskdata.
the class MetadataKeyTest method testGetMDSValueKey.
@Test
public void testGetMDSValueKey() {
MDSKey mdsValueKey = MetadataKey.createValueRowKey(new ApplicationId("ns1", "app1").toMetadataEntity(), "key1");
MDSKey.Splitter split = mdsValueKey.split();
// skip value key bytes
split.skipBytes();
// assert target type is application
Assert.assertEquals(MetadataEntity.APPLICATION, split.getString());
// assert key-value pairs
Assert.assertEquals(MetadataEntity.NAMESPACE, split.getString());
Assert.assertEquals("ns1", split.getString());
Assert.assertEquals(MetadataEntity.APPLICATION, split.getString());
Assert.assertEquals("app1", split.getString());
Assert.assertEquals("key1", split.getString());
// asert that there is nothing more left in the key
Assert.assertFalse(split.hasRemaining());
}
use of io.cdap.cdap.data2.dataset2.lib.table.MDSKey in project cdap by caskdata.
the class MetadataKeyTest method testGetMDSIndexKey.
@Test
public void testGetMDSIndexKey() {
MDSKey mdsIndexKey = MetadataKey.createIndexRowKey(new ApplicationId("ns1", "app1").toMetadataEntity(), "key1", "value1");
MDSKey.Splitter split = mdsIndexKey.split();
// skip value key bytes
split.skipBytes();
// assert target type
Assert.assertEquals(MetadataEntity.APPLICATION, split.getString());
// assert key-value pairs
Assert.assertEquals(MetadataEntity.NAMESPACE, split.getString());
Assert.assertEquals("ns1", split.getString());
Assert.assertEquals(MetadataEntity.APPLICATION, split.getString());
Assert.assertEquals("app1", split.getString());
Assert.assertEquals("key1", split.getString());
Assert.assertEquals("value1", split.getString());
Assert.assertFalse(split.hasRemaining());
}
Aggregations