[pkg-go] Bug#796400: Bug#796400: Bug#796400: golang-github-jacobsa-ratelimit: Non-determistically FTBFS due to unreliable timing in tests
Michael Stapelberg
stapelberg at debian.org
Mon Aug 24 06:37:08 UTC 2015
On Sun, Aug 23, 2015 at 11:47 PM, Aaron Jacobs <jacobsa at google.com> wrote:
> 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.
Could the timing requirements be relaxed to make it less flaky?
> 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.) :-(
I don’t think giving up is a good idea :). FWIW, just to be clear,
it’s not that vendoring is not supported, it’s a conscious decision by
Debian to avoid it. Also, AFAICT, other distributions (like Fedora)
are following the same model, so I don’t think Debian is different in
this regard. If you have trouble getting the software into Debian,
you’ll likely have trouble getting it into any of the other big
distributions, too.
>
> 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
>
> _______________________________________________
> 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