[pkg-go] Bug#796400: Bug#796400: golang-github-jacobsa-ratelimit: Non-determistically FTBFS due to unreliable timing in tests

Aaron Jacobs jacobsa at google.com
Sun Aug 23 21:47:43 UTC 2015


Yes, this is a test for an object whose functionality is based on wall time, so
it uses wall time. I know that makes it flaky and in general I try to avoid
such tests, but it was a conscious decision here.

The best way to deal with this may be to just delete the package. Michael, I
apologize because I know you've spent a bunch of time on this, but it seems
like the Debian packaging model just doesn't work out for us. (In particular:
lack of support for vendoring and needing a separate package per tiny
dependency.) :-(

Aaron

On Sun, Aug 23, 2015 at 9:08 PM, Michael Stapelberg
<stapelberg at debian.org> wrote:
> Aaron, could you take a look at this problem please? It seems to me
> like this is a shortcoming of your tests, unrelated to Debian.
>
> On Fri, Aug 21, 2015 at 8:44 PM, Chris Lamb <lamby at debian.org> wrote:
>> Source: golang-github-jacobsa-ratelimit
>> Version: 0.0~git20150723.0.2ca5e0c-1
>> Severity: serious
>> Justification: fails to build from source
>> User: reproducible-builds at lists.alioth.debian.org
>> Usertags: ftbfs
>> X-Debbugs-Cc: reproducible-builds at lists.alioth.debian.org
>>
>> Dear Maintainer,
>>
>> golang-github-jacobsa-ratelimit's testsuite appears to use method
>> timing/benchmarking in such
>> a way that it will non-deterministically FTBFS:
>>
>>   throttle_test.go:
>>                 expected := smallerRateHz * (float64(perCaseDuration) /
>>                 float64(time.Second))
>>
>> For example:
>>
>>   [..]
>>         go test -v github.com/jacobsa/ratelimit
>>   === RUN TestThrottle
>>   [----------] Running tests from ThrottleTest
>>   [ RUN      ] ThrottleTest.IntegrationTest
>>   throttle_test.go:202:
>>   Expected: greater than 135, and less than 165
>>   Actual:   88
>>   Test case 0. expected: 150.000000
>>
>>   throttle_test.go:202:
>>   Expected: greater than 180, and less than 220.00000000000003
>>   Actual:   138
>>   Test case 1. expected: 200.000000
>>
>>   throttle_test.go:202:
>>   Expected: greater than 180, and less than 220.00000000000003
>>   Actual:   163
>>   Test case 2. expected: 200.000000
>>
>>   [  FAILED  ] ThrottleTest.IntegrationTest (6.031585896s)
>>   [----------] Finished with tests from ThrottleTest
>>   [----------] Running tests from ThrottledReaderTest
>>   [ RUN      ] ThrottledReaderTest.CallsThrottle
>>   [       OK ] ThrottledReaderTest.CallsThrottle
>>   [ RUN      ] ThrottledReaderTest.ThrottleReturnsError
>>   [       OK ] ThrottledReaderTest.ThrottleReturnsError
>>   [ RUN      ] ThrottledReaderTest.CallsWrapped
>>   [       OK ] ThrottledReaderTest.CallsWrapped
>>   [ RUN      ] ThrottledReaderTest.WrappedReturnsError
>>   [       OK ] ThrottledReaderTest.WrappedReturnsError
>>   [ RUN      ] ThrottledReaderTest.WrappedReturnsEOF
>>   [       OK ] ThrottledReaderTest.WrappedReturnsEOF
>>   [ RUN      ] ThrottledReaderTest.WrappedReturnsFullRead
>>   [       OK ] ThrottledReaderTest.WrappedReturnsFullRead
>>   [ RUN      ] ThrottledReaderTest.WrappedReturnsShortRead_CallsAgain
>>   [       OK ] ThrottledReaderTest.WrappedReturnsShortRead_CallsAgain
>>   [ RUN      ]
>>   ThrottledReaderTest.WrappedReturnsShortRead_SecondReturnsError
>>   [       OK ]
>>   ThrottledReaderTest.WrappedReturnsShortRead_SecondReturnsError
>>   [ RUN      ]
>>   ThrottledReaderTest.WrappedReturnsShortRead_SecondReturnsEOF
>>   [       OK ]
>>   ThrottledReaderTest.WrappedReturnsShortRead_SecondReturnsEOF
>>   [ RUN      ]
>>   ThrottledReaderTest.WrappedReturnsShortRead_SecondSucceedsInFull
>>   [       OK ]
>>   ThrottledReaderTest.WrappedReturnsShortRead_SecondSucceedsInFull
>>   [ RUN      ] ThrottledReaderTest.ReadSizeIsAboveThrottleCapacity
>>   [       OK ] ThrottledReaderTest.ReadSizeIsAboveThrottleCapacity
>>   [----------] Finished with tests from ThrottledReaderTest
>>   [----------] Running tests from TokenBucketTest
>>   [ RUN      ] TokenBucketTest.CarefulAccounting
>>   [       OK ] TokenBucketTest.CarefulAccounting
>>   [----------] Finished with tests from TokenBucketTest
>>   --- FAIL: TestThrottle (6.03s)
>>   === RUN TestThrottledReader
>>   --- PASS: TestThrottledReader (0.00s)
>>   === RUN TestTokenBucket
>>   --- PASS: TestTokenBucket (0.00s)
>>   FAIL
>>   exit status 1
>>   FAIL    github.com/jacobsa/ratelimit    6.074s
>>   dh_auto_test: go test -v github.com/jacobsa/ratelimit returned exit
>>   code 1
>>   debian/rules:6: recipe for target 'build' failed
>>   make: *** [build] Error 1
>>   dpkg-buildpackage: error: debian/rules build gave error exit status 2
>>
>>   [..]
>>
>> The full build log is attached or can be viewed here:
>>
>>     https://reproducible.debian.net/logs/unstable/amd64/golang-github-jacobsa-ratelimit_0.0~git20150723.0.2ca5e0c-1.build2.log.gz
>>
>>
>> Regards,
>>
>> --
>>       ,''`.
>>      : :'  :     Chris Lamb
>>      `. `'`      lamby at debian.org / chris-lamb.co.uk
>>        `-
>>
>> _______________________________________________
>> Pkg-go-maintainers mailing list
>> Pkg-go-maintainers at lists.alioth.debian.org
>> http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-go-maintainers
>
>
>
> --
> Best regards,
> Michael



More information about the Pkg-go-maintainers mailing list