PageRenderTime 27ms CodeModel.GetById 0ms RepoModel.GetById 1ms app.codeStats 0ms

/opup/src/old/java/ShowResults.java

https://bitbucket.org/jwalton/opup
Java | 154 lines | 121 code | 30 blank | 3 comment | 12 complexity | f6696c4051d672c785add41fe73dc4b5 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. import java.io.File;
  2. import java.io.FileWriter;
  3. import java.io.IOException;
  4. import java.io.Writer;
  5. import java.util.ArrayList;
  6. import java.util.Arrays;
  7. import java.util.HashMap;
  8. import java.util.HashSet;
  9. import java.util.List;
  10. import java.util.Map;
  11. import java.util.Properties;
  12. import java.util.TreeMap;
  13. import com.atlassian.labs.opup.BuildResult;
  14. import com.atlassian.labs.opup.ItemResults;
  15. import org.apache.commons.io.FileUtils;
  16. import org.apache.maven.artifact.versioning.ArtifactVersion;
  17. import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
  18. import org.apache.velocity.Template;
  19. import org.apache.velocity.VelocityContext;
  20. import org.apache.velocity.app.VelocityEngine;
  21. public class ShowResults
  22. {
  23. public static void main(String[] args) throws IOException
  24. {
  25. Map<String, String> commits = new HashMap<String, String>();
  26. for (String c : FileUtils.readLines(new File("target/commit.keys")))
  27. {
  28. String[] sa = c.split(",", 2);
  29. commits.put(sa[0], sa[1]);
  30. }
  31. Map<String, Boolean> passes = new HashMap<String, Boolean>();
  32. for (String pf : FileUtils.readLines(new File("opup-log/build-pass-fail")))
  33. {
  34. String[] sa = pf.split(",");
  35. passes.put(sa[0], Boolean.valueOf(sa[1].equals("good")));
  36. }
  37. List<ItemResults> allResults = new ArrayList<ItemResults>();
  38. for (String change : FileUtils.readLines(new File("target/change.keys")))
  39. {
  40. String[] sa = change.split(",");
  41. ItemResults results = new ItemResults();
  42. results.key = sa[0];
  43. Map<ArtifactVersion, BuildResult> buildResults = new TreeMap<ArtifactVersion, BuildResult>();
  44. for (int i = 1; i < sa.length; i++)
  45. {
  46. String k = sa[0] + ':' + sa[i];
  47. BuildResult result = new BuildResult();
  48. result.ran = false;
  49. String commit = commits.get(k);
  50. if (commit != null)
  51. {
  52. Boolean pf = passes.get(commit);
  53. if (pf != null)
  54. {
  55. result.ran = true;
  56. result.passed = pf.booleanValue();
  57. result.logfile = "../opup-log/build-log-" + commit + ".txt";
  58. }
  59. }
  60. buildResults.put(new DefaultArtifactVersion(sa[i]), result);
  61. }
  62. implicitise(buildResults, Arrays.asList(sa).subList(1, sa.length));
  63. results.results = buildResults;
  64. allResults.add(results);
  65. }
  66. VelocityEngine ve = new VelocityEngine();
  67. Properties props = new Properties();
  68. props.setProperty("resource.loader", "class");
  69. props.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
  70. props.setProperty("eventhandler.referenceinsertion.class", "org.apache.velocity.app.event.implement.EscapeHtmlReference");
  71. ve.init(props);
  72. VelocityContext ctxt = new VelocityContext();
  73. // ctxt.put("groupId", groupId);
  74. // ctxt.put("artifactId", artifactId);
  75. ctxt.put("results", allResults);
  76. Template template = ve.getTemplate("/com/atlassian/labs/opup/results.vm");
  77. Writer w = new FileWriter("target/results.html");
  78. try
  79. {
  80. template.merge(ctxt, w);
  81. w.flush();
  82. }
  83. finally
  84. {
  85. w.close();
  86. }
  87. }
  88. private static void implicitise(Map<ArtifactVersion, BuildResult> buildResults, List<String> subList)
  89. {
  90. /* Current version passes implicitly */
  91. ArtifactVersion current = new DefaultArtifactVersion(subList.get(0));
  92. if (!buildResults.get(current).ran)
  93. {
  94. BuildResult br = new BuildResult();
  95. br.ran = false;
  96. br.passed = true;
  97. buildResults.put(current, br);
  98. }
  99. Map<ArtifactVersion, BuildResult> implied = new HashMap<ArtifactVersion, BuildResult>();
  100. boolean haveRealResults = false;
  101. boolean noFailures = true;
  102. for (String s : subList)
  103. {
  104. ArtifactVersion v = new DefaultArtifactVersion(s);
  105. BuildResult real = buildResults.get(v);
  106. if (real.ran)
  107. {
  108. haveRealResults = true;
  109. noFailures &= real.passed;
  110. }
  111. else
  112. {
  113. BuildResult ibr = new BuildResult();
  114. ibr.ran = false;
  115. ibr.passed = noFailures;
  116. implied.put(v, ibr);
  117. }
  118. }
  119. if (haveRealResults)
  120. {
  121. buildResults.putAll(implied);
  122. }
  123. }
  124. }