func TestAgentCommunicator(taskId string, taskSecret string, apiRootUrl string) *agent.HTTPCommunicator { agentCommunicator, err := agent.NewHTTPCommunicator(apiRootUrl, taskId, taskSecret, "", nil) if err != nil { panic(err) } agentCommunicator.MaxAttempts = 3 agentCommunicator.RetrySleep = 100 * time.Millisecond return agentCommunicator }
func TestPluginFunctions(t *testing.T) { testConfig := evergreen.TestConfig() testutil.ConfigureIntegrationTest(t, testConfig, "TestPatchTask") Convey("With a SimpleRegistry", t, func() { Convey("with a project file containing functions", func() { registry := plugin.NewSimpleRegistry() err := registry.Register(&shell.ShellPlugin{}) testutil.HandleTestingErr(err, t, "Couldn't register plugin") err = registry.Register(&expansions.ExpansionsPlugin{}) testutil.HandleTestingErr(err, t, "Couldn't register plugin") testServer, err := apiserver.CreateTestServer(testConfig, nil, plugin.APIPlugins, false) testutil.HandleTestingErr(err, t, "Couldn't set up testing server") taskConfig, err := createTestConfig("testdata/plugin_project_functions.yml", t) testutil.HandleTestingErr(err, t, "failed to create test config: %v", err) Convey("all commands in project file should parse successfully", func() { for _, newTask := range taskConfig.Project.Tasks { for _, command := range newTask.Commands { pluginCmd, err := registry.GetCommands(command, taskConfig.Project.Functions) testutil.HandleTestingErr(err, t, "Got error getting plugin command: %v") So(pluginCmd, ShouldNotBeNil) So(err, ShouldBeNil) } } }) httpCom, err := agent.NewHTTPCommunicator(testServer.URL, "mocktaskid", "mocktasksecret", "", nil) So(err, ShouldBeNil) So(httpCom, ShouldNotBeNil) Convey("all commands in test project should execute successfully", func() { sliceAppender := &evergreen.SliceAppender{[]*slogger.Log{}} logger := agent.NewTestLogger(sliceAppender) for _, newTask := range taskConfig.Project.Tasks { So(len(newTask.Commands), ShouldNotEqual, 0) for _, command := range newTask.Commands { pluginCmds, err := registry.GetCommands(command, taskConfig.Project.Functions) testutil.HandleTestingErr(err, t, "Couldn't get plugin command: %v") So(pluginCmds, ShouldNotBeNil) So(err, ShouldBeNil) So(len(pluginCmds), ShouldEqual, 1) cmd := pluginCmds[0] pluginCom := &agent.TaskJSONCommunicator{cmd.Plugin(), httpCom} err = cmd.Execute(logger, pluginCom, taskConfig, make(chan bool)) So(err, ShouldBeNil) } } }) }) }) }
func TestPluginExecution(t *testing.T) { Convey("With a SimpleRegistry and test project file", t, func() { registry := plugin.NewSimpleRegistry() plugins := []plugin.CommandPlugin{&MockPlugin{}, &expansions.ExpansionsPlugin{}, &shell.ShellPlugin{}} apiPlugins := []plugin.APIPlugin{&MockPlugin{}, &expansions.ExpansionsPlugin{}} for _, p := range plugins { err := registry.Register(p) testutil.HandleTestingErr(err, t, "failed to register plugin") } testServer, err := apiserver.CreateTestServer(evergreen.TestConfig(), nil, apiPlugins, false) testutil.HandleTestingErr(err, t, "Couldn't set up testing server") httpCom, err := agent.NewHTTPCommunicator(testServer.URL, "mocktaskid", "mocktasksecret", "", nil) So(err, ShouldBeNil) So(httpCom, ShouldNotBeNil) taskConfig, err := createTestConfig("testdata/plugin_project.yml", t) testutil.HandleTestingErr(err, t, "failed to create test config: %v", err) sliceAppender := &evergreen.SliceAppender{[]*slogger.Log{}} logger := agent.NewTestLogger(sliceAppender) Convey("all commands in test project should execute successfully", func() { for _, newTask := range taskConfig.Project.Tasks { So(len(newTask.Commands), ShouldNotEqual, 0) for _, command := range newTask.Commands { pluginCmds, err := registry.GetCommands(command, taskConfig.Project.Functions) testutil.HandleTestingErr(err, t, "Couldn't get plugin command: %v") So(pluginCmds, ShouldNotBeNil) So(err, ShouldBeNil) for _, c := range pluginCmds { pluginCom := &agent.TaskJSONCommunicator{c.Plugin(), httpCom} err = c.Execute(logger, pluginCom, taskConfig, make(chan bool)) So(err, ShouldBeNil) } } } }) }) }