[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