### Question:
IndexManager { public Schema schema(String table) throws IOException { Schema schema = new Schema().setTable(table); schema.columnFamilies = new TreeMap<String, Set<String>>(); Map<String, BlurIndex> blurIndexes = _indexServer.getIndexes(table); for (BlurIndex blurIndex : blurIndexes.values()) { IndexReader reader = blurIndex.getIndexReader(); try { FieldInfos mergedFieldInfos = ReaderUtil.getMergedFieldInfos(reader); for (FieldInfo fieldInfo : mergedFieldInfos) { String fieldName = fieldInfo.name; int index = fieldName.indexOf('.'); if (index > 0) { String columnFamily = fieldName.substring(0, index); String column = fieldName.substring(index + 1); Set<String> set = schema.columnFamilies.get(columnFamily); if (set == null) { set = new TreeSet<String>(); schema.columnFamilies.put(columnFamily, set); } set.add(column); } } } finally { reader.decRef(); } } return schema; }  void setMaxClauseCount(int maxClauseCount); void init(); synchronized void close(); void fetchRow(String table, Selector selector, FetchResult fetchResult); static void validSelector(Selector selector); BlurResultIterable query(final String table, final BlurQuery blurQuery, AtomicLongArray facetedCounts); void cancelQuery(String table, long uuid); List<BlurQueryStatus> currentQueries(String table); BlurQueryStatus queryStatus(String table, long uuid); List<Long> queryStatusIdList(String table); static void fetchRow(IndexReader reader, String table, Selector selector, FetchResult fetchResult); static FieldSelector getFieldSelector(final Selector selector); IndexServer getIndexServer(); void setIndexServer(IndexServer indexServer); long recordFrequency(final String table, final String columnFamily, final String columnName, final String value); List<String> terms(final String table, final String columnFamily, final String columnName, final String startWith, final short size); static long recordFrequency(IndexReader reader, String columnFamily, String columnName, String value); static List<String> terms(IndexReader reader, String columnFamily, String columnName, String startWith, short size); Schema schema(String table); void setStatusCleanupTimerDelay(long delay); void mutate(final RowMutation mutation); void mutate(final List<RowMutation> mutations); void setThreadCount(int threadCount); void setBlurMetrics(BlurMetrics blurMetrics); void setFilterCache(BlurFilterCache filterCache); void optimize(String table, int numberOfSegmentsPerShard);  }### Answer:
@Test public void testSchema() throws Exception { Schema schema = indexManager.schema(TABLE); assertEquals(TABLE, schema.table); Map<String, Set<String>> columnFamilies = schema.columnFamilies; assertEquals(new TreeSet<String>(Arrays.asList(FAMILY, FAMILY2)), new TreeSet<String>(columnFamilies.keySet())); assertEquals(new TreeSet<String>(Arrays.asList("testcol1", "testcol2", "testcol3", "testcol12", "testcol13")), new TreeSet<String>(columnFamilies.get(FAMILY))); assertEquals(new TreeSet<String>(Arrays.asList("testcol18")), new TreeSet<String>(columnFamilies.get(FAMILY2))); }