Skip to content

Commit 99ff0bf

Browse files
committed
Add report for instance to send
1 parent edcf3f4 commit 99ff0bf

File tree

4 files changed

+336
-1
lines changed

4 files changed

+336
-1
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.gitblit.instance;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
5+
/**
6+
* GitblitInstanceReport collects the static and dynamic statistics about a running
7+
* Gitblit instance, pairs it with a report version and instance id.
8+
* This can then be send to the popularity report server.
9+
*
10+
*/
11+
class GitblitInstanceReport
12+
{
13+
private final int reportVersion = 1;
14+
@SerializedName("instance")
15+
private final String instanceId;
16+
final GitblitInstanceStat instanceStat;
17+
18+
GitblitInstanceReport(String instanceId, GitblitInstanceStat instanceStat)
19+
{
20+
this.instanceId = instanceId;
21+
this.instanceStat = instanceStat;
22+
}
23+
}
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
package com.gitblit.instance;
2+
3+
import com.gitblit.models.ServerStatus;
4+
5+
import java.util.Date;
6+
7+
/**
8+
* GitblitInstanceStat collects the static information about a Gitblit instance,
9+
* such as its version, type, operating system and other static data.
10+
*
11+
*/
12+
class GitblitInstanceStat
13+
{
14+
15+
enum GitblitInstanceType {
16+
GO,
17+
WAR,
18+
EXPRESS,
19+
DOCKER
20+
}
21+
22+
final GitblitInstanceType instanceType;
23+
24+
String version;
25+
Date startTs;
26+
String os;
27+
String osName;
28+
String osVersion;
29+
String osArch;
30+
String javaVersion;
31+
String javaVendor;
32+
String javaRuntimeVersion;
33+
String javaRuntimeName;
34+
String javaVmVersion;
35+
String javaVmName;
36+
long maxMem;
37+
38+
39+
GitblitInstanceStat()
40+
{
41+
this.instanceType = GitblitInstanceType.WAR;
42+
initOS();
43+
initJava();
44+
}
45+
46+
GitblitInstanceStat(GitblitInstanceType instanceType)
47+
{
48+
this.instanceType = instanceType;
49+
initOS();
50+
initJava();
51+
}
52+
53+
54+
GitblitInstanceStat init(ServerStatus serverStatus)
55+
{
56+
this.version = serverStatus.version;
57+
this.startTs = serverStatus.bootDate;
58+
59+
this.maxMem = serverStatus.heapMaximum;
60+
61+
return this;
62+
}
63+
64+
65+
void initOS()
66+
{
67+
String os = System.getProperty("os.name");
68+
if (os == null) {
69+
this.os = "Unknown";
70+
} else {
71+
String oslc = os.toLowerCase();
72+
if (oslc.contains("windows")) {
73+
this.os = "Windows";
74+
} else if (oslc.contains("linux")) {
75+
this.os = "Linux";
76+
} else if (oslc.contains("mac") || oslc.contains("darwin")) {
77+
this.os = "macOS";
78+
} else if (oslc.contains("bsd")) {
79+
this.os = "BSD";
80+
} else if (oslc.contains("solaris") || oslc.contains("sun") ||
81+
oslc.contains("aix") || oslc.contains("hpux") || oslc.contains("unix")) {
82+
this.os = "Unix";
83+
} else {
84+
this.os = os;
85+
}
86+
}
87+
88+
this.osName = System.getProperty("os.name");
89+
this.osVersion = System.getProperty("os.version");
90+
this.osArch = System.getProperty("os.arch");
91+
}
92+
93+
void initJava()
94+
{
95+
this.javaVersion = System.getProperty("java.version");
96+
this.javaVendor = System.getProperty("java.vendor");
97+
this.javaRuntimeVersion = System.getProperty("java.runtime.version", "");
98+
this.javaRuntimeName = System.getProperty("java.runtime.name", "");
99+
this.javaVmVersion = System.getProperty("java.vm.version", "");
100+
this.javaVmName = System.getProperty("java.vm.name", "");
101+
}
102+
103+
104+
105+
@Override
106+
public String toString()
107+
{
108+
StringBuilder sb = new StringBuilder();
109+
sb.append("GitblitInstanceStat {")
110+
.append("\n instanceType: ").append(instanceType)
111+
.append(",\n version: ").append(version)
112+
.append(",\n startTs: ").append(startTs)
113+
.append(",\n os: ").append(os)
114+
.append(",\n osName: ").append(osName)
115+
.append(",\n osVersion: ").append(osVersion)
116+
.append(",\n osArch: ").append(osArch)
117+
.append(",\n javaVersion: ").append(javaVersion)
118+
.append(",\n javaVendor: ").append(javaVendor)
119+
.append(",\n javaRuntimeVersion: ").append(javaRuntimeVersion)
120+
.append(",\n javaRuntimeName: ").append(javaRuntimeName)
121+
.append(",\n javaVmVersion: ").append(javaVmVersion)
122+
.append(",\n javaVmName: ").append(javaVmName)
123+
.append(",\n maxMem: ").append(maxMem)
124+
.append("\n}");
125+
return sb.toString();
126+
}
127+
}
Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
package com.gitblit.instance;
2+
3+
import com.gitblit.Constants;
4+
import com.gitblit.models.ServerStatus;
5+
import org.junit.Before;
6+
import org.junit.Test;
7+
8+
import java.util.Date;
9+
10+
import static org.junit.Assert.assertEquals;
11+
import static org.junit.Assert.assertFalse;
12+
import static org.junit.Assert.assertNotNull;
13+
import static org.junit.Assert.assertTrue;
14+
15+
public class GitblitInstanceStatTest
16+
{
17+
18+
protected GitblitInstanceStat instanceStat;
19+
protected ServerStatus serverStatus;
20+
21+
@Before
22+
public void setUp() throws Exception
23+
{
24+
instanceStat = new GitblitInstanceStat();
25+
serverStatus = new ServerStatus();
26+
instanceStat.init(serverStatus);
27+
}
28+
29+
30+
@Test
31+
public void testGetVersion()
32+
{
33+
String version = instanceStat.version;
34+
assertNotNull(version);
35+
assertFalse(version.isEmpty());
36+
assertEquals(Constants.getVersion(), version);
37+
}
38+
39+
@Test
40+
public void testGetStartTs()
41+
{
42+
Date date = instanceStat.startTs;
43+
assertNotNull(date);
44+
assertEquals(serverStatus.bootDate, date);
45+
}
46+
47+
@Test
48+
public void testGetType()
49+
{
50+
String type = instanceStat.instanceType.name();
51+
assertNotNull(type);
52+
assertFalse(type.isEmpty());
53+
assertEquals("WAR", type);
54+
}
55+
56+
@Test
57+
public void testGetOS()
58+
{
59+
String os = instanceStat.os;
60+
61+
String oslc = System.getProperty("os.name").toLowerCase();
62+
63+
if (oslc.contains("windows")) {
64+
assertEquals("Windows", os);
65+
}
66+
else if (oslc.contains("linux")) {
67+
assertEquals("Linux", os);
68+
}
69+
else if (oslc.contains("mac")) {
70+
assertEquals("macOS", os);
71+
}
72+
}
73+
74+
@Test
75+
public void testGetOSName()
76+
{
77+
String name = instanceStat.osName;
78+
assertNotNull(name);
79+
assertFalse(name.isEmpty());
80+
assertEquals(System.getProperty("os.name"), name);
81+
}
82+
83+
@Test
84+
public void testGetOSVersion()
85+
{
86+
String version = instanceStat.osVersion;
87+
assertNotNull(version);
88+
assertFalse(version.isEmpty());
89+
assertEquals(System.getProperty("os.version"), version);
90+
}
91+
92+
@Test
93+
public void testGetOSArch()
94+
{
95+
String arch = instanceStat.osArch;
96+
assertNotNull(arch);
97+
assertFalse(arch.isEmpty());
98+
assertEquals(System.getProperty("os.arch"), arch);
99+
}
100+
101+
@Test
102+
public void testGetJavaVersion()
103+
{
104+
String version = instanceStat.javaVersion;
105+
assertNotNull(version);
106+
assertFalse(version.isEmpty());
107+
assertEquals(System.getProperty("java.version"), version);
108+
}
109+
110+
@Test
111+
public void testGetJavaVendor()
112+
{
113+
String vendor = instanceStat.javaVendor;
114+
assertNotNull(vendor);
115+
assertFalse(vendor.isEmpty());
116+
assertEquals(System.getProperty("java.vendor"), vendor);
117+
}
118+
119+
@Test
120+
public void testGetJavaRuntimeVersion()
121+
{
122+
String rt = instanceStat.javaRuntimeVersion;
123+
assertNotNull(rt);
124+
assertFalse(rt.isEmpty());
125+
assertEquals(System.getProperty("java.runtime.version"), rt);
126+
}
127+
128+
@Test
129+
public void testGetJavaRuntimeName()
130+
{
131+
String rt = instanceStat.javaRuntimeName;
132+
assertNotNull(rt);
133+
assertFalse(rt.isEmpty());
134+
assertEquals(System.getProperty("java.runtime.name"), rt);
135+
}
136+
137+
@Test
138+
public void testGetJavaVmVersion()
139+
{
140+
String vm = instanceStat.javaVmVersion;
141+
assertNotNull(vm);
142+
assertFalse(vm.isEmpty());
143+
assertEquals(System.getProperty("java.vm.version"), vm);
144+
}
145+
146+
@Test
147+
public void testGetJavaVmName()
148+
{
149+
String vm = instanceStat.javaVmName;
150+
assertNotNull(vm);
151+
assertFalse(vm.isEmpty());
152+
assertEquals(System.getProperty("java.vm.name"), vm);
153+
}
154+
155+
@Test
156+
public void testGetMaxMem()
157+
{
158+
long maxMem = instanceStat.maxMem;
159+
assertTrue(maxMem > 0);
160+
assertEquals(Runtime.getRuntime().maxMemory(), maxMem);
161+
}
162+
163+
@Test
164+
public void testToString()
165+
{
166+
String str = instanceStat.toString();
167+
assertNotNull(str);
168+
assertFalse(str.isEmpty());
169+
assertTrue(str.contains("GitblitInstanceStat"));
170+
assertTrue(str.contains("version"));
171+
assertTrue(str.contains("instanceType"));
172+
assertTrue(str.contains("os"));
173+
assertTrue(str.contains("osName"));
174+
assertTrue(str.contains("osVersion"));
175+
assertTrue(str.contains("osArch"));
176+
assertTrue(str.contains("javaVersion"));
177+
assertTrue(str.contains("javaVendor"));
178+
assertTrue(str.contains("javaRuntimeVersion"));
179+
assertTrue(str.contains("javaRuntimeName"));
180+
assertTrue(str.contains("javaVmVersion"));
181+
assertTrue(str.contains("javaVmName"));
182+
183+
}
184+
}

src/test/java/com/gitblit/tests/GitBlitSuite.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.util.zip.ZipInputStream;
2828

2929
import com.gitblit.instance.GitblitInstanceIdTest;
30+
import com.gitblit.instance.GitblitInstanceStatTest;
3031
import com.gitblit.utils.TimeUtilsTest;
3132
import org.eclipse.jgit.api.Git;
3233
import org.eclipse.jgit.lib.Repository;
@@ -76,7 +77,7 @@
7677
BranchTicketServiceTest.class, RedisTicketServiceTest.class, AuthenticationManagerTest.class,
7778
SshKeysDispatcherTest.class, UITicketTest.class, PathUtilsTest.class, SshKerberosAuthenticationTest.class,
7879
GravatarTest.class, FilestoreManagerTest.class, FilestoreServletTest.class, TicketReferenceTest.class,
79-
GitblitInstanceIdTest.class })
80+
GitblitInstanceIdTest.class, GitblitInstanceStatTest.class })
8081
public class GitBlitSuite {
8182

8283
public static final File BASEFOLDER = new File("data");

0 commit comments

Comments
 (0)