diff --git a/LoadTest/Program.cs b/LoadTest/Program.cs index 9ff9364..c4bfb4c 100644 --- a/LoadTest/Program.cs +++ b/LoadTest/Program.cs @@ -1,9 +1,109 @@ -namespace LoadTest; +//creare un programma che genera tante chiamate HTTP con inserimento di +//URL + eventuale Token +//Body +//Per quanto tempo fare il test +//Metodo HTTP +//Numero Thread(?) -class Program +using System.Diagnostics; +using System.Net.Sockets; + +namespace LoadTest; + +internal class Program { - static void Main(string[] args) + private static void Main(string[] args) { - Console.WriteLine("Hello, World!"); + string? url = null; + string? body = null; + string? header = null; + string? token = null; + string? methodHttp = null; + string? time; + long? lTime; + string? yn; + Stopwatch sw; + + Console.WriteLine("Load Test"); + do + { + Console.WriteLine("Insert Method Http (GET/POST): "); + methodHttp = Console.ReadLine(); + } while (string.IsNullOrEmpty(methodHttp) && (methodHttp?.ToUpper() != "GET" || methodHttp?.ToUpper() != "POST")); + + do + { + Console.WriteLine("Insert URL: "); + url = Console.ReadLine(); + url = "https://" + url; + } while (string.IsNullOrEmpty(url) && url != "https://"); + + if (methodHttp == "POST") + { + do + { + Console.WriteLine("Insert Body: "); + body = Console.ReadLine(); + } while (string.IsNullOrEmpty(body)); + } + + do + { + Console.WriteLine("Is Authentication required? (Y/N)"); + yn = Console.ReadLine(); + } while(string.IsNullOrEmpty(yn) && (yn?.ToLower() != ConsoleKey.Y.ToString().ToLower() || yn?.ToLower() != ConsoleKey.N.ToString().ToLower())); + + if (yn?.ToLower() == "y") + { + do + { + Console.WriteLine("Header"); + header = Console.ReadLine(); + } while (string.IsNullOrEmpty(header)); + do + { + Console.WriteLine("Token: "); + token = Console.ReadLine(); + } while (string.IsNullOrEmpty(token)); + } + + do + { + Console.WriteLine("Insert Time in seconds: "); + time = Console.ReadLine(); + + } while (string.IsNullOrEmpty(time)); + lTime = long.Parse(time) * 1000; + + using var client = new HttpClient() ; + if (yn == "y" && !string.IsNullOrEmpty(token) && !string.IsNullOrEmpty(header)) + { + client.DefaultRequestHeaders.Add(header, token); + } + switch (methodHttp.ToUpper()) + { + case "GET": + sw = Stopwatch.StartNew(); + + while (sw.ElapsedMilliseconds < lTime) + { + Console.WriteLine("GET " + url + $" [{sw.ElapsedMilliseconds / 1000.0} s]"); + client.GetAsync(url); + } + sw.Stop(); + break; + case "POST": + if (!string.IsNullOrEmpty(body)) + { + sw = Stopwatch.StartNew(); + while (sw.ElapsedMilliseconds < lTime) + { + Console.WriteLine("POST" + url + $" [{sw.ElapsedMilliseconds / 1000.0} s]"); + client.PostAsync(url, new StringContent(body)); + } + sw.Stop(); + } + break; + } } } \ No newline at end of file