thin-provisioning-tools/functional-tests/era-xml.scm

44 lines
1.3 KiB
Scheme

(library
(era-xml)
(export generate-xml)
(import (rnrs)
(list-utils)
(fmt fmt)
(generators)
(xml)
(srfi s27 random-bits)
(only (srfi s1 lists) iota))
(define (rand-percent pc)
(if (< (random-integer 100) pc)
"true"
"false"))
(define (generate-writeset era nr-bits)
(tag 'writeset `((era . ,era)
(nr-bits . , nr-bits))
(vcat
(map (lambda (bit)
(tag 'bit `((block . ,bit)
(value . ,(rand-percent 10)))))
(iota nr-bits)))))
(define (generate-xml block-size nr-blocks current-era nr-writesets)
(tag 'superblock `((uuid . "")
(block-size . ,block-size)
(nr-blocks . ,nr-blocks)
(current-era . ,current-era))
(cat
(vcat
(map (lambda (ws)
(generate-writeset (- current-era ws) nr-blocks))
(iota nr-writesets)))
nl
(tag 'era-array '()
(vcat
(map (lambda (n)
(tag 'era `((block . ,n)
(era . ,(random-integer current-era)))))
(iota nr-blocks)))))))
)