mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-15 00:15:15 +08:00
* Remove WebSocket4Net extension library * Remove UWP support * Drop support for all old frameworks * Update CI * Update CI * Update CI * Update CI * Remove obsolete code * Set default protocol version to 5.0.0 * Remove obsolete tests * Remove old dependencies * Reset release notes * Move server to dedicated project * Fix unit tests * Update and cleanup nuget packages * Fix unit tests Refactor code * No longer throw exception when receiving non success CONNACK * Enable nuget signing * Enable nuget signing * Enable nuget signing * Enable nuget signing * Enable nuget signing * Enable nuget signing * Enable nuget signing * Enable nuget signing * Enable code signing * Enable code signing * Enable code signing * Fix client endpoint handling * Improve CI * Fix CI * Fix CI * Fix CI * Fix CI * Import changes from version 4 * Cleanup target frameworks and remove obsolete code * Drop support for dotnet7.0 * Remove managed client * Version5 auditmode (#2016) Added NuGet audit mode and some other settings to get informed about security issues. * Address warnings from analyzers * Support for ReadOnlySequence as payload (#2046) * use ReadOnlySequence as payload * fix build * fix build * skip sign in forks * remove unnecessary owner * tests and extensions * remove test * simplify WritePacketBuffer, remove unused helper * Adjust namespaces * Fix build errors * Import latest fixes from main branch * Adjust namespaces --------- Co-authored-by: SeppPenner <HansM2013@gmx.de> Co-authored-by: Martin Regen <mregen@microsoft.com>
142 lines
4.2 KiB
C#
142 lines
4.2 KiB
C#
// Licensed to the .NET Foundation under one or more agreements.
|
|
// The .NET Foundation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using BenchmarkDotNet.Loggers;
|
|
using BenchmarkDotNet.Running;
|
|
using MQTTnet.Diagnostics;
|
|
|
|
namespace MQTTnet.Benchmarks
|
|
{
|
|
public static class Program
|
|
{
|
|
static int _selectedBenchmarkIndex;
|
|
static List<Type> _benchmarks;
|
|
|
|
public static void Main(string[] arguments)
|
|
{
|
|
_benchmarks = CollectBenchmarks();
|
|
HandleArguments(arguments);
|
|
|
|
while (true)
|
|
{
|
|
RenderMenu();
|
|
|
|
var key = Console.ReadKey(true);
|
|
|
|
if (key.Key == ConsoleKey.DownArrow)
|
|
{
|
|
_selectedBenchmarkIndex++;
|
|
if (_selectedBenchmarkIndex > _benchmarks.Count - 1)
|
|
{
|
|
_selectedBenchmarkIndex = 0;
|
|
}
|
|
}
|
|
else if (key.Key == ConsoleKey.UpArrow)
|
|
{
|
|
_selectedBenchmarkIndex--;
|
|
if (_selectedBenchmarkIndex < 0)
|
|
{
|
|
_selectedBenchmarkIndex = _benchmarks.Count - 1;
|
|
}
|
|
}
|
|
else if (key.Key == ConsoleKey.Escape)
|
|
{
|
|
Environment.Exit(0);
|
|
}
|
|
else if (key.Key == ConsoleKey.Enter)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
BenchmarkRunner.Run(_benchmarks[_selectedBenchmarkIndex]);
|
|
|
|
Console.ForegroundColor = ConsoleColor.Yellow;
|
|
Console.WriteLine("Press any key to exit");
|
|
Console.ReadLine();
|
|
}
|
|
|
|
static List<Type> CollectBenchmarks()
|
|
{
|
|
var benchmarks = new List<Type>();
|
|
|
|
var types = typeof(Program).Assembly.GetExportedTypes();
|
|
foreach (var type in types)
|
|
{
|
|
if (typeof(BaseBenchmark).IsAssignableFrom(type))
|
|
{
|
|
if (type != typeof(BaseBenchmark))
|
|
{
|
|
benchmarks.Add(type);
|
|
}
|
|
}
|
|
}
|
|
|
|
return benchmarks.OrderBy(b => b.Name).ToList();
|
|
}
|
|
|
|
static void HandleArguments(string[] arguments)
|
|
{
|
|
if (arguments.Length == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
// Allow for preselection to avoid developer frustration.
|
|
|
|
if (int.TryParse(arguments[0], out var benchmarkIndex))
|
|
{
|
|
_selectedBenchmarkIndex = benchmarkIndex;
|
|
return;
|
|
}
|
|
|
|
_selectedBenchmarkIndex = _benchmarks.FindIndex(b => b.Name.Equals(arguments[0]));
|
|
|
|
if (_selectedBenchmarkIndex < 0)
|
|
{
|
|
_selectedBenchmarkIndex = 0;
|
|
}
|
|
|
|
if (_selectedBenchmarkIndex > _benchmarks.Count - 1)
|
|
{
|
|
_selectedBenchmarkIndex = _benchmarks.Count - 1;
|
|
}
|
|
}
|
|
|
|
static void RenderMenu()
|
|
{
|
|
Console.Clear();
|
|
|
|
Console.WriteLine($"MQTTnet - Benchmarks");
|
|
Console.WriteLine("-----------------------------------------------");
|
|
Console.ForegroundColor = ConsoleColor.Yellow;
|
|
Console.WriteLine("Press arrow keys for benchmark selection");
|
|
Console.WriteLine("Press Enter for benchmark execution");
|
|
Console.WriteLine("Press Esc for exit");
|
|
Console.ForegroundColor = ConsoleColor.White;
|
|
Console.WriteLine();
|
|
|
|
for (var index = 0; index < _benchmarks.Count; index++)
|
|
{
|
|
var benchmark = _benchmarks[index];
|
|
|
|
if (_selectedBenchmarkIndex == index)
|
|
{
|
|
Console.Write("-> ");
|
|
}
|
|
else
|
|
{
|
|
Console.Write(" ");
|
|
}
|
|
|
|
Console.WriteLine(benchmark.Name);
|
|
}
|
|
|
|
Console.WriteLine();
|
|
}
|
|
}
|
|
} |