### Question:
MetadataProvider { public static Runnable tables(final UserSession session, final DrillbitContext dContext, final GetTablesReq req, final ResponseSender responseSender) { return new TablesProvider(session, dContext, req, responseSender); }  static Runnable catalogs(final UserSession session, final DrillbitContext dContext,
      final GetCatalogsReq req, final ResponseSender responseSender); static Runnable schemas(final UserSession session, final DrillbitContext dContext,
      final GetSchemasReq req, final ResponseSender responseSender); static Runnable tables(final UserSession session, final DrillbitContext dContext,
      final GetTablesReq req, final ResponseSender responseSender); static Runnable columns(final UserSession session, final DrillbitContext dContext,
      final GetColumnsReq req, final ResponseSender responseSender);  }### Answer:
@Test public void tables() throws Exception { GetTablesResp resp = client.getTables(null, null, null, null).get(); assertEquals(RequestStatus.OK, resp.getStatus()); List<TableMetadata> tables = resp.getTablesList(); assertEquals(12, tables.size()); verifyTable("INFORMATION_SCHEMA", "CATALOGS", tables); verifyTable("INFORMATION_SCHEMA", "COLUMNS", tables); verifyTable("INFORMATION_SCHEMA", "SCHEMATA", tables); verifyTable("INFORMATION_SCHEMA", "TABLES", tables); verifyTable("INFORMATION_SCHEMA", "VIEWS", tables); verifyTable("sys", "boot", tables); verifyTable("sys", "drillbits", tables); verifyTable("sys", "memory", tables); verifyTable("sys", "options", tables); verifyTable("sys", "threads", tables); verifyTable("sys", "version", tables); }
@Test public void tables() throws Exception { GetTablesResp resp = client.getTables(null, null, null, null).get(); assertEquals(RequestStatus.OK, resp.getStatus()); List<TableMetadata> tables = resp.getTablesList(); assertEquals(20, tables.size()); verifyTable("information_schema", "CATALOGS", tables); verifyTable("information_schema", "COLUMNS", tables); verifyTable("information_schema", "SCHEMATA", tables); verifyTable("information_schema", "TABLES", tables); verifyTable("information_schema", "VIEWS", tables); verifyTable("information_schema", "PARTITIONS", tables); verifyTable("information_schema", "FILES", tables); for (SystemTable sysTbl : SystemTable.values()) { verifyTable("sys", sysTbl.getTableName(), tables); } }