mirror of
https://github.com/argoproj/argo-cd
synced 2026-04-21 17:07:16 +00:00
Use gRPC timeout for sidecar CMPs (#8131) (#8236) Signed-off-by: Michael Crenshaw <michael@crenshaw.dev>
83 lines
2.2 KiB
Go
83 lines
2.2 KiB
Go
package plugin
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/argoproj/argo-cd/v2/cmpserver/apiclient"
|
|
)
|
|
|
|
func newService(configFilePath string) (*Service, error) {
|
|
config, err := ReadPluginConfig(configFilePath)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
initConstants := CMPServerInitConstants{
|
|
PluginConfig: *config,
|
|
}
|
|
|
|
service := &Service{
|
|
initConstants: initConstants,
|
|
}
|
|
return service, nil
|
|
}
|
|
|
|
func TestMatchRepository(t *testing.T) {
|
|
configFilePath := "./testdata/ksonnet/config"
|
|
service, err := newService(configFilePath)
|
|
require.NoError(t, err)
|
|
|
|
q := apiclient.RepositoryRequest{}
|
|
path, err := os.Getwd()
|
|
require.NoError(t, err)
|
|
q.Path = path
|
|
|
|
res1, err := service.MatchRepository(context.Background(), &q)
|
|
require.NoError(t, err)
|
|
require.True(t, res1.IsSupported)
|
|
}
|
|
|
|
func Test_Negative_ConfigFile_DoesnotExist(t *testing.T) {
|
|
configFilePath := "./testdata/kustomize-neg/config"
|
|
service, err := newService(configFilePath)
|
|
require.Error(t, err)
|
|
require.Nil(t, service)
|
|
}
|
|
|
|
func TestGenerateManifest(t *testing.T) {
|
|
configFilePath := "./testdata/kustomize/config"
|
|
service, err := newService(configFilePath)
|
|
require.NoError(t, err)
|
|
|
|
q := apiclient.ManifestRequest{}
|
|
res1, err := service.GenerateManifest(context.Background(), &q)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, res1)
|
|
|
|
expectedOutput := "{\"apiVersion\":\"v1\",\"data\":{\"foo\":\"bar\"},\"kind\":\"ConfigMap\",\"metadata\":{\"name\":\"my-map\"}}"
|
|
if res1 != nil {
|
|
require.Equal(t, expectedOutput, res1.Manifests[0])
|
|
}
|
|
}
|
|
|
|
// TestRunCommandContextTimeout makes sure the command dies at timeout rather than sleeping past the timeout.
|
|
func TestRunCommandContextTimeout(t *testing.T) {
|
|
ctx, cancel := context.WithTimeout(context.Background(), 990*time.Millisecond)
|
|
defer cancel()
|
|
// Use a subshell so there's a child command.
|
|
command := Command{
|
|
Command: []string{"sh", "-c"},
|
|
Args: []string{"sleep 5"},
|
|
}
|
|
before := time.Now()
|
|
_, err := runCommand(ctx, command, "", []string{})
|
|
after := time.Now()
|
|
assert.Error(t, err) // The command should time out, causing an error.
|
|
assert.Less(t, after.Sub(before), 1*time.Second)
|
|
}
|