diff --git a/Jenkinsfile b/Jenkinsfile index 57893f2..5105580 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -11,10 +11,10 @@ pipeline { steps { /* calcolo numero versione... diverso x branch MASTER/DEVELOP */ script { - withEnv(['NEXT_BUILD_NUMBER=693']) { - // env.versionNumber = VersionNumber(versionNumberString : '3.4.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) - env.versionNumber = VersionNumber(versionNumberString : '3.4.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') - env.versionNumberBeta = VersionNumber(versionNumberString : '3.4.${BUILD_DATE_FORMATTED, "yyMM"}-beta.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') + withEnv(['NEXT_BUILD_NUMBER=695']) { + // env.versionNumber = VersionNumber(versionNumberString : '3.5.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) + env.versionNumber = VersionNumber(versionNumberString : '3.5.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') + env.versionNumberBeta = VersionNumber(versionNumberString : '3.5.${BUILD_DATE_FORMATTED, "yyMM"}-beta.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') env.APP_NAME = 'SteamWareLib' } } diff --git a/SteamWareLib/HwSwInfo.cs b/SteamWareLib/HwSwInfo.cs new file mode 100644 index 0000000..bbedd6b --- /dev/null +++ b/SteamWareLib/HwSwInfo.cs @@ -0,0 +1,244 @@ +using Microsoft.VisualBasic.Devices; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace SteamWare +{ + /// + /// Helper x estrarre dati sintetici su HW, Software, librerie installate... + /// + public class HwSwInfo + { + /// + /// Assembly di base + /// + protected static Assembly assembly = Assembly.GetExecutingAssembly(); + + /// + /// Restitusice l'elenco pareto (decrescente) delle dimensioni browser registrate + /// + public static string paretoBrowserSize + { + get + { + StringBuilder sb = new StringBuilder(); + string redHash = memLayer.ML.redHash("COUNT:wh:*"); + int numRec = memLayer.ML.redCountKey(redHash); + List> kvp = memLayer.ML.redGetCounterByKey(redHash, memLayer.kvpOrderBy.ValDesc); + + // riordino elenco + sb.AppendLine(string.Format("Trovate {0} combinazioni", numRec)); + foreach (var item in kvp) + { + sb.AppendLine(string.Format("{0}: {1}", item.Key.Replace(memLayer.ML.redHash("COUNT:wh:"), ""), item.Value)); + } + return sb.ToString(); + } + } + /// + /// Formatta un numero da int a size in Kb/Mb/Gb/Tb + /// + /// + /// + public static string memFormat(double rawSize) + { + string[] sizes = { "B", "KB", "MB", "GB", "TB" }; + int order = 0; + while (rawSize >= 1024 && order < sizes.Length - 1) + { + order++; + rawSize = rawSize / 1024; + } + + // Adjust the format string to your preferences. For example "{0:0.#}{1}" would + // show a single decimal place, and no space. + return String.Format("{0:0.##} {1}", rawSize, sizes[order]); + } + /// + /// Dati sui server redis... + /// + public static string redisServersData + { + get + { + StringBuilder sb = new StringBuilder(); + try + { + var servData = memLayer.ML.redServInfo(); + foreach (var item in servData) + { + sb.AppendLine(string.Format("Server: {0} | {1} | {2}", item, item.Version, item.ServerType)); + // da completare con altre info?!? + var srvInfo = item.Info(); + // esporto un pò di info x gruppo... + foreach (IGrouping> capitolo in srvInfo) + { + sb.AppendLine("----------------------------------------------"); + sb.AppendLine(string.Format("Capitolo: {0}", capitolo.Key)); + sb.AppendLine("----------------------------------------------"); + foreach (var kvp in capitolo) + { + sb.AppendLine(string.Format("{0}:{1}", kvp.Key, kvp.Value)); + } + + sb.AppendLine(); + } + } + } + catch (Exception exc) + { + logger.lg.scriviLog(string.Format("Errore in redisServersData{0}{1}", Environment.NewLine, exc), tipoLog.EXCEPTION); + } + return sb.ToString(); + } + } + /// + /// Stringa timing in gg, ore, ... da timespan + /// + /// + /// + public static string ToDateString(TimeSpan time) + { + return string.Format("{0}gg, {1:00}:{2:00}:{3:00} (h:m:s)", time.Days, time.Hours, time.Minutes, time.Seconds); + } + /// + /// Statistiche server + /// + public static string ServerStats + { + get + { + StringBuilder sb = new StringBuilder(); + try + { + // calcoli preliminari + TimeSpan uptime; + using (var uptimeCounter = new PerformanceCounter("System", "System Up Time")) + { + uptimeCounter.NextValue(); + uptime = TimeSpan.FromSeconds(uptimeCounter.NextValue()); + } + var computer = new ComputerInfo(); + + // compongo output + sb.AppendLine(string.Format("NAME: {0}", Environment.MachineName)); + sb.AppendLine(Environment.OSVersion.VersionString); + sb.AppendLine(string.Format("OS 64bit: {0} | PROC 64bit: {1}", Environment.Is64BitOperatingSystem, Environment.Is64BitProcess)); + sb.AppendLine(string.Format("SYS UPTIME: {0}", ToDateString(uptime))); + sb.AppendLine(string.Format("CPU: {0}", Environment.ProcessorCount)); + sb.AppendLine(string.Format("RAM: {0}", memFormat(computer.TotalPhysicalMemory))); + sb.AppendLine(string.Format("Virtual Memory: {0}", memFormat(computer.TotalVirtualMemory))); + sb.AppendLine(string.Format("Available RAM: {0}", memFormat(computer.AvailablePhysicalMemory))); + sb.AppendLine(string.Format("Available Virtual Memory: {0}", memFormat(computer.AvailableVirtualMemory))); + sb.AppendLine(string.Format("DIR: {0}", Environment.CurrentDirectory)); + sb.AppendLine(string.Format("USER: {0} | USER: {1}", Environment.UserDomainName, Environment.UserName)); + } + catch (Exception exc) + { + logger.lg.scriviLog(string.Format("Errore in ServerStats{0}{1}", Environment.NewLine, exc), tipoLog.EXCEPTION); + } + return sb.ToString(); + } + } + /// + /// Statistiche IIS + /// + public static string IISStats + { + get + { + StringBuilder sb = new StringBuilder(); + using (var iis = Process.GetCurrentProcess()) + { + //Process iis = Process.GetCurrentProcess(); + sb.AppendLine(string.Format("UPTIME: {0}", ToDateString(DateTime.Now - iis.StartTime))); + sb.AppendLine(string.Format("Priority: {0}", iis.PriorityClass)); + sb.AppendLine(string.Format("Physical Memory Used: {0}", memFormat(iis.WorkingSet64))); + sb.AppendLine(string.Format("Virtual Memory Used: {0}", memFormat(iis.VirtualMemorySize64))); + } + return sb.ToString(); + } + } + /// + /// Nome MainAssembly + /// + public static string mainAssembly + { + get + { + string answ = ""; + try + { + answ = assembly.FullName; + } + catch + { } + return answ; + } + } + /// + /// Runtime assembly + /// + public static string runtimeImg + { + get + { + string answ = ""; + try + { + answ = assembly.ImageRuntimeVersion; + } + catch + { } + return answ; + } + } + /// + /// Versioni di ogni libreria compresa + /// + public static string librariesVers + { + get + { + string answ = ""; + try + { + AssemblyName[] referencedAssemblyNames = assembly.GetReferencedAssemblies(); + foreach (AssemblyName referencedAssemblyName in referencedAssemblyNames.OrderBy(n => n.Name)) + { + answ += referencedAssemblyName.FullName + Environment.NewLine; + } + } + catch + { } + return answ; + } + } + /// + /// Num di librerie inserite + /// + public static int numLibraries + { + get + { + int numLib = 0; ; + try + { + AssemblyName[] referencedAssemblyNames = assembly.GetReferencedAssemblies(); + foreach (AssemblyName referencedAssemblyName in referencedAssemblyNames.OrderBy(n => n.Name)) + { + numLib++; + } + } + catch + { } + return numLib; + } + } + + } +} diff --git a/SteamWareLib/SteamWare.csproj b/SteamWareLib/SteamWare.csproj index ddffc42..20c848a 100644 --- a/SteamWareLib/SteamWare.csproj +++ b/SteamWareLib/SteamWare.csproj @@ -81,6 +81,7 @@ ..\packages\SharpZipLib.1.2.0\lib\net45\ICSharpCode.SharpZipLib.dll + ..\packages\MongoDB.Bson.2.9.3\lib\net452\MongoDB.Bson.dll @@ -227,6 +228,7 @@ Code +