Skip to content
Merged
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
117 changes: 66 additions & 51 deletions src/jdiskmark/UtilOs.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

Expand Down Expand Up @@ -228,6 +229,8 @@ static public String getPartitionFromFilePathLinux(Path path) {
System.out.println("filePath=" + path.toString());
try {
ProcessBuilder pb = new ProcessBuilder("df", "-k", path.toString());
Map<String, String> env = pb.environment();
env.put("LC_ALL", "C"); // set language to english
pb.redirectErrorStream(true);
Process process = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
Expand Down Expand Up @@ -256,6 +259,8 @@ static public List<String> getDeviceNamesFromPartitionLinux(String partition) {
List<String> deviceNames = new ArrayList<>();
try {
ProcessBuilder pb = new ProcessBuilder("lsblk", "-no", "pkname", partition);
Map<String, String> env = pb.environment();
env.put("LC_ALL", "C"); // set language to english
pb.redirectErrorStream(true);
Process process = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
Expand Down Expand Up @@ -286,6 +291,8 @@ static public List<String> getDeviceNamesFromPartitionLinux(String partition) {
static public String getDeviceModelLinux(String devicePath) {
try {
ProcessBuilder pb = new ProcessBuilder("lsblk", devicePath, "--output", "MODEL");
Map<String, String> env = pb.environment();
env.put("LC_ALL", "C"); // set language to english
pb.redirectErrorStream(true);
Process process = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
Expand Down Expand Up @@ -329,6 +336,8 @@ static public String getDeviceSizeLinux(String devicePath) {
System.out.println("getting size of " + devicePath);
try {
ProcessBuilder pb = new ProcessBuilder("lsblk", devicePath, "--output", "SIZE");
Map<String, String> env = pb.environment();
env.put("LC_ALL", "C"); // set language to english
pb.redirectErrorStream(true);
Process process = pb.start();

Expand All @@ -349,6 +358,8 @@ static public String getDeviceSizeLinux(String devicePath) {
static public String getDeviceFromPathMacOs(Path path) {
try {
ProcessBuilder pb = new ProcessBuilder("df", "-k", path.toString());
Map<String, String> env = pb.environment();
env.put("LC_ALL", "C"); // set language to english
pb.redirectErrorStream(true);
Process process = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
Expand All @@ -365,57 +376,59 @@ static public String getDeviceFromPathMacOs(Path path) {
return null;
}

static public String getDeviceModelMacOs(String devicePath) {
static public String getDeviceModelMacOs(String devicePath) {

if (devicePath == null || devicePath.isEmpty()) {
throw new IllegalArgumentException("Invalid device path");
}
if (devicePath == null || devicePath.isEmpty()) {
throw new IllegalArgumentException("Invalid device path");
}

try {
ProcessBuilder pb = new ProcessBuilder("diskutil", "info", devicePath);
pb.redirectErrorStream(true);
Process process = pb.start();
try {
ProcessBuilder pb = new ProcessBuilder("diskutil", "info", devicePath);
Map<String, String> env = pb.environment();
env.put("LC_ALL", "C"); // set language to english
pb.redirectErrorStream(true);
Process process = pb.start();

BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
if (line.contains("Device / Media Name:")) {
return line.split("Device / Media Name:")[1].trim();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
if (line.contains("Device / Media Name:")) {
return line.split("Device / Media Name:")[1].trim();
}
}
} catch (IOException e) {
LOGGER.log(Level.SEVERE, null, e);
}
} catch (IOException e) {
LOGGER.log(Level.SEVERE, null, e);
}

String deviceId = devicePath;
if (deviceId.contains("/dev/")) {
deviceId = deviceId.split("/dev/")[1];
}
String deviceId = devicePath;
if (deviceId.contains("/dev/")) {
deviceId = deviceId.split("/dev/")[1];
}

try {
ProcessBuilder pb = new ProcessBuilder("system_profiler", "SPStorageDataType");
pb.redirectErrorStream(true);
Process process = pb.start();

try {
ProcessBuilder pb = new ProcessBuilder("system_profiler", "SPStorageDataType");
pb.redirectErrorStream(true);
Process process = pb.start();

BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
if (line.contains(deviceId)) {
// Lines after deviceId
String lineAfterId;
while ((lineAfterId = reader.readLine()) != null) {
if (lineAfterId.contains("Device Name: ")) {
return lineAfterId.split("Device Name: ")[1];
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
if (line.contains(deviceId)) {
// Lines after deviceId
String lineAfterId;
while ((lineAfterId = reader.readLine()) != null) {
if (lineAfterId.contains("Device Name: ")) {
return lineAfterId.split("Device Name: ")[1];
}
}
}
}
} catch (IOException e) {
LOGGER.log(Level.SEVERE, null, e);
}
} catch (IOException e) {
LOGGER.log(Level.SEVERE, null, e);
}

return "Model unavailable for " + deviceId;
}
return "Model unavailable for " + deviceId;
}

static public void flushDataToDriveMacOs() {
flushDataToDriveLinux();
Expand Down Expand Up @@ -530,8 +543,8 @@ public static boolean isRunningAsRootMacOs() {

public static boolean isRunningAsRootLinux() {
try {
ProcessBuilder processBuilder = new ProcessBuilder("id", "-u");
Process process = processBuilder.start();
ProcessBuilder pb = new ProcessBuilder("id", "-u");
Process process = pb.start();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
String line = reader.readLine();
if (line != null) {
Expand Down Expand Up @@ -699,8 +712,8 @@ public static DiskUsageInfo parseDiskUsageInfoWindows(List<String> outputLines)

public static String getProcessorNameWindows() {
try {
ProcessBuilder processBuilder = new ProcessBuilder("wmic", "cpu", "get", "Name");
Process process = processBuilder.start();
ProcessBuilder pb = new ProcessBuilder("wmic", "cpu", "get", "Name");
Process process = pb.start();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
String line;
while ((line = reader.readLine()) != null) {
Expand All @@ -724,8 +737,10 @@ public static String getProcessorNameWindows() {

public static String getProcessorNameMacOS() {
try {
ProcessBuilder processBuilder = new ProcessBuilder("sysctl", "-n", "machdep.cpu.brand_string");
Process process = processBuilder.start();
ProcessBuilder pb = new ProcessBuilder("sysctl", "-n", "machdep.cpu.brand_string");
Map<String, String> env = pb.environment();
env.put("LC_ALL", "C"); // set language to english
Process process = pb.start();

try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
String line = reader.readLine();
Expand All @@ -741,16 +756,16 @@ public static String getProcessorNameMacOS() {
public static String getProcessorNameLinux() {
try {
// Use lscpu command to get details about the CPU
ProcessBuilder processBuilder = new ProcessBuilder("lscpu");
Process process = processBuilder.start();

ProcessBuilder pb = new ProcessBuilder("lscpu");
Map<String, String> env = pb.environment();
env.put("LC_ALL", "C"); // set language to english
Process process = pb.start();

try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
String line;
while ((line = reader.readLine()) != null) {
// Search for the line starting with "Model name:"
if (line.startsWith("Model name:")
|| line.trim().startsWith("Nombre del modelo")) {

if (line.startsWith("Model name:")) {
// Extract the processor name after the colon
return line.substring(line.indexOf(":") + 2).trim();
}
Expand Down