)]}'
{"cloud/agent/hwreport.go":[{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2d4d10805dd5a33973959d8200c15d0bde5e680f","unresolved":true,"context_lines":[{"line_number":103,"context_line":"func (c *hwReportContext) gatherCPU() {"},{"line_number":104,"context_line":"\tswitch runtime.GOARCH {"},{"line_number":105,"context_line":"\tcase \"amd64\":"},{"line_number":106,"context_line":"\t\t// Currently a rather simple gatherer with no special NUMA handling"},{"line_number":107,"context_line":"\t\tcpuinfoRaw, err :\u003d os.ReadFile(\"/proc/cpuinfo\")"},{"line_number":108,"context_line":"\t\tif err !\u003d nil {"},{"line_number":109,"context_line":"\t\t\tc.errors \u003d append(c.errors, fmt.Errorf(\"unable to read cpuinfo: %w\", err))"}],"source_content_type":"text/x-go","patch_set":3,"id":"5c2b6179_ab8fb672","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":69},"updated":"2023-01-12 13:39:27.000000000","message":"Factor this out and document it a bit more please. It\u0027s really difficult to tell what\u0027s going on here.","commit_id":"c66ca719b9df05b2dbb2a1cbb0a71a914db69146"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"56ea8430c4fc4f2245b7f72eb4a2ac7aec5c6dd3","unresolved":true,"context_lines":[{"line_number":103,"context_line":"func (c *hwReportContext) gatherCPU() {"},{"line_number":104,"context_line":"\tswitch runtime.GOARCH {"},{"line_number":105,"context_line":"\tcase \"amd64\":"},{"line_number":106,"context_line":"\t\t// Currently a rather simple gatherer with no special NUMA handling"},{"line_number":107,"context_line":"\t\tcpuinfoRaw, err :\u003d os.ReadFile(\"/proc/cpuinfo\")"},{"line_number":108,"context_line":"\t\tif err !\u003d nil {"},{"line_number":109,"context_line":"\t\t\tc.errors \u003d append(c.errors, fmt.Errorf(\"unable to read cpuinfo: %w\", err))"}],"source_content_type":"text/x-go","patch_set":3,"id":"ff567606_4e767c58","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":69},"in_reply_to":"2deb068e_af38614a","updated":"2023-01-16 12:14:03.000000000","message":"Then please at least factor this out into a testable function and add a test for this parser, so that we know when it breaks - and what input it\u0027s really implemented/tested against.","commit_id":"c66ca719b9df05b2dbb2a1cbb0a71a914db69146"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"25bd031b612c6f7241dddf87304f0f8b385833be","unresolved":true,"context_lines":[{"line_number":103,"context_line":"func (c *hwReportContext) gatherCPU() {"},{"line_number":104,"context_line":"\tswitch runtime.GOARCH {"},{"line_number":105,"context_line":"\tcase \"amd64\":"},{"line_number":106,"context_line":"\t\t// Currently a rather simple gatherer with no special NUMA handling"},{"line_number":107,"context_line":"\t\tcpuinfoRaw, err :\u003d os.ReadFile(\"/proc/cpuinfo\")"},{"line_number":108,"context_line":"\t\tif err !\u003d nil {"},{"line_number":109,"context_line":"\t\t\tc.errors \u003d append(c.errors, fmt.Errorf(\"unable to read cpuinfo: %w\", err))"}],"source_content_type":"text/x-go","patch_set":3,"id":"2deb068e_af38614a","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":69},"in_reply_to":"5c2b6179_ab8fb672","updated":"2023-01-12 18:49:36.000000000","message":"Added some more comments but this is parsing a kind of terrible format, other than switching to a parser generator I don\u0027t think this is going to get much nicer.","commit_id":"c66ca719b9df05b2dbb2a1cbb0a71a914db69146"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"04cad246a7e070785e92bf21d2b700fdd4f45307","unresolved":false,"context_lines":[{"line_number":103,"context_line":"func (c *hwReportContext) gatherCPU() {"},{"line_number":104,"context_line":"\tswitch runtime.GOARCH {"},{"line_number":105,"context_line":"\tcase \"amd64\":"},{"line_number":106,"context_line":"\t\t// Currently a rather simple gatherer with no special NUMA handling"},{"line_number":107,"context_line":"\t\tcpuinfoRaw, err :\u003d os.ReadFile(\"/proc/cpuinfo\")"},{"line_number":108,"context_line":"\t\tif err !\u003d nil {"},{"line_number":109,"context_line":"\t\t\tc.errors \u003d append(c.errors, fmt.Errorf(\"unable to read cpuinfo: %w\", err))"}],"source_content_type":"text/x-go","patch_set":3,"id":"78a0994b_d828e061","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":69},"in_reply_to":"ff567606_4e767c58","updated":"2023-01-17 13:02:47.000000000","message":"Done","commit_id":"c66ca719b9df05b2dbb2a1cbb0a71a914db69146"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2d4d10805dd5a33973959d8200c15d0bde5e680f","unresolved":true,"context_lines":[{"line_number":181,"context_line":"\t\t\tcontinue"},{"line_number":182,"context_line":"\t\t}"},{"line_number":183,"context_line":"\t\tvar bd api.BlockDevice"},{"line_number":184,"context_line":"\t\tif rotational, err :\u003d os.ReadFile(sysfsDir + \"/queue/rotational\"); err \u003d\u003d nil {"},{"line_number":185,"context_line":"\t\t\tif strings.TrimSpace(string(rotational)) \u003d\u003d \"1\" {"},{"line_number":186,"context_line":"\t\t\t\tbd.Rotational \u003d true"},{"line_number":187,"context_line":"\t\t\t}"}],"source_content_type":"text/x-go","patch_set":3,"id":"e590edfe_cb970b57","line":184,"range":{"start_line":184,"start_character":23,"end_line":184,"end_character":67},"updated":"2023-01-12 13:39:27.000000000","message":"Might make sense to create a helper function here that does the read, int parse and error append in one go.","commit_id":"c66ca719b9df05b2dbb2a1cbb0a71a914db69146"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"56ea8430c4fc4f2245b7f72eb4a2ac7aec5c6dd3","unresolved":false,"context_lines":[{"line_number":181,"context_line":"\t\t\tcontinue"},{"line_number":182,"context_line":"\t\t}"},{"line_number":183,"context_line":"\t\tvar bd api.BlockDevice"},{"line_number":184,"context_line":"\t\tif rotational, err :\u003d os.ReadFile(sysfsDir + \"/queue/rotational\"); err \u003d\u003d nil {"},{"line_number":185,"context_line":"\t\t\tif strings.TrimSpace(string(rotational)) \u003d\u003d \"1\" {"},{"line_number":186,"context_line":"\t\t\t\tbd.Rotational \u003d true"},{"line_number":187,"context_line":"\t\t\t}"}],"source_content_type":"text/x-go","patch_set":3,"id":"bd3854cd_71cb9332","line":184,"range":{"start_line":184,"start_character":23,"end_line":184,"end_character":67},"in_reply_to":"943d2cb0_3572ab3d","updated":"2023-01-16 12:14:03.000000000","message":"Ack","commit_id":"c66ca719b9df05b2dbb2a1cbb0a71a914db69146"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"25bd031b612c6f7241dddf87304f0f8b385833be","unresolved":true,"context_lines":[{"line_number":181,"context_line":"\t\t\tcontinue"},{"line_number":182,"context_line":"\t\t}"},{"line_number":183,"context_line":"\t\tvar bd api.BlockDevice"},{"line_number":184,"context_line":"\t\tif rotational, err :\u003d os.ReadFile(sysfsDir + \"/queue/rotational\"); err \u003d\u003d nil {"},{"line_number":185,"context_line":"\t\t\tif strings.TrimSpace(string(rotational)) \u003d\u003d \"1\" {"},{"line_number":186,"context_line":"\t\t\t\tbd.Rotational \u003d true"},{"line_number":187,"context_line":"\t\t\t}"}],"source_content_type":"text/x-go","patch_set":3,"id":"943d2cb0_3572ab3d","line":184,"range":{"start_line":184,"start_character":23,"end_line":184,"end_character":67},"in_reply_to":"e590edfe_cb970b57","updated":"2023-01-12 18:49:36.000000000","message":"I tried that, with additional error handling considerations and handling of both \"optional\" and required files it doesn\u0027t really save any code.","commit_id":"c66ca719b9df05b2dbb2a1cbb0a71a914db69146"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2d4d10805dd5a33973959d8200c15d0bde5e680f","unresolved":true,"context_lines":[{"line_number":239,"context_line":"\t\t\t}"},{"line_number":240,"context_line":"\t\t\tc.node.BlockDevice \u003d append(c.node.BlockDevice, \u0026bd)"},{"line_number":241,"context_line":"\t\t}"},{"line_number":242,"context_line":"\t\tif strings.HasPrefix(bde.Name(), \"sd\") {"},{"line_number":243,"context_line":"\t\t\tbd.Protocol \u003d api.BlockDevice_SCSI"},{"line_number":244,"context_line":"\t\t\tscsiDev, err :\u003d scsi.Open(\"/dev/\" + bde.Name())"},{"line_number":245,"context_line":"\t\t\tif err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":3,"id":"8c2e0fdd_d2027e4d","line":242,"range":{"start_line":242,"start_character":2,"end_line":242,"end_character":42},"updated":"2023-01-12 13:39:27.000000000","message":"I would probably split out all these per-device-protocol handlers into separate functions for readability (return instead of continue, etc).","commit_id":"c66ca719b9df05b2dbb2a1cbb0a71a914db69146"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"25bd031b612c6f7241dddf87304f0f8b385833be","unresolved":false,"context_lines":[{"line_number":239,"context_line":"\t\t\t}"},{"line_number":240,"context_line":"\t\t\tc.node.BlockDevice \u003d append(c.node.BlockDevice, \u0026bd)"},{"line_number":241,"context_line":"\t\t}"},{"line_number":242,"context_line":"\t\tif strings.HasPrefix(bde.Name(), \"sd\") {"},{"line_number":243,"context_line":"\t\t\tbd.Protocol \u003d api.BlockDevice_SCSI"},{"line_number":244,"context_line":"\t\t\tscsiDev, err :\u003d scsi.Open(\"/dev/\" + bde.Name())"},{"line_number":245,"context_line":"\t\t\tif err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":3,"id":"737d96bf_9f95826b","line":242,"range":{"start_line":242,"start_character":2,"end_line":242,"end_character":42},"in_reply_to":"8c2e0fdd_d2027e4d","updated":"2023-01-12 18:49:36.000000000","message":"Done","commit_id":"c66ca719b9df05b2dbb2a1cbb0a71a914db69146"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2d4d10805dd5a33973959d8200c15d0bde5e680f","unresolved":true,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":"var speedModeRegexp \u003d regexp.MustCompile(\"^([0-9]+)base\")"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"const mibps \u003d (1000 * 1000) / 8"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"func (c *hwReportContext) gatherNICs() {"},{"line_number":304,"context_line":"\tlinks, err :\u003d netlink.LinkList()"}],"source_content_type":"text/x-go","patch_set":3,"id":"ec212ed2_8f8071f0","line":301,"range":{"start_line":301,"start_character":6,"end_line":301,"end_character":11},"updated":"2023-01-12 13:39:27.000000000","message":"mbps, not mibps?","commit_id":"c66ca719b9df05b2dbb2a1cbb0a71a914db69146"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"25bd031b612c6f7241dddf87304f0f8b385833be","unresolved":false,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":"var speedModeRegexp \u003d regexp.MustCompile(\"^([0-9]+)base\")"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"const mibps \u003d (1000 * 1000) / 8"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"func (c *hwReportContext) gatherNICs() {"},{"line_number":304,"context_line":"\tlinks, err :\u003d netlink.LinkList()"}],"source_content_type":"text/x-go","patch_set":3,"id":"f91de9f1_ad849efb","line":301,"range":{"start_line":301,"start_character":6,"end_line":301,"end_character":11},"in_reply_to":"ec212ed2_8f8071f0","updated":"2023-01-12 18:49:36.000000000","message":"Done","commit_id":"c66ca719b9df05b2dbb2a1cbb0a71a914db69146"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"56ea8430c4fc4f2245b7f72eb4a2ac7aec5c6dd3","unresolved":true,"context_lines":[{"line_number":111,"context_line":"\t\t}"},{"line_number":112,"context_line":"\t\t// Parse line-by-line, each segment is separated by a line with no colon"},{"line_number":113,"context_line":"\t\t// character, a  segment describes a logical processor if it contains"},{"line_number":114,"context_line":"\t\t// the key \"processor\". Keep track of all seen core IDs (physical"},{"line_number":115,"context_line":"\t\t// processors) and processor IDs (physical processors) in a map to fill"},{"line_number":116,"context_line":"\t\t// into the structure."},{"line_number":117,"context_line":"\t\ts :\u003d bufio.NewScanner(bytes.NewReader(cpuinfoRaw))"},{"line_number":118,"context_line":"\t\tvar cpu api.CPU"}],"source_content_type":"text/x-go","patch_set":5,"id":"ce22104b_39e85138","line":115,"range":{"start_line":114,"start_character":58,"end_line":115,"end_character":56},"updated":"2023-01-16 12:14:03.000000000","message":"I assume they\u0027re not supposed to be both “(physical processors)”.","commit_id":"7b9708ac2b902e4c6d6bb76b37c01974b7113538"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"04cad246a7e070785e92bf21d2b700fdd4f45307","unresolved":false,"context_lines":[{"line_number":111,"context_line":"\t\t}"},{"line_number":112,"context_line":"\t\t// Parse line-by-line, each segment is separated by a line with no colon"},{"line_number":113,"context_line":"\t\t// character, a  segment describes a logical processor if it contains"},{"line_number":114,"context_line":"\t\t// the key \"processor\". Keep track of all seen core IDs (physical"},{"line_number":115,"context_line":"\t\t// processors) and processor IDs (physical processors) in a map to fill"},{"line_number":116,"context_line":"\t\t// into the structure."},{"line_number":117,"context_line":"\t\ts :\u003d bufio.NewScanner(bytes.NewReader(cpuinfoRaw))"},{"line_number":118,"context_line":"\t\tvar cpu api.CPU"}],"source_content_type":"text/x-go","patch_set":5,"id":"27601270_78f4c957","line":115,"range":{"start_line":114,"start_character":58,"end_line":115,"end_character":56},"in_reply_to":"ce22104b_39e85138","updated":"2023-01-17 13:02:47.000000000","message":"Done","commit_id":"7b9708ac2b902e4c6d6bb76b37c01974b7113538"}],"cloud/agent/hwreport_test.go":[{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"21b137f7e290f8b6a4c153c6b7fc0950102d46e0","unresolved":true,"context_lines":[{"line_number":71,"context_line":"\t\t\tif len(errs) \u003e 0 {"},{"line_number":72,"context_line":"\t\t\t\tt.Fatal(errs[0])"},{"line_number":73,"context_line":"\t\t\t}"},{"line_number":74,"context_line":"\t\t\tassert.Equal(t, c.expected.Vendor, res.Vendor, \"vendor mismatch\")"},{"line_number":75,"context_line":"\t\t\tassert.Equal(t, c.expected.Model, res.Model, \"model mismatch\")"},{"line_number":76,"context_line":"\t\t\tassert.Equal(t, c.expected.Cores, res.Cores, \"cores mismatch\")"},{"line_number":77,"context_line":"\t\t\tassert.Equal(t, c.expected.HardwareThreads, res.HardwareThreads, \"hardware threads mismatch\")"}],"source_content_type":"text/x-go","patch_set":6,"id":"4bafa9e6_3ebca329","line":74,"range":{"start_line":74,"start_character":3,"end_line":74,"end_character":15},"updated":"2023-01-18 10:11:07.000000000","message":"Feel free to use github.com/google/go-cmp here to make this a bit less verbose. It\u0027s good for golden value tests like these (and IIRC has protobuf support, too).","commit_id":"f1ee7725cf0de096b4e6681898ce94e6276b8814"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"7c6376f048c499486cc8982ef2a4551682f35ef7","unresolved":false,"context_lines":[{"line_number":71,"context_line":"\t\t\tif len(errs) \u003e 0 {"},{"line_number":72,"context_line":"\t\t\t\tt.Fatal(errs[0])"},{"line_number":73,"context_line":"\t\t\t}"},{"line_number":74,"context_line":"\t\t\tassert.Equal(t, c.expected.Vendor, res.Vendor, \"vendor mismatch\")"},{"line_number":75,"context_line":"\t\t\tassert.Equal(t, c.expected.Model, res.Model, \"model mismatch\")"},{"line_number":76,"context_line":"\t\t\tassert.Equal(t, c.expected.Cores, res.Cores, \"cores mismatch\")"},{"line_number":77,"context_line":"\t\t\tassert.Equal(t, c.expected.HardwareThreads, res.HardwareThreads, \"hardware threads mismatch\")"}],"source_content_type":"text/x-go","patch_set":6,"id":"219105a4_8de62603","line":74,"range":{"start_line":74,"start_character":3,"end_line":74,"end_character":15},"in_reply_to":"4bafa9e6_3ebca329","updated":"2023-01-24 13:39:52.000000000","message":"Tell you what, let\u0027s just get on with it for now.","commit_id":"f1ee7725cf0de096b4e6681898ce94e6276b8814"}]}
