Skip to content

Conversation

NikolaMilosavljevic
Copy link
Member

Fixes dotnet/source-build#3612

This completes the work around sourcelink smoke-tests. Now, we're going to validate all symbols, which adds ~25 seconds to smoke-test runs.

Local VMR build and smoke-tests were successful. Full dotnet/dotnet validation build is in progress: https://dev.azure.com/dnceng/internal/_build/results?buildId=2285260&view=results

@NikolaMilosavljevic NikolaMilosavljevic requested a review from a team as a code owner October 6, 2023 16:58
Directory.CreateDirectory(SourcelinkRoot);

IList<string> failedFiles = ValidateSymbols(ExtractSymbolsPackages(GetAllSymbolsPackages()), InitializeSourcelinkTool());
string symbolsRoot = Directory.CreateDirectory(Path.Combine(SourcelinkRoot, "symbols")).FullName;
Copy link
Member

Choose a reason for hiding this comment

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

This directory should probably get cleaned up at the end of the test.

Copy link
Member Author

Choose a reason for hiding this comment

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

Parent directory gets deleted when we run smoke-tests the next time. But, I can see how this can delete some unnecessary test artifacts, to keep lower disk usage.

Will fix.

Copy link
Member Author

Choose a reason for hiding this comment

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

Fixed in 701e39a

@NikolaMilosavljevic
Copy link
Member Author

Validation build is failing in smoke-tests, on some platforms, and not always because of sourcelink tests. Investigating...

@NikolaMilosavljevic
Copy link
Member Author

Validation build is failing in smoke-tests, on some platforms, and not always because of sourcelink tests. Investigating...

Hmm, on one machine (Ubuntu 22.04 arm64) sourcelink processes are timing out after 5 seconds - it seems that the test machine is slow. I'll test if longer timeout will help.

@NikolaMilosavljevic NikolaMilosavljevic marked this pull request as draft October 9, 2023 18:54
@NikolaMilosavljevic
Copy link
Member Author

Validation build is failing in smoke-tests, on some platforms, and not always because of sourcelink tests. Investigating...

Hmm, on one machine (Ubuntu 22.04 arm64) sourcelink processes are timing out after 5 seconds - it seems that the test machine is slow. I'll test if longer timeout will help.

Still a lot of issues with a longer timeout - converting to draft until this is well understood.

@NikolaMilosavljevic
Copy link
Member Author

Validation build is failing in smoke-tests, on some platforms, and not always because of sourcelink tests. Investigating...

Hmm, on one machine (Ubuntu 22.04 arm64) sourcelink processes are timing out after 5 seconds - it seems that the test machine is slow. I'll test if longer timeout will help.

Still a lot of issues with a longer timeout - converting to draft until this is well understood.

With increased timeout, there are zero failures in sourcelink tests - previously there were timeouts on Alpine. However, more than half of platform legs are failing due to either of the following, or both tests:

DotNetWatchTests.WatchTests
WebScenarioTests.VerifyScenario(scenario: TestScenario { Commands = Build | Run | PublishComplex, Language = CSharp, NoHttps = False, ScenarioName = "WebScenarioTests", Template = Web, ... }

Investigating why this is only reproing in my validation runs.


IList<string> failedFiles = ValidateSymbols(ExtractSymbolsPackages(GetAllSymbolsPackages()), InitializeSourcelinkTool());
string symbolsRoot = Directory.CreateDirectory(Path.Combine(SourcelinkRoot, "symbols")).FullName;
Utilities.ExtractTarball(
Copy link
Member

Choose a reason for hiding this comment

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

I think it might be helpful to call out in a comment that the dotnet-sdk-symbols content is derived from dotnet-symbols-* therefore no validation is needed on it.

Copy link
Member Author

Choose a reason for hiding this comment

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

Fixed in b793194

@NikolaMilosavljevic
Copy link
Member Author

NikolaMilosavljevic commented Oct 12, 2023

Moved Sourcelink tests to a separate test collection - this causes Sourcelink tests to run separately and not starve other tests for CPU resources, that was previously causing them to timeout. With this change, validation build was successful.

Validation build: https://dev.azure.com/dnceng/internal/_build/results?buildId=2289036&view=results

@NikolaMilosavljevic NikolaMilosavljevic marked this pull request as ready for review October 12, 2023 15:56
@NikolaMilosavljevic
Copy link
Member Author

NikolaMilosavljevic commented Oct 12, 2023

This PR needs a change for all-symbols package name due to #17521

@NikolaMilosavljevic
Copy link
Member Author

This needs a change for all-symbols package name due to #17521

I've updated the PR with new all-symbols package name.

{
OutputHelper.WriteLine($"Sourcelink verification failed for the following files:");
foreach (string file in failedFiles)
// We are validating dotnet-symbols-*.tar.gz which contains all source-built symbols, including
Copy link
Member

Choose a reason for hiding this comment

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

This comment needs updating with the recent rename.

Copy link
Member Author

Choose a reason for hiding this comment

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

Fixed in fd4678e

/// This would make other tests run too long and fail due to timeouts.
/// </summary>
[CollectionDefinition(nameof(SourcelinkTestCollectionDefinition), DisableParallelization = true)]
public class SourcelinkTestCollectionDefinition { }
Copy link
Member

Choose a reason for hiding this comment

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

What's the value of the Definition suffix here? In the xunit documentation they don't seem to use this pattern.

Copy link
Member Author

Choose a reason for hiding this comment

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

Right - I did copy one of the examples of this usage. Will clean this.

Copy link
Member Author

Choose a reason for hiding this comment

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

Fixed in fd4678e

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants