org.springframework.boot.cloud.CloudPlatform#org.springframework.cloud.deployer.spi.scheduler.Scheduler源码实例Demo

下面列出了org.springframework.boot.cloud.CloudPlatform#org.springframework.cloud.deployer.spi.scheduler.Scheduler 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: spring-cloud-dataflow   文件: TestConfig.java
@Bean
public Scheduler localScheduler() {
	// This is in auto-config package and we can depend on that, use same
	// dummy no-op impl here.
	return new Scheduler() {
		@Override
		public void schedule(ScheduleRequest scheduleRequest) {
			throw new UnsupportedOperationException("Scheduling is not implemented for local platform.");
		}

		@Override
		public void unschedule(String scheduleName) {
			throw new UnsupportedOperationException("Scheduling is not implemented for local platform.");
		}

		@Override
		public List<ScheduleInfo> list(String taskDefinitionName) {
			return Collections.emptyList();
		}

		@Override
		public List<ScheduleInfo> list() {
			return Collections.emptyList();
		}
	};
}
 
@Bean
@ConditionalOnMissingBean
public Scheduler localScheduler() {
	return new Scheduler() {
		@Override
		public void schedule(ScheduleRequest scheduleRequest) {
			throw new UnsupportedOperationException("Interface is not implemented for schedule method.");
		}

		@Override
		public void unschedule(String scheduleName) {
			throw new UnsupportedOperationException("Interface is not implemented for unschedule method.");
		}

		@Override
		public List<ScheduleInfo> list(String taskDefinitionName) {
			throw new UnsupportedOperationException("Interface is not implemented for list method.");
		}

		@Override
		public List<ScheduleInfo> list() {
			throw new UnsupportedOperationException("Interface is not implemented for list method.");
		}
	};
}
 
源代码3 项目: spring-cloud-dataflow   文件: BaseDocumentation.java
public Scheduler localTestScheduler() {
	return new Scheduler() {
		@Override
		public void schedule(ScheduleRequest scheduleRequest) {
			throw new UnsupportedOperationException("Interface is not implemented for schedule method.");
		}

		@Override
		public void unschedule(String scheduleName) {
			throw new UnsupportedOperationException("Interface is not implemented for unschedule method.");
		}

		@Override
		public List<ScheduleInfo> list(String taskDefinitionName) {
			throw new UnsupportedOperationException("Interface is not implemented for list method.");
		}

		@Override
		public List<ScheduleInfo> list() {
			return getSampleList();
		}
	};
}
 
@Bean
@ConditionalOnMissingBean
public Scheduler localScheduler() {
	return new Scheduler() {
		@Override
		public void schedule(ScheduleRequest scheduleRequest) {
			throw new UnsupportedOperationException("Scheduling is not implemented for local platform.");
		}

		@Override
		public void unschedule(String scheduleName) {
			throw new UnsupportedOperationException("Scheduling is not implemented for local platform.");
		}

		@Override
		public List<ScheduleInfo> list(String taskDefinitionName) {
			return Collections.emptyList();
		}

		@Override
		public List<ScheduleInfo> list() {
			return Collections.emptyList();
		}
	};
}
 
@Override
public Launcher createLauncher(String account) {
	KubernetesDeployerProperties kubernetesProperties = this.platformProperties.accountProperties(account);
	ContainerFactory containerFactory = new DefaultContainerFactory(
			this.platformProperties.accountProperties(account));
	KubernetesClient kubernetesClient =
			KubernetesClientFactory.getKubernetesClient(this.platformProperties.accountProperties(account));

	KubernetesTaskLauncher kubernetesTaskLauncher = new KubernetesTaskLauncher(
			kubernetesProperties, kubernetesClient, containerFactory);

	Scheduler scheduler = getScheduler(schedulerProperties, kubernetesClient);
	Launcher launcher = new Launcher(account, KUBERNETES_PLATFORM_TYPE, kubernetesTaskLauncher, scheduler);

	launcher.setDescription(
			String.format("master url = [%s], namespace = [%s], api version = [%s]",
					kubernetesClient.getMasterUrl(), kubernetesClient.getNamespace(),
					kubernetesClient.getApiVersion()));

	return launcher;
}
 
@Bean
@ConditionalOnMissingBean
public Scheduler scheduler(ReactorSchedulerClient client,
		CloudFoundryOperations operations,
		CloudFoundryConnectionProperties properties,
		TaskLauncher taskLauncher,
		CloudFoundrySchedulerProperties schedulerProperties) {
	return new CloudFoundryAppScheduler(client, operations, properties,
			(CloudFoundryTaskLauncher) taskLauncher,
			schedulerProperties);
}
 
@Test
public void testLocalSchedulerEnabled() {
	assertFalse("K8s should be disabled", context.getEnvironment().containsProperty("kubernetes_service_host"));
	assertFalse("CF should be disabled", CloudPlatform.CLOUD_FOUNDRY.isActive(context.getEnvironment()));

	Scheduler scheduler = context.getBean(Scheduler.class);

	assertNotNull(scheduler);
	assertTrue(scheduler.getClass().getName().contains("LocalSchedulerAutoConfiguration"));
}
 
源代码8 项目: spring-cloud-dataflow   文件: TaskConfiguration.java
/**
 * The default profile is active when no other profiles are active. This is configured so
 * that several tests will pass without having to explicitly enable the local profile.
 * @param localPlatformProperties the local platform properties
 * @param localScheduler the local scheduler
 *
 * @return the task platform
 */
@Profile({ "local", "default" })
@Bean
public TaskPlatform localTaskPlatform(LocalPlatformProperties localPlatformProperties,
		@Nullable Scheduler localScheduler) {
	TaskPlatform taskPlatform = new LocalTaskPlatformFactory(localPlatformProperties, localScheduler)
			.createTaskPlatform();
	taskPlatform.setPrimary(true);
	return taskPlatform;
}
 
@Before
public void setupMockMVC() {
	this.mockMvc = MockMvcBuilders.webAppContextSetup(wac)
			.defaultRequest(get("/").accept(MediaType.APPLICATION_JSON)).build();
	Launcher launcher = new Launcher("default", "local", taskLauncher);
	Launcher cfLauncher = new Launcher("cf", "Cloud Foundry", mock(TaskLauncher.class));
	Launcher cfLauncherWithScheduler = new Launcher("cfsched", "Cloud Foundry", mock(TaskLauncher.class), mock(Scheduler.class));
	this.launcherRepository.save(launcher);
	this.launcherRepository.save(cfLauncher);
	this.launcherRepository.save(cfLauncherWithScheduler);
}
 
private List<String> getCommandLineArguments(List<String> commandLineArguments) {
	Scheduler mockScheduler = mock(SimpleTestScheduler.class);
	TaskDefinitionRepository mockTaskDefinitionRepository = mock(TaskDefinitionRepository.class);
	AppRegistryService mockAppRegistryService = mock(AppRegistryService.class);

	Launcher launcher = new Launcher("default", "defaultType", null, mockScheduler);
	List<Launcher> launchers = new ArrayList<>();
	launchers.add(launcher);
	List<TaskPlatform> taskPlatform = Collections.singletonList(new TaskPlatform("testTaskPlatform", launchers));
	SchedulerService mockSchedulerService = new DefaultSchedulerService(mock(CommonApplicationProperties.class),
			taskPlatform, mockTaskDefinitionRepository, mockAppRegistryService, mock(ResourceLoader.class),
			this.taskConfigurationProperties, mock(DataSourceProperties.class), "uri",
			mock(ApplicationConfigurationMetadataResolver.class), mock(SchedulerServiceProperties.class),
			mock(AuditRecordService.class));

	TaskDefinition taskDefinition = new TaskDefinition(BASE_DEFINITION_NAME, "timestamp");

	when(mockTaskDefinitionRepository.findById(BASE_DEFINITION_NAME)).thenReturn(Optional.of(taskDefinition));
	when(mockAppRegistryService.getAppResource(any())).thenReturn(new DockerResource("springcloudtask/timestamp-task:latest"));
	when(mockAppRegistryService.find(taskDefinition.getRegisteredAppName(), ApplicationType.task))
			.thenReturn(new AppRegistration());
	mockSchedulerService.schedule(BASE_SCHEDULE_NAME, BASE_DEFINITION_NAME, this.testProperties,
			commandLineArguments, null);

	ArgumentCaptor<ScheduleRequest> scheduleRequestArgumentCaptor = ArgumentCaptor.forClass(ScheduleRequest.class);
	verify(mockScheduler).schedule(scheduleRequestArgumentCaptor.capture());

	return scheduleRequestArgumentCaptor.getValue().getCommandlineArguments();
}
 
@Bean
public TaskPlatform taskCFPlatform(Scheduler scheduler) {
	Launcher launcher = new Launcher(KUBERNETES_PLATFORM, "Kubernetes", Mockito.mock(TaskLauncher.class), scheduler);
	List<Launcher> launchers = new ArrayList<>();
	launchers.add(launcher);
	TaskPlatform taskPlatform = new TaskPlatform(KUBERNETES_PLATFORM, launchers);
	return taskPlatform;
}
 
private List<String> getCommandLineArguments(List<String> commandLineArguments) {
	Scheduler mockScheduler = mock(SimpleTestScheduler.class);
	TaskDefinitionRepository mockTaskDefinitionRepository = mock(TaskDefinitionRepository.class);
	AppRegistryService mockAppRegistryService = mock(AppRegistryService.class);

	Launcher launcher = new Launcher("default", "defaultType", null, mockScheduler);
	List<Launcher> launchers = new ArrayList<>();
	launchers.add(launcher);
	List<TaskPlatform> taskPlatform = Collections.singletonList(new TaskPlatform("testTaskPlatform", launchers));
	SchedulerService mockSchedulerService = new DefaultSchedulerService(mock(CommonApplicationProperties.class),
			taskPlatform, mockTaskDefinitionRepository, mockAppRegistryService, mock(ResourceLoader.class),
			this.taskConfigurationProperties, mock(DataSourceProperties.class), "uri",
			mock(ApplicationConfigurationMetadataResolver.class), mock(SchedulerServiceProperties.class),
			mock(AuditRecordService.class));

	TaskDefinition taskDefinition = new TaskDefinition(BASE_DEFINITION_NAME, "timestamp");

	when(mockTaskDefinitionRepository.findById(BASE_DEFINITION_NAME)).thenReturn(Optional.of(taskDefinition));
	when(mockAppRegistryService.getAppResource(any())).thenReturn(new DockerResource("springcloudtask/timestamp-task:latest"));
	when(mockAppRegistryService.find(taskDefinition.getRegisteredAppName(), ApplicationType.task))
			.thenReturn(new AppRegistration());
	mockSchedulerService.schedule(BASE_SCHEDULE_NAME, BASE_DEFINITION_NAME, this.testProperties,
			commandLineArguments, null);

	ArgumentCaptor<ScheduleRequest> scheduleRequestArgumentCaptor = ArgumentCaptor.forClass(ScheduleRequest.class);
	verify(mockScheduler).schedule(scheduleRequestArgumentCaptor.capture());

	return scheduleRequestArgumentCaptor.getValue().getCommandlineArguments();
}
 
private Scheduler getScheduler(Optional<KubernetesSchedulerProperties> kubernetesSchedulerProperties,
		KubernetesClient kubernetesClient) {
	Scheduler scheduler = null;

	if (schedulesEnabled) {
		KubernetesSchedulerProperties schedulerProperties = kubernetesSchedulerProperties
				.orElseGet(KubernetesSchedulerProperties::new);
		scheduler = new KubernetesScheduler(kubernetesClient, schedulerProperties);
	}

	return scheduler;
}
 
@Override
protected Scheduler provideScheduler() {
	return this.scheduler;
}
 
@Bean
public Scheduler scheduler(KubernetesClient kubernetesClient) {
	return new KubernetesScheduler(kubernetesClient, kubernetesSchedulerProperties);
}
 
public SchedulerWrapper(Scheduler wrapped) {
	this.wrapped = wrapped;
}
 
@Override
protected Scheduler provideScheduler() {
	return this.scheduler;
}
 
@Test(expected = NoSuchBeanDefinitionException.class)
public void testLocalSchedulerEnabled() {
	assertFalse(context.getEnvironment().containsProperty("kubernetes_service_host"));
	assertFalse(CloudPlatform.CLOUD_FOUNDRY.isActive(context.getEnvironment()));
	context.getBean(Scheduler.class);
}
 
public LocalTaskPlatformFactory(LocalPlatformProperties platformProperties, Scheduler localScheduler) {
	super(platformProperties, LOCAL_PLATFORM_TYPE);
	this.localScheduler = localScheduler;
}
 
源代码20 项目: spring-cloud-dataflow   文件: TestDependencies.java
@Bean
Scheduler scheduler() {
	return new SimpleTestScheduler();
}
 
@Bean
public Scheduler scheduler() {
	return new SimpleTestScheduler();
}
 
@Bean
public Scheduler scheduler() {
	return mock(Scheduler.class);
}
 
@Bean
public Scheduler scheduler() {
	return mock(Scheduler.class);
}
 
源代码24 项目: spring-cloud-dataflow   文件: Launcher.java
public Launcher(String name, String type, TaskLauncher taskLauncher, Scheduler scheduler) {
	this.name = name;
	this.type = type;
	this.taskLauncher = taskLauncher;
	this.scheduler = scheduler;
}
 
源代码25 项目: spring-cloud-dataflow   文件: Launcher.java
public Scheduler getScheduler() {
	return scheduler;
}
 
源代码26 项目: spring-cloud-dataflow   文件: Launcher.java
public void setScheduler(Scheduler scheduler) {
	this.scheduler = scheduler;
}
 
/**
 * Subclasses should call this method to interact with the Scheduler under test.
 * Returns a wrapper around the scheduler returned by {@link #provideScheduler()}, that keeps
 * track of which tasks have been scheduled and unscheduled.
 */
protected Scheduler taskScheduler() {
	return this.schedulerWrapper;
}
 
/**
 * To be implemented by subclasses, which should return the instance of Scheduler that needs
 * to be tested. Can be used if subclasses decide to add additional implementation-specific tests.
 */
protected abstract Scheduler provideScheduler();