Skip to content

Instantly share code, notes, and snippets.

@regner
Created December 10, 2024 16:45
Show Gist options
  • Save regner/d1cb38a2706b192ed36b011db9ef4a9f to your computer and use it in GitHub Desktop.
Save regner/d1cb38a2706b192ed36b011db9ef4a9f to your computer and use it in GitHub Desktop.
add support for telemetry endpoint and add current stream to FullRun event
[SubmitTool.Horde]
HordeServerAddress="https://example.net"
StartPreflightURLFormat="{URL}/preflight?stream={Stream}&change={CLID}"
FindPreflightURLFormat="{URL}/api/v1/jobs?preflightChange={CLID}"
FindSinglePreflightURLFormat="{URL}/api/v1/jobs/{PreflightID}"
[SubmitTool.Telemetry]
Url="https://example.net"
Endpoint="api/v1/telemetry/engine"
--- //UE5/main/Engine/Source/Programs/SubmitTool/Private/Logic/TasksService.cpp 2024-11-20 13:27:20.000000000 0000
+++ D:\p4\ue5\main\Engine\Source\Programs\SubmitTool\Private\Logic\TasksService.cpp 2024-11-20 13:27:20.000000000 0000
@@ -14,11 +14,14 @@
#include "TagService.h"
-FTasksService::FTasksService(const TMap<FString, FString>& InTasks, const FString& InTelemetryEventsId) :
+FTasksService::FTasksService(const TMap<FString, FString>& InTasks, const FString& InTelemetryEventsId, TSharedRef<FSubmitToolServiceProvider> InServiceProvider) :
bLastTasksRunState(false),
bLastRunningTasks(false),
- TelemetryBaseId(InTelemetryEventsId)
+ TelemetryBaseId(InTelemetryEventsId),
+ ServiceProvider(InServiceProvider)
{
}
FTasksService::~FTasksService()
@@ -413,6 +416,10 @@
ValidationRunResults = AppendAnalyticsEventAttributeArray(ValidationRunResults, TEXT("FailedTasks"), FJsonFragment(MoveTemp(FailedTasks)));
}
+
+ ValidationRunResults = AppendAnalyticsEventAttributeArray(ValidationRunResults, TEXT("Stream"), ServiceProvider->GetService<ISTSourceControlService>()->GetCurrentStreamName());
FTelemetryService::Get()->CustomEvent(TelemetryBaseId + TEXT(".FullRun"), ValidationRunResults);
--- //UE5/main/Engine/Source/Programs/SubmitTool/Private/Logic/TasksService.h 2024-11-20 13:27:20.000000000 0000
+++ D:\p4\ue5\main\Engine\Source\Programs\SubmitTool\Private\Logic\TasksService.h 2024-11-20 13:27:20.000000000 0000
@@ -19,7 +19,9 @@
class FTasksService : public ISubmitToolService
{
public:
- FTasksService(const TMap<FString, FString>& Tasks, const FString& InTelemetryCustomEvent);
+ FTasksService(const TMap<FString, FString>& Tasks, const FString& InTelemetryCustomEvent, TSharedRef<FSubmitToolServiceProvider> InServiceProvider);
virtual ~FTasksService();
virtual void InitializeTasks(const TArray<TSharedRef<FValidatorBase>>& InTasks);
@@ -67,6 +69,10 @@
const FString TelemetryBaseId;
FTSTicker::FDelegateHandle TickerHandle;
+
+ TSharedRef<FSubmitToolServiceProvider> ServiceProvider;
};
Expose_TNameOf(FTasksService);
\ No newline at end of file
--- //UE5/main/Engine/Source/Programs/SubmitTool/Private/Models/ModelInterface.cpp 2024-11-20 13:27:20.000000000 0000
+++ D:\p4\ue5\main\Engine\Source\Programs\SubmitTool\Private\Models\ModelInterface.cpp 2024-11-20 13:27:20.000000000 0000
@@ -45,9 +45,11 @@
SourceControlService = MakeShared<FSubmitToolPerforce>(InParameters);
ServiceProvider->RegisterService<ISTSourceControlService>(SourceControlService.ToSharedRef());
- ValidationService = MakeShared<FTasksService>(InParameters.Validators, TEXT("SubmitTool.StandAlone.Validator"));
+ ValidationService = MakeShared<FTasksService>(InParameters.Validators, TEXT("SubmitTool.StandAlone.Validator"), ServiceProvider.ToSharedRef());
ServiceProvider->RegisterService<FTasksService>(ValidationService.ToSharedRef());
- PresubmitOperationsService = MakeShared<FTasksService>(InParameters.PresubmitOperations, TEXT("SubmitTool.StandAlone.PresubmitOperation"));
+ PresubmitOperationsService = MakeShared<FTasksService>(InParameters.PresubmitOperations, TEXT("SubmitTool.StandAlone.PresubmitOperation"), ServiceProvider.ToSharedRef());
ServiceProvider->RegisterService<FTasksService>(PresubmitOperationsService.ToSharedRef());
CredentialsService = MakeShared<FCredentialsService>(InParameters.OAuthParameters);
ServiceProvider->RegisterService<FCredentialsService>(CredentialsService.ToSharedRef());
--- //UE5/main/Engine/Source/Programs/SubmitTool/Private/Parameters/SubmitToolParameters.h 2024-11-20 13:27:20.000000000 0000
+++ D:\p4\ue5\main\Engine\Source\Programs\SubmitTool\Private\Parameters\SubmitToolParameters.h 2024-11-20 13:27:20.000000000 0000
@@ -115,6 +115,10 @@
FString Url;
UPROPERTY()
FString Instance;
+ UPROPERTY()
+ FString Endpoint;
};
UENUM()
--- //UE5/main/Engine/Source/Programs/SubmitTool/Private/Parameters/SubmitToolParametersBuilder.cpp 2024-11-20 13:27:20.000000000 0000
+++ D:\p4\ue5\main\Engine\Source\Programs\SubmitTool\Private\Parameters\SubmitToolParametersBuilder.cpp 2024-11-20 13:27:20.000000000 0000
@@ -154,6 +154,9 @@
static const TCHAR* Section = TEXT("SubmitTool.Telemetry");
static const TCHAR* UrlKey = TEXT("URL");
static const TCHAR* InstanceKey = TEXT("Instance");
+ static const TCHAR* EndpointKey = TEXT("Endpoint");
FTelemetryParameters Output;
@@ -163,6 +166,14 @@
Output.Url = Url;
}
+ FString Endpoint;
+ if (SubmitToolConfig->GetString(Section, EndpointKey, Endpoint))
+ {
+ Output.Endpoint = Endpoint;
+ }
+
FString Instance;
if (SubmitToolConfig->GetString(Section, InstanceKey, Instance))
{
--- //UE5/main/Engine/Source/Programs/SubmitTool/Private/SubmitToolApp.cpp 2024-11-20 13:27:20.000000000 0000
+++ D:\p4\ue5\main\Engine\Source\Programs\SubmitTool\Private\SubmitToolApp.cpp 2024-11-20 13:27:20.000000000 0000
@@ -82,7 +82,9 @@
FSubmitToolParametersBuilder ParametersBuilder(ParameterFile);
FSubmitToolParameters Parameters = ParametersBuilder.Build();
- FTelemetryService::Init(Parameters.Telemetry.Url, InSessionID);
+ FTelemetryService::Init(Parameters.Telemetry.Url, Parameters.Telemetry.Endpoint, InSessionID);
// Create a new instance of model Interface so that UI can communicate
const TUniquePtr<FModelInterface> ModelInterface = MakeUnique<FModelInterface>(Parameters);
--- //UE5/main/Engine/Source/Programs/SubmitTool/Private/Telemetry/StandAloneTelemetry.cpp 2024-11-20 13:27:20.000000000 0000
+++ D:\p4\ue5\main\Engine\Source\Programs\SubmitTool\Private\Telemetry\StandAloneTelemetry.cpp 2024-11-20 13:27:20.000000000 0000
@@ -6,7 +6,9 @@
#include "Version/AppVersion.h"
#include "AnalyticsEventAttribute.h"
-FStandAloneTelemetry::FStandAloneTelemetry(const FString& InUrl, const FGuid& InSessionID)
+FStandAloneTelemetry::FStandAloneTelemetry(const FString& InUrl, const FString& InEndpoint, const FGuid& InSessionID)
{
FAnalyticsET::Config Config;
@@ -19,6 +21,10 @@
Config.APIServerET = InUrl;
+ Config.APIEndpointET = InEndpoint;
+
// This will become the AppVersion URL parameter. It can be whatever makes sense for your app.
Config.AppVersionET = FAppVersion::GetVersion();
--- //UE5/main/Engine/Source/Programs/SubmitTool/Private/Telemetry/StandAloneTelemetry.h 2024-11-20 13:27:20.000000000 0000
+++ D:\p4\ue5\main\Engine\Source\Programs\SubmitTool\Private\Telemetry\StandAloneTelemetry.h 2024-11-20 13:27:20.000000000 0000
@@ -11,7 +11,9 @@
class FStandAloneTelemetry : public ITelemetry
{
public:
- FStandAloneTelemetry(const FString& InUrl, const FGuid& InSessionID);
+ FStandAloneTelemetry(const FString& InUrl, const FString& InEndpoint, const FGuid& InSessionID);
virtual ~FStandAloneTelemetry();
virtual void Start(const FString& InCurrentStream) const override;
virtual void BlockFlush(float InTimeout) const override;
--- //UE5/main/Engine/Source/Programs/SubmitTool/Private/Telemetry/TelemetryService.cpp 2024-11-20 13:27:20.000000000 0000
+++ D:\p4\ue5\main\Engine\Source\Programs\SubmitTool\Private\Telemetry\TelemetryService.cpp 2024-11-20 13:27:20.000000000 0000
@@ -14,15 +14,17 @@
return TelemetryInstance;
}
-void FTelemetryService::Init(const FString& InUrl, const FGuid& InSessionID)
+void FTelemetryService::Init(const FString& InUrl, const FString& InEndpoint, const FGuid& InSessionID)
{
if (InUrl.IsEmpty())
{
Set(MakeShared<FNullTelemetry>());
}
- Set(MakeShared<FStandAloneTelemetry>(InUrl, InSessionID));
+ Set(MakeShared<FStandAloneTelemetry>(InUrl, InEndpoint, InSessionID));
}
void FTelemetryService::Set(TSharedPtr<ITelemetry> InInstance)
{
--- //UE5/main/Engine/Source/Programs/SubmitTool/Private/Telemetry/TelemetryService.h 2024-11-20 13:27:20.000000000 0000
+++ D:\p4\ue5\main\Engine\Source\Programs\SubmitTool\Private\Telemetry\TelemetryService.h 2024-11-20 13:27:20.000000000 0000
@@ -11,7 +11,9 @@
{
public:
static const TSharedPtr<ITelemetry> & Get();
- static void Init(const FString& InUrl, const FGuid& InSessionID);
+ static void Init(const FString& InUrl, const FString& InEndpoint, const FGuid& InSessionID);
static void Shutdown();
static void BlockFlush(float InTimeout);
private:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment