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 support for getting stats by author(s) and owner(s) #368

Merged
merged 1 commit into from
Oct 4, 2024
Merged

Conversation

kzu
Copy link
Member

@kzu kzu commented Oct 4, 2024

We had a semi-complete approach, and it only supported on author (and no owners).

Generalize the endpoints in:

  • /nuget/id: gets count of nuget ids
  • /nuget/dl: gets download counts for packages

Both can receive:

  • No querystring: return the values for the current sponsorable host
  • ?author=: filter by author(s). Can receive more than one value.
  • ?owner=: filter by repo owner. Can receive more than one value.

The multi-value querystring is useful when fetching stats for multiple authors (i.e. more than one team member), or for orgs that own repos across more than one GH org (i.e. MIcrosoft, dotnet, aspnet, Azure).

@kzu kzu added the enhancement New feature or request label Oct 4, 2024
We had a semi-complete approach, and it only supported on author (and no owners).

Generalize the endpoints in:

* `/nuget/id`: gets count of nuget ids
* `/nuget/dl`: gets download counts for packages

Both can receive:
* No querystring: return the values for the current sponsorable host
* `?author=`: filter by author(s). Can receive more than one value.
* `?owner=`: filter by repo owner. Can receive more than one value.

The multi-value querystring is useful when fetching stats for multiple authors (i.e. more than one team member), or for orgs that own repos across more than one GH org (i.e. MIcrosoft, dotnet, aspnet, Azure).
@kzu kzu enabled auto-merge (rebase) October 4, 2024 02:02
@devlooped-bot
Copy link
Member

devlooped-bot commented Oct 4, 2024

44 passed 44 passed 1 skipped

🧪 Details on Microsoft Windows 10.0.20348

✅ Devlooped.Tests.SponsorLinkTests.TryRead
❔ Devlooped.Tests.SponsorLinkTests.ValidateCachedManifest => Non-CI test
✅ Devlooped.Tests.SponsorLinkTests.ValidateExpiredSponsor
✅ Devlooped.Tests.SponsorLinkTests.ValidateSponsorable
✅ Devlooped.Tests.SponsorLinkTests.ValidateUnknownFormat
✅ Devlooped.Tests.SponsorLinkTests.ValidateWrongKey
✅ Tests.AnalyzerTests.WhenAnalyzerNotDirectlyReferenced_ThenDoesNotReport
✅ Tests.AnalyzerTests.WhenMultipleAnalyzers_ThenReportsOnce
✅ Tests.AnalyzerTests.WhenNoAdditionalFiles_ThenReportsUnknown
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "contrib,oss", status: Contributor)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "contrib,team", status: Team)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "contrib", status: Contributor)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "org,contrib", status: Contributor)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "org,oss", status: Organization)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "org", status: Organization)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "oss", status: OpenSource)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "team", status: Team)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "user,contrib,team", status: Team)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "user,org,contrib", status: User)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "user,oss", status: User)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "user", status: User)
✅ Tests.AnalyzerTests.WhenUnknownAndGrace_ThenDoesNotReport
✅ Tests.AnalyzerTests.WhenUnknownAndGraceExpired_ThenReportsUnknown
✅ Tests.AnalyzerTests.WhenUnknownAndNoGraceOption_ThenReportsUnknown
✅ Tests.Sample.RenderSponsorables
✅ Tests.Sample.Test(culture: "", kind: Contributor)
✅ Tests.Sample.Test(culture: "", kind: Expired)
✅ Tests.Sample.Test(culture: "", kind: Expiring)
✅ Tests.Sample.Test(culture: "", kind: Unknown)
✅ Tests.Sample.Test(culture: "", kind: User)
✅ Tests.Sample.Test(culture: "en", kind: Contributor)
✅ Tests.Sample.Test(culture: "en", kind: Expired)
✅ Tests.Sample.Test(culture: "en", kind: Expiring)
✅ Tests.Sample.Test(culture: "en", kind: Unknown)
✅ Tests.Sample.Test(culture: "en", kind: User)
✅ Tests.Sample.Test(culture: "es-AR", kind: Contributor)
✅ Tests.Sample.Test(culture: "es-AR", kind: Expired)
✅ Tests.Sample.Test(culture: "es-AR", kind: Expiring)
✅ Tests.Sample.Test(culture: "es-AR", kind: Unknown)
✅ Tests.Sample.Test(culture: "es-AR", kind: User)
✅ Tests.Sample.Test(culture: "es", kind: Contributor)
✅ Tests.Sample.Test(culture: "es", kind: Expired)
✅ Tests.Sample.Test(culture: "es", kind: Expiring)
✅ Tests.Sample.Test(culture: "es", kind: Unknown)
✅ Tests.Sample.Test(culture: "es", kind: User)

from dotnet-retest v0.6.3 on .NET 8.0.8 with 💜

@devlooped-bot
Copy link
Member

44 passed 44 passed 1 skipped

🧪 Details on macOS Unix 14.6.1

✅ Devlooped.Tests.SponsorLinkTests.TryRead
❔ Devlooped.Tests.SponsorLinkTests.ValidateCachedManifest => Non-CI test
✅ Devlooped.Tests.SponsorLinkTests.ValidateExpiredSponsor
✅ Devlooped.Tests.SponsorLinkTests.ValidateSponsorable
✅ Devlooped.Tests.SponsorLinkTests.ValidateUnknownFormat
✅ Devlooped.Tests.SponsorLinkTests.ValidateWrongKey
✅ Tests.AnalyzerTests.WhenAnalyzerNotDirectlyReferenced_ThenDoesNotReport
✅ Tests.AnalyzerTests.WhenMultipleAnalyzers_ThenReportsOnce
✅ Tests.AnalyzerTests.WhenNoAdditionalFiles_ThenReportsUnknown
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "contrib,oss", status: Contributor)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "contrib,team", status: Team)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "contrib", status: Contributor)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "org,contrib", status: Contributor)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "org,oss", status: Organization)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "org", status: Organization)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "oss", status: OpenSource)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "team", status: Team)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "user,contrib,team", status: Team)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "user,org,contrib", status: User)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "user,oss", status: User)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "user", status: User)
✅ Tests.AnalyzerTests.WhenUnknownAndGrace_ThenDoesNotReport
✅ Tests.AnalyzerTests.WhenUnknownAndGraceExpired_ThenReportsUnknown
✅ Tests.AnalyzerTests.WhenUnknownAndNoGraceOption_ThenReportsUnknown
✅ Tests.Sample.RenderSponsorables
✅ Tests.Sample.Test(culture: "", kind: Contributor)
✅ Tests.Sample.Test(culture: "", kind: Expired)
✅ Tests.Sample.Test(culture: "", kind: Expiring)
✅ Tests.Sample.Test(culture: "", kind: Unknown)
✅ Tests.Sample.Test(culture: "", kind: User)
✅ Tests.Sample.Test(culture: "en", kind: Contributor)
✅ Tests.Sample.Test(culture: "en", kind: Expired)
✅ Tests.Sample.Test(culture: "en", kind: Expiring)
✅ Tests.Sample.Test(culture: "en", kind: Unknown)
✅ Tests.Sample.Test(culture: "en", kind: User)
✅ Tests.Sample.Test(culture: "es-AR", kind: Contributor)
✅ Tests.Sample.Test(culture: "es-AR", kind: Expired)
✅ Tests.Sample.Test(culture: "es-AR", kind: Expiring)
✅ Tests.Sample.Test(culture: "es-AR", kind: Unknown)
✅ Tests.Sample.Test(culture: "es-AR", kind: User)
✅ Tests.Sample.Test(culture: "es", kind: Contributor)
✅ Tests.Sample.Test(culture: "es", kind: Expired)
✅ Tests.Sample.Test(culture: "es", kind: Expiring)
✅ Tests.Sample.Test(culture: "es", kind: Unknown)
✅ Tests.Sample.Test(culture: "es", kind: User)

from dotnet-retest v0.6.3 on .NET 8.0.8 with 💜

@devlooped-bot
Copy link
Member

44 passed 44 passed 1 skipped

🧪 Details on Ubuntu 22.04.5 LTS

✅ Devlooped.Tests.SponsorLinkTests.TryRead
❔ Devlooped.Tests.SponsorLinkTests.ValidateCachedManifest => Non-CI test
✅ Devlooped.Tests.SponsorLinkTests.ValidateExpiredSponsor
✅ Devlooped.Tests.SponsorLinkTests.ValidateSponsorable
✅ Devlooped.Tests.SponsorLinkTests.ValidateUnknownFormat
✅ Devlooped.Tests.SponsorLinkTests.ValidateWrongKey
✅ Tests.AnalyzerTests.WhenAnalyzerNotDirectlyReferenced_ThenDoesNotReport
✅ Tests.AnalyzerTests.WhenMultipleAnalyzers_ThenReportsOnce
✅ Tests.AnalyzerTests.WhenNoAdditionalFiles_ThenReportsUnknown
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "contrib,oss", status: Contributor)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "contrib,team", status: Team)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "contrib", status: Contributor)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "org,contrib", status: Contributor)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "org,oss", status: Organization)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "org", status: Organization)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "oss", status: OpenSource)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "team", status: Team)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "user,contrib,team", status: Team)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "user,org,contrib", status: User)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "user,oss", status: User)
✅ Tests.AnalyzerTests.WhenSponsoringRole_ThenEnsureStatus(roles: "user", status: User)
✅ Tests.AnalyzerTests.WhenUnknownAndGrace_ThenDoesNotReport
✅ Tests.AnalyzerTests.WhenUnknownAndGraceExpired_ThenReportsUnknown
✅ Tests.AnalyzerTests.WhenUnknownAndNoGraceOption_ThenReportsUnknown
✅ Tests.Sample.RenderSponsorables
✅ Tests.Sample.Test(culture: "", kind: Contributor)
✅ Tests.Sample.Test(culture: "", kind: Expired)
✅ Tests.Sample.Test(culture: "", kind: Expiring)
✅ Tests.Sample.Test(culture: "", kind: Unknown)
✅ Tests.Sample.Test(culture: "", kind: User)
✅ Tests.Sample.Test(culture: "en", kind: Contributor)
✅ Tests.Sample.Test(culture: "en", kind: Expired)
✅ Tests.Sample.Test(culture: "en", kind: Expiring)
✅ Tests.Sample.Test(culture: "en", kind: Unknown)
✅ Tests.Sample.Test(culture: "en", kind: User)
✅ Tests.Sample.Test(culture: "es-AR", kind: Contributor)
✅ Tests.Sample.Test(culture: "es-AR", kind: Expired)
✅ Tests.Sample.Test(culture: "es-AR", kind: Expiring)
✅ Tests.Sample.Test(culture: "es-AR", kind: Unknown)
✅ Tests.Sample.Test(culture: "es-AR", kind: User)
✅ Tests.Sample.Test(culture: "es", kind: Contributor)
✅ Tests.Sample.Test(culture: "es", kind: Expired)
✅ Tests.Sample.Test(culture: "es", kind: Expiring)
✅ Tests.Sample.Test(culture: "es", kind: Unknown)
✅ Tests.Sample.Test(culture: "es", kind: User)

from dotnet-retest v0.6.3 on .NET 8.0.8 with 💜

@kzu kzu merged commit a3ab2a7 into main Oct 4, 2024
15 checks passed
@kzu kzu deleted the dev/stats branch October 4, 2024 02:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants