152 lines
4.4 KiB
Go
152 lines
4.4 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package runner
|
|
|
|
// import (
|
|
// "context"
|
|
// "os"
|
|
// "testing"
|
|
// "time"
|
|
|
|
// "github.com/stretchr/testify/require"
|
|
// "google.golang.org/grpc/codes"
|
|
// "google.golang.org/grpc/status"
|
|
|
|
// "github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
|
|
// "github.com/hashicorp/vagrant/internal/server/singleprocess"
|
|
// )
|
|
|
|
// func TestRunnerStart(t *testing.T) {
|
|
// require := require.New(t)
|
|
// ctx := context.Background()
|
|
// client := singleprocess.TestServer(t)
|
|
// rubyRunTime, err := TestRunnerVagrantRubyRuntime(t)
|
|
// defer rubyRunTime.Close()
|
|
|
|
// // Initialize our runner
|
|
// runner, err := New(
|
|
// WithClient(client),
|
|
// WithVagrantRubyRuntime(rubyRunTime),
|
|
// )
|
|
// require.NoError(err)
|
|
// defer runner.Close()
|
|
|
|
// // The runner should not be registered
|
|
// _, err = client.GetRunner(ctx, &vagrant_server.GetRunnerRequest{RunnerId: runner.Id()})
|
|
// require.Error(err)
|
|
// require.Equal(codes.NotFound, status.Code(err))
|
|
|
|
// // Start it
|
|
// require.NoError(runner.Start())
|
|
|
|
// // The runner should be registered
|
|
// resp, err := client.GetRunner(ctx, &vagrant_server.GetRunnerRequest{RunnerId: runner.Id()})
|
|
// require.NoError(err)
|
|
// require.Equal(runner.Id(), resp.Id)
|
|
|
|
// // Close
|
|
// require.NoError(runner.Close())
|
|
// time.Sleep(100 * time.Millisecond)
|
|
|
|
// // The runner should not be registered
|
|
// _, err = client.GetRunner(ctx, &vagrant_server.GetRunnerRequest{RunnerId: runner.Id()})
|
|
// require.Error(err)
|
|
// require.Equal(codes.NotFound, status.Code(err))
|
|
// }
|
|
|
|
// func TestRunnerStart_config(t *testing.T) {
|
|
// t.Run("set and unset", func(t *testing.T) {
|
|
// require := require.New(t)
|
|
// ctx := context.Background()
|
|
// client := singleprocess.TestServer(t)
|
|
|
|
// cfgVar := &vagrant_server.ConfigVar{
|
|
// Scope: &vagrant_server.ConfigVar_Runner{
|
|
// Runner: &vagrant_server.Ref_Runner{
|
|
// Target: &vagrant_server.Ref_Runner_Any{
|
|
// Any: &vagrant_server.Ref_RunnerAny{},
|
|
// },
|
|
// },
|
|
// },
|
|
|
|
// Name: "I_AM_A_TEST_VALUE",
|
|
// Value: "1234567890",
|
|
// }
|
|
|
|
// // Initialize our runner
|
|
// runner := TestRunner(t, WithClient(client))
|
|
// defer runner.Close()
|
|
// require.NoError(runner.Start())
|
|
|
|
// // Verify it is not set
|
|
// require.Empty(os.Getenv(cfgVar.Name))
|
|
|
|
// // Set some config
|
|
// _, err := client.SetConfig(ctx, &vagrant_server.ConfigSetRequest{Variables: []*vagrant_server.ConfigVar{cfgVar}})
|
|
// require.NoError(err)
|
|
|
|
// // Should be set
|
|
// require.Eventually(func() bool {
|
|
// return os.Getenv(cfgVar.Name) == cfgVar.Value
|
|
// }, 1000*time.Millisecond, 50*time.Millisecond)
|
|
|
|
// // Unset
|
|
// cfgVar.Value = ""
|
|
// _, err = client.SetConfig(ctx, &vagrant_server.ConfigSetRequest{Variables: []*vagrant_server.ConfigVar{cfgVar}})
|
|
// require.NoError(err)
|
|
|
|
// // Should be unset
|
|
// require.Eventually(func() bool {
|
|
// return os.Getenv(cfgVar.Name) == ""
|
|
// }, 1000*time.Millisecond, 50*time.Millisecond)
|
|
// })
|
|
|
|
// t.Run("unset with original env", func(t *testing.T) {
|
|
// require := require.New(t)
|
|
// ctx := context.Background()
|
|
// client := singleprocess.TestServer(t)
|
|
|
|
// cfgVar := &vagrant_server.ConfigVar{
|
|
// Scope: &vagrant_server.ConfigVar_Runner{
|
|
// Runner: &vagrant_server.Ref_Runner{
|
|
// Target: &vagrant_server.Ref_Runner_Any{
|
|
// Any: &vagrant_server.Ref_RunnerAny{},
|
|
// },
|
|
// },
|
|
// },
|
|
|
|
// Name: "I_AM_A_TEST_VALUE",
|
|
// Value: "1234567890",
|
|
// }
|
|
|
|
// // Set a value
|
|
// require.NoError(os.Setenv(cfgVar.Name, "ORIGINAL"))
|
|
// defer os.Unsetenv(cfgVar.Name)
|
|
|
|
// // Initialize our runner
|
|
// runner := TestRunner(t, WithClient(client))
|
|
// defer runner.Close()
|
|
// require.NoError(runner.Start())
|
|
|
|
// // Set some config
|
|
// _, err := client.SetConfig(ctx, &vagrant_server.ConfigSetRequest{Variables: []*vagrant_server.ConfigVar{cfgVar}})
|
|
// require.NoError(err)
|
|
|
|
// // Should be set
|
|
// require.Eventually(func() bool {
|
|
// return os.Getenv(cfgVar.Name) == cfgVar.Value
|
|
// }, 1000*time.Millisecond, 50*time.Millisecond)
|
|
|
|
// // Unset
|
|
// cfgVar.Value = ""
|
|
// _, err = client.SetConfig(ctx, &vagrant_server.ConfigSetRequest{Variables: []*vagrant_server.ConfigVar{cfgVar}})
|
|
// require.NoError(err)
|
|
|
|
// // Should be unset back to original value
|
|
// require.Eventually(func() bool {
|
|
// return os.Getenv(cfgVar.Name) == "ORIGINAL"
|
|
// }, 1000*time.Millisecond, 50*time.Millisecond)
|
|
// })
|
|
// }
|