protected void modifyAllTableColumns(TableName tableName,
    BiConsumer<String, ColumnFamilyDescriptorBuilder> transform) throws IOException {
    HBaseTestingUtil util = this.context.getHBaseIntegrationTestingUtility();
    Admin admin = util.getAdmin();

    TableDescriptor tableDescriptor = admin.getDescriptor(tableName);
    ColumnFamilyDescriptor[] columnDescriptors = tableDescriptor.getColumnFamilies();

    if (columnDescriptors == null || columnDescriptors.length == 0) {
      return;
    }

    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(tableDescriptor);
    for (ColumnFamilyDescriptor descriptor : columnDescriptors) {
      ColumnFamilyDescriptorBuilder cfd = ColumnFamilyDescriptorBuilder.newBuilder(descriptor);
      transform.accept(descriptor.getNameAsString(), cfd);
      builder.modifyColumnFamily(cfd.build());
    }

    // Don't try the modify if we're stopping
    if (this.context.isStopping()) {
      return;
    }
    admin.modifyTable(builder.build());
  }
Apply a transform to all columns in a given table. If there are no columns in a table or if the
context is stopping does nothing.
@param tableName the table to modify
@param transform the modification to perform. Callers will have the column name as a string and
                 a column family builder available to them
hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/Action.java