func TestExecutorDriverJoin(t *testing.T) { setEnvironments(t, "", false) // Set expections and return values. messenger := mock_messenger.NewMessenger() messenger.On("Start").Return(nil) messenger.On("UPID").Return(upid.UPID{}) messenger.On("Send").Return(nil) messenger.On("Stop").Return(nil) exec := mock_executor.New() exec.On("Error").Return(nil) driver := newTestExecutorDriver(t, exec) driver.SetMessenger(messenger) assert.False(t, driver.Running()) stat, err := driver.Start() assert.NoError(t, err) assert.True(t, driver.Running()) assert.Equal(t, mesosproto.Status_DRIVER_RUNNING, stat) testCh := make(chan mesosproto.Status) go func() { stat, _ := driver.Join() testCh <- stat }() driver.Stop() stat = <-testCh // when Stop() is called, stat will be DRIVER_STOPPED. assert.Equal(t, mesosproto.Status_DRIVER_STOPPED, stat) }
func TestExecutorDriverRun(t *testing.T) { setEnvironments(t, "", false) // Set expections and return values. messenger := mock_messenger.NewMessenger() messenger.On("Start").Return(nil) messenger.On("UPID").Return(upid.UPID{}) messenger.On("Send").Return(nil) messenger.On("Stop").Return(nil) exec := mock_executor.New() exec.On("Error").Return(nil) driver := newTestExecutorDriver(t, exec) driver.SetMessenger(messenger) assert.False(t, driver.Running()) ch := make(chan struct{}) go func() { defer close(ch) stat, err := driver.Run() assert.NoError(t, err) assert.Equal(t, mesosproto.Status_DRIVER_STOPPED, stat) }() <-driver.Started() assert.True(t, driver.Running()) driver.Stop() <-ch }
func TestExecutorDriverStartSucceed(t *testing.T) { setEnvironments(t, "", false) exec := mock_executor.New() exec.On("Error").Return(nil) driver := newTestExecutorDriver(t, exec) messenger := mock_messenger.NewMessenger() driver.SetMessenger(messenger) messenger.On("Start").Return(nil) messenger.On("UPID").Return(upid.UPID{}) messenger.On("Send").Return(nil) messenger.On("Stop").Return(nil) assert.False(t, driver.Running()) status, err := driver.Start() assert.True(t, driver.Running()) assert.NoError(t, err) assert.Equal(t, mesosproto.Status_DRIVER_RUNNING, status) messenger.AssertNumberOfCalls(t, "Start", 1) messenger.AssertNumberOfCalls(t, "UPID", 1) messenger.AssertNumberOfCalls(t, "Send", 1) }
func TestExecutorDriverStartFailedToParseEnvironment(t *testing.T) { clearEnvironments(t) exec := mock_executor.New() exec.On("Error").Return(nil) dconfig := DriverConfig{Executor: exec} driver, err := NewMesosExecutorDriver(dconfig) assert.Nil(t, driver) assert.Error(t, err) }
func createTestExecutorDriver(t *testing.T) ( *TestDriver, *mock_messenger.Messenger) { exec := mock_executor.New() exec.On("Error").Return(nil) setEnvironments(t, "", false) driver := newTestExecutorDriver(t, exec) messenger := mock_messenger.NewMessenger() messenger.On("Start").Return(nil) messenger.On("UPID").Return(upid.UPID{}) messenger.On("Send").Return(nil) messenger.On("Stop").Return(nil) driver.SetMessenger(messenger) return driver, messenger }
func TestExecutorDriverStartFailedToStartMessenger(t *testing.T) { exec := mock_executor.New() setEnvironments(t, "", false) driver := newTestExecutorDriver(t, exec) assert.NotNil(t, driver) messenger := mock_messenger.NewMessenger() driver.SetMessenger(messenger) // Set expections and return values. messenger.On("Start").Return(fmt.Errorf("messenger failed to start")) messenger.On("Stop").Return(nil) status, err := driver.Start() assert.Error(t, err) assert.Equal(t, mesosproto.Status_DRIVER_NOT_STARTED, status) messenger.Stop() messenger.AssertNumberOfCalls(t, "Start", 1) messenger.AssertNumberOfCalls(t, "Stop", 1) }