Megatest

Check-in [183f240774]
Login
Overview
Comment:Removed auto marking of tests as incomplete as it is failing to detect legit running tests in some cases. Added -mark-incomplete switch to enable manual running of marking incompleted tests
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | v1.55 | v1.5513
Files: files | file ages | folders
SHA1: 183f2407745ac35dcc3dbf99299ceae3aa689ec5
User & Date: mrwellan on 2013-10-23 09:33:11
Other Links: branch diff | manifest | tags
Context
2013-10-24
17:51
Speculative fix for partial updates of test_meta check-in: 53eb2bad17 user: mrwellan tags: v1.55
2013-10-23
09:33
Removed auto marking of tests as incomplete as it is failing to detect legit running tests in some cases. Added -mark-incomplete switch to enable manual running of marking incompleted tests check-in: 183f240774 user: mrwellan tags: v1.55, v1.5513
2013-10-22
23:51
Upped the timeout on marking INCOMPLETE in the fullrun test check-in: 5b7a69fb1d user: matt tags: v1.55
Changes

Modified megatest.scm from [2bdb2f5097] to [6da83cb93e].

120
121
122
123
124
125
126

127
128
129
130
131
132
133
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134







+







  -transport http|fs      : use http or direct access for transport (default is http) 
  -daemonize              : fork into background and disconnect from stdin/out
  -list-servers           : list the servers 
  -stop-server id         : stop server specified by id (see output of -list-servers), use
                            0 to kill all
  -repl                   : start a repl (useful for extending megatest)
  -load file.scm          : load and run file.scm
  -mark-incompletes       : find and mark incomplete tests

Spreadsheet generation
  -extract-ods fname.ods  : extract an open document spreadsheet from the database
  -pathmod path           : insert path, i.e. path/runame/itempath/logfile.html
                            will clear the field if no rundir/testname/itempath/logfile
                            if it contains forward slashes the path will be converted
                            to windows style
231
232
233
234
235
236
237

238
239
240
241
242
243
244
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246







+







			"-runall"    ;; run all tests
			"-remove-runs"
			"-rebuild-db"
			"-cleanup-db"
			"-rollup"
			"-update-meta"
			"-gen-megatest-area"
			"-mark-incompletes"

			"-logging"
			"-v" ;; verbose 2, more than normal (normal is 1)
			"-q" ;; quiet 0, errors/warnings only
		       )
		 args:arg-hash
		 0))
1088
1089
1090
1091
1092
1093
1094









1095
1096
1097
1098
1099
1100
1101
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112







+
+
+
+
+
+
+
+
+







      (if (not (setup-for-run))
	  (begin
	    (debug:print 0 "Failed to setup, exiting") 
	    (exit 1)))
      ;; keep this one local
      (open-run-close db:clean-up #f)
      (set! *didsomething* #t)))

(if (args:get-arg "-mark-incompletes")
    (begin
      (if (not (setup-for-run))
	  (begin
	    (debug:print 0 "Failed to setup, exiting") 
	    (exit 1)))
      (open-run-close db:find-and-mark-incomplete #f)
      (set! *didsomething* #t)))

;;======================================================================
;; Wait on a run to complete
;;======================================================================

(if (args:get-arg "-run-wait")
    (begin

Modified runs.scm from [e64acf4e6f] to [97c60d5363].

724
725
726
727
728
729
730
731

732
733
734
735
736
737
738
724
725
726
727
728
729
730

731
732
733
734
735
736
737
738







-
+







(define (runs:run-tests-queue run-id runname test-records keyvals flags test-patts required-tests reglen-in all-tests-registry)
  ;; At this point the list of parent tests is expanded 
  ;; NB// Should expand items here and then insert into the run queue.
  (debug:print 5 "test-records: " test-records ", flags: " (hash-table->alist flags))

  ;; Do mark-and-find clean up of db before starting runing of quue
  ;;
  (cdb:remote-run db:find-and-mark-incomplete #f)
  ;; (cdb:remote-run db:find-and-mark-incomplete #f)

  (let ((run-info              (cdb:remote-run db:get-run-info #f run-id))
	(tests-info            (mt:get-tests-for-run run-id #f '() '())) ;;  qryvals: "id,testname,item_path"))
	(sorted-test-names     (tests:sort-by-priority-and-waiton test-records))
	(test-registry         (make-hash-table))
	(registry-mutex        (make-mutex))
	(num-retries           0)
759
760
761
762
763
764
765
766
767
768
769




770
771
772
773
774
775
776
759
760
761
762
763
764
765




766
767
768
769
770
771
772
773
774
775
776







-
-
-
-
+
+
+
+







    (let loop ((hed         (car sorted-test-names))
	       (tal         (cdr sorted-test-names))
	       (reg         '()) ;; registered, put these at the head of tal 
	       (reruns      '()))
      (if (not (null? reruns))(debug:print-info 4 "reruns=" reruns))

      ;; Here we mark any old defunct tests as incomplete. Do this every fifteen minutes
      (if (> (current-seconds)(+ last-time-incomplete 900))
	  (begin
	    (set! last-time-incomplete (current-seconds))
	    (cdb:remote-run db:find-and-mark-incomplete #f)))
      ;; (if (> (current-seconds)(+ last-time-incomplete 900))
      ;;     (begin
      ;;       (set! last-time-incomplete (current-seconds))
      ;;       (cdb:remote-run db:find-and-mark-incomplete #f)))

      ;; (print "Top of loop, hed=" hed ", tal=" tal " ,reruns=" reruns)
      (let* ((test-record (hash-table-ref test-records hed))
	     (test-name   (tests:testqueue-get-testname test-record))
	     (tconfig     (tests:testqueue-get-testconfig test-record))
	     (jobgroup    (config-lookup tconfig "requirements" "jobgroup"))
	     (testmode    (let ((m (config-lookup tconfig "requirements" "mode")))

Modified tests/fullrun/megatest.config from [468c6e80d9] to [fe7d45ffb7].

29
30
31
32
33
34
35
36

37
38
39


40
41

42
43
44
45
46
47
48
29
30
31
32
33
34
35

36
37
38

39
40
41

42
43
44
45
46
47
48
49







-
+


-
+
+

-
+







# If set to "default" the old code is used. Otherwise defaults to 200 or uses
# numeric value given.
#
runqueue 20

# Default runtimelim 1d 1h 1m 10s
#
runtimelim 10m
runtimelim 20m

# Deadtime - when to consider tests dead (i.e. haven't heard from them in too long)
# Number in seconds
# Number in seconds, set to 20 seconds here to trigger a little trouble. Default is
# 1800
#
deadtime 25
deadtime 600

# It is possible (but not recommended) to override the rsync command used
# to populate the test directories. For test development the following 
# example can be useful
#
# testcopycmd cp --remove-destination -rsv TEST_SRC_PATH/. TEST_TARG_PATH/. >> TEST_TARG_PATH/mt_launch.log 2>> TEST_TARG_PATH/mt_launch.log