487 val Session_Finished2 = |
487 val Session_Finished2 = |
488 new Regex("""^Finished (\S+) \((\d+):(\d+):(\d+) elapsed time.*$""") |
488 new Regex("""^Finished (\S+) \((\d+):(\d+):(\d+) elapsed time.*$""") |
489 val Session_Timing = |
489 val Session_Timing = |
490 new Regex("""^Timing (\S+) \((\d+) threads, (\d+\.\d+)s elapsed time, (\d+\.\d+)s cpu time, (\d+\.\d+)s GC time.*$""") |
490 new Regex("""^Timing (\S+) \((\d+) threads, (\d+\.\d+)s elapsed time, (\d+\.\d+)s cpu time, (\d+\.\d+)s GC time.*$""") |
491 val Session_Started = new Regex("""^(?:Running|Building) (\S+) \.\.\.$""") |
491 val Session_Started = new Regex("""^(?:Running|Building) (\S+) \.\.\.$""") |
492 val Session_Failed = new Regex("""^(\S+) FAILED""") |
|
493 val Session_Cancelled = new Regex("""^(\S+) CANCELLED""") |
|
494 val Sources = new Regex("""^Sources (\S+) (\S{""" + SHA1.digest_length + """})$""") |
492 val Sources = new Regex("""^Sources (\S+) (\S{""" + SHA1.digest_length + """})$""") |
495 val Heap = new Regex("""^Heap (\S+) \((\d+) bytes\)$""") |
493 val Heap = new Regex("""^Heap (\S+) \((\d+) bytes\)$""") |
496 |
494 |
497 object Theory_Timing |
495 object Theory_Timing |
498 { |
496 { |
512 var groups = Map.empty[String, List[String]] |
510 var groups = Map.empty[String, List[String]] |
513 var threads = Map.empty[String, Int] |
511 var threads = Map.empty[String, Int] |
514 var timing = Map.empty[String, Timing] |
512 var timing = Map.empty[String, Timing] |
515 var ml_timing = Map.empty[String, Timing] |
513 var ml_timing = Map.empty[String, Timing] |
516 var started = Set.empty[String] |
514 var started = Set.empty[String] |
517 var failed = Set.empty[String] |
|
518 var cancelled = Set.empty[String] |
|
519 var sources = Map.empty[String, String] |
515 var sources = Map.empty[String, String] |
520 var heap_sizes = Map.empty[String, Long] |
516 var heap_sizes = Map.empty[String, Long] |
521 var theory_timings = Map.empty[String, Map[String, Timing]] |
517 var theory_timings = Map.empty[String, Map[String, Timing]] |
522 var ml_statistics = Map.empty[String, List[Properties.T]] |
518 var ml_statistics = Map.empty[String, List[Properties.T]] |
523 var errors = Map.empty[String, List[String]] |
519 var errors = Map.empty[String, List[String]] |
524 |
520 |
525 def all_sessions: Set[String] = |
521 def all_sessions: Set[String] = |
526 chapter.keySet ++ groups.keySet ++ threads.keySet ++ timing.keySet ++ ml_timing.keySet ++ |
522 chapter.keySet ++ groups.keySet ++ threads.keySet ++ timing.keySet ++ ml_timing.keySet ++ |
527 failed ++ cancelled ++ started ++ sources.keySet ++ heap_sizes.keySet ++ |
523 started ++ sources.keySet ++ heap_sizes.keySet ++ |
528 theory_timings.keySet ++ ml_statistics.keySet |
524 theory_timings.keySet ++ ml_statistics.keySet |
529 |
525 |
530 |
526 |
531 for (line <- log_file.lines) { |
527 for (line <- log_file.lines) { |
532 line match { |
528 line match { |
594 |
590 |
595 val sessions = |
591 val sessions = |
596 Map( |
592 Map( |
597 (for (name <- all_sessions.toList) yield { |
593 (for (name <- all_sessions.toList) yield { |
598 val status = |
594 val status = |
599 if (failed(name)) Session_Status.failed |
595 if (timing.isDefinedAt(name) || ml_timing.isDefinedAt(name)) |
600 else if (cancelled(name)) Session_Status.cancelled |
|
601 else if (timing.isDefinedAt(name) || ml_timing.isDefinedAt(name)) |
|
602 Session_Status.finished |
596 Session_Status.finished |
603 else if (started(name)) Session_Status.failed |
597 else if (started(name)) Session_Status.failed |
604 else Session_Status.existing |
598 else Session_Status.existing |
605 val entry = |
599 val entry = |
606 Session_Entry( |
600 Session_Entry( |