public void Collect(HostMetrics metrics) { var deltaSeconds = stopwatch.Elapsed.TotalSeconds; var newDisksStatsInfo = new Dictionary <string, DiskStats>(); var disksUsageInfo = new Dictionary <string, DiskUsageInfo>(); foreach (var diskStats in ParseDiskstats(diskStatsReader.ReadLines())) { var result = new DiskUsageInfo { DiskName = diskStats.DiskName }; if (previousDisksStatsInfo.TryGetValue(diskStats.DiskName, out var previousDiskStats)) { FillInfo(result, previousDiskStats, diskStats, deltaSeconds); } disksUsageInfo[result.DiskName] = result; newDisksStatsInfo[diskStats.DiskName] = diskStats; } metrics.DisksUsageInfo = disksUsageInfo; previousDisksStatsInfo = newDisksStatsInfo; stopwatch.Restart(); }
public void Should_be_reusable() { var path = Path.GetTempFileName(); using var reader = new ReusableFileReader(path); for (var i = 1; i < 10; i++) { var data = Enumerable.Range(0, i).Select(i => $"{i} = {Guid.NewGuid()}").ToArray(); File.WriteAllText(path, string.Join(Environment.NewLine, data)); reader.ReadFirstLine().Should().Be(data[0]); reader.ReadLines().Should().BeEquivalentTo(data); } }
private void UpdateMountMap() { mountDiskMap = new Dictionary <string, string>(); try { foreach (var mountLine in mountsReaderLinux.ReadLines()) { if (FileParser.TrySplitLine(mountLine, 2, out var parts) && parts[0].Contains("/dev/")) { mountDiskMap[parts[1]] = parts[0]; } } } catch (Exception error) { InternalErrorLogger.Warn(error); } }