fix: adjusted RAM top process parser (when the process has 0 PID and 0 in the usage)

This commit is contained in:
Serhiy Mytrovtsiy
2022-10-29 11:12:41 +02:00
parent 7608e95352
commit 3229ec8a79
2 changed files with 13 additions and 6 deletions

View File

@@ -154,10 +154,14 @@ public class ProcessReader: Reader<[TopProcess]> {
} }
static public func parseProcess(_ raw: String) -> TopProcess { static public func parseProcess(_ raw: String) -> TopProcess {
let str = raw.trimmingCharacters(in: .whitespaces) var str = raw.trimmingCharacters(in: .whitespaces)
let pidString = str.find(pattern: "^\\d+") let pidString = str.find(pattern: "^\\d+")
var arr = str.replacingOccurrences(of: pidString, with: "").split(separator: " ") if let range = str.range(of: pidString) {
str = str.replacingCharacters(in: range, with: "")
}
var arr = str.split(separator: " ")
if arr.first == "*" { if arr.first == "*" {
arr.removeFirst() arr.removeFirst()
} }

View File

@@ -55,12 +55,15 @@ class RAM: XCTestCase {
XCTAssertEqual(process.usage, 11 * Double(1024 * 1024 * 1024)) XCTAssertEqual(process.usage, 11 * Double(1024 * 1024 * 1024))
} }
func testReplacePID() throws { func testKernelTask() throws {
let raw = "0 kernel_task 270M " var process = ProcessReader.parseProcess("0 kernel_task 270M ")
let process = ProcessReader.parseProcess(raw)
XCTAssertEqual(process.pid, 0) XCTAssertEqual(process.pid, 0)
XCTAssertEqual(process.command, "kernel_task") XCTAssertEqual(process.command, "kernel_task")
XCTAssertEqual(process.usage, 270 * Double(1024 * 1024)) XCTAssertEqual(process.usage, 270 * Double(1024 * 1024))
process = ProcessReader.parseProcess("0 kernel_task 280M")
XCTAssertEqual(process.pid, 0)
XCTAssertEqual(process.command, "kernel_task")
XCTAssertEqual(process.usage, 280 * Double(1024 * 1024))
} }
} }