Return-Path: X-Original-To: apmail-zest-commits-archive@minotaur.apache.org Delivered-To: apmail-zest-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 223A618EC3 for ; Sat, 5 Dec 2015 09:20:17 +0000 (UTC) Received: (qmail 57543 invoked by uid 500); 5 Dec 2015 09:20:17 -0000 Delivered-To: apmail-zest-commits-archive@zest.apache.org Received: (qmail 57520 invoked by uid 500); 5 Dec 2015 09:20:17 -0000 Mailing-List: contact commits-help@zest.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@zest.apache.org Delivered-To: mailing list commits@zest.apache.org Received: (qmail 57510 invoked by uid 99); 5 Dec 2015 09:20:17 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 05 Dec 2015 09:20:17 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id D3937E03E4; Sat, 5 Dec 2015 09:20:16 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: niclas@apache.org To: commits@zest.apache.org Date: Sat, 05 Dec 2015 09:20:16 -0000 Message-Id: <2c9cf8bf3b0d432e8070aa47ae075e8f@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/3] zest-java git commit: ZEST-130 - FIrst attempt at the Quartz integration issue. Doesn't work. Quartz is too complex and has not been able to separate its concerns well enough, forcing all new JobStore implementations to do a lot more work than shou Repository: zest-java Updated Branches: refs/heads/ZEST-130 [created] 551c04d59 http://git-wip-us.apache.org/repos/asf/zest-java/blob/551c04d5/libraries/scheduler/src/test/java/org/apache/library/scheduler/SchedulerTest.java ---------------------------------------------------------------------- diff --git a/libraries/scheduler/src/test/java/org/apache/library/scheduler/SchedulerTest.java b/libraries/scheduler/src/test/java/org/apache/library/scheduler/SchedulerTest.java new file mode 100644 index 0000000..2832ec1 --- /dev/null +++ b/libraries/scheduler/src/test/java/org/apache/library/scheduler/SchedulerTest.java @@ -0,0 +1,94 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ + +package org.apache.library.scheduler; + +import java.util.Date; +import org.apache.zest.api.entity.Identity; +import org.apache.zest.api.unitofwork.UnitOfWork; +import org.apache.zest.api.usecase.UsecaseBuilder; +import org.apache.zest.bootstrap.AssemblyException; +import org.apache.zest.bootstrap.ModuleAssembly; +import org.apache.zest.entitystore.memory.MemoryEntityStoreService; +import org.apache.zest.library.scheduler.SchedulerAssembler; +import org.apache.zest.library.scheduler.SchedulerService; +import org.apache.zest.library.scheduler.ZestJob; +import org.apache.zest.library.scheduler.ZestJobDetail; +import org.apache.zest.spi.uuid.UuidIdentityGeneratorService; +import org.apache.zest.test.AbstractZestTest; +import org.apache.zest.valueserialization.jackson.JacksonValueSerializationAssembler; +import org.apache.zest.valueserialization.orgjson.OrgJsonValueSerializationAssembler; +import org.junit.Test; +import org.quartz.CronExpression; +import org.quartz.CronTrigger; +import org.quartz.Job; +import org.quartz.JobDetail; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.quartz.Trigger; + +import static org.quartz.CronScheduleBuilder.cronSchedule; +import static org.quartz.TriggerBuilder.newTrigger; + +public class SchedulerTest extends AbstractZestTest +{ + @Override + public void assemble( ModuleAssembly module ) + throws AssemblyException + { + new SchedulerAssembler().assemble( module ); + module.services( MemoryEntityStoreService.class ); + module.services( UuidIdentityGeneratorService.class ); + new JacksonValueSerializationAssembler().assemble( module ); + module.entities( ZestJob.class ).withMixins( HelloJob.class ); + } + + @Test + public void givenSchedulerWhenScheduleJobExpectJobExecuted() + throws Exception + { + try(UnitOfWork uow = module.newUnitOfWork( UsecaseBuilder.newUsecase( "testing" )) ) + { + SchedulerService underTest = module.findService( SchedulerService.class ).get(); + ZestJob job = uow.newEntity( ZestJob.class, "job://group1.job1" ); + ZestJobDetail details = underTest.createJobDetails( job ); + + CronTrigger trigger = newTrigger() + .withIdentity("trigger1", "group1") + .withSchedule(cronSchedule("* * * * * ?")) + .build(); + underTest.getScheduler().scheduleJob( details, trigger ); + uow.complete(); + + } + Thread.sleep(15000); + } + + public static abstract class HelloJob + implements ZestJob + { + @Override + public void execute( JobExecutionContext context ) + throws JobExecutionException + { + System.out.println("Hello, Quartz!"); + } + } +} http://git-wip-us.apache.org/repos/asf/zest-java/blob/551c04d5/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/AbstractSchedulerTest.java ---------------------------------------------------------------------- diff --git a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/AbstractSchedulerTest.java b/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/AbstractSchedulerTest.java deleted file mode 100644 index 02d5636..0000000 --- a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/AbstractSchedulerTest.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2010-2014, Paul Merlin. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - * implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.zest.library.scheduler; - -import org.apache.zest.api.entity.EntityBuilder; -import org.apache.zest.api.entity.IdentityGenerator; -import org.apache.zest.api.unitofwork.UnitOfWork; -import org.apache.zest.api.value.ValueSerialization; -import org.apache.zest.bootstrap.AssemblyException; -import org.apache.zest.bootstrap.ModuleAssembly; -import org.apache.zest.bootstrap.ServiceDeclaration; -import org.apache.zest.entitystore.memory.MemoryEntityStoreService; -import org.apache.zest.index.rdf.assembly.RdfMemoryStoreAssembler; -import org.apache.zest.spi.uuid.UuidIdentityGeneratorService; -import org.apache.zest.test.AbstractZestTest; -import org.apache.zest.test.EntityTestAssembler; -import org.apache.zest.valueserialization.orgjson.OrgJsonValueSerializationService; - -public abstract class AbstractSchedulerTest - extends AbstractZestTest -{ - @Override - public final void assemble( ModuleAssembly assembly ) - throws AssemblyException - { - assembly.entities( FooTask.class ); - - assembly.services( MemoryEntityStoreService.class ); - assembly.services( UuidIdentityGeneratorService.class).withMixins( CountingIdentityGeneratorService.class ); - assembly.services( OrgJsonValueSerializationService.class ).taggedWith( ValueSerialization.Formats.JSON ); - new RdfMemoryStoreAssembler().assemble( assembly ); - - onAssembly( assembly ); - } - - protected abstract void onAssembly( ModuleAssembly module ) - throws AssemblyException; - - protected final FooTask createFooTask( UnitOfWork uow, String name, String input ) - { - EntityBuilder builder = uow.newEntityBuilder( FooTask.class ); - FooTask task = builder.instance(); - task.name().set( name ); - task.input().set( input ); - return builder.newInstance(); - } - - public static class CountingIdentityGeneratorService - implements IdentityGenerator - { - int counter = 0; - - @Override - public String generate( Class compositeType ) - { - return compositeType.getSimpleName() + ":" + counter++; - } - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/551c04d5/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/Constants.java ---------------------------------------------------------------------- diff --git a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/Constants.java b/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/Constants.java deleted file mode 100644 index 55de82f..0000000 --- a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/Constants.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2010-2014, Paul Merlin. - * Copyright (c) 2012, Niclas Hedhman. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - * implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.zest.library.scheduler; - -// TODO Rename to TestConstants -public interface Constants -{ - String BAR = "bar"; - String BAZAR = "bazar"; -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/551c04d5/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/CronScheduleTest.java ---------------------------------------------------------------------- diff --git a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/CronScheduleTest.java b/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/CronScheduleTest.java deleted file mode 100644 index ad210a2..0000000 --- a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/CronScheduleTest.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -package org.apache.zest.library.scheduler; - -import org.apache.zest.api.entity.EntityBuilder; -import org.apache.zest.api.unitofwork.UnitOfWork; -import org.apache.zest.api.value.ValueSerialization; -import org.apache.zest.bootstrap.AssemblyException; -import org.apache.zest.bootstrap.ModuleAssembly; -import org.apache.zest.entitystore.memory.MemoryEntityStoreService; -import org.apache.zest.spi.uuid.UuidIdentityGeneratorService; -import org.apache.zest.test.AbstractZestTest; -import org.apache.zest.valueserialization.orgjson.OrgJsonValueSerializationService; -import org.joda.time.DateTime; -import org.junit.Test; - -import static org.hamcrest.number.IsCloseTo.closeTo; -import static org.junit.Assert.assertThat; - -public class CronScheduleTest extends AbstractZestTest -{ - @Override - public void assemble( ModuleAssembly module ) - throws AssemblyException - { - module.services( OrgJsonValueSerializationService.class ) - .taggedWith( ValueSerialization.Formats.JSON ); - module.services( MemoryEntityStoreService.class ); - module.services( UuidIdentityGeneratorService.class ); - module.entities( CronSchedule.class ); - module.entities( Task.class ).withMixins( DummyTask.class ); - } - - @Test - public void given15SecondCronWhenRequestingNextExpectEvery15Seconds() - throws Exception - { - - UnitOfWork work = module.newUnitOfWork(); - EntityBuilder builder1 = work.newEntityBuilder( Task.class ); - builder1.instance().name().set( "abc" ); - Task task = builder1.newInstance(); - EntityBuilder builder = work.newEntityBuilder( CronSchedule.class ); - builder.instance().start().set( DateTime.now() ); - builder.instance().task().set( task ); - builder.instance().cronExpression().set( "*/15 * * * * *" ); - CronSchedule schedule = builder.newInstance(); - long runAt = schedule.nextRun( System.currentTimeMillis() ); - for( int i = 0; i < 1000; i++ ) - { - long nextRun = schedule.nextRun( runAt + 1000 ); // Needs to push forward one second... - assertThat( "At:" + i, (double) nextRun, closeTo( runAt + 15000, 50 ) ); - } - work.discard(); - } - - public static abstract class DummyTask implements Task - { - @Override - public void run() - { - System.out.println( "Dummy" ); - } - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/551c04d5/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/FooTask.java ---------------------------------------------------------------------- diff --git a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/FooTask.java b/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/FooTask.java deleted file mode 100644 index 63fbee4..0000000 --- a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/FooTask.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2010-2014, Paul Merlin. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - * implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.zest.library.scheduler; - -import org.apache.zest.api.common.Optional; -import org.apache.zest.api.common.UseDefaults; -import org.apache.zest.api.entity.Identity; -import org.apache.zest.api.injection.scope.This; -import org.apache.zest.api.mixin.Mixins; -import org.apache.zest.api.property.Property; -import org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import static org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation.Propagation.REQUIRES_NEW; - -@Mixins( FooTask.Mixin.class ) -public interface FooTask - extends Task, Identity -{ - Property input(); - - @Optional - Property output(); - - @UseDefaults - Property runCounter(); - - abstract class Mixin - implements Task - { - private static final Logger LOGGER = LoggerFactory.getLogger( FooTask.class ); - - @This - private FooTask me; - - @Override - public void run() - { - LOGGER.info( "FooTask.run({})", me.input().get() ); - synchronized( this ) - { - me.runCounter().set( me.runCounter().get() + 1 ); - LOGGER.info( "Identity: " + me.identity().get() ); - LOGGER.info( " Counter: " + me.runCounter().get() ); - } - if( me.input().get().equals( Constants.BAZAR ) ) - { - if( me.output().get() == null ) - { - me.output().set( Constants.BAR ); - } - else - { - me.output().set( me.output().get() + Constants.BAR ); - } - } - } - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/551c04d5/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/SchedulerTest.java ---------------------------------------------------------------------- diff --git a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/SchedulerTest.java b/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/SchedulerTest.java deleted file mode 100644 index 15a356c..0000000 --- a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/SchedulerTest.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright (c) 2010-2014, Paul Merlin. All Rights Reserved. - * Copyright (c) 2012, Niclas Hedhman. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - * implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.zest.library.scheduler; - -import java.util.concurrent.Callable; -import org.apache.zest.api.common.Visibility; -import org.apache.zest.api.unitofwork.UnitOfWork; -import org.apache.zest.api.unitofwork.UnitOfWorkCompletionException; -import org.apache.zest.api.usecase.Usecase; -import org.apache.zest.api.usecase.UsecaseBuilder; -import org.apache.zest.bootstrap.AssemblyException; -import org.apache.zest.bootstrap.ModuleAssembly; -import org.apache.zest.library.scheduler.bootstrap.SchedulerAssembler; -import org.apache.zest.library.scheduler.timeline.Timeline; -import org.joda.time.DateTime; -import org.joda.time.Interval; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import static com.jayway.awaitility.Awaitility.await; -import static java.util.concurrent.TimeUnit.MILLISECONDS; -import static java.util.concurrent.TimeUnit.SECONDS; -import static org.apache.zest.functional.Iterables.count; -import static org.apache.zest.library.scheduler.Constants.BAR; -import static org.apache.zest.library.scheduler.Constants.BAZAR; -import static org.hamcrest.core.Is.is; -import static org.hamcrest.core.IsEqual.equalTo; -import static org.junit.Assert.assertThat; - -public class SchedulerTest - extends AbstractSchedulerTest -{ - private static final Logger LOGGER = LoggerFactory.getLogger( SchedulerTest.class ); - - @Override - protected void onAssembly( ModuleAssembly testAssembly ) - throws AssemblyException - { - @SuppressWarnings( "UnnecessaryLocalVariable" ) - ModuleAssembly moduleAssembly = testAssembly; - - @SuppressWarnings( "UnnecessaryLocalVariable" ) - ModuleAssembly configModuleAssembly = testAssembly; - - // START SNIPPET: assembly - new SchedulerAssembler().visibleIn( Visibility.application ) - .withConfig( configModuleAssembly, Visibility.layer ) - .withTimeline() - .assemble( moduleAssembly ); - // END SNIPPET: assembly - } - - @Test - public void testTaskWithoutScheduling() - throws UnitOfWorkCompletionException - { - Usecase usecase = UsecaseBuilder.newUsecase( "testTask" ); - String taskId; - try( UnitOfWork uow = module.newUnitOfWork( usecase ) ) - { - FooTask task = createFooTask( uow, "TestTask", BAZAR ); - taskId = task.identity().get(); - task.run(); - uow.complete(); - } - try( UnitOfWork uow = module.newUnitOfWork( usecase ) ) - { - FooTask task = uow.get( FooTask.class, taskId ); - assertThat( task.runCounter().get(), equalTo( 1 ) ); - assertThat( task.output().get(), equalTo( BAR ) ); - } - } - - @Test - public void testMinutely() - throws UnitOfWorkCompletionException - { - Usecase usecase = UsecaseBuilder.newUsecase( "TestMinutely" ); - DateTime start = new DateTime(); - String taskIdentity; - long sleepMillis; - try( UnitOfWork uow = module.newUnitOfWork( usecase ) ) - { - Scheduler scheduler = module.findService( Scheduler.class ).get(); - - FooTask task = createFooTask( uow, usecase.name(), BAZAR ); - taskIdentity = task.identity().get(); - - DateTime expectedRun = start.withMillisOfSecond( 0 ).withSecondOfMinute( 0 ).plusMinutes( 1 ); - scheduler.scheduleCron( task, "@minutely" ); - - uow.complete(); - - sleepMillis = new Interval( start, expectedRun ).toDurationMillis(); - LOGGER.info( "Task scheduled on {} to be run at {}", start.getMillis(), expectedRun.getMillis() ); - } - - await( usecase.name() ) - .atMost( sleepMillis + 5000, MILLISECONDS ) - .until( taskOutput( taskIdentity ), equalTo( 1 ) ); - - //noinspection unused - try( UnitOfWork uow = module.newUnitOfWork( usecase ) ) - { - Timeline timeline = module.findService( Timeline.class ).get(); - DateTime now = new DateTime(); - - // Queries returning past records - assertThat( count( timeline.getLastRecords( 5 ) ), - is( 2L ) ); - assertThat( count( timeline.getRecords( start.getMillis(), now.getMillis() ) ), - is( 2L ) ); - - // Queries returning future records - assertThat( count( timeline.getNextRecords( 4 ) ), - is( 4L ) ); - assertThat( count( timeline.getRecords( now.getMillis() + 100, now.plusMinutes( 5 ).getMillis() ) ), - is( 5L ) ); - - // Queries returning mixed past and future records - assertThat( count( timeline.getRecords( start.getMillis(), now.plusMinutes( 5 ).getMillis() ) ), - is( 7L ) ); - } - } - - @Test - public void testOnce() - throws UnitOfWorkCompletionException, InterruptedException - { - System.setProperty( "zest.entity.print.state", Boolean.TRUE.toString() ); - final Usecase usecase = UsecaseBuilder.newUsecase( "TestOnce" ); - final String taskIdentity; - Scheduler scheduler = module.findService( Scheduler.class ).get(); - - Schedule schedule1; - Schedule schedule2; - Schedule schedule3; - Schedule schedule4; - try( UnitOfWork uow = module.newUnitOfWork( usecase ) ) - { - FooTask task = createFooTask( uow, usecase.name(), BAZAR ); - taskIdentity = task.identity().get(); - - schedule1 = scheduler.scheduleOnce( task, 1 ); - schedule2 = scheduler.scheduleOnce( task, 2 ); - schedule3 = scheduler.scheduleOnce( task, 3 ); - schedule4 = scheduler.scheduleOnce( task, 4 ); - - uow.complete(); - } - await( usecase.name() ) - .atMost( 6, SECONDS ) - .until( taskOutput( taskIdentity ), equalTo( 4 ) ); - - try( UnitOfWork uow = module.newUnitOfWork( usecase ) ) - { - schedule1 = uow.get( schedule1 ); - schedule2 = uow.get( schedule2 ); - schedule3 = uow.get( schedule3 ); - schedule4 = uow.get( schedule4 ); - assertThat(schedule1.cancelled().get(), equalTo( false )); - assertThat(schedule2.cancelled().get(), equalTo( false )); - assertThat(schedule3.cancelled().get(), equalTo( false )); - assertThat(schedule4.cancelled().get(), equalTo( false )); - assertThat(schedule1.done().get(), equalTo( true )); - assertThat(schedule2.done().get(), equalTo( true )); - assertThat(schedule3.done().get(), equalTo( true )); - assertThat(schedule4.done().get(), equalTo( true )); - assertThat(schedule1.running().get(), equalTo( false )); - assertThat(schedule2.running().get(), equalTo( false )); - assertThat(schedule3.running().get(), equalTo( false )); - assertThat(schedule4.running().get(), equalTo( false )); - } - } - - private Callable taskOutput( final String taskIdentity ) - { - return () -> { - try( UnitOfWork uow = module.newUnitOfWork() ) - { - FooTask task = uow.get( FooTask.class, taskIdentity ); - Integer count = task.runCounter().get(); - uow.discard(); - return count; - } - }; - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/551c04d5/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/docsupport/SchedulerDocs.java ---------------------------------------------------------------------- diff --git a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/docsupport/SchedulerDocs.java b/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/docsupport/SchedulerDocs.java deleted file mode 100644 index 998d36b..0000000 --- a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/docsupport/SchedulerDocs.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2010-2014, Paul Merlin. - * Copyright (c) 2012, Niclas Hedhman. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - * implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.zest.library.scheduler.docsupport; - -import org.apache.zest.api.association.Association; -import org.apache.zest.api.injection.scope.Service; -import org.apache.zest.api.injection.scope.This; -import org.apache.zest.api.property.Property; -import org.apache.zest.api.unitofwork.concern.UnitOfWorkDiscardOn; -import org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation; -import org.apache.zest.api.unitofwork.concern.UnitOfWorkRetry; -import org.apache.zest.library.scheduler.Scheduler; -import org.apache.zest.library.scheduler.Task; -import org.apache.zest.library.scheduler.Schedule; -import org.apache.zest.library.scheduler.timeline.Timeline; - -public class SchedulerDocs -{ - - // START SNIPPET: timeline - @Service - Timeline timeline; -// END SNIPPET: timeline - - // START SNIPPET: 2 - @Service - Scheduler scheduler; - - public void method() - { - MyTaskEntity myTask = todo(); - Schedule schedule = scheduler.scheduleOnce( myTask, 10 ); - // myTask will be run in 10 seconds from now - } - - // END SNIPPET: 2 - MyTaskEntity todo() - { - return null; - } - - // START SNIPPET: 1 - interface MyTaskEntity extends Task - { - Property myTaskState(); - - Association anotherEntity(); - } - - class MyTaskMixin implements Runnable - { - @This - MyTaskEntity me; - - @Override - public void run() - { - me.myTaskState().set( me.anotherEntity().get().doSomeStuff( me.myTaskState().get() ) ); - } - } - - // END SNIPPET: 1 - interface AnotherEntity - { - String doSomeStuff( String p ); - } - - public class MyTask implements Runnable - { - - // START SNIPPET: strategy - @Override - @UnitOfWorkRetry( retries = 3 ) - @UnitOfWorkDiscardOn( IllegalArgumentException.class ) - @UnitOfWorkPropagation( value = UnitOfWorkPropagation.Propagation.REQUIRES_NEW, usecase = "Load Data" ) - public void run() - { - // END SNIPPET: strategy - - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zest-java/blob/551c04d5/libraries/scheduler/src/test/resources/logback-test.xml ---------------------------------------------------------------------- diff --git a/libraries/scheduler/src/test/resources/logback-test.xml b/libraries/scheduler/src/test/resources/logback-test.xml deleted file mode 100644 index 256127e..0000000 --- a/libraries/scheduler/src/test/resources/logback-test.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - @%-10thread %-5level %logger{20} - %msg%n - - - - - - - - - - \ No newline at end of file