func TestExecutorDriverStartSucceed(t *testing.T) { setEnvironments(t, "", false) exec := NewMockedExecutor() exec.On("Error").Return(nil) driver := newTestExecutorDriver(t, exec) messenger := messenger.NewMockedMessenger() driver.messenger = 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 TestExecutorDriverAbort(t *testing.T) { statusChan := make(chan mesosproto.Status) driver, messenger := createTestExecutorDriver(t) assert.False(t, driver.Running()) stat, err := driver.Start() assert.True(t, driver.Running()) assert.NoError(t, err) assert.Equal(t, mesosproto.Status_DRIVER_RUNNING, stat) go func() { st, _ := driver.Join() statusChan <- st }() stat, err = driver.Abort() assert.NoError(t, err) assert.Equal(t, mesosproto.Status_DRIVER_ABORTED, stat) assert.Equal(t, mesosproto.Status_DRIVER_ABORTED, <-statusChan) assert.False(t, driver.Running()) // Abort for the second time, should return directly. stat, err = driver.Abort() assert.Error(t, err) assert.Equal(t, mesosproto.Status_DRIVER_ABORTED, stat) stat, err = driver.Stop() assert.Error(t, err) assert.Equal(t, mesosproto.Status_DRIVER_ABORTED, stat) assert.False(t, driver.Running()) // Restart should not start. stat, err = driver.Start() assert.False(t, driver.Running()) assert.Error(t, err) assert.Equal(t, mesosproto.Status_DRIVER_ABORTED, stat) messenger.AssertNumberOfCalls(t, "Start", 1) messenger.AssertNumberOfCalls(t, "UPID", 1) messenger.AssertNumberOfCalls(t, "Send", 1) messenger.AssertNumberOfCalls(t, "Stop", 1) }
func TestExecutorDriverStartFailedToStartMessenger(t *testing.T) { exec := NewMockedExecutor() setEnvironments(t, "", false) driver := newTestExecutorDriver(t, exec) assert.NotNil(t, driver) messenger := messenger.NewMockedMessenger() driver.messenger = 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) }