ppc64le timeouts cursing things

Dimiter Naydenov dimiter.naydenov at canonical.com
Fri Jul 17 12:08:02 UTC 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 17.07.2015 12:07, James Tunnicliffe wrote:
> /me opens can of worms
Thanks for starting the discussion :)

> 
> Having spent perhaps too long trying to parallelise the running of
> the unit test suite over multiple machines using various bat guano
> crazy ideas, I know too much about this but haven't got an easy
> fix. I do know the right fix is to re-write the very long tests
> that we have.
> 
> If you want to find long running tests, go test -v ./... -check.v
> is the command to run at top level. You will get a lot of output,
> but it isn't difficult to find tests that take longer than 10
> seconds with grep and I am sure I could dig the script out that I
> wrote that examines the output and tells you all tests over a
> certain runtime.
> 
> When you run "go test ./..." at the top of juju/juju it runs suites
> in parallel. If you have multiple long tests in a suite then it has
> a significant impact on the total runtime. We have no way with the 
> current tools to exclude single tests without modifying the tests 
> themselves;

How about GOMAXPROCS=1 go test ./... ? Won't that force the runtime to
run all suites sequentially?

> if we did we could run all the tests that take less than a few
> seconds by maintaining a list of long tests, and run those long 
> tests as a separate, parallel task. The real fix is to put some
> effort into making the long running tests more unit test and less
> full stack test. 30+ seconds is not what we want. The least worst
> idea I have is making a sub-suite for tests that take > 10 seconds,
> one test per suite, so the standard tools will run them in parallel
> with everything else. Providing you have many CPUs there is a
> reasonable chance this will help. It is not remotely nice though.

Using go tool pprof can also help figuring out why certain tests take
a long time and/or memory. I'm planning to experiment with it and come
up with some feedback.

> 
> 0 ✓ dooferlad at homework2 
> ~/dev/go/src/github.com/juju/juju/worker/uniter $ go test -check.v
> 
> Shorter tests deleted from this list. The longest are: PASS:
> uniter_test.go:1508: UniterSuite.TestActionEvents 39.711s PASS:
> uniter_test.go:1114: UniterSuite.TestUniterRelations 16.276s PASS:
> uniter_test.go:970: UniterSuite.TestUniterUpgradeGitConflicts
> 11.354s
> 
> These are a worth a look: PASS: uniter_test.go:2053:
> UniterSuite.TestLeadership 5.146s PASS: util_unix_test.go:103:
> UniterSuite.TestRunCommand 6.946s PASS: uniter_test.go:2104:
> UniterSuite.TestStorage 4.593s PASS: uniter_test.go:1367:
> UniterSuite.TestUniterCollectMetrics 4.102s PASS:
> uniter_test.go:774: UniterSuite.TestUniterDeployerConversion
> 6.904s PASS: uniter_test.go:427:
> UniterSuite.TestUniterDyingReaction 5.772s PASS:
> uniter_test.go:393: UniterSuite.TestUniterHookSynchronisation
> 4.546s PASS: uniter_test.go:1274:
> UniterSuite.TestUniterRelationErrors 4.536s PASS:
> uniter_test.go:476: UniterSuite.TestUniterSteadyStateUpgrade
> 6.405s PASS: uniter_test.go:895:
> UniterSuite.TestUniterUpgradeConflicts 6.430s
> 
> ok   github.com/juju/juju/worker/uniter 175.014s
> 
> James
> 
> On 17 July 2015 at 04:59, Tim Penhey <tim.penhey at canonical.com>
> wrote:
>> Hi Curtis,
>> 
>> I have been looking at some of the recent cursings from ppc64le,
>> and the last two included timeouts for the worker/uniter tests.
>> 
>> On my machine, amd64, i7, 16 gig ram, I get the following:
>> 
>> $ time go test 2015-07-17 03:53:03 WARNING juju.worker.uniter
>> upgrade123.go:26 no uniter state file found for unit
>> unit-mysql-0, skipping uniter upgrade step OK: 51 passed PASS ok
>> github.com/juju/juju/worker/uniter      433.256s
>> 
>> real    7m24.270s user    3m18.647s sys     1m2.472s
>> 
>> Now lets ignore the the logging output that someone should fix,
>> we can see how long it takes here. Given that gccgo on power is
>> slower, we are going to do two things:
>> 
>> 1) increase the timeouts for the uniter
>> 
>> 2) change the uniter tests
>> 
>> WRT to point 2, most of the uniter tests are actually fully
>> functional end to end tests, and should not be run every time we
>> land code.
>> 
>> They should be moved into the featuretest package.
>> 
>> Thanks, Tim
>> 
>> -- Juju-dev mailing list Juju-dev at lists.ubuntu.com Modify
>> settings or unsubscribe at:
>> https://lists.ubuntu.com/mailman/listinfo/juju-dev
> 


- -- 
Dimiter Naydenov <dimiter.naydenov at canonical.com>
Juju Core Sapphire team <http://juju.ubuntu.com>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)

iQEcBAEBAgAGBQJVqPAiAAoJENzxV2TbLzHwIHYIAKLXI2F4V/Jp+3rFLqbOCrgx
QHTnnnARC7yDE5nbz0nFC/Z6JdEIsG+Xc+JzsaYh+cpZiRTmRvwztSlOyFBq649a
fpCyUttY7CvPGxf+ul58dkFD2JL7Pv/ZNOAR4vGS6X2IR5y/UohtJVntkh3i68xQ
+zRNlhmrGs2pxYVTHMPjfO+X83Cv/UNHq/j7upk1jRKXrm4AjjqGS+vQkIvTUJDF
Y2T8efxFXHnMP5u3qI6yyoE1C8/wjh2AHkNNcVPoAy8ClRVjowOo0UpSH8XV2k89
PRtA35ON7Xrgrv45SOehuDo7PyeZacop7wp2d+tNKLLV4xi75aKkt7EQUcfmNOk=
=I+Ar
-----END PGP SIGNATURE-----



More information about the Juju-dev mailing list