bneumann / CppUTest-Test-Adapter

A test adapter for Visual Studio Code for the C/C++ Unit Test framework CppUTest.
MIT License
16 stars 7 forks source link

Unit Test Parser slow when there are a lot of tests #20

Closed lokimon closed 2 years ago

lokimon commented 2 years ago

We have an application test executable that has over 1000 tests in it. The test doesn't seem to show up in the extension. I thought it was because the test wasn't being found, but now I see objdump is running a whole lot.

I'm not sure if it's going to show up, but it's been over 10 minutes so far.

Maybe if the output of objdump was cached instead of calling it over and over, would that make things run faster.

bneumann commented 2 years ago

phew. I could also get the objdump output as a whole and do the parsing in a separate step instead of calling it for every test. My test executable is so small it never was an issue. But yeah will give it a go.

lokimon commented 2 years ago

I just did a quick test... 1 objdump was 64 seconds. times 1000. 18 hours later. :)

bneumann commented 2 years ago

okay, definitly cache it ;) Sure no problem I already have an idea how to do it.

bneumann commented 2 years ago

Might be fixed with d65dc07

bneumann commented 2 years ago

I pushed version 1.0.2. Let me know if the temporary file bothers you. It was the quickest I came up with.

lokimon commented 2 years ago

Also https://github.com/cpputest/cpputest/issues/1497 I hope that is ok

bneumann commented 2 years ago

Hmmm my bet is that they won't include that. But what's the problem using objdumps when cached? You have all information needed in the dump.

lokimon commented 2 years ago

true.. but it takes a minute to run objdump.. so I hit the referesh when a test changes, it takes a minute to reset the list.

Would be cool if there was an even faster way.

lokimon commented 2 years ago

But I tested out what you have and so far so good. Appreciate it!

The .dump files are only slightly annoying. :)

bneumann commented 2 years ago

The reason I need the dump is because formerly there was:

With the new testing API in VSCode > 1.59 it's possible to update tests afterwards. So what I could do is to migrate to the new API and fill the file location information asynchronous in the background. In the documentation they have even an example how to use some vscode functionality to scan the currently open file: https://vscode.trafficmanager.net/api/extension-guides/testing#discovering-tests And on a side note it is completely objdump free that means I could implement the same behaviour for Windows and Linux which would also be nice.

So yeah. Migrating or currently living with the slow load.

lokimon commented 2 years ago

The cpputest maintainer said they would accept a change to have cpputest output the data we need. Now I just need to come up with the time to do that. :)

I think we can close this one for now. +1