Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 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 {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