use of com.airbnb.spinaltap.mysql.mutation.schema.ColumnDataType in project SpinalTap by airbnb.
the class TableCacheTest method test.
@Test
public void test() throws Exception {
TableCache tableCache = new TableCache(schemaReader);
List<ColumnDataType> columnTypes = Arrays.asList(ColumnDataType.TINY, ColumnDataType.STRING, ColumnDataType.FLOAT, ColumnDataType.LONG);
when(schemaReader.query(DATABASE_NAME, TABLE_NAME, binlogFilePos)).thenReturn(TABLE_SCHEMA);
assertNull(tableCache.get(TABLE_ID));
tableCache.addOrUpdate(TABLE_ID, TABLE_NAME, DATABASE_NAME, binlogFilePos, columnTypes);
Table table = tableCache.get(TABLE_ID);
assertEquals(TABLE, table);
verify(schemaReader, times(1)).query(DATABASE_NAME, TABLE_NAME, binlogFilePos);
tableCache.addOrUpdate(TABLE_ID, TABLE_NAME, DATABASE_NAME, binlogFilePos, columnTypes);
table = tableCache.get(TABLE_ID);
assertEquals(TABLE, table);
verify(schemaReader, times(1)).query(DATABASE_NAME, TABLE_NAME, binlogFilePos);
columnTypes = Arrays.asList(ColumnDataType.TINY, ColumnDataType.STRING, ColumnDataType.FLOAT);
when(schemaReader.query(DATABASE_NAME, TABLE_NAME, binlogFilePos)).thenReturn(TABLE_SCHEMA_UPDATED);
tableCache.addOrUpdate(TABLE_ID, TABLE_NAME, DATABASE_NAME, binlogFilePos, columnTypes);
table = tableCache.get(TABLE_ID);
assertEquals(TABLE_UPDATED, table);
verify(schemaReader, times(2)).query(DATABASE_NAME, TABLE_NAME, binlogFilePos);
tableCache.addOrUpdate(TABLE_ID, TABLE_NAME, DATABASE_NAME, binlogFilePos, columnTypes);
table = tableCache.get(TABLE_ID);
assertEquals(TABLE_UPDATED, table);
verify(schemaReader, times(2)).query(DATABASE_NAME, TABLE_NAME, binlogFilePos);
// Schema reader now returns schema with 5 columns, but columnTypes has size 4
columnTypes = Arrays.asList(ColumnDataType.TINY, ColumnDataType.STRING, ColumnDataType.FLOAT, ColumnDataType.LONG);
when(schemaReader.query(DATABASE_NAME, TABLE_NAME, binlogFilePos)).thenReturn(TABLE_SCHEMA_LARGE_STUB);
tableCache.addOrUpdate(TABLE_ID, TABLE_NAME, DATABASE_NAME, binlogFilePos, columnTypes);
table = tableCache.get(TABLE_ID);
assertEquals(TABLE, table);
verify(schemaReader, times(3)).query(DATABASE_NAME, TABLE_NAME, binlogFilePos);
}
Aggregations