src/Pure/Admin/build_status.scala
changeset 67738 1bbe618c4b24
parent 67003 49850a679c2c
child 67739 e512938b853c
equal deleted inserted replaced
67737:8af6fcdc869d 67738:1bbe618c4b24
    94       finished_entries_size >= 3 &&
    94       finished_entries_size >= 3 &&
    95       finished_entries.forall(entry =>
    95       finished_entries.forall(entry =>
    96         entry.maximum_heap > 0 ||
    96         entry.maximum_heap > 0 ||
    97         entry.average_heap > 0 ||
    97         entry.average_heap > 0 ||
    98         entry.stored_heap > 0)
    98         entry.stored_heap > 0)
       
    99 
       
   100     def make_csv: CSV.File =
       
   101     {
       
   102       val header =
       
   103         List("session_name",
       
   104           "chapter",
       
   105           "pull_date",
       
   106           "isabelle_version",
       
   107           "afp_version",
       
   108           "timing_elapsed",
       
   109           "timing_cpu",
       
   110           "timing_gc",
       
   111           "ml_timing_elapsed",
       
   112           "ml_timing_cpu",
       
   113           "ml_timing_gc",
       
   114           "maximum_heap",
       
   115           "average_heap",
       
   116           "stored_heap",
       
   117           "status")
       
   118       val date_format = Date.Format("uuuu-MM-dd HH:mm:ss")
       
   119       val records =
       
   120         for (entry <- entries) yield {
       
   121           CSV.Record(name,
       
   122             entry.chapter,
       
   123             date_format(entry.pull_date),
       
   124             entry.isabelle_version,
       
   125             entry.afp_version,
       
   126             entry.timing.elapsed.ms,
       
   127             entry.timing.cpu.ms,
       
   128             entry.timing.gc.ms,
       
   129             entry.ml_timing.elapsed.ms,
       
   130             entry.ml_timing.cpu.ms,
       
   131             entry.ml_timing.gc.ms,
       
   132             entry.maximum_heap,
       
   133             entry.average_heap,
       
   134             entry.stored_heap,
       
   135             entry.status)
       
   136         }
       
   137       CSV.File(name, header, records)
       
   138     }
    99   }
   139   }
   100   sealed case class Entry(
   140   sealed case class Entry(
   101     chapter: String,
   141     chapter: String,
   102     pull_date: Date,
   142     pull_date: Date,
   103     isabelle_version: String,
   143     isabelle_version: String,
   317       progress.echo("output " + quote(data_name))
   357       progress.echo("output " + quote(data_name))
   318 
   358 
   319       val dir = target_dir + Path.basic(clean_name(data_name))
   359       val dir = target_dir + Path.basic(clean_name(data_name))
   320       Isabelle_System.mkdirs(dir)
   360       Isabelle_System.mkdirs(dir)
   321 
   361 
       
   362       val data_files =
       
   363         (for (session <- data_entry.sessions) yield {
       
   364           val csv_file = session.make_csv
       
   365           csv_file.write(dir)
       
   366           session.name -> csv_file
       
   367         }).toMap
       
   368 
   322       val session_plots =
   369       val session_plots =
   323         Par_List.map((session: Session) =>
   370         Par_List.map((session: Session) =>
   324           Isabelle_System.with_tmp_file(session.name, "data") { data_file =>
   371           Isabelle_System.with_tmp_file(session.name, "data") { data_file =>
   325             Isabelle_System.with_tmp_file(session.name, "gnuplot") { gnuplot_file =>
   372             Isabelle_System.with_tmp_file(session.name, "gnuplot") { gnuplot_file =>
   326 
   373 
   448           List(
   495           List(
   449             HTML.section(HTML.id("session_" + session.name), session.name),
   496             HTML.section(HTML.id("session_" + session.name), session.name),
   450             HTML.par(
   497             HTML.par(
   451               HTML.description(
   498               HTML.description(
   452                 List(
   499                 List(
       
   500                   HTML.text("data:") ->
       
   501                     List(HTML.link(data_files(session.name).file_name, HTML.text("CSV"))),
   453                   HTML.text("timing:") -> HTML.text(session.head.timing.message_resources),
   502                   HTML.text("timing:") -> HTML.text(session.head.timing.message_resources),
   454                   HTML.text("ML timing:") -> HTML.text(session.head.ml_timing.message_resources)) :::
   503                   HTML.text("ML timing:") -> HTML.text(session.head.ml_timing.message_resources)) :::
   455                 print_heap(session.head.maximum_heap).map(s =>
   504                 print_heap(session.head.maximum_heap).map(s =>
   456                   HTML.text("maximum heap:") -> HTML.text(s)).toList :::
   505                   HTML.text("maximum heap:") -> HTML.text(s)).toList :::
   457                 print_heap(session.head.average_heap).map(s =>
   506                 print_heap(session.head.average_heap).map(s =>