public async Task DataItemRegexPrometheusProcessorTest()
 {
     (string mimeType, object data)result = (null, null);
     for (int i = 0; i < 1000; i++)
     {
         var serviceProcessor = new ServiceProcessor();
         serviceProcessor.InitializeProcessors();
         var processor = serviceProcessor.DataItemRegexPrometheusProcessor;
         var service   = new HWiNFOProvider();
         result = await processor(service, null);
     }
     var metricDump = String.Join(Environment.NewLine, result);
 }
示例#2
0
        private async Task <ContentResult> getPrometheusContent(string filter)
        {
            ContentResult content;
            var           processor = ServiceProcessor.DataItemRegexPrometheusProcessor;
            {
                var dump = new HWiNFOProvider();
            }
            var processingTasks = Services.Select(item => processor(item, null));
            await Task.WhenAll(processingTasks);

            var processingResults = processingTasks.Select(item => item.Result).ToArray();

            var validMimeType = System.Net.Mime.MediaTypeNames.Text.Plain;
            var invalidMimes  = processingResults.Where(item => item.mimeType != validMimeType).Select(item => item.mimeType)
                                .Distinct()
                                .OrderBy(item => item)
                                .ToArray();

            if (invalidMimes.Any())
            {
                string errorList = String.Join(", ", invalidMimes);
                throw new NotSupportedException($"Not supported mime type(s): {errorList}");
            }

            IEnumerable <string> combinedResults = processingResults
                                                   .Select(item => item.data as string)
                                                   .Where(item => item != null)
                                                   .SelectMany(item => item.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries))
                                                   .ToArray();


            if (filter != null && filter.ToLower() != DebugFilterName)
            {
                combinedResults = combinedResults.Where(item =>
                                                        item.Contains(filter, StringComparison.InvariantCultureIgnoreCase));
            }

            const string ProperLineEnd = "\n";

            var textContent = String.Join(ProperLineEnd, combinedResults);

            if (!textContent.EndsWith(ProperLineEnd))
            {
                textContent += ProperLineEnd;
            }
            content = Content(textContent);
            return(content);
        }
        public async Task ServiceProcessorMemoryLeakTestHWInfo()
        {
            (string mimeType, object data)result = (null, null);
            for (int i = 0; i < 10000; i++)
            {
                var serviceProcessor = new ServiceProcessor();
                serviceProcessor.InitializeProcessors();
                var processor = serviceProcessor.DataItemRegexPrometheusProcessor;
                var service   = new HWiNFOProvider();
                result = await processor(service, null);

                Debug.WriteLine($"Current loop: {i}");
            }
            var textDump   = result.data?.ToString();
            var metricDump = String.Join(Environment.NewLine, textDump);
        }
        public async Task ServiceProcessorMemoryLeakTestHWInfoRaw()
        {
            (string mimeType, object data)result = (null, null);
            for (int i = 0; i < 100000; i++)
            {
                var provider = new HWiNFOProvider();
                await provider.Open();

                await provider.GetDataItems();

                await provider.Close();

                Debug.WriteLine($"Current loop: {i}");
            }
            var textDump   = result.data?.ToString();
            var metricDump = String.Join(Environment.NewLine, textDump);
        }