Esempio n. 1
0
    private void ExtractStatistics(TreeNode treeNode = null) {
      StringBuilder sb = new StringBuilder();
      Resource resource = treeNode == null ? null : treeNode.Tag as Resource;
      ISet<Resource> resources = treeNode == null ? selectedResources : new HashSet<Resource>(treeNode.DescendantNodes().Select(x => x.Tag as Resource)); ;
      IEnumerable<SlaveGroup> slaveGroups = resources.OfType<SlaveGroup>();
      IEnumerable<Slave> slaves = resources.OfType<Slave>();
      int cpuSpeed = 0, cores = 0, freeCores = 0, memory = 0, freeMemory = 0;
      string contextString = treeNode == null ? "Selected" : "Included";

      if (resources.Any() || resource != null) {
        foreach (Slave s in slaves) {
          cpuSpeed += s.CpuSpeed.GetValueOrDefault();
          cores += s.Cores.GetValueOrDefault();
          freeCores += s.FreeCores.GetValueOrDefault();
          memory += s.Memory.GetValueOrDefault();
          freeMemory += s.FreeMemory.GetValueOrDefault();
        }
        if (resource != null) {
          if (resource is SlaveGroup) sb.Append("Slave group: ");
          else if (resource is Slave) {
            sb.Append("Slave: ");
            if (!resources.Any()) {
              Slave s = resource as Slave;
              cpuSpeed = s.CpuSpeed.GetValueOrDefault();
              cores = s.Cores.GetValueOrDefault();
              freeCores = s.FreeCores.GetValueOrDefault();
              memory = s.Memory.GetValueOrDefault();
              freeMemory = s.FreeMemory.GetValueOrDefault();
            }
          }
          sb.AppendLine(string.Format("{0}", resource.Name));
        }
        if (resource == null || resource is SlaveGroup) {
          if (resources.Any()) {
            sb.AppendFormat("{0} slave groups ({1}): ", contextString, slaveGroups.Count());
            foreach (SlaveGroup sg in slaveGroups) sb.AppendFormat("{0}; ", sg.Name);
            sb.AppendLine();
            sb.AppendFormat("{0} slaves ({1}): ", contextString, slaves.Count());
            foreach (Slave s in slaves) sb.AppendFormat("{0}; ", s.Name);
            sb.AppendLine();
          } else {
            sb.Append("The selection does not inlcude any further resources.");
          }
        }
        sb.AppendLine();
        sb.AppendLine(string.Format("CPU speed: {0} MHz", cpuSpeed));
        if (resources.Any()) sb.AppendLine(string.Format("Avg. CPU speed: {0:0.00} MHz", (double)cpuSpeed / resources.Count()));
        sb.AppendLine(string.Format("Cores: {0}", cores));
        sb.AppendLine(string.Format("Free cores: {0}", freeCores));
        if (resources.Any()) sb.AppendLine(string.Format("Avg. free cores: {0:0.00}", (double)freeCores / resources.Count()));
        sb.AppendLine(string.Format("Memory: {0} MB", memory));
        sb.AppendFormat("Free memory: {0} MB", freeMemory);
        if (resources.Any()) sb.Append(string.Format("{0}Avg. free memory: {1:0.00} MB", Environment.NewLine, (double)freeMemory / resources.Count()));
      } else {
        sb.Append("No resources selected.");
      }

      descriptionTextBox.Text = sb.ToString();
    }