1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.regionserver.compactions;
20
21 import java.util.ArrayList;
22 import java.util.Iterator;
23 import java.util.List;
24
25 import org.apache.commons.math.random.GaussianRandomGenerator;
26 import org.apache.commons.math.random.MersenneTwister;
27 import org.apache.hadoop.hbase.regionserver.StoreFile;
28
29 class GaussianFileListGenerator extends StoreFileListGenerator {
30
31 GaussianFileListGenerator() {
32 super(GaussianFileListGenerator.class);
33 }
34
35 @Override
36 public Iterator<List<StoreFile>> iterator() {
37 return new Iterator<List<StoreFile>>() {
38 private GaussianRandomGenerator gen =
39 new GaussianRandomGenerator(new MersenneTwister(random.nextInt()));
40 private int count = 0;
41
42 @Override
43 public boolean hasNext() {
44 return count < MAX_FILE_GEN_ITERS;
45 }
46
47 @Override
48 public List<StoreFile> next() {
49 count += 1;
50 ArrayList<StoreFile> files = new ArrayList<StoreFile>(NUM_FILES_GEN);
51 for (int i = 0; i < NUM_FILES_GEN; i++) {
52 files.add(createMockStoreFile(
53 (int) Math.ceil(Math.max(0, gen.nextNormalizedDouble() * 32 + 32)))
54 );
55 }
56
57 return files;
58 }
59
60 @Override
61 public void remove() {
62 }
63 };
64 }
65 }