Skip to content

Commit aef107a

Browse files
committed
Fix tests to use mock provider for consistent behavior on Azure CI
- Reset global provider in TestTranslator to ensure test uses mock metadata - Update placeholderUtil tests to use SetGlobalProviderForTest instead of relying on legacy fallback path which doesn't work on Azure - Skip TestGetMetadataInfo_FallbackToLegacy on Azure since azure.IsAzure() takes precedence over the legacy fallback path
1 parent b8c33f5 commit aef107a

2 files changed

Lines changed: 56 additions & 6 deletions

File tree

translator/translate/otel/exporter/awscloudwatchlogs/translator_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"go.opentelemetry.io/collector/confmap"
1313

1414
"github.com/aws/amazon-cloudwatch-agent/cfg/envconfig"
15+
"github.com/aws/amazon-cloudwatch-agent/internal/cloudmetadata"
1516
legacytranslator "github.com/aws/amazon-cloudwatch-agent/translator"
1617
"github.com/aws/amazon-cloudwatch-agent/translator/config"
1718
translatorcontext "github.com/aws/amazon-cloudwatch-agent/translator/context"
@@ -31,6 +32,8 @@ func testMetadata() *logsutil.Metadata {
3132
}
3233

3334
func TestTranslator(t *testing.T) {
35+
cloudmetadata.ResetGlobalProvider()
36+
defer cloudmetadata.ResetGlobalProvider()
3437
t.Setenv(envconfig.AWS_CA_BUNDLE, "/ca/bundle")
3538
agent.Global_Config.Region = "us-east-1"
3639
agent.Global_Config.Role_arn = "global_arn"

translator/translate/util/placeholderUtil_test.go

Lines changed: 53 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/stretchr/testify/assert"
1010

1111
"github.com/aws/amazon-cloudwatch-agent/internal/cloudmetadata"
12+
"github.com/aws/amazon-cloudwatch-agent/internal/cloudmetadata/azure"
1213
"github.com/aws/amazon-cloudwatch-agent/plugins/processors/ec2tagger"
1314
"github.com/aws/amazon-cloudwatch-agent/translator/util/tagutil"
1415
)
@@ -32,7 +33,16 @@ func TestGetMetadataInfo(t *testing.T) {
3233
cloudmetadata.ResetGlobalProvider()
3334
defer cloudmetadata.ResetGlobalProvider()
3435

35-
m := GetMetadataInfo(mockMetadataProvider(dummyInstanceId, dummyHostName, dummyPrivateIp, dummyAccountId))
36+
// Use mock provider to ensure consistent behavior across all environments
37+
mock := &cloudmetadata.MockProvider{
38+
InstanceID: dummyInstanceId,
39+
Hostname: dummyHostName,
40+
PrivateIP: dummyPrivateIp,
41+
AccountID: dummyAccountId,
42+
}
43+
cloudmetadata.SetGlobalProviderForTest(mock)
44+
45+
m := GetMetadataInfo(nil)
3646
assert.Equal(t, dummyInstanceId, m[instanceIdPlaceholder])
3747
assert.Equal(t, dummyHostName, m[hostnamePlaceholder])
3848
assert.Equal(t, dummyPrivateIp, m[ipAddressPlaceholder])
@@ -43,31 +53,63 @@ func TestGetMetadataInfoEmptyInstanceId(t *testing.T) {
4353
cloudmetadata.ResetGlobalProvider()
4454
defer cloudmetadata.ResetGlobalProvider()
4555

46-
m := GetMetadataInfo(mockMetadataProvider("", dummyHostName, dummyPrivateIp, dummyAccountId))
56+
mock := &cloudmetadata.MockProvider{
57+
InstanceID: "",
58+
Hostname: dummyHostName,
59+
PrivateIP: dummyPrivateIp,
60+
AccountID: dummyAccountId,
61+
}
62+
cloudmetadata.SetGlobalProviderForTest(mock)
63+
64+
m := GetMetadataInfo(nil)
4765
assert.Equal(t, unknownInstanceID, m[instanceIdPlaceholder])
4866
}
4967

5068
func TestGetMetadataInfoUsesLocalHostname(t *testing.T) {
5169
cloudmetadata.ResetGlobalProvider()
5270
defer cloudmetadata.ResetGlobalProvider()
5371

54-
m := GetMetadataInfo(mockMetadataProvider(dummyInstanceId, "", dummyPrivateIp, dummyAccountId))
72+
mock := &cloudmetadata.MockProvider{
73+
InstanceID: dummyInstanceId,
74+
Hostname: "",
75+
PrivateIP: dummyPrivateIp,
76+
AccountID: dummyAccountId,
77+
}
78+
cloudmetadata.SetGlobalProviderForTest(mock)
79+
80+
m := GetMetadataInfo(nil)
5581
assert.Equal(t, getHostName(), m[hostnamePlaceholder])
5682
}
5783

5884
func TestGetMetadataInfoDerivesIpAddress(t *testing.T) {
5985
cloudmetadata.ResetGlobalProvider()
6086
defer cloudmetadata.ResetGlobalProvider()
6187

62-
m := GetMetadataInfo(mockMetadataProvider(dummyInstanceId, dummyHostName, "", dummyAccountId))
88+
mock := &cloudmetadata.MockProvider{
89+
InstanceID: dummyInstanceId,
90+
Hostname: dummyHostName,
91+
PrivateIP: "",
92+
AccountID: dummyAccountId,
93+
}
94+
cloudmetadata.SetGlobalProviderForTest(mock)
95+
96+
m := GetMetadataInfo(nil)
6397
assert.Equal(t, getIpAddress(), m[ipAddressPlaceholder])
6498
}
6599

66100
func TestGetMetadataInfoEmptyAccountId(t *testing.T) {
67101
cloudmetadata.ResetGlobalProvider()
68102
defer cloudmetadata.ResetGlobalProvider()
69103

70-
m := GetMetadataInfo(mockMetadataProvider(dummyInstanceId, dummyHostName, dummyPrivateIp, ""))
104+
mock := &cloudmetadata.MockProvider{
105+
InstanceID: dummyInstanceId,
106+
Hostname: dummyHostName,
107+
PrivateIP: dummyPrivateIp,
108+
AccountID: "",
109+
}
110+
cloudmetadata.SetGlobalProviderForTest(mock)
111+
112+
m := GetMetadataInfo(nil)
71113
assert.Equal(t, unknownAccountID, m[accountIdPlaceholder])
72114
}
73115

@@ -301,7 +343,12 @@ func TestGetMetadataInfo_WithCloudmetadataSingleton(t *testing.T) {
301343

302344
func TestGetMetadataInfo_FallbackToLegacy(t *testing.T) {
303345
cloudmetadata.ResetGlobalProvider()
304-
// Don't set singleton - test fallback
346+
defer cloudmetadata.ResetGlobalProvider()
347+
348+
// Skip on Azure since the fallback path won't be taken when azure.IsAzure() returns true
349+
if azure.IsAzure() {
350+
t.Skip("Skipping legacy fallback test on Azure - Azure path takes precedence")
351+
}
305352

306353
legacyMock := mockMetadataProvider("i-legacy456", "legacy-host", "10.0.0.99", "111222333444")
307354

0 commit comments

Comments
 (0)