adjust test to avoid excessive memory use

Avoid some tests for a machine that is cleraly too constrained.
Specifically, the check is meant to detect a constrained
Raspberry Pi.
This commit is contained in:
Matthew Flatt 2019-07-30 15:59:10 -06:00
parent 17bc626293
commit 50aa964e78

View File

@ -2887,17 +2887,30 @@
(test 120 integer-length (- (expt 2 120) 1)) (test 120 integer-length (- (expt 2 120) 1))
(test 121 integer-length (+ (expt 2 120) 1)) (test 121 integer-length (+ (expt 2 120) 1))
; don't attempt to print numbers that are billions of bits long (define (avoid-big-allocation?)
(test (+ (expt 2 30) 1) 'integer-length-vlarge-1 ;; A Raspberry Pi running Linux is a likely too-small device,
(integer-length (expt 2 (expt 2 30)))) ;; so at least detect that one:
(test (- (expt 2 31) 63) 'integer-length-vlarge-2 (and (file-exists? "/proc/meminfo")
(integer-length (expt 2 (- (expt 2 31) 64)))) (call-with-input-file*
"/proc/meminfo"
(lambda (i)
(define m (regexp-match #rx"MemTotal: +([0-9]+) kB" i))
(and m
(< (string->number (bytes->string/utf-8 (cadr m)))
(* 1.5 1024 1024)))))))
; these will have bignum output on 32 bit machines (unless (avoid-big-allocation?)
(test (- (expt 2 31) 1) 'integer-length-vlarge-3 ; don't attempt to print numbers that are billions of bits long
(integer-length (expt 2 (- (expt 2 31) 2)))) (test (+ (expt 2 30) 1) 'integer-length-vlarge-1
(test (- (expt 2 31) 0) 'integer-length-overflow (integer-length (expt 2 (expt 2 30))))
(integer-length (expt 2 (- (expt 2 31) 1)))) (test (- (expt 2 31) 63) 'integer-length-vlarge-2
(integer-length (expt 2 (- (expt 2 31) 64))))
; these will have bignum output on 32 bit machines
(test (- (expt 2 31) 1) 'integer-length-vlarge-3
(integer-length (expt 2 (- (expt 2 31) 2))))
(test (- (expt 2 31) 0) 'integer-length-overflow
(integer-length (expt 2 (- (expt 2 31) 1)))))
(test "0" number->string 0) (test "0" number->string 0)
(test "1" number->string 1) (test "1" number->string 1)