Skip to content

Commit 2f30e40

Browse files
committed
feat: Address PR comments
1 parent 127c175 commit 2f30e40

File tree

4 files changed

+34
-30
lines changed

4 files changed

+34
-30
lines changed

aitelemetry/connection_string_parser.go

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,51 @@
11
package aitelemetry
22

33
import (
4-
"fmt"
54
"strings"
5+
6+
"github.com/pkg/errors"
67
)
78

89
type connectionVars struct {
9-
InstrumentationKey string
10-
IngestionUrl string
10+
instrumentationKey string
11+
ingestionUrl string
12+
}
13+
14+
func (c *connectionVars) String() string {
15+
return "InstrumentationKey=" + c.instrumentationKey + ";IngestionEndpoint=" + c.ingestionUrl
1116
}
1217

1318
func parseConnectionString(connectionString string) (*connectionVars, error) {
1419
connectionVars := &connectionVars{}
1520

1621
if connectionString == "" {
17-
return nil, fmt.Errorf("Connection string cannot be empty")
22+
return nil, errors.New("connection string cannot be empty")
1823
}
1924

2025
pairs := strings.Split(connectionString, ";")
2126
for _, pair := range pairs {
2227
kv := strings.SplitN(pair, "=", 2)
2328
if len(kv) != 2 {
24-
return nil, fmt.Errorf("Invalid connection string format: %s", pair)
29+
return nil, errors.Errorf("invalid connection string format: %s", pair)
2530
}
2631
key, value := strings.TrimSpace(kv[0]), strings.TrimSpace(kv[1])
2732

2833
if key == "" {
29-
return nil, fmt.Errorf("Key in connection string cannot be empty")
34+
return nil, errors.Errorf("key in connection string cannot be empty")
3035
}
3136

3237
switch strings.ToLower(key) {
3338
case "instrumentationkey":
34-
connectionVars.InstrumentationKey = value
39+
connectionVars.instrumentationKey = value
3540
case "ingestionendpoint":
36-
connectionVars.IngestionUrl = value + "v2.1/track"
41+
if value != "" {
42+
connectionVars.ingestionUrl = value + "v2.1/track"
43+
}
3744
}
3845
}
3946

40-
if connectionVars.InstrumentationKey == "" || connectionVars.IngestionUrl == "" {
41-
return nil, fmt.Errorf("Missing required fields in connection string")
47+
if connectionVars.instrumentationKey == "" || connectionVars.ingestionUrl == "" {
48+
return nil, errors.Errorf("missing required fields in connection string: %s", connectionVars)
4249
}
4350

4451
return connectionVars, nil

aitelemetry/connection_string_parser_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ func TestParseConnectionString(t *testing.T) {
1919
name: "Valid connection string and instrumentation key",
2020
connectionString: connectionString,
2121
want: &connectionVars{
22-
InstrumentationKey: "00000000-0000-0000-0000-000000000000",
23-
IngestionUrl: "https://ingestion.endpoint.com/v2.1/track",
22+
instrumentationKey: "00000000-0000-0000-0000-000000000000",
23+
ingestionUrl: "https://ingestion.endpoint.com/v2.1/track",
2424
},
2525
wantErr: false,
2626
},
@@ -32,13 +32,13 @@ func TestParseConnectionString(t *testing.T) {
3232
},
3333
{
3434
name: "Valid instrumentation key with missing ingestion endpoint",
35-
connectionString: "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=;",
35+
connectionString: "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=",
3636
want: nil,
3737
wantErr: true,
3838
},
3939
{
4040
name: "Missing instrumentation key with valid ingestion endpoint",
41-
connectionString: "InstrumentationKey=;IngestionEndpoint=https://ingestion.endpoint.com/;LiveEndpoint=https://live.endpoint.com/;",
41+
connectionString: "InstrumentationKey=;IngestionEndpoint=https://ingestion.endpoint.com/",
4242
want: nil,
4343
wantErr: true,
4444
},
@@ -58,8 +58,8 @@ func TestParseConnectionString(t *testing.T) {
5858
} else {
5959
require.NoError(t, err, "Expected no error but got one")
6060
require.NotNil(t, got, "Expected a non-nil result")
61-
require.Equal(t, tt.want.InstrumentationKey, got.InstrumentationKey, "Instrumentation Key does not match")
62-
require.Equal(t, tt.want.IngestionUrl, got.IngestionUrl, "Ingestion URL does not match")
61+
require.Equal(t, tt.want.instrumentationKey, got.instrumentationKey, "Instrumentation Key does not match")
62+
require.Equal(t, tt.want.ingestionUrl, got.ingestionUrl, "Ingestion URL does not match")
6363
}
6464
})
6565
}

aitelemetry/telemetrywrapper.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/Azure/azure-container-networking/store"
1414
"github.com/microsoft/ApplicationInsights-Go/appinsights"
1515
"github.com/microsoft/ApplicationInsights-Go/appinsights/contracts"
16+
"github.com/pkg/errors"
1617
)
1718

1819
const (
@@ -214,28 +215,25 @@ func NewAITelemetry(
214215
return th, nil
215216
}
216217

217-
// NewAITelemetry creates telemetry handle with user specified appinsights connection string.
218-
func NewAITelemetryWithConnectionString(
219-
cString string,
220-
aiConfig AIConfig,
221-
) (TelemetryHandle, error) {
218+
// NewWithConnectionString creates telemetry handle with user specified appinsights connection string.
219+
func NewWithConnectionString(connectionString string, aiConfig AIConfig) (TelemetryHandle, error) {
222220
debugMode = aiConfig.DebugMode
223221

224-
if cString == "" {
222+
if connectionString == "" {
225223
debugLog("Empty connection string")
226-
return nil, fmt.Errorf("AI connection string is empty")
224+
return nil, errors.New("AI connection string is empty")
227225
}
228226

229227
setAIConfigDefaults(&aiConfig)
230228

231-
connectionVars, err := parseConnectionString(cString)
229+
connectionVars, err := parseConnectionString(connectionString)
232230
if err != nil {
233231
debugLog("Error parsing connection string: %v", err)
234232
return nil, err
235233
}
236234

237-
telemetryConfig := appinsights.NewTelemetryConfiguration(connectionVars.InstrumentationKey)
238-
telemetryConfig.EndpointUrl = connectionVars.IngestionUrl
235+
telemetryConfig := appinsights.NewTelemetryConfiguration(connectionVars.instrumentationKey)
236+
telemetryConfig.EndpointUrl = connectionVars.ingestionUrl
239237
telemetryConfig.MaxBatchSize = aiConfig.BatchSize
240238
telemetryConfig.MaxBatchInterval = time.Duration(aiConfig.BatchInterval) * time.Second
241239

aitelemetry/telemetrywrapper_test.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ var (
1919
hostAgentUrl = "localhost:3501"
2020
getCloudResponse = "AzurePublicCloud"
2121
httpURL = "http://" + hostAgentUrl
22-
// connectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://ingestion.endpoint.com/;LiveEndpoint=https://live.endpoint.com/;ApplicationId=11111111-1111-1111-1111-111111111111"
2322
)
2423

2524
func TestMain(m *testing.M) {
@@ -93,7 +92,7 @@ func TestEmptyAIKey(t *testing.T) {
9392
t.Errorf("Error initializing AI telemetry:%v", err)
9493
}
9594

96-
_, err = NewAITelemetryWithConnectionString("", aiConfig)
95+
_, err = NewWithConnectionString("", aiConfig)
9796
if err == nil {
9897
t.Errorf("Error initializing AI telemetry with connection string:%v", err)
9998
}
@@ -118,7 +117,7 @@ func TestNewAITelemetry(t *testing.T) {
118117
t.Errorf("Error initializing AI telemetry: %v", err)
119118
}
120119

121-
th2, err := NewAITelemetryWithConnectionString(connectionString, aiConfig)
120+
th2, err := NewWithConnectionString(connectionString, aiConfig)
122121
if th2 == nil {
123122
t.Errorf("Error initializing AI telemetry with connection string: %v", err)
124123
}
@@ -185,7 +184,7 @@ func TestClosewithoutSend(t *testing.T) {
185184
t.Errorf("Error initializing AI telemetry:%v", err)
186185
}
187186

188-
thtest2, err := NewAITelemetryWithConnectionString(connectionString, aiConfig)
187+
thtest2, err := NewWithConnectionString(connectionString, aiConfig)
189188
if thtest2 == nil {
190189
t.Errorf("Error initializing AI telemetry with connection string:%v", err)
191190
}

0 commit comments

Comments
 (0)