package com.facebook.infrastructure.db; import com.facebook.infrastructure.io.DataInputBuffer; import com.facebook.infrastructure.io.DataOutputBuffer; import org.testng.annotations.Test; import java.io.IOException; import java.util.Arrays; import java.util.HashSet; import java.util.Random; import java.util.TreeMap; public class ColumnFamilyTest { // TODO test SuperColumns @Test public void testSingleColumn() throws IOException { Random random = new Random(); byte[] bytes = new byte[1024]; random.nextBytes(bytes); ColumnFamily cf; cf = new ColumnFamily("Test", "Standard"); cf.addColumn("C", bytes, 1); DataOutputBuffer bufOut = new DataOutputBuffer(); ColumnFamily.serializerWithIndexes().serialize(cf, bufOut); DataInputBuffer bufIn = new DataInputBuffer(); bufIn.reset(bufOut.getData(), bufOut.getLength()); cf = ColumnFamily.serializer().deserialize(bufIn); assert cf != null; assert cf.name().equals("Test"); assert cf.getAllColumns().size() == 1; } @Test public void testManyColumns() throws IOException { ColumnFamily cf; TreeMap<String, byte[]> map = new TreeMap<String,byte[]>(); for ( int i = 100; i < 1000; ++i ) { map.put(Integer.toString(i), ("Avinash Lakshman is a good man: " + i).getBytes()); } // write cf = new ColumnFamily("Test", "Standard"); DataOutputBuffer bufOut = new DataOutputBuffer(); for (String cName: map.navigableKeySet()) { cf.addColumn(cName, map.get(cName), 314); } ColumnFamily.serializerWithIndexes().serialize(cf, bufOut); // verify DataInputBuffer bufIn = new DataInputBuffer(); bufIn.reset(bufOut.getData(), bufOut.getLength()); cf = ColumnFamily.serializer().deserialize(bufIn); for (String cName: map.navigableKeySet()) { assert Arrays.equals(cf.getColumn(cName).value(), map.get(cName)); } assert new HashSet<String>(cf.getColumns().keySet()).equals(map.keySet()); } }