@Override public boolean apply(AtomicReference<Operation> input) { checkNotNull(input.get(), "operation"); Operation current = resources.operation(input.get().selfLink()); input.set(current); checkState(current.error().errors().isEmpty(), "Task ended in error %s", current); // ISE will break the loop. switch (current.status()) { case DONE: return true; case PENDING: case RUNNING: default: return false; } } }
@Override public boolean apply(AtomicReference<Operation> input) { checkNotNull(input.get(), "operation"); Operation current = resources.operation(input.get().selfLink()); input.set(current); checkState(current.error().errors().isEmpty(), "Task ended in error %s", current); // ISE will break the loop. switch (current.status()) { case DONE: return true; case PENDING: case RUNNING: default: return false; } } }
@Override public boolean apply(AtomicReference<Operation> input) { checkNotNull(input.get(), "operation"); Operation current = resources.operation(input.get().selfLink()); input.set(current); checkState(current.error().errors().isEmpty(), "Task ended in error %s", current); // ISE will break the loop. switch (current.status()) { case DONE: return true; case PENDING: case RUNNING: default: return false; } } }
@Override public boolean apply(AtomicReference<Operation> input) { checkNotNull(input.get(), "operation"); Operation current = resources.operation(input.get().selfLink()); input.set(current); checkState(current.error().errors().isEmpty(), "Task ended in error %s", current); // ISE will break the loop. switch (current.status()) { case DONE: return true; case PENDING: case RUNNING: default: return false; } } }
protected void assertOperationDoneSuccessfully(Operation operation) { AtomicReference<Operation> ref = Atomics.newReference(checkNotNull(operation, "operation")); checkState(operationDone.apply(ref), "Timeout waiting for operation: %s", operation); assertEquals(ref.get().status(), Operation.Status.DONE); assertTrue(ref.get().error().errors().isEmpty()); }
@Override public boolean apply(AtomicReference<Operation> input) { input.set(api.operations().get(input.get().selfLink())); return Status.DONE == input.get().status(); } }, operationDoneTimeout, operationDoneInterval, MILLISECONDS).apply(o);
@Test(groups = "live", dependsOnMethods = "getProject") public void testSetUsageExportBucket() { AtomicReference<Operation> o = new AtomicReference<Operation>(api.project().setUsageExportBucket( "unexisting-bucket", "test-")); retry(new Predicate<AtomicReference<Operation>>() { @Override public boolean apply(AtomicReference<Operation> input) { input.set(api.operations().get(input.get().selfLink())); return Status.DONE == input.get().status(); } }, operationDoneTimeout, operationDoneInterval, MILLISECONDS).apply(o); assertEquals(o.get().status(), Status.DONE); assertEquals(o.get().error().errors().get(0).code(), "EXTERNAL_RESOURCE_NOT_FOUND"); } }