-
Notifications
You must be signed in to change notification settings - Fork 4
/
NotifyScenario.cpp
100 lines (82 loc) · 3.7 KB
/
NotifyScenario.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include "Scenario.h"
class NotifyScenario : public Scenario
{
public:
void Configure() override
{
TSharedRef<FJsonObject> Section1 = MakeShared<FJsonObject>();
TSharedRef<FJsonObject> Section2 = MakeShared<FJsonObject>();
auto Value = new FJsonValueString("35");
Section1->SetBoolField("cronut", false);
Section1->SetNumberField("macaron", 3);
Section2->SetStringField("forty", TEXT("40"));
Configuration->AddFeatureFlag(TEXT("Testing"));
Configuration->AddFeatureFlag(TEXT("fc1"), FString(TEXT("blue")));
TArray<FBugsnagFeatureFlag> MoreFlags = {
FBugsnagFeatureFlag(TEXT("fc1")),
FBugsnagFeatureFlag(TEXT("fc2"), FString(TEXT("teal"))),
FBugsnagFeatureFlag(TEXT("nope"))};
Configuration->AddFeatureFlags(MoreFlags);
Configuration->AddMetadata("pastries", Section1);
Configuration->AddMetadata("counters", Section2);
Configuration->AddMetadata("counters", "thirty-five", MakeShareable(Value));
Configuration->AddOnBreadcrumb([](TSharedRef<IBugsnagBreadcrumb> Breadcrumb)
{
return true;
});
Configuration->AddOnSendError([](TSharedRef<IBugsnagEvent> Event)
{
// Intentionally passing a char* value to check it isn't implicitly casted to a non-string type
Event->AddMetadata(TEXT("custom"), TEXT("configOnSendError"), "hello");
return true;
});
Configuration->AddOnSession([](TSharedRef<IBugsnagSession> Session)
{
return true;
});
Configuration->SetMaxReportedThreads(3);
// sent in event payload
Configuration->SetProjectPackages({TEXT("com.example.package")});
}
void Run() override
{
UBugsnagFunctionLibrary::AddOnBreadcrumb([](TSharedRef<IBugsnagBreadcrumb> Breadcrumb)
{
return true;
});
UBugsnagFunctionLibrary::AddOnSession([](TSharedRef<IBugsnagSession> Session)
{
return true;
});
// Check that a large (> 128 byte) string can be safely handled without crashing
UBugsnagFunctionLibrary::SetContext(TEXT(/* spell-checker: disable */
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque gravida sodales"
" nisl, at scelerisque lectus ullamcorper vitae. Integer congue nunc sed gravida "
"ultricies. Donec posuere erat tellus, vel tempus nisl sodales at. Sed nibh turpi"
"s, mollis nec turpis a, cursus tincidunt ipsum. Donec nec sagittis magna. Aliqua"
"m sit amet tellus maximus, vehicula enim ac, tincidunt tortor. Sed eu enim et ma"
"ssa volutpat auctor. Praesent facilisis diam ultricies pharetra dapibus. Pellent"
"esque sit amet ex congue, pharetra felis eu, mollis ligula. Etiam non turpis a t"
"urpis maximus facilisis sed vitae nisi. Curabitur scelerisque ultrices scelerisq"
"ue. Integer semper leo volutpat, venenatis orci ac, facilisis mauris. Curabitur "
"luctus urna a orci lacinia ornare."));
UBugsnagFunctionLibrary::AddFeatureFlag(TEXT("Bugsnag"));
UBugsnagFunctionLibrary::ClearFeatureFlag(TEXT("nope"));
TSharedRef<FJsonObject> AdditionalValues = MakeShared<FJsonObject>();
AdditionalValues->SetStringField("someValue", "foobar");
AdditionalValues->SetBoolField("lastValue", true);
UBugsnagFunctionLibrary::AddMetadata("custom", AdditionalValues);
UBugsnagFunctionLibrary::SetUser("1118", "[email protected]", "Emilie");
UBugsnagFunctionLibrary::Notify(TEXT("Internal Error"), TEXT("Does not compute"), [](TSharedRef<IBugsnagEvent> Event)
{
Event->AddMetadata(TEXT("custom"), TEXT("notify"), TEXT("testing"));
Event->GetDevice()->SetId(FString("51229"));
Event->GetApp()->SetDuration(37);
FString ErrorClass = Event->GetErrors()[0]->GetErrorClass();
Event->GetErrors()[0]->SetErrorClass(ErrorClass + TEXT(" happened"));
Event->AddFeatureFlag(TEXT("Notify"), ErrorClass);
return true;
});
}
};
REGISTER_SCENARIO(NotifyScenario);