Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
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
2 changes: 2 additions & 0 deletions static/app/gettingStartedDocs/dotnet-aspnet/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {logs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {metrics} from 'sentry/gettingStartedDocs/dotnet/metrics';
import {
feedbackOnboardingJsLoader,
replayOnboardingJsLoader,
Expand All @@ -14,6 +15,7 @@ const docs: Docs = {
crashReportOnboarding: crashReport,
feedbackOnboardingJsLoader,
logsOnboarding: logs,
metricsOnboarding: metrics,
};

export default docs;
2 changes: 2 additions & 0 deletions static/app/gettingStartedDocs/dotnet-aspnetcore/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {logs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {metrics} from 'sentry/gettingStartedDocs/dotnet/metrics';
import {
feedbackOnboardingJsLoader,
replayOnboardingJsLoader,
Expand All @@ -14,6 +15,7 @@ const docs: Docs = {
crashReportOnboarding: crashReport,
feedbackOnboardingJsLoader,
logsOnboarding: logs,
metricsOnboarding: metrics,
};

export default docs;
2 changes: 2 additions & 0 deletions static/app/gettingStartedDocs/dotnet-awslambda/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {feedback} from 'sentry/gettingStartedDocs/dotnet/feedback';
import {logs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {metrics} from 'sentry/gettingStartedDocs/dotnet/metrics';

import {crashReport} from './crashReport';
import {onboarding} from './onboarding';
Expand All @@ -10,6 +11,7 @@ const docs: Docs = {
feedbackOnboardingCrashApi: feedback,
crashReportOnboarding: crashReport,
logsOnboarding: logs,
metricsOnboarding: metrics,
};

export default docs;
2 changes: 2 additions & 0 deletions static/app/gettingStartedDocs/dotnet-gcpfunctions/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {feedback} from 'sentry/gettingStartedDocs/dotnet/feedback';
import {logs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {metrics} from 'sentry/gettingStartedDocs/dotnet/metrics';

import {crashReport} from './crashReport';
import {onboarding} from './onboarding';
Expand All @@ -10,6 +11,7 @@ const docs: Docs = {
feedbackOnboardingCrashApi: feedback,
crashReportOnboarding: crashReport,
logsOnboarding: logs,
metricsOnboarding: metrics,
};

export default docs;
2 changes: 2 additions & 0 deletions static/app/gettingStartedDocs/dotnet-maui/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {feedback} from 'sentry/gettingStartedDocs/dotnet/feedback';
import {logs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {metrics} from 'sentry/gettingStartedDocs/dotnet/metrics';

import {crashReport} from './crashReport';
import {onboarding} from './onboarding';
Expand All @@ -10,6 +11,7 @@ const docs: Docs = {
feedbackOnboardingCrashApi: feedback,
crashReportOnboarding: crashReport,
logsOnboarding: logs,
metricsOnboarding: metrics,
};

export default docs;
2 changes: 2 additions & 0 deletions static/app/gettingStartedDocs/dotnet-winforms/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {feedback} from 'sentry/gettingStartedDocs/dotnet/feedback';
import {logs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {metrics} from 'sentry/gettingStartedDocs/dotnet/metrics';

import {crashReport} from './crashReport';
import {onboarding} from './onboarding';
Expand All @@ -10,6 +11,7 @@ const docs: Docs = {
feedbackOnboardingCrashApi: feedback,
crashReportOnboarding: crashReport,
logsOnboarding: logs,
metricsOnboarding: metrics,
};

export default docs;
2 changes: 2 additions & 0 deletions static/app/gettingStartedDocs/dotnet-wpf/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {feedback} from 'sentry/gettingStartedDocs/dotnet/feedback';
import {logs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {metrics} from 'sentry/gettingStartedDocs/dotnet/metrics';

import {crashReport} from './crashReport';
import {onboarding} from './onboarding';
Expand All @@ -10,6 +11,7 @@ const docs: Docs = {
feedbackOnboardingCrashApi: feedback,
crashReportOnboarding: crashReport,
logsOnboarding: logs,
metricsOnboarding: metrics,
};

export default docs;
2 changes: 2 additions & 0 deletions static/app/gettingStartedDocs/dotnet/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {crashReport} from './crashReport';
import {feedback} from './feedback';
import {logs} from './logs';
import {metrics} from './metrics';
import {onboarding} from './onboarding';
import {profiling} from './profiling';

Expand All @@ -12,6 +13,7 @@ const docs: Docs = {
crashReportOnboarding: crashReport,
profilingOnboarding: profiling,
logsOnboarding: logs,
metricsOnboarding: metrics,
};

export default docs;
33 changes: 33 additions & 0 deletions static/app/gettingStartedDocs/dotnet/metrics.spec.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import {renderWithOnboardingLayout} from 'sentry-test/onboarding/renderWithOnboardingLayout';
import {screen} from 'sentry-test/reactTestingLibrary';
import {textWithMarkupMatcher} from 'sentry-test/utils';

import {ProductSolution} from 'sentry/components/onboarding/gettingStartedDoc/types';

import docs from '.';

describe('metrics', () => {
it('dotnet metrics onboarding docs', () => {
renderWithOnboardingLayout(docs, {
selectedProducts: [ProductSolution.METRICS],
});

expect(
screen.getByText(
textWithMarkupMatcher(/SentrySdk\.Experimental\.Metrics\.EmitCounter/)
)
).toBeInTheDocument();
});

it('does not render metrics configuration when metrics is not enabled', () => {
renderWithOnboardingLayout(docs, {
selectedProducts: [],
});

expect(
screen.queryByText(
textWithMarkupMatcher(/SentrySdk\.Experimental\.Metrics\.EmitCounter/)
)
).not.toBeInTheDocument();
});
});
85 changes: 85 additions & 0 deletions static/app/gettingStartedDocs/dotnet/metrics.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
import {ExternalLink} from '@sentry/scraps/link';

import {
StepType,
type ContentBlock,
type DocsParams,
type OnboardingConfig,
} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {
getInstallSnippetCoreCli,
getInstallSnippetPackageManager,
} from 'sentry/gettingStartedDocs/dotnet/utils';
import {t, tct} from 'sentry/locale';

export const metricsVerify = (params: DocsParams): ContentBlock => ({
Expand Down Expand Up @@ -37,3 +43,82 @@ SentrySdk.Experimental.Metrics.EmitGauge("page_load", 15.0, SentryUnits.Duration
},
],
});

export const metrics: OnboardingConfig = {
install: params => [
{
type: StepType.INSTALL,
content: [
{
type: 'text',
text: tct(
'Install our .NET SDK with a minimum version that supports metrics ([code:6.1.0] or higher).',
{
code: <code />,
}
),
},
{
type: 'code',
tabs: [
{
label: 'Package Manager',
language: 'shell',
code: getInstallSnippetPackageManager(params),
},
{
label: '.NET Core CLI',
language: 'shell',
code: getInstallSnippetCoreCli(params),
},
],
},
],
},
],
configure: () => [],
verify: (params: DocsParams) => [
{
type: StepType.VERIFY,
content: [
{
type: 'text',
text: tct(
'Metrics are automatically enabled in your [code:SentrySdk.Init] configuration. You can emit metrics using the [code:SentrySdk.Experimental.Metrics] API.',
{
code: <code />,
}
),
},
{
type: 'code',
language: 'csharp',
code: `using Sentry;

SentrySdk.Init(options =>
{
options.Dsn = "${params.dsn.public}";
});

SentrySdk.Experimental.Metrics.EmitCounter("button_click", 5,
[new KeyValuePair<string, object>("browser", "Firefox"), new KeyValuePair<string, object>("app_version", "1.0.0")]);
SentrySdk.Experimental.Metrics.EmitDistribution("page_load", 15.0, SentryUnits.Duration.Millisecond,
[new KeyValuePair<string, object>("page", "/home")]);
SentrySdk.Experimental.Metrics.EmitGauge("page_load", 15.0, SentryUnits.Duration.Millisecond,
[new KeyValuePair<string, object>("page", "/home")]);`,
},
{
type: 'text',
text: tct(
'For more detailed information, see the [link:metrics documentation].',
{
link: (
<ExternalLink href="https://docs.sentry.io/platforms/dotnet/metrics/" />
),
}
),
},
],
},
],
};
6 changes: 4 additions & 2 deletions static/app/gettingStartedDocs/dotnet/utils.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import type {DocsParams} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion';

// Sentry SDK for .NET 6.1.0 adds initial experimental support for Metrics
export const getInstallSnippetPackageManager = (params: DocsParams) => `
Install-Package Sentry -Version ${getPackageVersion(params, 'sentry.dotnet', '6.0.0')}`;
Install-Package Sentry -Version ${getPackageVersion(params, 'sentry.dotnet', '6.1.0')}`;

// Sentry SDK for .NET 6.1.0 adds initial experimental support for Metrics
export const getInstallSnippetCoreCli = (params: DocsParams) => `
dotnet add package Sentry -v ${getPackageVersion(params, 'sentry.dotnet', '6.0.0')}`;
dotnet add package Sentry -v ${getPackageVersion(params, 'sentry.dotnet', '6.1.0')}`;
Loading