Megatest

Check-in [3ceb1e262a]
Login
Overview
Comment:Fixed bug with refusing to operate on DELETED tests. Correct fix for treatment of NOT_STARTED vs. LAUNCHED tests in counting tests that are running.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | v1.4614
Files: files | file ages | folders
SHA1: 3ceb1e262ae390de64379d2dd90dfc9bbcd6de00
User & Date: matt on 2012-10-09 20:22:19
Other Links: manifest | tags
Context
2012-10-10
18:19
Added mapping of mtest to megatest in launch, switched nbfake to run jobs in background, changed fsl to fossil in makefile check-in: 1b1db65b15 user: mrwellan tags: trunk
2012-10-09
20:22
Fixed bug with refusing to operate on DELETED tests. Correct fix for treatment of NOT_STARTED vs. LAUNCHED tests in counting tests that are running. check-in: 3ceb1e262a user: matt tags: trunk, v1.4614
15:58
Partial fix for simultaneously preventing races on launch of new jobs and respecting use of max-concurrent-jobs check-in: f1b027a2e2 user: matt tags: trunk
Changes

Modified db.scm from [606081fd7b] to [4d1ab94308].

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 (db:get-count-tests-running db)
  (let ((res 0))
    (sqlite3:for-each-row
     (lambda (count)
       (set! res count))
     db
     "SELECT count(id) FROM tests WHERE state in ('RUNNING','LAUNCHED','REMOTEHOSTSTART','NOT_STARTED');")
     "SELECT count(id) FROM tests WHERE state in ('RUNNING','LAUNCHED','REMOTEHOSTSTART');")
    res))

(define (db:get-count-tests-running-in-jobgroup db jobgroup)
  (if (not jobgroup)
      0 ;; 
      (let ((res 0))
	(sqlite3:for-each-row
1023
1024
1025
1026
1027
1028
1029
1030

1031
1032
1033
1034
1035
1036
1037
1023
1024
1025
1026
1027
1028
1029

1030
1031
1032
1033
1034
1035
1036
1037







-
+







;;======================================================================
;; QUEUE UP META, TEST STATUS AND STEPS
;;======================================================================

(define (db:updater)
  (debug:print 4 "INFO: Starting cache processing")
  (let loop ((start-time (current-time)))
    (thread-sleep! 5) ;; move save time around to minimize regular collisions?
    (thread-sleep! 10) ;; move save time around to minimize regular collisions?
    (db:write-cached-data)
    (loop start-time)))

(define (cdb:test-set-status-state test-id status state msg)
  (debug:print 4 "INFO: cdb:test-set-status-state test-id=" test-id ", status=" status ", state=" state ", msg=" msg)
  (mutex-lock! *incoming-mutex*)
  (set! *last-db-access* (current-seconds))

Modified megatest.scm from [e8b477af90] to [ee41476089].

348
349
350
351
352
353
354
355


356
357
358
359
360
361
362
348
349
350
351
352
353
354

355
356
357
358
359
360
361
362
363







-
+
+







      (debug:print 0 "INFO: Starting the standalone server")
      (if db 
	  (let* ((host:port (db:get-var db "SERVER")) ;; this doen't support multiple servers BUG!!!!
		 (th2 (server:start db (args:get-arg "-server")))
		 (th3 (make-thread (lambda ()
				     (server:keep-running db host:port)))))
	    (thread-start! th3)
	    (thread-join! th3))
	    (thread-join! th3)
	    (set! *didsomething* #t))
	  (debug:print 0 "ERROR: Failed to setup for megatest"))))

;;======================================================================
;; full run
;;======================================================================

;; get lock in db for full run for this directory

Modified runs.scm from [761365996e] to [83c48ed884].

632
633
634
635
636
637
638
639

640
641
642
643
644
645

646
647
648
649
650
651
652
632
633
634
635
636
637
638

639
640
641
642
643
644

645
646
647
648
649
650
651
652







-
+





-
+







      (case (if force ;; (args:get-arg "-force")
		'NOT_STARTED
		(if testdat
		    (string->symbol (test:get-state testdat))
		    'failed-to-insert))
	((failed-to-insert)
	 (debug:print 0 "ERROR: Failed to insert the record into the db"))
	((NOT_STARTED COMPLETED)
	((NOT_STARTED COMPLETED DELETED)
	 (let ((runflag #f))
	   (cond
	    ;; -force, run no matter what
	    (force (set! runflag #t))
	    ;; NOT_STARTED, run no matter what
	    ((equal? (test:get-state testdat) "NOT_STARTED")(set! runflag #t))
	    ((member (test:get-state testdat) '("DELETED" "NOT_STARTED"))(set! runflag #t))
	    ;; not -rerun and PASS, WARN or CHECK, do no run
	    ((and (or (not rerun)
		      keepgoing)
		  ;; Require to force re-run for COMPLETED or *anything* + PASS,WARN or CHECK
		  (or (member (test:get-status testdat) '("PASS" "WARN" "CHECK"))
		      (member (test:get-state  testdat) '("COMPLETED")))) 
	     (debug:print 2 "INFO: running test " test-name "/" item-path " suppressed as it is " (test:get-state testdat) " and " (test:get-status testdat))

Modified tests/fullrun/config/mt_include_1.config from [21400a737e] to [a426d87ac1].

1
2
3

4
5
6
7
8
9
10
1
2

3
4
5
6
7
8
9
10


-
+







[setup]
# exectutable /path/to/megatest
max_concurrent_jobs 30
max_concurrent_jobs 50
linktree /tmp/mt_links

[jobtools]
useshell yes
# ## launcher launches jobs, the job is managed on the target host
## by megatest, comment out launcher to run local
# workhosts localhost hermes