aboutsummaryrefslogtreecommitdiff
path: root/work/workmanager/src/androidTest/java/androidx
diff options
context:
space:
mode:
authorSumir Kataria <sumir@google.com>2018-05-30 16:51:36 -0700
committerSumir Kataria <sumir@google.com>2018-05-30 17:13:17 -0700
commit5d373d376edddb57cd822dd06ed54f97ef949586 (patch)
tree6821a0c7cc1c19073f26eae76d5ec60948426100 /work/workmanager/src/androidTest/java/androidx
parent1666a83dea6436af43f1ff53bff3bdfa3242d0cf (diff)
downloadsupport-5d373d376edddb57cd822dd06ed54f97ef949586.tar.gz
Breaking change: Tell Worker if it's been cancelled.
Currently, Worker#onStopped doesn't know if it's been cancelled or merely pre-empted by the system. b/79632247 points out some reasons why an explicit signal for cancellation may be useful. #onStopped now gets a boolean argument indicating if the Worker has been cancelled and will never run again. A new method, Worker#isCancelled, is also provided. Change-Id: I19424fe718c95e2fd374f40b0afc8a79194c6100 Fixes: 79632247 Test: Added and ran tests.
Diffstat (limited to 'work/workmanager/src/androidTest/java/androidx')
-rw-r--r--work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java34
1 files changed, 31 insertions, 3 deletions
diff --git a/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java b/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java
index 8636b99b36d..a8bbb1641df 100644
--- a/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java
+++ b/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java
@@ -695,14 +695,14 @@ public class WorkerWrapperTest extends DatabaseTest {
.withListener(mMockListener)
.build();
Executors.newSingleThreadExecutor().submit(workerWrapper);
- workerWrapper.interrupt();
+ workerWrapper.interrupt(false);
Thread.sleep(6000L);
verify(mMockListener).onExecuted(work.getStringId(), false, true);
}
@Test
@SmallTest
- public void testInterruption_isMarkedOnRunningWorker() {
+ public void testInterruptionWithoutCancellation_isMarkedOnRunningWorker() {
OneTimeWorkRequest work =
new OneTimeWorkRequest.Builder(InterruptionAwareWorker.class).build();
insertWork(work);
@@ -722,8 +722,36 @@ public class WorkerWrapperTest extends DatabaseTest {
.withWorker(worker)
.build();
Executors.newSingleThreadExecutor().submit(workerWrapper);
- workerWrapper.interrupt();
+ workerWrapper.interrupt(false);
assertThat(worker.isStopped(), is(true));
+ assertThat(worker.isCancelled(), is(false));
+ }
+
+ @Test
+ @SmallTest
+ public void testInterruptionWithCancellation_isMarkedOnRunningWorker() {
+ OneTimeWorkRequest work =
+ new OneTimeWorkRequest.Builder(InterruptionAwareWorker.class).build();
+ insertWork(work);
+
+ Worker worker = WorkerWrapper.workerFromClassName(
+ mContext,
+ InterruptionAwareWorker.class.getName(),
+ work.getId(),
+ new Extras(Data.EMPTY, Collections.<String>emptyList(), null));
+ assertThat(worker, is(notNullValue()));
+ assertThat(worker.isStopped(), is(false));
+
+ WorkerWrapper workerWrapper =
+ new WorkerWrapper.Builder(mContext, mDatabase, work.getStringId())
+ .withSchedulers(Collections.singletonList(mMockScheduler))
+ .withListener(mMockListener)
+ .withWorker(worker)
+ .build();
+ Executors.newSingleThreadExecutor().submit(workerWrapper);
+ workerWrapper.interrupt(true);
+ assertThat(worker.isStopped(), is(true));
+ assertThat(worker.isCancelled(), is(true));
}
@Test