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) checker := healthchecker.NewMockedHealthChecker() checker.On("Start").Return() checker.On("Stop").Return() assert.True(t, driver.stopped) status, err := driver.Start() assert.False(t, driver.stopped) 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 TestExecutorDriverRun(t *testing.T) { setEnvironments(t, "", false) // Set expections and return values. messenger := messenger.NewMockedMessenger() messenger.On("Start").Return(nil) messenger.On("UPID").Return(&upid.UPID{}) messenger.On("Send").Return(nil) messenger.On("Stop").Return(nil) exec := NewMockedExecutor() exec.On("Error").Return(nil) driver := newTestExecutorDriver(t, exec) driver.messenger = messenger assert.True(t, driver.stopped) checker := healthchecker.NewMockedHealthChecker() checker.On("Start").Return() checker.On("Stop").Return() go func() { stat, err := driver.Run() assert.NoError(t, err) assert.Equal(t, mesosproto.Status_DRIVER_STOPPED, stat) }() time.Sleep(time.Millisecond * 1) // allow for things to settle assert.False(t, driver.Stopped()) assert.Equal(t, mesosproto.Status_DRIVER_RUNNING, driver.Status()) // mannually close it all driver.setStatus(mesosproto.Status_DRIVER_STOPPED) close(driver.stopCh) time.Sleep(time.Millisecond * 1) }
func TestExecutorDriverRun(t *testing.T) { setEnvironments(t, "", false) // Set expections and return values. messenger := messenger.NewMockedMessenger() messenger.On("Start").Return(nil) messenger.On("UPID").Return(upid.UPID{}) messenger.On("Send").Return(nil) messenger.On("Stop").Return(nil) exec := NewMockedExecutor() exec.On("Error").Return(nil) driver := newTestExecutorDriver(t, exec) driver.messenger = messenger assert.False(t, driver.Running()) checker := healthchecker.NewMockedHealthChecker() checker.On("Start").Return() checker.On("Stop").Return() 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 createTestExecutorDriver(t *testing.T) ( *MesosExecutorDriver, *messenger.MockedMessenger, *healthchecker.MockedHealthChecker) { exec := NewMockedExecutor() setEnvironments(t, "", false) driver := newTestExecutorDriver(t, exec) messenger := messenger.NewMockedMessenger() messenger.On("Start").Return(nil) messenger.On("UPID").Return(&upid.UPID{}) messenger.On("Send").Return(nil) messenger.On("Stop").Return(nil) checker := healthchecker.NewMockedHealthChecker() checker.On("Start").Return() checker.On("Stop").Return() driver.messenger = messenger return driver, messenger, checker }
func TestExecutorDriverJoin(t *testing.T) { setEnvironments(t, "", false) // Set expections and return values. messenger := messenger.NewMockedMessenger() messenger.On("Start").Return(nil) messenger.On("UPID").Return(&upid.UPID{}) messenger.On("Send").Return(nil) messenger.On("Stop").Return(nil) exec := NewMockedExecutor() exec.On("Error").Return(nil) driver := newTestExecutorDriver(t, exec) driver.messenger = messenger assert.True(t, driver.stopped) checker := healthchecker.NewMockedHealthChecker() checker.On("Start").Return() checker.On("Stop").Return() stat, err := driver.Start() assert.NoError(t, err) assert.False(t, driver.stopped) assert.Equal(t, mesosproto.Status_DRIVER_RUNNING, stat) testCh := make(chan mesosproto.Status) go func() { stat, _ := driver.Join() testCh <- stat }() close(driver.stopCh) // manually stopping stat = <-testCh // when Stop() is called, stat will be DRIVER_STOPPED. }