1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.hadoop.hbase.rest.model;
22
23 import java.io.IOException;
24 import java.io.StringReader;
25 import java.io.StringWriter;
26 import java.util.Iterator;
27
28 import javax.xml.bind.JAXBContext;
29 import javax.xml.bind.JAXBException;
30
31 import org.apache.hadoop.hbase.SmallTests;
32 import org.apache.hadoop.hbase.util.Base64;
33 import org.apache.hadoop.hbase.util.Bytes;
34
35 import junit.framework.TestCase;
36 import org.junit.experimental.categories.Category;
37
38 @Category(SmallTests.class)
39 public class TestStorageClusterStatusModel extends TestCase {
40
41 private static final String AS_XML =
42 "<ClusterStatus requests=\"0\" regions=\"2\" averageLoad=\"1.0\">" +
43 "<DeadNodes/>" +
44 "<LiveNodes><Node startCode=\"1245219839331\" requests=\"0\"" +
45 " name=\"test1\" maxHeapSizeMB=\"1024\" heapSizeMB=\"128\">" +
46 "<Region stores=\"1\" storefiles=\"1\" storefileSizeMB=\"0\"" +
47 " storefileIndexSizeMB=\"0\" name=\"LVJPT1QtLCww\"" +
48 " memstoreSizeMB=\"0\" readRequestsCount=\"1\"" +
49 " writeRequestsCount=\"2\" rootIndexSizeKB=\"1\"" +
50 " totalStaticIndexSizeKB=\"1\" totalStaticBloomSizeKB=\"1\"" +
51 " totalCompactingKVs=\"1\" currentCompactedKVs=\"1\"/></Node>" +
52 "<Node startCode=\"1245239331198\" requests=\"0\" name=\"test2\"" +
53 " maxHeapSizeMB=\"1024\" heapSizeMB=\"512\">" +
54 "<Region stores=\"1\" storefiles=\"1\" storefileSizeMB=\"0\"" +
55 " storefileIndexSizeMB=\"0\" name=\"Lk1FVEEuLCwxMjQ2MDAwMDQzNzI0\"" +
56 " memstoreSizeMB=\"0\" readRequestsCount=\"1\"" +
57 " writeRequestsCount=\"2\" rootIndexSizeKB=\"1\"" +
58 " totalStaticIndexSizeKB=\"1\" totalStaticBloomSizeKB=\"1\"" +
59 " totalCompactingKVs=\"1\" currentCompactedKVs=\"1\"/></Node>"+
60 "</LiveNodes></ClusterStatus>";
61
62 private static final String AS_PB =
63 "CjsKBXRlc3QxEOO6i+eeJBgAIIABKIAIMiMKCS1ST09ULSwsMBABGAEgACgAMAA4AUACSAFQAVgB" +
64 "YAFoAQpHCgV0ZXN0MhD+krHwniQYACCABCiACDIvChUuTUVUQS4sLDEyNDYwMDAwNDM3MjQQARgB" +
65 "IAAoADAAOAFAAkgBUAFYAWABaAEYAiAAKQAAAAAAAPA/";
66
67 private JAXBContext context;
68
69 public TestStorageClusterStatusModel() throws JAXBException {
70 super();
71 context = JAXBContext.newInstance(StorageClusterStatusModel.class);
72 }
73
74 private StorageClusterStatusModel buildTestModel() {
75 StorageClusterStatusModel model = new StorageClusterStatusModel();
76 model.setRegions(2);
77 model.setRequests(0);
78 model.setAverageLoad(1.0);
79 model.addLiveNode("test1", 1245219839331L, 128, 1024)
80 .addRegion(Bytes.toBytes("-ROOT-,,0"), 1, 1, 0, 0, 0, 1, 2, 1, 1, 1, 1, 1);
81 model.addLiveNode("test2", 1245239331198L, 512, 1024)
82 .addRegion(Bytes.toBytes(".META.,,1246000043724"),1, 1, 0, 0, 0,
83 1, 2, 1, 1, 1, 1, 1);
84 return model;
85 }
86
87 @SuppressWarnings("unused")
88 private String toXML(StorageClusterStatusModel model) throws JAXBException {
89 StringWriter writer = new StringWriter();
90 context.createMarshaller().marshal(model, writer);
91 return writer.toString();
92 }
93
94 private StorageClusterStatusModel fromXML(String xml) throws JAXBException {
95 return (StorageClusterStatusModel)
96 context.createUnmarshaller().unmarshal(new StringReader(xml));
97 }
98
99 @SuppressWarnings("unused")
100 private byte[] toPB(StorageClusterStatusModel model) {
101 return model.createProtobufOutput();
102 }
103
104 private StorageClusterStatusModel fromPB(String pb) throws IOException {
105 return (StorageClusterStatusModel)
106 new StorageClusterStatusModel().getObjectFromMessage(Base64.decode(AS_PB));
107 }
108
109 private void checkModel(StorageClusterStatusModel model) {
110 assertEquals(model.getRegions(), 2);
111 assertEquals(model.getRequests(), 0);
112 assertEquals(model.getAverageLoad(), 1.0);
113 Iterator<StorageClusterStatusModel.Node> nodes =
114 model.getLiveNodes().iterator();
115 StorageClusterStatusModel.Node node = nodes.next();
116 assertEquals(node.getName(), "test1");
117 assertEquals(node.getStartCode(), 1245219839331L);
118 assertEquals(node.getHeapSizeMB(), 128);
119 assertEquals(node.getMaxHeapSizeMB(), 1024);
120 Iterator<StorageClusterStatusModel.Node.Region> regions =
121 node.getRegions().iterator();
122 StorageClusterStatusModel.Node.Region region = regions.next();
123 assertTrue(Bytes.toString(region.getName()).equals("-ROOT-,,0"));
124 assertEquals(region.getStores(), 1);
125 assertEquals(region.getStorefiles(), 1);
126 assertEquals(region.getStorefileSizeMB(), 0);
127 assertEquals(region.getMemstoreSizeMB(), 0);
128 assertEquals(region.getStorefileIndexSizeMB(), 0);
129 assertEquals(region.getReadRequestsCount(), 1);
130 assertEquals(region.getWriteRequestsCount(), 2);
131 assertEquals(region.getRootIndexSizeKB(), 1);
132 assertEquals(region.getTotalStaticIndexSizeKB(), 1);
133 assertEquals(region.getTotalStaticBloomSizeKB(), 1);
134 assertEquals(region.getTotalCompactingKVs(), 1);
135 assertEquals(region.getCurrentCompactedKVs(), 1);
136 assertFalse(regions.hasNext());
137 node = nodes.next();
138 assertEquals(node.getName(), "test2");
139 assertEquals(node.getStartCode(), 1245239331198L);
140 assertEquals(node.getHeapSizeMB(), 512);
141 assertEquals(node.getMaxHeapSizeMB(), 1024);
142 regions = node.getRegions().iterator();
143 region = regions.next();
144 assertEquals(Bytes.toString(region.getName()), ".META.,,1246000043724");
145 assertEquals(region.getStores(), 1);
146 assertEquals(region.getStorefiles(), 1);
147 assertEquals(region.getStorefileSizeMB(), 0);
148 assertEquals(region.getMemstoreSizeMB(), 0);
149 assertEquals(region.getStorefileIndexSizeMB(), 0);
150 assertEquals(region.getReadRequestsCount(), 1);
151 assertEquals(region.getWriteRequestsCount(), 2);
152 assertEquals(region.getRootIndexSizeKB(), 1);
153 assertEquals(region.getTotalStaticIndexSizeKB(), 1);
154 assertEquals(region.getTotalStaticBloomSizeKB(), 1);
155 assertEquals(region.getTotalCompactingKVs(), 1);
156 assertEquals(region.getCurrentCompactedKVs(), 1);
157
158 assertFalse(regions.hasNext());
159 assertFalse(nodes.hasNext());
160 }
161
162 public void testBuildModel() throws Exception {
163 checkModel(buildTestModel());
164 }
165
166 public void testFromXML() throws Exception {
167 checkModel(fromXML(AS_XML));
168 }
169
170 public void testFromPB() throws Exception {
171 checkModel(fromPB(AS_PB));
172 }
173
174 @org.junit.Rule
175 public org.apache.hadoop.hbase.ResourceCheckerJUnitRule cu =
176 new org.apache.hadoop.hbase.ResourceCheckerJUnitRule();
177 }
178