Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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 {dotnetLogs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {dotnetMetrics} from 'sentry/gettingStartedDocs/dotnet/metrics';
import {
feedbackOnboardingJsLoader,
replayOnboardingJsLoader,
Expand All @@ -14,6 +15,7 @@ const docs: Docs = {
crashReportOnboarding: crashReport,
feedbackOnboardingJsLoader,
logsOnboarding: dotnetLogs(),
metricsOnboarding: dotnetMetrics(),
};

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 {dotnetLogs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {dotnetMetrics} from 'sentry/gettingStartedDocs/dotnet/metrics';
import {
feedbackOnboardingJsLoader,
replayOnboardingJsLoader,
Expand All @@ -14,6 +15,7 @@ const docs: Docs = {
crashReportOnboarding: crashReport,
feedbackOnboardingJsLoader,
logsOnboarding: dotnetLogs(),
metricsOnboarding: dotnetMetrics(),
};

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 {dotnetLogs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {dotnetMetrics} 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: dotnetLogs(),
metricsOnboarding: dotnetMetrics(),
};

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 {dotnetLogs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {dotnetMetrics} 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: dotnetLogs(),
metricsOnboarding: dotnetMetrics(),
};

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 {dotnetLogs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {dotnetMetrics} 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: dotnetLogs(),
metricsOnboarding: dotnetMetrics(),
};

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 {dotnetLogs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {dotnetMetrics} 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: dotnetLogs(),
metricsOnboarding: dotnetMetrics(),
};

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 {dotnetLogs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {dotnetMetrics} 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: dotnetLogs(),
metricsOnboarding: dotnetMetrics(),
};

export default docs;
2 changes: 2 additions & 0 deletions static/app/gettingStartedDocs/dotnet-xamarin/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 {dotnetLogs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {dotnetMetrics} 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: dotnetLogs(),
metricsOnboarding: dotnetMetrics(),
};

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
@@ -1,5 +1,6 @@
import type {Docs} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {dotnetLogs} from 'sentry/gettingStartedDocs/dotnet/logs';
import {dotnetMetrics} from 'sentry/gettingStartedDocs/dotnet/metrics';

import {crashReport} from './crashReport';
import {feedback} from './feedback';
Expand All @@ -12,6 +13,7 @@ const docs: Docs = {
crashReportOnboarding: crashReport,
profilingOnboarding: profiling,
logsOnboarding: dotnetLogs(),
metricsOnboarding: dotnetMetrics(),
};

export default docs;
34 changes: 34 additions & 0 deletions static/app/gettingStartedDocs/dotnet/metrics.spec.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// Only import and test functions that don't have circular dependencies
const {dotnetMetrics} = jest.requireActual('sentry/gettingStartedDocs/dotnet/metrics');

describe('metrics', () => {
const mockParams = {
dsn: {
public: 'https://test@example.com/123',
},
sourcePackageRegistries: {
isLoading: false,
},
};

it('generates metrics onboarding config with default parameters', () => {
const result = dotnetMetrics();

// Test install step
const installSteps = result.install(mockParams);
expect(installSteps).toHaveLength(1);
expect(installSteps[0].type).toBe('install');
expect(installSteps[0].content).toHaveLength(2);

// Test verify step
const verifySteps = result.verify(mockParams);
expect(verifySteps).toHaveLength(1);
expect(verifySteps[0].type).toBe('verify');
expect(verifySteps[0].content).toHaveLength(3);
const codeSnippet = verifySteps[0].content[1].code;

expect(codeSnippet).toContain('SentrySdk.Init');
expect(codeSnippet).toContain(mockParams.dsn.public);
expect(codeSnippet).toContain('Metrics.EmitCounter');
});
});
85 changes: 85 additions & 0 deletions static/app/gettingStartedDocs/dotnet/metrics.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
import {ExternalLink} from 'sentry/components/core/link';
import {
StepType,
type ContentBlock,
type DocsParams,
type OnboardingConfig,
} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {
getInstallSnippetCoreCli,
getInstallSnippetPackageManager,
} from 'sentry/gettingStartedDocs/dotnet/utils';
import {tct} from 'sentry/locale';

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

export const dotnetMetrics = (): 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: 'dotnet',
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/" />
),
}
),
},
],
},
],
});
8 changes: 6 additions & 2 deletions static/app/gettingStartedDocs/dotnet/utils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersi

export const getInstallSnippetPackageManager = (params: DocsParams) => {
let version = '3.34.0';
if (params.isLogsSelected) {
if (params.isMetricsSelected) {
version = '6.1.0';
} else if (params.isLogsSelected) {
version = '6.0.0';
} else if (params.isProfilingSelected) {
version = '4.3.0';
Expand All @@ -15,7 +17,9 @@ Install-Package Sentry -Version ${getPackageVersion(params, 'sentry.dotnet', ver

export const getInstallSnippetCoreCli = (params: DocsParams) => {
let version = '3.34.0';
if (params.isLogsSelected) {
if (params.isMetricsSelected) {
version = '6.1.0';
} else if (params.isLogsSelected) {
version = '6.0.0';
} else if (params.isProfilingSelected) {
version = '4.3.0';
Expand Down
Loading