Expose telemetry control APIs

- This change adds the DisableTelemetry() and EnableTelemetry()
   top-level functions, which wrap the DisableTelemetryEvents() and
   EnableTelemetryEvents() C API functions for the package's internal
   onnxruntime environment.

 - This change rolls back some of the prior commit.  As a fan of the
   onnxruntime library, I decided to take a more charitable approach to
   their telemetry and not disable it by default in these bindings.
This commit is contained in:
Nathan
2023-06-21 20:52:39 -04:00
parent b2007c3814
commit ccbc079746
4 changed files with 66 additions and 5 deletions

View File

@@ -93,11 +93,6 @@ func InitializeEnvironment() error {
return fmt.Errorf("Error creating ORT environment: %w",
statusToError(status))
}
status = C.DisableTelemetry(ortEnv)
if status != nil {
return fmt.Errorf("Error disabling ORT telemetry: %w",
statusToError(status))
}
status = C.CreateOrtMemoryInfo(&ortMemoryInfo)
if status != nil {
@@ -134,6 +129,38 @@ func DestroyEnvironment() error {
return nil
}
// Disables telemetry events for the onnxruntime environment. Must be called
// after initializing the environment using InitializeEnvironment(). It is
// unclear from the onnxruntime docs whether this will cause an error or
// silently return if telemetry is already disabled.
func DisableTelemetry() error {
if !IsInitialized() {
return NotInitializedError
}
status := C.DisableTelemetry(ortEnv)
if status != nil {
return fmt.Errorf("Error disabling onnxruntime telemetry: %w",
statusToError(status))
}
return nil
}
// Enables telemetry events for the onnxruntime environment. Must be called
// after initializing the environment using InitializeEnvironment(). It is
// unclear from the onnxruntime docs whether this will cause an error or
// silently return if telemetry is already enabled.
func EnableTelemetry() error {
if !IsInitialized() {
return NotInitializedError
}
status := C.EnableTelemetry(ortEnv)
if status != nil {
return fmt.Errorf("Error enabling onnxruntime telemetry: %w",
statusToError(status))
}
return nil
}
// The Shape type holds the shape of the tensors used by the network input and
// outputs.
type Shape []int64

View File

@@ -265,3 +265,30 @@ func TestExampleNetwork(t *testing.T) {
t.FailNow()
}
}
func TestEnableDisableTelemetry(t *testing.T) {
InitializeRuntime(t)
defer func() {
e := DestroyEnvironment()
if e != nil {
t.Logf("Error cleaning up environment: %s\n", e)
t.FailNow()
}
}()
e := EnableTelemetry()
if e != nil {
t.Logf("Error enabling onnxruntime telemetry: %s\n", e)
t.Fail()
}
e = DisableTelemetry()
if e != nil {
t.Logf("Error disabling onnxruntime telemetry: %s\n", e)
t.Fail()
}
e = EnableTelemetry()
if e != nil {
t.Logf("Error re-enabling onnxruntime telemetry after disabling: %s\n",
e)
t.Fail()
}
}

View File

@@ -21,6 +21,10 @@ OrtStatus *DisableTelemetry(OrtEnv *env) {
return ort_api->DisableTelemetryEvents(env);
}
OrtStatus *EnableTelemetry(OrtEnv *env) {
return ort_api->EnableTelemetryEvents(env);
}
void ReleaseOrtEnv(OrtEnv *env) {
ort_api->ReleaseEnv(env);
}

View File

@@ -35,6 +35,9 @@ OrtStatus *CreateOrtEnv(char *name, OrtEnv **env);
// Wraps ort_api->DisableTelemetryEvents. Returns a non-NULL status on error.
OrtStatus *DisableTelemetry(OrtEnv *env);
// Wraps ort_api->EnableTelemetryEvents. Returns a non-NULL status on error.
OrtStatus *EnableTelemetry(OrtEnv *env);
// Wraps ort_api->ReleaseEnv
void ReleaseOrtEnv(OrtEnv *env);