Files
Antoine ToulmeandGitHub a79ae80fed [memorylimiter] do not throw an error when asked to shutdown out of order (#13599)
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description
Memory limiter extension and processor shutdown don't throw an error if
the component was not started first.

<!-- Issue number if applicable -->
#### Link to tracking issue
Fixes #9687
2025-08-11 17:16:10 +00:00

54 lines
1.5 KiB
Go

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package memorylimiterextension
import (
"context"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/component/componenttest"
"go.opentelemetry.io/collector/extension/extensiontest"
)
func TestCreateDefaultConfig(t *testing.T) {
factory := NewFactory()
require.NotNil(t, factory)
cfg := factory.CreateDefaultConfig()
assert.NotNil(t, cfg, "failed to create default config")
assert.NoError(t, componenttest.CheckConfigStruct(cfg))
}
func TestCreate(t *testing.T) {
factory := NewFactory()
require.NotNil(t, factory)
cfg := factory.CreateDefaultConfig()
// Create extension with a valid config.
pCfg := cfg.(*Config)
pCfg.MemoryLimitMiB = 5722
pCfg.MemorySpikeLimitMiB = 1907
pCfg.CheckInterval = 100 * time.Millisecond
set := extensiontest.NewNopSettings(factory.Type())
set.ID = component.NewID(factory.Type())
tp, err := factory.Create(context.Background(), set, cfg)
require.NoError(t, err)
assert.NotNil(t, tp)
// test if we can shutdown a monitoring routine that has not started
require.NoError(t, tp.Shutdown(context.Background()))
assert.NoError(t, tp.Start(context.Background(), componenttest.NewNopHost()))
assert.NoError(t, tp.Shutdown(context.Background()))
// verify that shutdown twice works:
assert.NoError(t, tp.Shutdown(context.Background()))
}