### Question:
Wait extends AbstractProcessor { public Wait() { final Set<Relationship> rels = new HashSet<>(); rels.add(REL_SUCCESS); rels.add(REL_WAIT); rels.add(REL_EXPIRED); rels.add(REL_FAILURE); relationships = Collections.unmodifiableSet(rels); } Wait(); @Override Set<Relationship> getRelationships(); @Override void onTrigger(final ProcessContext context, final ProcessSession session); static final String WAIT_START_TIMESTAMP; static final PropertyDescriptor DISTRIBUTED_CACHE_SERVICE; static final PropertyDescriptor RELEASE_SIGNAL_IDENTIFIER; static final PropertyDescriptor TARGET_SIGNAL_COUNT; static final PropertyDescriptor SIGNAL_COUNTER_NAME; static final PropertyDescriptor WAIT_BUFFER_COUNT; static final PropertyDescriptor RELEASABLE_FLOWFILE_COUNT; static final PropertyDescriptor EXPIRATION_DURATION; static final AllowableValue ATTRIBUTE_COPY_REPLACE; static final AllowableValue ATTRIBUTE_COPY_KEEP_ORIGINAL; static final PropertyDescriptor ATTRIBUTE_COPY_MODE; static final AllowableValue WAIT_MODE_TRANSFER_TO_WAIT; static final AllowableValue WAIT_MODE_KEEP_IN_UPSTREAM; static final PropertyDescriptor WAIT_MODE; static final Relationship REL_SUCCESS; static final Relationship REL_FAILURE; static final Relationship REL_WAIT; static final Relationship REL_EXPIRED; }### Answer:
@Test public void testWait() throws InitializationException { runner.setProperty(Wait.RELEASE_SIGNAL_IDENTIFIER, "${releaseSignalAttribute}"); final Map<String, String> props = new HashMap<>(); props.put("releaseSignalAttribute", "1"); runner.enqueue(new byte[]{}, props); runner.run(); runner.assertAllFlowFilesTransferred(Wait.REL_WAIT, 1); runner.clearTransferState(); }