Skip to content

Commit 347adf4

Browse files
committed
adding missing files, makegomodtidy
1 parent e6ae367 commit 347adf4

3 files changed

Lines changed: 95 additions & 2 deletions

File tree

go.sum

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/loop/metering_config.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package loop
2+
3+
import (
4+
"github.com/smartcontractkit/chainlink-common/pkg/resourcemanager"
5+
)
6+
7+
// MeteringConfig maps this resolved EnvConfig to a resourcemanager.Config, so
8+
// the loop-env -> metering mapping lives here instead of being copy-pasted
9+
// into every producer main. The CL_METER_* fields it reads are populated by
10+
// EnvConfig.AsCmdEnv from the core node's TOML [Metering] config; env is only
11+
// the LOOP transport.
12+
//
13+
// emitter is injected by the caller (can be process global durableemitter.GetGlobalEmitter())
14+
// rather than looked up here, so this mapping stays a pure function of its
15+
// inputs. A nil emitter is valid: the ResourceManager treats it as a no-op —
16+
// fail-open, so metering never blocks startup. A nil EnvConfig yields a zero
17+
// Config (metering disabled).
18+
func (e *EnvConfig) MeteringConfig(emitter resourcemanager.Emitter) resourcemanager.Config {
19+
if e == nil {
20+
return resourcemanager.Config{}
21+
}
22+
return resourcemanager.Config{
23+
ResourceManagerConfig: resourcemanager.ResourceManagerConfig{
24+
MeterRecordsEnabled: e.MeterRecordsEnabled,
25+
MeterSnapshotsEnabled: e.MeterSnapshotsEnabled,
26+
Emitter: emitter,
27+
SnapshotInterval: resourcemanager.DefaultSnapshotInterval,
28+
},
29+
DeploymentIdentity: resourcemanager.DeploymentIdentity{
30+
Product: e.MeterProduct,
31+
Tenant: e.MeterTenant,
32+
NumericTenantID: e.MeterNumericTenantID,
33+
Environment: e.MeterEnvironment,
34+
Zone: e.MeterZone,
35+
NodeID: e.MeterNodeID,
36+
},
37+
}
38+
}

pkg/loop/metering_config_test.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package loop
2+
3+
import (
4+
"context"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
"github.com/stretchr/testify/require"
9+
10+
"github.com/smartcontractkit/chainlink-common/pkg/resourcemanager"
11+
)
12+
13+
type fakeMeteringEmitter struct{}
14+
15+
func (fakeMeteringEmitter) Emit(context.Context, []byte, ...any) error { return nil }
16+
17+
func TestEnvConfig_MeteringConfig(t *testing.T) {
18+
t.Run("nil env yields zero config", func(t *testing.T) {
19+
var e *EnvConfig
20+
cfg := e.MeteringConfig(nil)
21+
assert.False(t, cfg.MeterRecordsEnabled)
22+
assert.Nil(t, cfg.Emitter)
23+
})
24+
25+
t.Run("nil emitter is a valid no-op", func(t *testing.T) {
26+
e := &EnvConfig{MeterRecordsEnabled: true}
27+
cfg := e.MeteringConfig(nil)
28+
assert.Nil(t, cfg.Emitter)
29+
})
30+
31+
t.Run("maps env fields and injects the given emitter", func(t *testing.T) {
32+
e := &EnvConfig{
33+
MeterRecordsEnabled: true,
34+
MeterSnapshotsEnabled: true,
35+
MeterProduct: "cre",
36+
MeterTenant: "mainline",
37+
MeterNumericTenantID: "42",
38+
MeterEnvironment: "production",
39+
MeterZone: "wf-zone-a",
40+
MeterNodeID: "clp-cre-wf-zone-a-1",
41+
}
42+
emitter := fakeMeteringEmitter{}
43+
44+
cfg := e.MeteringConfig(emitter)
45+
assert.True(t, cfg.MeterRecordsEnabled)
46+
assert.True(t, cfg.MeterSnapshotsEnabled)
47+
assert.Equal(t, resourcemanager.DefaultSnapshotInterval, cfg.SnapshotInterval)
48+
require.NotNil(t, cfg.Emitter)
49+
assert.Equal(t, resourcemanager.Emitter(emitter), cfg.Emitter)
50+
assert.Equal(t, "cre", cfg.DeploymentIdentity.Product)
51+
assert.Equal(t, "mainline", cfg.DeploymentIdentity.Tenant)
52+
assert.Equal(t, "42", cfg.DeploymentIdentity.NumericTenantID)
53+
assert.Equal(t, "production", cfg.DeploymentIdentity.Environment)
54+
assert.Equal(t, "wf-zone-a", cfg.DeploymentIdentity.Zone)
55+
assert.Equal(t, "clp-cre-wf-zone-a-1", cfg.DeploymentIdentity.NodeID)
56+
})
57+
}

0 commit comments

Comments
 (0)