From 6cd93dfa32d0ad0773a161b29bc1da360cee018d Mon Sep 17 00:00:00 2001 From: Schwirg László Date: Fri, 10 Nov 2023 10:06:54 +0100 Subject: [PATCH] - teszt eljárások hozzáadása --- Vrh.Log4Pro.MaintenanceConsole/Program.cs | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 116 insertions(+), 6 deletions(-) diff --git a/Vrh.Log4Pro.MaintenanceConsole/Program.cs b/Vrh.Log4Pro.MaintenanceConsole/Program.cs index fda6f94..d9efbfa 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Program.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Program.cs @@ -30,6 +30,8 @@ using Vrh.XmlProcessing; using VRH.Common; using System.Xml.Linq; using System.Reflection; +using System.Messaging; +using System.IO; namespace Vrh.Log4Pro.MaintenanceConsole { @@ -37,7 +39,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole { static void Main(string[] args) { - //TESTS.GetWorkingProcesses(); + //TESTS.MSMQTest(); //return; var forcedmodulekey = CommandLine.GetCommandLineArgument(args, CLP.CMD_MODULE); var commandmode = !string.IsNullOrEmpty(forcedmodulekey); @@ -90,28 +92,136 @@ namespace Vrh.Log4Pro.MaintenanceConsole ColorConsole.PressAnykeyToContinue(); } } - public static class TESTS + public static class TESTS { public static void GetWorkingProcesses() - { + { using (ServerManager manager = new ServerManager()) { var workerprocesses = manager.ApplicationPools.SelectMany(pool => pool.WorkerProcesses); var workerprocessesCount = workerprocesses.Count(); Console.WriteLine($"Number of worker processes: {workerprocessesCount}"); foreach (var wp in workerprocesses) - { + { Console.WriteLine($"process AppPoolName: {wp.AppPoolName}, process ProcessId: {wp.ProcessId}, process State: {wp.State}, process IsLocallyStored: {wp.IsLocallyStored}"); Console.WriteLine($" ApplicationDomains: {wp.ApplicationDomains.Count()}"); foreach (var ad in wp.ApplicationDomains) - { + { Console.WriteLine($" VirtualPath: {ad.VirtualPath}, PhysicalPath: {ad.PhysicalPath}"); } - } + } } Console.ReadKey(); } } + public static class MSMQTESTS + { + public static void MSMQTest() + { + using (var myNewQueue = new MessageQueue(@"SLNOTEBOOKDELL\private$\LJSTOWEBALM")) + { + while (true) + { + Console.WriteLine("Set formatter (ActiveXMessageFormatter(A),BinaryMessageFormatter(B),XmlMessageFormatter(X)):"); + var msgformatter = Console.ReadLine(); + if (string.IsNullOrEmpty(msgformatter)|| msgformatter.ToLower()=="a") msgformatter = "ActiveXMessageFormatter"; + if (msgformatter.ToLower() == "x") msgformatter = "XmlMessageFormatter"; + if (msgformatter.ToLower() == "b") msgformatter = "BinaryMessageFormatter"; + Console.WriteLine("Set encoding (Default(d),UTF8(8),UTF7(7),UTF32(32),Unicode(U),BigEndianUnicode(B),ASCII(A),none:"); + var msgencoding = Console.ReadLine(); + if (string.IsNullOrEmpty(msgencoding) || msgencoding.ToLower() == "8") msgencoding = "UTF8"; + if (msgencoding.ToLower() == "7") msgencoding = "UTF7"; + if (msgencoding.ToLower() == "32") msgencoding = "UTF32"; + if (msgencoding.ToLower() == "a") msgencoding = "ASCII"; + if (msgencoding.ToLower() == "d") msgencoding = "Default"; + if (msgencoding.ToLower() == "b") msgencoding = "BigEndianUnicode"; + if (msgencoding.ToLower() == "u") msgencoding = "Unicode"; + + Console.WriteLine("Set message to send:"); + var text = Console.ReadLine(); + if (string.IsNullOrEmpty(text)) text= "ABCDabcd12345#$@{}[]"; + MSMQSend(myNewQueue, msgformatter, msgencoding, text); + Console.WriteLine("Press a key to read back and remove..."); + Console.ReadKey(); + var message = MSMQRead(myNewQueue, msgformatter, msgencoding); + Console.WriteLine($"MessageBody ({msgformatter},{msgencoding}):{message}"); + Console.WriteLine("------------------------------------------------------------"); + + if (Console.ReadLine().ToLower() == "ex") break; + } + return; + } + } + private static void MSMQSend(MessageQueue msmq, string msgformatter, string msgencoding, string text) + { + Message msg = new System.Messaging.Message(); + msg.Formatter = SetFormatter(msgformatter); + if (msg.Formatter is XmlMessageFormatter) { msg.Body = text; } + else + { + var enc = SetEncoding(msgencoding); + if (enc == null) { msg.Body = text; } + else { msg.BodyStream = new MemoryStream(enc.GetBytes(text)); } + } + msg.Label = msgformatter + "_" + msgencoding; + msmq.Send(msg); + Console.WriteLine($"Message: {text}, Label:{msg.Label}"); + } + private static string MSMQRead(MessageQueue msmq, string msgformatter, string msgencoding) + { + string msgBody = null; + using (var e = msmq.GetMessageEnumerator2()) + { + if (!e.MoveNext(new TimeSpan(0, 0, 10))) return "no more message"; + System.Messaging.Message msg = e.Current; + + StreamReader reader; + msg.Formatter = SetFormatter(msgformatter); + if (msg.Formatter is XmlMessageFormatter) + { + ((XmlMessageFormatter)msg.Formatter).TargetTypes = new Type[] { typeof(string), }; + msgBody = (string)msg.Body; + } + else + { + var enc = SetEncoding(msgencoding); + if (enc == null) { msgBody = (string)msg.Body; } + else { reader = new StreamReader(msg.BodyStream, enc); msgBody = reader.ReadToEnd(); } + } + e.RemoveCurrent(); + } + return msgBody; + } + public static IMessageFormatter SetFormatter(string formattername) + { + IMessageFormatter mf; + switch (formattername) + { + case "XmlMessageFormatter": mf = new XmlMessageFormatter(); break; + case "BinaryMessageFormatter": mf = new BinaryMessageFormatter(); break; + default: + case "ActiveXMessageFormatter": mf = new ActiveXMessageFormatter(); break; + } + return mf; + } + public static Encoding SetEncoding(string encodingname) + { + Encoding enc; + switch (encodingname) + { + case "none": enc = null; break; + case "UTF7": enc = Encoding.UTF7; break; + case "UTF8": enc = Encoding.UTF8; break; + case "UTF32": enc = Encoding.UTF32; break; + case "Unicode": enc = Encoding.Unicode; break; + case "BigEndianUnicode": enc = Encoding.BigEndianUnicode; break; + case "ASCII": enc = Encoding.ASCII; break; + default: + case "Default": enc = Encoding.Default; break; + } + return enc; + } + } #region MaintenanceConsoleXmlProcessor class public class MaintenanceConsoleXmlProcessor : XmlParser -- libgit2 0.21.2