Skip to content
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

Add Tests to measure activation times of extension #1813

Merged
merged 4 commits into from
Jun 5, 2018

Conversation

DonJayamanne
Copy link

Fixes #932

This pull request:

  • Has a title summarizes what is changing
  • Includes a news entry file (remember to thank yourself!)
  • Has unit tests & code coverage is not adversely affected (within reason)
  • Works on all actively maintained versions of Python (e.g. Python 2.7 & the latest Python 3 release)
  • Works on Windows 10, macOS, and Linux (e.g. considered file system case-sensitivity)

console.log(`Analysis Engine Loaded in ${analysisEngineActivationAvgTime}ms`);

expect(devActivationAvgTime - releaseActivationAvgTime).to.be.lessThan(AllowedIncreaaseInActivationDelayInMS, 'Activation times have increased above allowed threshold.');
expect(devActivationAvgTime).to.be.lessThan(1000, 'Activation time has exceed 1s.');

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With analysis engine may be a bit more than a second, depends on the machine/VM.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, will remove that.

import { commands, extensions } from 'vscode';
import { StopWatch } from '../../client/common/stopWatch';

const AllowedIncreaaseInActivationDelayInMS = 50;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in name.

For Extension activation times, we load both extensions x times, and re-load the window y times in each x load.
I.e. capture averages by giving the extensions sufficient time to warm up.
This block of code merely launches the tests by using either the dev or release version of the extension,
and spawning the tests (mimic user starting tests from command line), this way we can run tests multiple times.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can also set a maximum perf number to help deal with skew, e.g. we never want this to average above 500 ms and we fail if that occurs. This prevents drift by saying we allow up to a 10% shift by being absolute instead of relative. It would also potentially negate needing to do a comparison against a current version.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@codecov
Copy link

codecov bot commented May 31, 2018

Codecov Report

Merging #1813 into master will decrease coverage by 0.05%.
The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #1813      +/-   ##
==========================================
- Coverage   74.37%   74.32%   -0.06%     
==========================================
  Files         282      282              
  Lines       13218    13191      -27     
  Branches     2375     2346      -29     
==========================================
- Hits         9831     9804      -27     
  Misses       3256     3256              
  Partials      131      131
Impacted Files Coverage Δ
src/client/providers/symbolProvider.ts 23.33% <0%> (-58.67%) ⬇️
src/client/common/variables/environment.ts 92.45% <0%> (-4.92%) ⬇️
src/client/interpreter/locators/index.ts 90% <0%> (-1.49%) ⬇️
...lient/debugger/configProviders/pythonV2Provider.ts 83.33% <0%> (-1.05%) ⬇️
...rc/client/debugger/PythonProcessCallbackHandler.ts 53.61% <0%> (-0.66%) ⬇️
src/client/telemetry/constants.ts 100% <0%> (ø) ⬆️
...gger/configProviders/configurationProviderUtils.ts 100% <0%> (ø) ⬆️
src/client/providers/terminalProvider.ts 100% <0%> (ø) ⬆️
src/client/common/types.ts 100% <0%> (ø) ⬆️
src/client/unittests/common/debugLauncher.ts 93.18% <0%> (ø) ⬆️
... and 8 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update c6b374e...5fcec1e. Read the comment docs.

@DonJayamanne DonJayamanne force-pushed the testAgainstInsiders branch 2 times, most recently from 1927481 to 3707b2c Compare June 2, 2018 03:23
@DonJayamanne DonJayamanne force-pushed the testAgainstInsiders branch from c85a3cd to f05e27a Compare June 2, 2018 03:34
@DonJayamanne DonJayamanne merged commit 89e6216 into microsoft:master Jun 5, 2018
@lock lock bot locked as resolved and limited conversation to collaborators Jul 31, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add some form of regression test to measure performance of load times
3 participants