@Test public void testUpdateStringUriWithoutType() { URI datasetUri = new URIBuilder(repoUri, "ns", "test").build(); DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral("\"string\"") .build(); Dataset<GenericRecord> expected = mock(Dataset.class); when(repo.update("ns", "test", descriptor, GenericRecord.class)).thenReturn(expected); Dataset<GenericRecord> ds = Datasets.update(datasetUri.toString(), descriptor); verify(repo).update("ns", "test", descriptor, GenericRecord.class); verifyNoMoreInteractions(repo); verifyNoMoreInteractions(expected); Assert.assertEquals(expected, ds); }
@Test public void testUpdateStringUri() { URI datasetUri = new URIBuilder(repoUri, "ns", "test").build(); DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral("\"string\"") .build(); Dataset<Object> expected = mock(Dataset.class); when(repo.update("ns", "test", descriptor, Object.class)).thenReturn(expected); Dataset<Object> ds = Datasets.<Object, Dataset<Object>> update(datasetUri.toString(), descriptor, Object.class); verify(repo).update("ns", "test", descriptor, Object.class); verifyNoMoreInteractions(repo); verifyNoMoreInteractions(expected); Assert.assertEquals(expected, ds); }
@Test public void testCreateStringUriWithoutType() { URI datasetUri = new URIBuilder(repoUri, "ns", "test").build(); DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral("\"string\"") .build(); Dataset<GenericRecord> expected = mock(Dataset.class); when(repo.create("ns", "test", descriptor, GenericRecord.class)).thenReturn(expected); Dataset<GenericRecord> ds = Datasets.create(datasetUri.toString(), descriptor); verify(repo).create("ns", "test", descriptor, GenericRecord.class); verifyNoMoreInteractions(repo); verifyNoMoreInteractions(expected); Assert.assertEquals(expected, ds); }
@Override public DatasetDescriptor load(String namespace, String name) { Preconditions.checkArgument(DEFAULT_NAMESPACE.equals(namespace), "Non-default namespaces are not supported"); Preconditions.checkNotNull(name, "Dataset name cannot be null"); if (!exists(namespace, name)) { throw new DatasetNotFoundException("No such dataset: " + name); } String tableName = getTableName(name); String entityName = getEntityName(name); return new DatasetDescriptor.Builder() .schemaLiteral(schemaManager.getEntitySchema(tableName, entityName) .getRawSchema()) .build(); }
@Test public void testUpdateWithoutType() { URI datasetUri = new URIBuilder(repoUri, "ns", "test").build(); DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral("\"string\"") .build(); Dataset<GenericRecord> expected = mock(Dataset.class); when(repo.update("ns", "test", descriptor, GenericRecord.class)).thenReturn(expected); Dataset<GenericRecord> ds = Datasets.update(datasetUri, descriptor); verify(repo).update("ns", "test", descriptor, GenericRecord.class); verifyNoMoreInteractions(repo); verifyNoMoreInteractions(expected); Assert.assertEquals(expected, ds); }
@Test public void testUpdateDataset() throws Exception { String datasetName = tableName + ".TestGenericEntity"; HBaseDatasetRepository repo = new HBaseDatasetRepository.Builder() .configuration(HBaseTestUtils.getConf()).build(); DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral(testGenericEntity) .build(); RandomAccessDataset<GenericRecord> ds = repo.create("default", datasetName, descriptor); // Create a new entity ds.put(createGenericEntity(0)); DatasetDescriptor newDescriptor = new DatasetDescriptor.Builder() .schemaLiteral(testGenericEntity2) .build(); repo.update("default", datasetName, newDescriptor); }
@Override public AvroEntitySchema parseEntitySchema(String rawSchema, ColumnMapping columnMapping) { // use DatasetDescriptor.Builder because it checks consistency DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral(rawSchema) .columnMapping(columnMapping) .build(); return new AvroEntitySchema( descriptor.getSchema(), rawSchema, descriptor.getColumnMapping()); } }
@Override public AvroEntitySchema parseEntitySchema(String rawSchema) { DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral(rawSchema) .build(); return new AvroEntitySchema( descriptor.getSchema(), rawSchema, descriptor.getColumnMapping()); }
@Override public AvroKeySchema parseKeySchema(String rawSchema, PartitionStrategy partitionStrategy) { // use DatasetDescriptor.Builder because it checks consistency DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral(rawSchema) .partitionStrategy(partitionStrategy) .build(); return new AvroKeySchema( descriptor.getSchema(), descriptor.getPartitionStrategy()); }
@Override public AvroKeySchema parseKeySchema(String rawSchema) { DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral(rawSchema) .build(); return new AvroKeySchema( descriptor.getSchema(), descriptor.getPartitionStrategy()); }
@Before public void setup() throws Exception { repo = new HBaseDatasetRepository.Builder().configuration( HBaseTestUtils.getConf()).build(); DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral(testEntity).build(); ds = (DaoDataset<TestEntity>) repo.create( "default", tableName, descriptor, TestEntity.class); }
@Test(expected=NullPointerException.class) public void testCreateNullType() { URI datasetUri = new URIBuilder(repoUri, "ns", "test").build(); DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral("\"string\"") .build(); Datasets.<Object, Dataset<Object>> create(datasetUri, descriptor, null); }
@Override public AvroKeySchema parseKeySchema(String rawSchema, PartitionStrategy partitionStrategy) { // use DatasetDescriptor.Builder because it checks consistency DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral(rawSchema) .partitionStrategy(partitionStrategy) .build(); return new AvroKeySchema( descriptor.getSchema(), descriptor.getPartitionStrategy()); }
@Test public void testBasic() { DatasetDescriptor desc = provider.create("default", tableName + ".TestEntity", new DatasetDescriptor.Builder().schemaLiteral(testEntity).build()); ColumnMapping columnMapping = desc.getColumnMapping(); PartitionStrategy partStrat = desc.getPartitionStrategy(); assertEquals(9, columnMapping.getFieldMappings().size()); assertEquals(2, Accessor.getDefault().getFieldPartitioners(partStrat).size()); }
@Override public AvroEntitySchema parseEntitySchema(String rawSchema, ColumnMapping columnMapping) { // use DatasetDescriptor.Builder because it checks consistency DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral(rawSchema) .columnMapping(columnMapping) .build(); return new AvroEntitySchema( descriptor.getSchema(), rawSchema, descriptor.getColumnMapping()); } }
@Override public AvroEntitySchema parseEntitySchema(String rawSchema) { DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral(rawSchema) .build(); return new AvroEntitySchema( descriptor.getSchema(), rawSchema, descriptor.getColumnMapping()); }
@Before public void setup() throws Exception { repo = new HBaseDatasetRepository.Builder() .configuration(HBaseTestUtils.getConf()).build(); DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral(testEntity).build(); ds = repo.create("default", tableName, descriptor, TestEntity.class); }
@Override public AvroKeySchema parseKeySchema(String rawSchema) { DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral(rawSchema) .build(); return new AvroKeySchema( descriptor.getSchema(), descriptor.getPartitionStrategy()); }
@Before public void createStringsDataset() throws Exception { // create a dataset in HDFS repo.delete("ns", "strings"); repo.create("ns", "strings", new DatasetDescriptor.Builder() .schemaLiteral("\"string\"") .build()); }
@Test(expected=NullPointerException.class) public void testUpdateNullType() { URI datasetUri = new URIBuilder(repoUri, "ns", "test").build(); DatasetDescriptor descriptor = new DatasetDescriptor.Builder() .schemaLiteral("\"string\"") .build(); Datasets.<Object, Dataset<Object>> update(datasetUri, descriptor, null); }