Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import org.apache.hadoop.hbase.rest.RESTServlet;
import org.apache.hadoop.hbase.rest.RestUtil;
import org.apache.hadoop.hbase.rest.protobuf.generated.VersionMessage.Version;
import org.apache.hadoop.hbase.util.VersionInfo;
import org.apache.yetus.audience.InterfaceAudience;

import org.apache.hbase.thirdparty.com.google.protobuf.CodedInputStream;
Expand Down Expand Up @@ -53,6 +54,8 @@ public class VersionModel implements Serializable, ProtobufMessageHandler {
private String osVersion;
private String serverVersion;
private String jerseyVersion;
private String version;
private String revision;

/**
* Default constructor. Do not use.
Expand All @@ -74,6 +77,9 @@ public VersionModel(ServletContext context) {
jerseyVersion = ServletContainer.class.getPackage().getImplementationVersion();
// Currently, this will always be null because the manifest doesn't have any useful information
if (jerseyVersion == null) jerseyVersion = "";

version = VersionInfo.getVersion();
revision = VersionInfo.getRevision();
}

/** Returns the REST gateway version */
Expand Down Expand Up @@ -106,6 +112,18 @@ public String getJerseyVersion() {
return jerseyVersion;
}

/** Returns the build version of the REST server component */
@XmlAttribute(name = "Version")
public String getVersion() {
return version;
}

/** Returns the source control revision of the REST server component */
@XmlAttribute(name = "Revision")
public String getRevision() {
return revision;
}

/**
* @param version the REST gateway version string
*/
Expand Down Expand Up @@ -141,6 +159,20 @@ public void setJerseyVersion(String version) {
this.jerseyVersion = version;
}

/**
* @param version the REST server component build version string
*/
public void setVersion(String version) {
this.version = version;
}

/**
* @param revision the REST server component source control revision string
*/
public void setRevision(String revision) {
this.revision = revision;
}

/*
* (non-Javadoc)
* @see java.lang.Object#toString()
Expand All @@ -158,6 +190,10 @@ public String toString() {
sb.append(serverVersion);
sb.append("] [Jersey: ");
sb.append(jerseyVersion);
sb.append("] [Version: ");
sb.append(version);
sb.append("] [Revision: ");
sb.append(revision);
sb.append("]\n");
return sb.toString();
}
Expand All @@ -170,6 +206,8 @@ public Message messageFromObject() {
builder.setOsVersion(osVersion);
builder.setServerVersion(serverVersion);
builder.setJerseyVersion(jerseyVersion);
builder.setVersion(version);
builder.setRevision(revision);
return builder.build();
}

Expand All @@ -192,6 +230,12 @@ public ProtobufMessageHandler getObjectFromMessage(CodedInputStream cis) throws
if (builder.hasJerseyVersion()) {
jerseyVersion = builder.getJerseyVersion();
}
if (builder.hasVersion()) {
version = builder.getVersion();
}
if (builder.hasRevision()) {
revision = builder.getRevision();
}
return this;
}
}
2 changes: 2 additions & 0 deletions hbase-rest/src/main/protobuf/VersionMessage.proto
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,6 @@ message Version {
optional string osVersion = 3;
optional string serverVersion = 4;
optional string jerseyVersion = 5;
optional string version = 6;
optional string revision = 7;
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import org.apache.hadoop.hbase.testclassification.MediumTests;
import org.apache.hadoop.hbase.testclassification.RestTests;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.VersionInfo;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.ClassRule;
Expand Down Expand Up @@ -77,8 +78,9 @@ public static void tearDownAfterClass() throws Exception {

private static void validate(VersionModel model) {
assertNotNull(model);
assertNotNull(model.getRESTVersion());
assertEquals(RESTServlet.VERSION_STRING, model.getRESTVersion());
String restVersion = model.getRESTVersion();
assertNotNull(restVersion);
assertEquals(RESTServlet.VERSION_STRING, restVersion);
String osVersion = model.getOSVersion();
assertNotNull(osVersion);
assertTrue(osVersion.contains(System.getProperty("os.name")));
Expand All @@ -94,6 +96,13 @@ private static void validate(VersionModel model) {
assertNotNull(jerseyVersion);
// TODO: fix when we actually get a jersey version
// assertEquals(jerseyVersion, ServletContainer.class.getPackage().getImplementationVersion());

String version = model.getVersion();
assertNotNull(version);
assertEquals(VersionInfo.getVersion(), version);
String revision = model.getRevision();
assertNotNull(revision);
assertEquals(VersionInfo.getRevision(), revision);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,19 +37,25 @@ public class TestVersionModel extends TestModelBase<VersionModel> {
private static final String JVM_VERSION = "Sun Microsystems Inc. 1.6.0_13-11.3-b02";
private static final String JETTY_VERSION = "6.1.14";
private static final String JERSEY_VERSION = "1.1.0-ea";
private static final String VERSION = "4.0.0-alpha-1-SNAPSHOT";
private static final String REVISION = "5085d27ab17d857118a96ae3f37c00b60c925471";

public TestVersionModel() throws Exception {
super(VersionModel.class);
AS_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Version JVM=\"Sun "
+ "Microsystems Inc. 1.6.0_13-11.3-b02\" Jersey=\"1.1.0-ea\" "
+ "OS=\"Linux 2.6.18-128.1.6.el5.centos.plusxen amd64\" REST=\"0.0.1\" Server=\"6.1.14\"/>";
+ "OS=\"Linux 2.6.18-128.1.6.el5.centos.plusxen amd64\" REST=\"0.0.1\" Server=\"6.1.14\" "
+ "Version=\"4.0.0-alpha-1-SNAPSHOT\" "
+ "Revision=\"5085d27ab17d857118a96ae3f37c00b60c925471\"/>";

AS_PB = "CgUwLjAuMRInU3VuIE1pY3Jvc3lzdGVtcyBJbmMuIDEuNi4wXzEzLTExLjMtYjAyGi1MaW51eCAy"
+ "LjYuMTgtMTI4LjEuNi5lbDUuY2VudG9zLnBsdXN4ZW4gYW1kNjQiBjYuMS4xNCoIMS4xLjAtZWE=";
AS_PB = "CgUwLjAuMRInU3VuIE1pY3Jvc3lzdGVtcyBJbmMuIDEuNi4wXzEzLTExLjMtYjAyGi1MaW51eCAyLjYuMTg"
+ "tMTI4LjEuNi5lbDUuY2VudG9zLnBsdXN4ZW4gYW1kNjQiBjYuMS4xNCoIMS4xLjAtZWEyFjQuMC4wLWFscGhhLT"
+ "EtU05BUFNIT1Q6KDUwODVkMjdhYjE3ZDg1NzExOGE5NmFlM2YzN2MwMGI2MGM5MjU0NzE=";

AS_JSON = "{\"JVM\":\"Sun Microsystems Inc. 1.6.0_13-11.3-b02\",\"Jersey\":\"1.1.0-ea\","
+ "\"OS\":\"Linux 2.6.18-128.1.6.el5.centos.plusxen amd64\",\""
+ "REST\":\"0.0.1\",\"Server\":\"6.1.14\"}";
+ "REST\":\"0.0.1\",\"Server\":\"6.1.14\", \"Version\":\"4.0.0-alpha-1-SNAPSHOT\","
+ "\"Revision\":\"5085d27ab17d857118a96ae3f37c00b60c925471\"}";
}

@Override
Expand All @@ -60,6 +66,8 @@ protected VersionModel buildTestModel() {
model.setJVMVersion(JVM_VERSION);
model.setServerVersion(JETTY_VERSION);
model.setJerseyVersion(JERSEY_VERSION);
model.setVersion(VERSION);
model.setRevision(REVISION);
return model;
}

Expand All @@ -70,5 +78,7 @@ protected void checkModel(VersionModel model) {
assertEquals(JVM_VERSION, model.getJVMVersion());
assertEquals(JETTY_VERSION, model.getServerVersion());
assertEquals(JERSEY_VERSION, model.getJerseyVersion());
assertEquals(VERSION, model.getVersion());
assertEquals(REVISION, model.getRevision());
}
}