Search in sources :

Example 41 with MDSKey

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;
}
Also used : Scanner(io.cdap.cdap.api.dataset.table.Scanner) GsonBuilder(com.google.gson.GsonBuilder) Schema(io.cdap.cdap.api.data.schema.Schema) ArrayList(java.util.ArrayList) Gson(com.google.gson.Gson) MDSKey(io.cdap.cdap.data2.dataset2.lib.table.MDSKey) IOException(java.io.IOException) AppRequest(io.cdap.cdap.proto.artifact.AppRequest) SchemaTypeAdapter(io.cdap.cdap.internal.io.SchemaTypeAdapter) Row(io.cdap.cdap.api.dataset.table.Row) PreviewRequest(io.cdap.cdap.app.preview.PreviewRequest) ApplicationId(io.cdap.cdap.proto.id.ApplicationId) Principal(io.cdap.cdap.proto.security.Principal)

Example 42 with MDSKey

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()));
}
Also used : MDSKey(io.cdap.cdap.data2.dataset2.lib.table.MDSKey) ApplicationId(io.cdap.cdap.proto.id.ApplicationId) Test(org.junit.Test)

Example 43 with MDSKey

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);
}
Also used : MetadataEntity(io.cdap.cdap.api.metadata.MetadataEntity) MDSKey(io.cdap.cdap.data2.dataset2.lib.table.MDSKey) ApplicationId(io.cdap.cdap.proto.id.ApplicationId) ProgramId(io.cdap.cdap.proto.id.ProgramId) Test(org.junit.Test)

Example 44 with MDSKey

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());
}
Also used : MDSKey(io.cdap.cdap.data2.dataset2.lib.table.MDSKey) ApplicationId(io.cdap.cdap.proto.id.ApplicationId) Test(org.junit.Test)

Example 45 with MDSKey

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());
}
Also used : MDSKey(io.cdap.cdap.data2.dataset2.lib.table.MDSKey) ApplicationId(io.cdap.cdap.proto.id.ApplicationId) Test(org.junit.Test)

Aggregations

MDSKey (co.cask.cdap.data2.dataset2.lib.table.MDSKey)66 MDSKey (io.cdap.cdap.data2.dataset2.lib.table.MDSKey)31 GsonBuilder (com.google.gson.GsonBuilder)22 IOException (java.io.IOException)16 Gson (com.google.gson.Gson)14 HashMap (java.util.HashMap)12 ProgramRunId (co.cask.cdap.proto.id.ProgramRunId)11 ApplicationId (io.cdap.cdap.proto.id.ApplicationId)9 Row (co.cask.cdap.api.dataset.table.Row)8 ProgramId (co.cask.cdap.proto.id.ProgramId)8 Nullable (javax.annotation.Nullable)8 ImmutableMap (com.google.common.collect.ImmutableMap)7 Test (org.junit.Test)7 Scanner (co.cask.cdap.api.dataset.table.Scanner)6 MetadataStoreDataset (co.cask.cdap.data2.dataset2.lib.table.MetadataStoreDataset)6 ArrayList (java.util.ArrayList)6 WorkflowNodeStateDetail (co.cask.cdap.proto.WorkflowNodeStateDetail)5 ApplicationId (co.cask.cdap.proto.id.ApplicationId)5 Row (io.cdap.cdap.api.dataset.table.Row)5 Scanner (io.cdap.cdap.api.dataset.table.Scanner)5