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;
22
23 import java.io.ByteArrayInputStream;
24 import java.io.IOException;
25
26 import javax.xml.bind.JAXBContext;
27 import javax.xml.bind.JAXBException;
28
29 import org.apache.hadoop.hbase.HBaseTestingUtility;
30 import org.apache.hadoop.hbase.MediumTests;
31 import org.apache.hadoop.hbase.rest.client.Client;
32 import org.apache.hadoop.hbase.rest.client.Cluster;
33 import org.apache.hadoop.hbase.rest.client.Response;
34 import org.apache.hadoop.hbase.rest.model.StorageClusterVersionModel;
35 import org.apache.hadoop.hbase.rest.model.VersionModel;
36 import org.apache.hadoop.hbase.util.Bytes;
37
38 import static org.junit.Assert.*;
39
40 import org.junit.AfterClass;
41 import org.junit.BeforeClass;
42 import org.junit.Test;
43
44 import com.sun.jersey.spi.container.servlet.ServletContainer;
45 import org.junit.experimental.categories.Category;
46
47 @Category(MediumTests.class)
48 public class TestVersionResource {
49 private static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();
50 private static final HBaseRESTTestingUtility REST_TEST_UTIL =
51 new HBaseRESTTestingUtility();
52 private static Client client;
53 private static JAXBContext context;
54
55 @BeforeClass
56 public static void setUpBeforeClass() throws Exception {
57 TEST_UTIL.startMiniCluster();
58 REST_TEST_UTIL.startServletContainer(TEST_UTIL.getConfiguration());
59 client = new Client(new Cluster().add("localhost",
60 REST_TEST_UTIL.getServletPort()));
61 context = JAXBContext.newInstance(
62 VersionModel.class,
63 StorageClusterVersionModel.class);
64 }
65
66 @AfterClass
67 public static void tearDownAfterClass() throws Exception {
68 REST_TEST_UTIL.shutdownServletContainer();
69 TEST_UTIL.shutdownMiniCluster();
70 }
71
72 private static void validate(VersionModel model) {
73 assertNotNull(model);
74 assertNotNull(model.getRESTVersion());
75 assertEquals(model.getRESTVersion(), RESTServlet.VERSION_STRING);
76 String osVersion = model.getOSVersion();
77 assertNotNull(osVersion);
78 assertTrue(osVersion.contains(System.getProperty("os.name")));
79 assertTrue(osVersion.contains(System.getProperty("os.version")));
80 assertTrue(osVersion.contains(System.getProperty("os.arch")));
81 String jvmVersion = model.getJVMVersion();
82 assertNotNull(jvmVersion);
83 assertTrue(jvmVersion.contains(System.getProperty("java.vm.vendor")));
84 assertTrue(jvmVersion.contains(System.getProperty("java.version")));
85 assertTrue(jvmVersion.contains(System.getProperty("java.vm.version")));
86 assertNotNull(model.getServerVersion());
87 String jerseyVersion = model.getJerseyVersion();
88 assertNotNull(jerseyVersion);
89 assertEquals(jerseyVersion, ServletContainer.class.getPackage()
90 .getImplementationVersion());
91 }
92
93 @Test
94 public void testGetStargateVersionText() throws IOException {
95 Response response = client.get("/version", Constants.MIMETYPE_TEXT);
96 assertTrue(response.getCode() == 200);
97 assertEquals(Constants.MIMETYPE_TEXT, response.getHeader("content-type"));
98 String body = Bytes.toString(response.getBody());
99 assertTrue(body.length() > 0);
100 assertTrue(body.contains(RESTServlet.VERSION_STRING));
101 assertTrue(body.contains(System.getProperty("java.vm.vendor")));
102 assertTrue(body.contains(System.getProperty("java.version")));
103 assertTrue(body.contains(System.getProperty("java.vm.version")));
104 assertTrue(body.contains(System.getProperty("os.name")));
105 assertTrue(body.contains(System.getProperty("os.version")));
106 assertTrue(body.contains(System.getProperty("os.arch")));
107 assertTrue(body.contains(ServletContainer.class.getPackage()
108 .getImplementationVersion()));
109 }
110
111 @Test
112 public void testGetStargateVersionXML() throws IOException, JAXBException {
113 Response response = client.get("/version", Constants.MIMETYPE_XML);
114 assertTrue(response.getCode() == 200);
115 assertEquals(Constants.MIMETYPE_XML, response.getHeader("content-type"));
116 VersionModel model = (VersionModel)
117 context.createUnmarshaller().unmarshal(
118 new ByteArrayInputStream(response.getBody()));
119 validate(model);
120 }
121
122 @Test
123 public void testGetStargateVersionJSON() throws IOException {
124 Response response = client.get("/version", Constants.MIMETYPE_JSON);
125 assertTrue(response.getCode() == 200);
126 assertEquals(Constants.MIMETYPE_JSON, response.getHeader("content-type"));
127 }
128
129 @Test
130 public void testGetStargateVersionPB() throws IOException {
131 Response response = client.get("/version", Constants.MIMETYPE_PROTOBUF);
132 assertTrue(response.getCode() == 200);
133 assertEquals(Constants.MIMETYPE_PROTOBUF, response.getHeader("content-type"));
134 VersionModel model = new VersionModel();
135 model.getObjectFromMessage(response.getBody());
136 validate(model);
137 response = client.get("/version", Constants.MIMETYPE_PROTOBUF_IETF);
138 assertTrue(response.getCode() == 200);
139 assertEquals(Constants.MIMETYPE_PROTOBUF_IETF, response.getHeader("content-type"));
140 model = new VersionModel();
141 model.getObjectFromMessage(response.getBody());
142 validate(model);
143 }
144
145 @Test
146 public void testGetStorageClusterVersionText() throws IOException {
147 Response response = client.get("/version/cluster", Constants.MIMETYPE_TEXT);
148 assertTrue(response.getCode() == 200);
149 assertEquals(Constants.MIMETYPE_TEXT, response.getHeader("content-type"));
150 }
151
152 @Test
153 public void testGetStorageClusterVersionXML() throws IOException,
154 JAXBException {
155 Response response = client.get("/version/cluster",Constants.MIMETYPE_XML);
156 assertTrue(response.getCode() == 200);
157 assertEquals(Constants.MIMETYPE_XML, response.getHeader("content-type"));
158 StorageClusterVersionModel clusterVersionModel =
159 (StorageClusterVersionModel)
160 context.createUnmarshaller().unmarshal(
161 new ByteArrayInputStream(response.getBody()));
162 assertNotNull(clusterVersionModel);
163 assertNotNull(clusterVersionModel.getVersion());
164 }
165
166 @Test
167 public void doTestGetStorageClusterVersionJSON() throws IOException {
168 Response response = client.get("/version/cluster", Constants.MIMETYPE_JSON);
169 assertTrue(response.getCode() == 200);
170 assertEquals(Constants.MIMETYPE_JSON, response.getHeader("content-type"));
171 }
172
173 @org.junit.Rule
174 public org.apache.hadoop.hbase.ResourceCheckerJUnitRule cu =
175 new org.apache.hadoop.hbase.ResourceCheckerJUnitRule();
176 }
177