1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.coprocessor.example;
20
21 import static org.junit.Assert.assertEquals;
22
23 import org.apache.commons.logging.Log;
24 import org.apache.commons.logging.LogFactory;
25 import org.apache.hadoop.conf.Configuration;
26 import org.apache.hadoop.hbase.TableName;
27 import org.apache.hadoop.hbase.HBaseTestingUtility;
28 import org.apache.hadoop.hbase.HColumnDescriptor;
29 import org.apache.hadoop.hbase.HTableDescriptor;
30 import org.apache.hadoop.hbase.testclassification.MediumTests;
31 import org.apache.hadoop.hbase.client.Get;
32 import org.apache.hadoop.hbase.client.HTable;
33 import org.apache.hadoop.hbase.client.Put;
34 import org.apache.hadoop.hbase.client.Result;
35 import org.apache.hadoop.hbase.client.Table;
36 import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;
37 import org.apache.hadoop.hbase.util.Bytes;
38 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
39 import org.apache.hadoop.hbase.zookeeper.ZKUtil;
40 import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
41 import org.apache.zookeeper.ZooKeeper;
42 import org.junit.experimental.categories.Category;
43
44 @Category(MediumTests.class)
45 public class TestZooKeeperScanPolicyObserver {
46 private static final Log LOG = LogFactory.getLog(TestZooKeeperScanPolicyObserver.class);
47 private final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();
48 private static final byte[] F = Bytes.toBytes("fam");
49 private static final byte[] Q = Bytes.toBytes("qual");
50 private static final byte[] R = Bytes.toBytes("row");
51
52
53 public static void setUpBeforeClass() throws Exception {
54 System.out.println("HERE!!!!!!!!");
55
56 Configuration conf = TEST_UTIL.getConfiguration();
57 conf.setStrings(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY,
58 ZooKeeperScanPolicyObserver.class.getName());
59 TEST_UTIL.startMiniZKCluster();
60 TEST_UTIL.startMiniCluster();
61 }
62
63
64 public static void tearDownAfterClass() throws Exception {
65 TEST_UTIL.shutdownMiniCluster();
66 }
67
68
69 public void testScanPolicyObserver() throws Exception {
70 TableName tableName =
71 TableName.valueOf("testScanPolicyObserver");
72 HTableDescriptor desc = new HTableDescriptor(tableName);
73 HColumnDescriptor hcd = new HColumnDescriptor(F)
74 .setMaxVersions(10)
75 .setTimeToLive(1);
76 desc.addFamily(hcd);
77 TEST_UTIL.getHBaseAdmin().createTable(desc);
78 Table t = new HTable(new Configuration(TEST_UTIL.getConfiguration()), tableName);
79 long now = EnvironmentEdgeManager.currentTime();
80
81 ZooKeeperWatcher zkw = new ZooKeeperWatcher(TEST_UTIL.getConfiguration(), "test", null);
82 ZooKeeper zk = zkw.getRecoverableZooKeeper().getZooKeeper();
83 ZKUtil.createWithParents(zkw, ZooKeeperScanPolicyObserver.node);
84
85
86 zk.setData(ZooKeeperScanPolicyObserver.node, Bytes.toBytes(now - 3600*1000), -1);
87
88 LOG.debug("Set time: "+Bytes.toLong(Bytes.toBytes(now - 3600*1000)));
89
90
91
92 Thread.sleep(1000);
93
94 long ts = now - 2000;
95 Put p = new Put(R);
96 p.add(F, Q, ts, Q);
97 t.put(p);
98 p = new Put(R);
99 p.add(F, Q, ts+1, Q);
100 t.put(p);
101
102
103
104 Get g = new Get(R);
105 g.setMaxVersions(10);
106 Result r = t.get(g);
107
108 assertEquals(2, r.size());
109
110 TEST_UTIL.flush(tableName);
111 TEST_UTIL.compact(tableName, true);
112
113 g = new Get(R);
114 g.setMaxVersions(10);
115 r = t.get(g);
116
117 assertEquals(2, r.size());
118 zk.setData(ZooKeeperScanPolicyObserver.node, Bytes.toBytes(now), -1);
119 LOG.debug("Set time: "+now);
120
121 TEST_UTIL.compact(tableName, true);
122
123 g = new Get(R);
124 g.setMaxVersions(10);
125 r = t.get(g);
126
127 assertEquals(0, r.size());
128 t.close();
129 }
130 }