Пример #1
0
        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);
            }
        }
Пример #3
0
        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);
            }
        }