-
-
Notifications
You must be signed in to change notification settings - Fork 18.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CI: Check ASV for failed benchmarks #19236
Conversation
ci/lint.sh
Outdated
@@ -125,6 +125,16 @@ if [ "$LINT" ]; then | |||
RET=1 | |||
fi | |||
echo "Check for deprecated messages without sphinx directive DONE" | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
put this in a separete script (ci/asv.sh)
and we can enable it in (.travis.yml) via an ENV variable (e.g. like we do for coverage).
Then its easy to put it on only 1 build.
also need to install asv (on that build)
Codecov Report
@@ Coverage Diff @@
## master #19236 +/- ##
=======================================
Coverage 91.62% 91.62%
=======================================
Files 150 150
Lines 48680 48680
=======================================
Hits 44603 44603
Misses 4077 4077
Continue to review full report at Codecov.
|
Created |
I pushed a commit to add this to travis. let's see what it does. |
Hmm so the builds are returning Do I need to check in the file with execution permissions? https://stackoverflow.com/a/42187039 |
it should be chmod 755 |
Looks like travis is all green. |
I am not convinced this actually did anything. sure it installed but it doesn't say it even ran.
|
ci/asv.sh
Outdated
fi | ||
echo "Check for failed asv benchmarks DONE" | ||
fi | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you add an else like we do in lint. so that we get a message if this is NOT run.
ci/asv.sh
Outdated
fi | ||
echo "Check for failed asv benchmarks DONE" | ||
fi | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you add an else like we do in lint. so that we get a message if this is NOT run.
ci/asv.sh
Outdated
|
||
cd asv_bench | ||
|
||
time asv run --quick | grep "failed" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
once we are convinced these run, then can add it back
here was a run on my local system
so for sure this has to be a separate build. |
Added the else statement. I also think this may not be working because asv wants to know the machine configurations upon install, so I added an |
Here's the latest output from Travis:
So it appears travis is running the build, but it thinks that there's a build issue because the ASV benchmarks take a while to run. |
ok I pushed to a separate build. if this works, then we would simply capture the output (as well as output to the screen). then grep it. you have to keep showing output otherwise things will timeout. |
Thanks @jreback It looks like the alternative is to prefix the asv script execution with |
Darn, looks like the build is taking to long. It ran for 49 min 57 sec and output:
Looks like the max time for travis-ci.org jobs is 50 minutes. https://docs.travis-ci.com/user/customizing-the-build#Build-Timeouts |
i restarted that job again, i think this should complete |
Looks like the job hit the time limit again. It looks like |
ci/asv.sh
Outdated
cd asv_bench | ||
|
||
asv machine --yes | ||
|
||
time asv run --quick | grep "failed" | ||
time asv run --quick |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not directly related to this change (rather to the previous PR that introduced this), but shouldn't this be asv dev
? Because I thought asv run
would create a new env, while everything already has been installed on travis?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The link below mentions about asv dev
This runs a benchmark suite in a mode that is useful during development. It is
equivalent to ``asv run --quick --show-stderr --python=same``
So the command should be essentially the same asv dev
, but I can still change it to asv dev
nonetheless.
Ref: https://asv.readthedocs.io/en/latest/commands.html#asv-dev
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is an essential difference between what you quote (asv run --quick --show-stderr --python=same
) and what is above, namely the --python=same
.
And I also think --show-stderr
is useful for on travis, to be able to easier see what is failing.
.travis.yml
Outdated
# In allow_failures | ||
- dist: trusty | ||
env: | ||
- JOB="3.6_ASV" ASV=true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you put this just before the docs build? (I think I will more refer to the doc build, and then it is easier to say the last build :-))
I would not grep for the output yet, this obscure the progress; let's see how far it gets. |
2b29b7a
to
55da335
Compare
@jreback Looks like the build ran the asv within the time limit:
I will move forward with greping the output if all looks good. |
what changed to make this work? |
I think the change from My next commit will be to grep the output and see if it still runs within the time limit of the build. |
After adding a grep, received
Will now be adding a travis wait |
So I think it works now? I guess I could also intentionally make one of the benchmarks wrong to see if this "exited with 1". Would appreciate a second look @jreback From the build:
|
@@ -73,6 +73,10 @@ matrix: | |||
env: | |||
- JOB="3.6_NUMPY_DEV" TEST_ARGS="--skip-slow --skip-network" PANDAS_TESTING_MODE="deprecate" | |||
# In allow_failures | |||
- dist: trusty |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
move this after the doc build
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jorisvandenbossche prefered this before the doc build
@@ -93,6 +97,9 @@ matrix: | |||
- dist: trusty | |||
env: | |||
- JOB="3.6_NUMPY_DEV" TEST_ARGS="--skip-slow --skip-network" PANDAS_TESTING_MODE="deprecate" | |||
- dist: trusty |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jorisvandenbossche prefered this before the doc build
ci/asv.sh
Outdated
asv machine --yes | ||
|
||
RET=0 | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i would tee here; i like the output to the terminal
a9b995f
to
c71ee2d
Compare
looking good. a couple of things.
|
5a94403
to
a1bf2c8
Compare
Warnings have been caught and now checking failed benchmarks through a file,
|
@mroeschke If it is not too difficult, can you do the clean-up of the benchmarks for rolling in a separate PR? |
@@ -1,8 +1,6 @@ | |||
import numpy as np | |||
import pandas.util.testing as tm | |||
from pandas import (DataFrame, Series, rolling_median, rolling_mean, | |||
rolling_min, rolling_max, rolling_var, rolling_skew, | |||
rolling_kurt, rolling_std, read_csv, factorize, date_range) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I might be 'overhead' to keep, but we can also simply move those imports to withing the else
statement, and then this keeps working for old releases.
create asv.sh add to travis Changed file permission Add else statement and asv machine config move to separate travis build CI: Run ASV on Travis for failed benchmarks create asv.sh add to travis move to separate travis build Change build order and change to asv dev Put asv before doc Fix some failing benchmarks Grep for failed benchmarks Add travis wait Don't grep output yet Remove travis_wait for now fix some benchmarks Now grep output add travis wait 40 to ci/asv.sh Add tee Remove wait Start catching warnings catch more warnings Fix ci strategy Remove rolling_* from gil.py catch more warnings Add back rolling methods for older releases simplify rolling setup
@jorisvandenbossche Added back the rolling methods. Sorry I saw your other comment too late and squashed my commits where I made edits for the rolling methods. Is it still possible to cherry pick from a squashed commit? |
Ping @jorisvandenbossche any additional feedback? |
thanks @mroeschke let's see how this works. its the longest build, but ok for now. |
closes #19518
xref #19104
Not sure if this should belong in
ci/lint.sh
, but testing the possibility of running the asv benchmarks on ci for failed benchmarks.