package com.facebook.infrastructure.db; import org.testng.annotations.Test; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Set; public class ColumnFamilyCompactorTest { @Test public void testGetCompactionBuckets() throws IOException { // create files 20 40 60 ... 180 List<String> small = new ArrayList<String>(); List<String> med = new ArrayList<String>(); List<String> big1 = new ArrayList<String>(); List<String> big2 = new ArrayList<String>(); List<String> all = new ArrayList<String>(); String fname; fname = createFile(20); small.add(fname); all.add(fname); fname = createFile(40); small.add(fname); all.add(fname); for (int i = 60; i <= 140; i+=20) { fname = createFile(i); med.add(fname); all.add(fname); } fname = createFile(160); big1.add(fname); all.add(fname); fname = createFile(180); big2.add(fname); all.add(fname); Set<List<String>> buckets = ColumnFamilyCompactor.getCompactionBuckets(all, 50, 150); assert buckets.contains(small); assert buckets.contains(med); assert buckets.contains(big1); assert buckets.contains(big2); } private String createFile(int nBytes) throws IOException { File f = File.createTempFile("bucket_test", ""); FileOutputStream fos = new FileOutputStream(f); byte[] bytes = new byte[nBytes]; fos.write(bytes); fos.close(); return f.getAbsolutePath(); } }