Overview
Comment: | Added more flexibiltiy to sense syntax, still super simple but just enough to allow multiple var/vals per line |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | v1.64 | v1.64-defunct |
Files: | files | file ages | folders |
SHA1: |
9fc62f8d178788fc8a2012bec0b233c7 |
User & Date: | matt on 2017-02-21 22:55:42 |
Other Links: | branch diff | manifest | tags |
Context
2017-02-21
| ||
22:55 | Added more flexibiltiy to sense syntax, still super simple but just enough to allow multiple var/vals per line Closed-Leaf check-in: 9fc62f8d17 user: matt tags: v1.64, v1.64-defunct | |
21:31 | Missing param check-in: 11f9127253 user: mrwellan tags: v1.64, v1.64-defunct | |
Changes
Modified common.scm from [0f03b1a388] to [bd82345b7a].
︙ | ︙ | |||
812 813 814 815 816 817 818 819 820 821 822 823 824 825 | (file-modification-time fname)))) (if (> curmod last-mod) (list curmod fname) res))) '(0 "n/a") all-files))) ;;====================================================================== ;; T A R G E T S , S T A T E , S T A T U S , ;; R U N N A M E A N D T E S T P A T T ;;====================================================================== ;; (map print (map car (hash-table->alist (read-config "runconfigs.config" #f #t)))) ;; | > > > > > > > > | 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 | (file-modification-time fname)))) (if (> curmod last-mod) (list curmod fname) res))) '(0 "n/a") all-files))) ;; use bash to expand a glob. Does NOT handle paths with spaces! ;; (define (common:bash-glob instr) (string-split (with-input-from-pipe (conc "/bin/bash -c \"echo " instr "\"") read-line))) ;;====================================================================== ;; T A R G E T S , S T A T E , S T A T U S , ;; R U N N A M E A N D T E S T P A T T ;;====================================================================== ;; (map print (map car (hash-table->alist (read-config "runconfigs.config" #f #t)))) ;; |
︙ | ︙ |
Modified mtut.scm from [836619b7ba] to [ea91541450].
︙ | ︙ | |||
344 345 346 347 348 349 350 | (let* ((keydats (configf:get-section rgconf runkey))) (for-each (lambda (sense) ;; these are the sense rules (let* ((key (car sense)) (val (cadr sense)) (keyparts (string-split key ":")) (contour (car keyparts)) | > | | > > > | > > > > > > > | | | | | > | > | | | | 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 | (let* ((keydats (configf:get-section rgconf runkey))) (for-each (lambda (sense) ;; these are the sense rules (let* ((key (car sense)) (val (cadr sense)) (keyparts (string-split key ":")) (contour (car keyparts)) (len-key (length keyparts)) (ruletype (if (> len-key 1)(cadr keyparts) #f)) (action (if (> len-key 2)(caddr keyparts) #f)) (val-list (string-split-fields ";\\s*" val #:infix)) ;; (string-split val)) ;; runname-rule params (val-alist (if val-list (map (lambda (x) (let ((f (string-split-fields "\\s*=\\s*" x #:infix))) (case (length f) ((0) `(,#f)) ;; null string case ((1) `(,(string->symbol (car f)))) ((2) `(,(string->symbol (car f)) . ,(cadr f))) (else f)))) val-list) '())) (runname (make-runname "" "")) (runstarts (find-pkts pdb '(runstart) `((o . ,contour) (t . ,runkey)))) (rspkts (map (lambda (x) (alist-ref 'pkta x)) runstarts)) (starttimes ;; sort by age (youngest first) and delete duplicates by target (delete-duplicates (sort (map (lambda (x) `(,(alist-ref 't x) . ,(string->number (alist-ref 'D x)))) rspkts) (lambda (a b)(> (cdr a)(cdr b)))) ;; sort descending (lambda (a b)(equal? (car a)(car b))))) ;; remove duplicates by target ) ;; look in runstarts for matching runs by target and contour ;; get the timestamp for when that run started and pass it ;; to the rule logic here where "ruletype" will be applied ;; if it comes back "changed" then proceed to register the runs (case (string->symbol ruletype) ((scheduled) (if (not (alist-ref 'cron val-alist)) ;; gotta have cron spec (print "ERROR: bad sense spec \"" (string-intersperse sense " ") "\" params: " val-alist) (let* ((run-name (alist-ref 'run-name val-alist)) (crontab (alist-ref 'cron val-alist)) (action (alist-ref 'action val-alist)) (last-run (if (null? starttimes) ;; never run 0 (apply max (map cdr starttimes)))) (need-run (common:cron-event crontab #f last-run)) (runname (if need-run (conc "sched" (time->string (seconds->local-time (current-seconds)) "%M%H%d"))))) (print "last-run: " last-run " need-run: " need-run) (if need-run (configf:section-var-set! torun contour runkey `(,(conc ruletype ":" (string-intersperse (string-split (alist-ref 'cron val-alist)) "-")) ,runname ,need-run ,action)))))) ((file file-or) ;; one or more files must be newer than the reference (let* ((file-globs (alist-ref 'glob val-alist)) (youngestdat (common:get-youngest (common:bash-glob file-globs))) (youngestmod (car youngestdat))) ;; (print "youngestmod: " youngestmod " starttimes: " starttimes) (if (null? starttimes) ;; this target has never been run (configf:section-var-set! torun contour runkey `("file:neverrun" ,runname)) (for-each (lambda (starttime) ;; look at the time the last run was kicked off for this contour (if (> youngestmod (cdr starttime)) (begin (print "starttime younger than youngestmod: " starttime " Youngestmod: " youngestmod) (configf:section-var-set! torun contour runkey `(,(conc ruletype ":" (cadr youngestdat)) ,runname #f))))) starttimes)) )) ((file-and) ;; all files must be newer than the reference (let* ((file-globs (alist-ref 'glob val-alist)) (youngestdat (common:get-youngest file-globs)) (youngestmod (car youngestdat)) (success #t)) ;; any cases of not true, set flag to #f for AND ;; (print "youngestmod: " youngestmod " starttimes: " starttimes) (if (null? starttimes) ;; this target has never been run (configf:section-var-set! torun contour runkey `("file:neverrun" ,runname #f)) (for-each |
︙ | ︙ |
Modified runconfigs.config from [9aede9683d] to [798bc88af4].
1 2 3 4 | [v1.63/tip/dev] # file: files changes since last run trigger new run # script: script is called with unix seconds as last parameter (other parameters are preserved) # | | > | | > > > > > > > > > | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | [v1.63/tip/dev] # file: files changes since last run trigger new run # script: script is called with unix seconds as last parameter (other parameters are preserved) # # contour:sensetype:action params data quick:file:run run-name=auto;glob=*.scm quick:file:clean run-name=auto; quick:script:run run-name=auto;script=checkfossil.sh v1.63 # field allowed values # ----- -------------- # minute 0-59 # hour 0-23 # day of month 1-31 # month 1-12 (or names, see below) # day of week 0-7 (0 or 7 is Sun, or use names) # actions: # run - run a testsuite # clean - clear out runs # archive - archive runs quick:scheduled:run cron=47 * * * * ;run-name=auto quick:scheduled:archive cron=15 20 * * * ;run-name=% ; [%/%/%] # every friday at midnight clean "all" tests over 7d all:scheduled:clean cron= 0 0 0 0 5;run-name=%;age=7d |