Skip to content

Commit

Permalink
ref: Add statsd item type (#3676)
Browse files Browse the repository at this point in the history
Add envelope item type and data category for statsd, which is required for
the metrics API.
  • Loading branch information
philipphofmann authored Feb 22, 2024
1 parent 7b5ebd9 commit 34a0532
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 35 deletions.
9 changes: 9 additions & 0 deletions Sources/Sentry/SentryDataCategoryMapper.m
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
NSString *const kSentryDataCategoryNameAttachment = @"attachment";
NSString *const kSentryDataCategoryNameUserFeedback = @"user_report";
NSString *const kSentryDataCategoryNameProfile = @"profile";
NSString *const kSentryDataCategoryNameStatsd = @"statsd";
NSString *const kSentryDataCategoryNameUnknown = @"unknown";

NS_ASSUME_NONNULL_BEGIN
Expand All @@ -33,6 +34,9 @@
if ([itemType isEqualToString:SentryEnvelopeItemTypeProfile]) {
return kSentryDataCategoryProfile;
}
if ([itemType isEqualToString:SentryEnvelopeItemTypeStatsd]) {
return kSentryDataCategoryStatsd;
}
return kSentryDataCategoryDefault;
}

Expand Down Expand Up @@ -73,6 +77,9 @@
if ([value isEqualToString:kSentryDataCategoryNameProfile]) {
return kSentryDataCategoryProfile;
}
if ([value isEqualToString:kSentryDataCategoryNameStatsd]) {
return kSentryDataCategoryStatsd;
}

return kSentryDataCategoryUnknown;
}
Expand Down Expand Up @@ -101,6 +108,8 @@
return kSentryDataCategoryNameUserFeedback;
case kSentryDataCategoryProfile:
return kSentryDataCategoryNameProfile;
case kSentryDataCategoryStatsd:
return kSentryDataCategoryNameStatsd;
case kSentryDataCategoryUnknown:
return kSentryDataCategoryNameUnknown;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ static NSString *const SentryEnvelopeItemTypeTransaction = @"transaction";
static NSString *const SentryEnvelopeItemTypeAttachment = @"attachment";
static NSString *const SentryEnvelopeItemTypeClientReport = @"client_report";
static NSString *const SentryEnvelopeItemTypeProfile = @"profile";
static NSString *const SentryEnvelopeItemTypeStatsd = @"statsd";
4 changes: 3 additions & 1 deletion Sources/Sentry/include/SentryDataCategory.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ typedef NS_ENUM(NSUInteger, SentryDataCategory) {
kSentryDataCategoryAttachment = 5,
kSentryDataCategoryUserFeedback = 6,
kSentryDataCategoryProfile = 7,
kSentryDataCategoryUnknown = 8
kSentryDataCategoryStatsd = 8,
kSentryDataCategoryUnknown = 9
};

static DEPRECATED_MSG_ATTRIBUTE(
Expand All @@ -29,5 +30,6 @@ static DEPRECATED_MSG_ATTRIBUTE(
@"attachment",
@"user_report",
@"profile",
@"statsd",
@"unkown",
};
1 change: 1 addition & 0 deletions Sources/Sentry/include/SentryDataCategoryMapper.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ FOUNDATION_EXPORT NSString *const kSentryDataCategoryNameTransaction;
FOUNDATION_EXPORT NSString *const kSentryDataCategoryNameAttachment;
FOUNDATION_EXPORT NSString *const kSentryDataCategoryNameUserFeedback;
FOUNDATION_EXPORT NSString *const kSentryDataCategoryNameProfile;
FOUNDATION_EXPORT NSString *const kSentryDataCategoryNameStatsd;
FOUNDATION_EXPORT NSString *const kSentryDataCategoryNameUnknown;

SentryDataCategory sentryDataCategoryForNSUInteger(NSUInteger value);
Expand Down
73 changes: 39 additions & 34 deletions Tests/SentryTests/Networking/SentryDataCategoryMapperTests.swift
Original file line number Diff line number Diff line change
@@ -1,53 +1,58 @@
import Nimble
@testable import Sentry
import XCTest

class SentryDataCategoryMapperTests: XCTestCase {
func testEnvelopeItemType() {
XCTAssertEqual(.error, sentryDataCategoryForEnvelopItemType("event"))
XCTAssertEqual(.session, sentryDataCategoryForEnvelopItemType("session"))
XCTAssertEqual(.transaction, sentryDataCategoryForEnvelopItemType("transaction"))
XCTAssertEqual(.attachment, sentryDataCategoryForEnvelopItemType("attachment"))
XCTAssertEqual(.profile, sentryDataCategoryForEnvelopItemType("profile"))
XCTAssertEqual(.default, sentryDataCategoryForEnvelopItemType("unknown item type"))
expect(sentryDataCategoryForEnvelopItemType("event")) == .error
expect(sentryDataCategoryForEnvelopItemType("session")) == .session
expect(sentryDataCategoryForEnvelopItemType("transaction")) == .transaction
expect(sentryDataCategoryForEnvelopItemType("attachment")) == .attachment
expect(sentryDataCategoryForEnvelopItemType("profile")) == .profile
expect(sentryDataCategoryForEnvelopItemType("statsd")) == .statsd
expect(sentryDataCategoryForEnvelopItemType("unknown item type")) == .default
}

func testMapIntegerToCategory() {
XCTAssertEqual(.all, sentryDataCategoryForNSUInteger(0))
XCTAssertEqual(.default, sentryDataCategoryForNSUInteger(1))
XCTAssertEqual(.error, sentryDataCategoryForNSUInteger(2))
XCTAssertEqual(.session, sentryDataCategoryForNSUInteger(3))
XCTAssertEqual(.transaction, sentryDataCategoryForNSUInteger(4))
XCTAssertEqual(.attachment, sentryDataCategoryForNSUInteger(5))
XCTAssertEqual(.userFeedback, sentryDataCategoryForNSUInteger(6))
XCTAssertEqual(.profile, sentryDataCategoryForNSUInteger(7))
XCTAssertEqual(.unknown, sentryDataCategoryForNSUInteger(8))
expect(sentryDataCategoryForNSUInteger(0)) == .all
expect(sentryDataCategoryForNSUInteger(1)) == .default
expect(sentryDataCategoryForNSUInteger(2)) == .error
expect(sentryDataCategoryForNSUInteger(3)) == .session
expect(sentryDataCategoryForNSUInteger(4)) == .transaction
expect(sentryDataCategoryForNSUInteger(5)) == .attachment
expect(sentryDataCategoryForNSUInteger(6)) == .userFeedback
expect(sentryDataCategoryForNSUInteger(7)) == .profile
expect(sentryDataCategoryForNSUInteger(8)) == .statsd
expect(sentryDataCategoryForNSUInteger(9)) == .unknown

XCTAssertEqual(.unknown, sentryDataCategoryForNSUInteger(9), "Failed to map unknown category number to case .unknown")
XCTAssertEqual(.unknown, sentryDataCategoryForNSUInteger(10), "Failed to map unknown category number to case .unknown")
}

func testMapStringToCategory() {
XCTAssertEqual(.all, sentryDataCategoryForString(kSentryDataCategoryNameAll))
XCTAssertEqual(.default, sentryDataCategoryForString(kSentryDataCategoryNameDefault))
XCTAssertEqual(.error, sentryDataCategoryForString(kSentryDataCategoryNameError))
XCTAssertEqual(.session, sentryDataCategoryForString(kSentryDataCategoryNameSession))
XCTAssertEqual(.transaction, sentryDataCategoryForString(kSentryDataCategoryNameTransaction))
XCTAssertEqual(.attachment, sentryDataCategoryForString(kSentryDataCategoryNameAttachment))
XCTAssertEqual(.userFeedback, sentryDataCategoryForString(kSentryDataCategoryNameUserFeedback))
XCTAssertEqual(.profile, sentryDataCategoryForString(kSentryDataCategoryNameProfile))
XCTAssertEqual(.unknown, sentryDataCategoryForString(kSentryDataCategoryNameUnknown))
expect(sentryDataCategoryForString(kSentryDataCategoryNameAll)) == .all
expect(sentryDataCategoryForString(kSentryDataCategoryNameDefault)) == .default
expect(sentryDataCategoryForString(kSentryDataCategoryNameError)) == .error
expect(sentryDataCategoryForString(kSentryDataCategoryNameSession)) == .session
expect(sentryDataCategoryForString(kSentryDataCategoryNameTransaction)) == .transaction
expect(sentryDataCategoryForString(kSentryDataCategoryNameAttachment)) == .attachment
expect(sentryDataCategoryForString(kSentryDataCategoryNameUserFeedback)) == .userFeedback
expect(sentryDataCategoryForString(kSentryDataCategoryNameProfile)) == .profile
expect(sentryDataCategoryForString(kSentryDataCategoryNameStatsd)) == .statsd
expect(sentryDataCategoryForString(kSentryDataCategoryNameUnknown)) == .unknown

XCTAssertEqual(.unknown, sentryDataCategoryForString("gdfagdfsa"), "Failed to map unknown category name to case .unknown")
}

func testMapCategoryToString() {
XCTAssertEqual(kSentryDataCategoryNameAll, nameForSentryDataCategory(.all))
XCTAssertEqual(kSentryDataCategoryNameDefault, nameForSentryDataCategory(.default))
XCTAssertEqual(kSentryDataCategoryNameError, nameForSentryDataCategory(.error))
XCTAssertEqual(kSentryDataCategoryNameSession, nameForSentryDataCategory(.session))
XCTAssertEqual(kSentryDataCategoryNameTransaction, nameForSentryDataCategory(.transaction))
XCTAssertEqual(kSentryDataCategoryNameAttachment, nameForSentryDataCategory(.attachment))
XCTAssertEqual(kSentryDataCategoryNameUserFeedback, nameForSentryDataCategory(.userFeedback))
XCTAssertEqual(kSentryDataCategoryNameProfile, nameForSentryDataCategory(.profile))
XCTAssertEqual(kSentryDataCategoryNameUnknown, nameForSentryDataCategory(.unknown))
expect(nameForSentryDataCategory(.all)) == kSentryDataCategoryNameAll
expect(nameForSentryDataCategory(.default)) == kSentryDataCategoryNameDefault
expect(nameForSentryDataCategory(.error)) == kSentryDataCategoryNameError
expect(nameForSentryDataCategory(.session)) == kSentryDataCategoryNameSession
expect(nameForSentryDataCategory(.transaction)) == kSentryDataCategoryNameTransaction
expect(nameForSentryDataCategory(.attachment)) == kSentryDataCategoryNameAttachment
expect(nameForSentryDataCategory(.userFeedback)) == kSentryDataCategoryNameUserFeedback
expect(nameForSentryDataCategory(.profile)) == kSentryDataCategoryNameProfile
expect(nameForSentryDataCategory(.statsd)) == kSentryDataCategoryNameStatsd
expect(nameForSentryDataCategory(.unknown)) == kSentryDataCategoryNameUnknown
}
}

0 comments on commit 34a0532

Please sign in to comment.