func TestGetContainerConfigWithFileOverrides(t *testing.T) { mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() envFile := "\nECS_UPDATES_ENABLED=false\nAGENT_TEST_VAR2=\"val2\"=val2\n" mockFS := NewMockfileSystem(mockCtrl) mockFS.EXPECT().ReadFile(config.AgentConfigFile()).Return([]byte(envFile), nil) client := &Client{ fs: mockFS, } cfg := client.getContainerConfig() envVariables := make(map[string]struct{}) for _, envVar := range cfg.Env { envVariables[envVar] = struct{}{} } expectKey("ECS_UPDATES_ENABLED=false", envVariables, t) expectKey("AGENT_TEST_VAR2=\"val2\"=val2", envVariables, t) if _, ok := envVariables["ECS_UPDATES_ENABLED=true"]; ok { t.Errorf("Did not expect ECS_UPDATES_ENABLED=true to be defined") } }
func (c *Client) loadEnvVariables() []string { file, err := c.fs.ReadFile(config.AgentConfigFile()) if err != nil { return make([]string, 0) } return strings.Split(strings.TrimSpace(string(file)), "\n") }
func TestStartAgentNoEnvFile(t *testing.T) { mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() containerID := "container id" mockFS := NewMockfileSystem(mockCtrl) mockDocker := NewMockdockerclient(mockCtrl) mockFS.EXPECT().ReadFile(config.AgentConfigFile()).Return(nil, errors.New("test error")) mockDocker.EXPECT().CreateContainer(gomock.Any()).Do(func(opts godocker.CreateContainerOptions) { validateCommonCreateContainerOptions(opts, t) }).Return(&godocker.Container{ ID: containerID, }, nil) mockDocker.EXPECT().StartContainer(containerID, nil) mockDocker.EXPECT().WaitContainer(containerID) client := &Client{ docker: mockDocker, fs: mockFS, } _, err := client.StartAgent() if err != nil { t.Error("Error should not be returned") } }
func (c *Client) loadEnvVariables() map[string]string { envVariables := make(map[string]string) file, err := c.fs.ReadFile(config.AgentConfigFile()) if err != nil { return envVariables } lines := strings.Split(strings.TrimSpace(string(file)), "\n") for _, line := range lines { parts := strings.SplitN(strings.TrimSpace(line), "=", 2) if len(parts) != 2 { continue } envVariables[parts[0]] = parts[1] } return envVariables }
func TestStartAgentEnvFile(t *testing.T) { mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() envFile := "\nAGENT_TEST_VAR=val\nAGENT_TEST_VAR2=val2\n" containerID := "container id" mockFS := NewMockfileSystem(mockCtrl) mockDocker := NewMockdockerclient(mockCtrl) mockFS.EXPECT().ReadFile(config.AgentConfigFile()).Return([]byte(envFile), nil) mockDocker.EXPECT().CreateContainer(gomock.Any()).Do(func(opts godocker.CreateContainerOptions) { validateCommonCreateContainerOptions(opts, t) cfg := opts.Config envVariables := make(map[string]struct{}) for _, envVar := range cfg.Env { envVariables[envVar] = struct{}{} } expectKey("AGENT_TEST_VAR=val", envVariables, t) expectKey("AGENT_TEST_VAR2=val2", envVariables, t) }).Return(&godocker.Container{ ID: containerID, }, nil) mockDocker.EXPECT().StartContainer(containerID, nil) mockDocker.EXPECT().WaitContainer(containerID) client := &Client{ docker: mockDocker, fs: mockFS, } _, err := client.StartAgent() if err != nil { t.Error("Error should not be returned") } }