private void createTableWithNonDefaultProperties() throws Exception {
    final long startTime = EnvironmentEdgeManager.currentTime();
    final String sourceTableNameAsString = STRING_TABLE_NAME + startTime;
    originalTableName = TableName.valueOf(sourceTableNameAsString);

    // enable replication on a column family
    ColumnFamilyDescriptor maxVersionsColumn = ColumnFamilyDescriptorBuilder
      .newBuilder(MAX_VERSIONS_FAM).setMaxVersions(MAX_VERSIONS).build();
    ColumnFamilyDescriptor bloomFilterColumn = ColumnFamilyDescriptorBuilder
      .newBuilder(BLOOMFILTER_FAM).setBloomFilterType(BLOOM_TYPE).build();
    ColumnFamilyDescriptor dataBlockColumn = ColumnFamilyDescriptorBuilder
      .newBuilder(COMPRESSED_FAM).setDataBlockEncoding(DATA_BLOCK_ENCODING_TYPE).build();
    ColumnFamilyDescriptor blockSizeColumn =
      ColumnFamilyDescriptorBuilder.newBuilder(BLOCKSIZE_FAM).setBlocksize(BLOCK_SIZE).build();

    TableDescriptor tableDescriptor = TableDescriptorBuilder
      .newBuilder(TableName.valueOf(sourceTableNameAsString)).setColumnFamily(maxVersionsColumn)
      .setColumnFamily(bloomFilterColumn).setColumnFamily(dataBlockColumn)
      .setColumnFamily(blockSizeColumn).setValue(TEST_CUSTOM_VALUE, TEST_CUSTOM_VALUE)
      .setValue(TEST_CONF_CUSTOM_VALUE, TEST_CONF_CUSTOM_VALUE).build();
    assertTrue(tableDescriptor.getValues().size() > 0);

    admin.createTable(tableDescriptor);
    Table original = UTIL.getConnection().getTable(originalTableName);
    originalTableName = TableName.valueOf(sourceTableNameAsString);
    originalTableDescriptor = admin.getDescriptor(originalTableName);
    originalTableDescription = originalTableDescriptor.toStringCustomizedValues();

    original.close();
  }
Test class to verify that metadata is consistent before and after a snapshot attempt.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestSnapshotMetadata.java