Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
863aab2
WIP: Support language+service input file
mikeharder Dec 9, 2022
c6839a2
Merge branch 'main' into perf-refactoring
mikeharder Dec 9, 2022
a2f8413
Merge branch 'main' into perf-refactoring
mikeharder Jan 4, 2023
28ca85e
Merge branch 'main' into perf-refactoring
mikeharder Jan 5, 2023
f11fc29
Remove config file
mikeharder Jan 6, 2023
4a6fc82
WIP: Remove unused options and code
mikeharder Jan 6, 2023
be82c5d
Merge branch 'main' into perf-refactoring
mikeharder Jan 6, 2023
8d3dc3c
Merge branch 'main' into perf-refactoring
mikeharder Jan 6, 2023
a3705c8
WIP: Fix compile errors
mikeharder Jan 6, 2023
dfad556
Select tests and arguments
mikeharder Jan 6, 2023
dfecdad
Fix bug in package version filtering
mikeharder Jan 6, 2023
f19f693
Remove unused files
mikeharder Jan 7, 2023
25b9984
Code cleanup
mikeharder Jan 7, 2023
236dd6c
Remove unused code
mikeharder Jan 7, 2023
2f67043
Remove language from profile zip
mikeharder Jan 7, 2023
4ea6232
Remove config
mikeharder Jan 7, 2023
c2052f9
Revert "Remove language from profile zip"
mikeharder Jan 7, 2023
e1d18e3
Make RepoRoot required option
mikeharder Jan 7, 2023
e8a3553
Add default language versions
mikeharder Jan 7, 2023
9f5b831
Copy PrimaryPackage
mikeharder Jan 7, 2023
d08ac90
Force NoSync=true for JS
mikeharder Jan 7, 2023
453e390
Set NoAsync for Cpp
mikeharder Jan 11, 2023
fa1fc48
Merge branch 'main' into perf-refactoring
mikeharder Jan 24, 2023
6ce5b16
Update default language versions
mikeharder Jan 24, 2023
38298e7
Add HelpTest for TestsFile option
mikeharder Jan 24, 2023
4980dfe
Remove Services parameter
mikeharder Jan 24, 2023
0081cd1
Remove services parameter
mikeharder Jan 24, 2023
0d9ce69
Fix path to tests-file
mikeharder Jan 24, 2023
247b591
Revert "Add HelpTest for TestsFile option"
mikeharder Jan 24, 2023
d873545
Fix CppServiceDirectory
mikeharder Jan 24, 2023
35f5cd5
Merge branch 'main' into perf-refactoring
mikeharder Jan 27, 2023
0f1f10e
Run both sync and async tests by default
mikeharder Jan 27, 2023
31a889a
Add LanguageVersion to common perf.yml
mikeharder Jan 31, 2023
af70d88
Throw if no LanguageVersion for .NET and Python
mikeharder Jan 31, 2023
16f23f8
Add LanguageVersion parameter
mikeharder Jan 31, 2023
48a9a01
Make LanguageVersion required
mikeharder Jan 31, 2023
4df8279
Fix LanguageVersion for Python and C++
mikeharder Jan 31, 2023
d30d944
Merge branch 'main' into perf-refactoring
mikeharder Feb 4, 2023
5b18f66
Merge branch 'main' into perf-refactoring
mikeharder Feb 7, 2023
4493230
Merge branch 'main' into perf-refactoring
mikeharder Feb 9, 2023
dc6775e
Add values to NetLanguageVersion
mikeharder Feb 9, 2023
572fe3e
Revert "Add values to NetLanguageVersion"
mikeharder Feb 9, 2023
e07e39a
Add displayName to LanguageVersion
mikeharder Feb 9, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 7 additions & 12 deletions eng/common/pipelines/templates/jobs/perf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ parameters:
- name: Language
type: string
default: ''
- name: LanguageVersion
type: string
default: ''
- name: LanguageRepoName
type: string
default: $(Build.Repository.Name)
Expand All @@ -38,9 +41,6 @@ parameters:
- name: ServiceDirectory
type: string
default: ''
- name: Services
type: string
default: ''
- name: PackageVersions
type: string
default: '.*'
Expand Down Expand Up @@ -118,17 +118,12 @@ jobs:
Location: westus
ResourceType: perf

- pwsh: |
set-content -path config.yml -value "WorkingDirectories:"
add-content -path config.yml -value " ${{ parameters.Language }}: $(Agent.BuildDirectory)/s"
workingDirectory: azure-sdk-tools/tools/perf-automation/Azure.Sdk.Tools.PerfAutomation
displayName: Create config.yml

- script: >-
dotnet run -- run
--no-sync
--languages ${{ parameters.Language }}
--services "${{ parameters.Services }}"
--language ${{ parameters.Language }}
--language-version ${{ parameters.LanguageVersion }}
--repo-root $(System.DefaultWorkingDirectory)
--tests-file $(System.DefaultWorkingDirectory)/sdk/${{ parameters.ServiceDirectory }}/perf-tests.yml
--package-versions "${{ parameters.PackageVersions }}"
--tests "${{ parameters.Tests }}"
--arguments "${{ parameters.Arguments }}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ namespace Azure.Sdk.Tools.PerfAutomation
{
public interface ILanguage
{
string WorkingDirectory { get; set; }

Task CleanupAsync(string project);

IDictionary<string, string> FilterRuntimePackageVersions(IDictionary<string, string> runtimePackageVersions);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ public override async Task<IterationResult> RunAsync(
bool profile,
object context)
{
var runtimePackageVersions = (Dictionary<string, string>) context;
var runtimePackageVersions = (Dictionary<string, string>)context;

var outputBuilder = new StringBuilder();
var errorBuilder = new StringBuilder();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public abstract class LanguageBase : ILanguage

protected string ProfileDirectory => Path.GetFullPath(Path.Combine(WorkingDirectory, Language + "-profile"));

protected string WorkingDirectory => Program.Config.WorkingDirectories[Language];
public string WorkingDirectory { get; set; }

public abstract Task CleanupAsync(string project);

Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,11 +1,44 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Azure.Sdk.Tools.PerfAutomation.Models
{
public class ServiceInfo
{
public string Service { get; set; }
public IDictionary<Language, ServiceLanguageInfo> Languages { get; set; }
public string Project { get; set; }

private string _primaryPackage;
public string PrimaryPackage
{
get
{
if (!string.IsNullOrEmpty(_primaryPackage))
{
return _primaryPackage;
}
else if (!PackageVersions.Any())
{
return string.Empty;
}
else if (PackageVersions.First().Count == 1)
{
return PackageVersions.First().First().Key;
}
else
{
throw new InvalidOperationException("Must set PrimaryPackageVersion if PackageVersions contains multiple packages");
}
}

set
{
_primaryPackage = value;
}
}

public IEnumerable<IDictionary<string, string>> PackageVersions { get; set; }
public IEnumerable<TestInfo> Tests { get; set; }
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace Azure.Sdk.Tools.PerfAutomation.Models
public class TestInfo
{
public string Test { get; set; }
public string Class { get; set; }
Copy link
Member

Choose a reason for hiding this comment

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

This is misleading. How about "fixture"? A common term across numerous languages' common test runners/frameworks.

Copy link
Member Author

Choose a reason for hiding this comment

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

I don't think Class is particularly misleading, since a perf test is represented by a class in each language. But I'm fine with Fixture as well.

@AlexanderSher, @g2vinay, @HarshaNalluru, @timovv, @annatisch, @pvaneck, @gearama: Any opinions?

Copy link
Contributor

Choose a reason for hiding this comment

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

Fixture sounds good, don't really mind either since this won't flow into the language repos anyway.

Copy link
Member Author

Choose a reason for hiding this comment

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

I chatted with @heaths, he is OK with Class since each perf test is represented by a class. He was thinking each perf test was represented by a method (like unit tests).

Copy link
Member Author

Choose a reason for hiding this comment

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

Fixture sounds good, don't really mind either since this won't flow into the language repos anyway.

This change would flow into the language repos, since it would also rename from Class to Fixture in all the perf-tests.yml files.

Copy link
Contributor

Choose a reason for hiding this comment

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

woah, ok

public IEnumerable<string> Arguments { get; set; }
public IDictionary<Language, string> TestNames { get; set; }
}
}
Loading