Skip to content

Commit a6d17ff

Browse files
authored
Merge pull request #257 from Dokyeongyun/ft-220524-windowServerOSDiskMonitoring
ft-220524-windowServerOSDiskMonitoring
2 parents 4342b95 + cabf3e5 commit a6d17ff

File tree

3 files changed

+69
-5
lines changed

3 files changed

+69
-5
lines changed

Repository/src/main/java/root/repository/implement/LinuxServerMonitoringRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public List<OSDiskUsage> checkOSDiskUsage() {
7373
return list;
7474
}
7575

76-
public List<OSDiskUsage> stringToOsDiskUsageList(String result) {
76+
private List<OSDiskUsage> stringToOsDiskUsageList(String result) {
7777
StringTokenizer st = new StringTokenizer(result);
7878
List<String> header = Arrays
7979
.asList(new String[] { "Filesystem", "1024-blocks", "Used", "Available", "Capacity", "Mounted on" });

Repository/src/main/java/root/repository/implement/WindowServerMonitoringRepository.java

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package root.repository.implement;
22

3+
import java.util.ArrayList;
4+
import java.util.Arrays;
35
import java.util.List;
46
import java.util.StringTokenizer;
57

@@ -50,7 +52,7 @@ public String checkAlertLog(AlertLogCommand alc) {
5052
try {
5153
String command = String.format("tail -%d %s", alc.getReadLine() - 1, alc.getReadFilePath());
5254
result = jsch.executeCommand(command);
53-
result = result.replace("\r\n", "\n");
55+
// result = result.replace("\r\n", "\n");
5456
} catch (Exception e) {
5557
log.error(e.getMessage());
5658
}
@@ -60,6 +62,65 @@ public String checkAlertLog(AlertLogCommand alc) {
6062

6163
@Override
6264
public List<OSDiskUsage> checkOSDiskUsage() {
63-
return null;
65+
List<OSDiskUsage> list = new ArrayList<>();
66+
try {
67+
String command = "wmic logicaldisk get deviceid,filesystem,size,freespace";
68+
String result = jsch.executeCommand(command);
69+
list = stringToOsDiskUsageList(result);
70+
} catch (Exception e) {
71+
log.error(e.getMessage());
72+
}
73+
74+
return list;
75+
}
76+
77+
private List<OSDiskUsage> stringToOsDiskUsageList(String result) {
78+
StringTokenizer st = new StringTokenizer(result);
79+
List<String> header = Arrays.asList(new String[] { "DeviceID", "FileSystem", "FreeSpace", "Size" });
80+
List<OSDiskUsage> list = new ArrayList<>();
81+
82+
boolean isHeader = true;
83+
int index = 0;
84+
85+
OSDiskUsage row = new OSDiskUsage();
86+
while (st.hasMoreElements()) {
87+
String next = st.nextToken();
88+
if (!isHeader) {
89+
String headerName = header.get(index++);
90+
91+
switch (headerName) {
92+
case "DeviceID":
93+
row.setMountedOn(next);
94+
break;
95+
case "FileSystem":
96+
row.setFileSystem(next);
97+
break;
98+
case "FreeSpace":
99+
row.setFreeSpace(Double.valueOf(next));
100+
break;
101+
case "Size":
102+
row.setTotalSpace(Double.valueOf(next));
103+
break;
104+
}
105+
106+
if (index == 4) {
107+
double total = row.getTotalSpace();
108+
double free = row.getFreeSpace();
109+
double used = total - free;
110+
row.setUsedSpace(used);
111+
row.setUsedPercent(used / total * 100);
112+
113+
list.add(row);
114+
row = new OSDiskUsage();
115+
index = 0;
116+
}
117+
}
118+
119+
if (next.equals("Size")) {
120+
isHeader = false;
121+
}
122+
}
123+
124+
return list;
64125
}
65126
}

Repository/src/test/java/root/repository/implement/WindowServerMonitoringRepositoryTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package root.repository.implement;
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertTrue;
45
import static org.junit.jupiter.api.Assertions.fail;
56

67
import java.io.ByteArrayInputStream;
78
import java.io.IOException;
89
import java.io.InputStream;
910
import java.nio.file.Files;
1011
import java.nio.file.Paths;
12+
import java.util.List;
1113

1214
import org.junit.jupiter.api.AfterAll;
1315
import org.junit.jupiter.api.BeforeAll;
@@ -21,6 +23,7 @@
2123
import root.common.server.implement.JschConnectionInfo;
2224
import root.common.server.implement.JschServer;
2325
import root.common.server.implement.ServerOS;
26+
import root.core.domain.OSDiskUsage;
2427
import root.core.repository.constracts.ServerMonitoringRepository;
2528

2629
public class WindowServerMonitoringRepositoryTest {
@@ -130,9 +133,9 @@ public void testCheckAlertLog_Last10Lines() throws Exception {
130133
public void testCheckOSDiskUsage() {
131134
// Arrange
132135
// Act
133-
// List<OSDiskUsage> result = repo.checkOSDiskUsage();
136+
List<OSDiskUsage> result = repo.checkOSDiskUsage();
134137

135138
// Assert
136-
// assertTrue(result.size() != 0);
139+
assertTrue(result.size() != 0);
137140
}
138141
}

0 commit comments

Comments
 (0)