Class TestPubsubSignal
- java.lang.Object
-
- org.apache.beam.sdk.io.gcp.pubsub.TestPubsubSignal
-
- All Implemented Interfaces:
org.junit.rules.TestRule
public class TestPubsubSignal extends java.lang.Object implements org.junit.rules.TestRuleTest rule which observes elements of thePCollectionand checks whether they match the success criteria.Uses a random temporary Pubsub topic for synchronization.
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description org.junit.runners.model.Statementapply(org.junit.runners.model.Statement base, org.junit.runner.Description description)static TestPubsubSignalcreate()Creates an instance of this rule.org.apache.beam.sdk.transforms.PTransform<org.apache.beam.sdk.values.PBegin,org.apache.beam.sdk.values.PDone>signalStart()Outputs a message that the pipeline has started.<T> org.apache.beam.sdk.transforms.PTransform<org.apache.beam.sdk.values.PCollection<? extends T>,org.apache.beam.sdk.values.POutput>signalSuccessWhen(org.apache.beam.sdk.coders.Coder<T> coder, org.apache.beam.sdk.transforms.SerializableFunction<java.util.Set<T>,java.lang.Boolean> successPredicate)Invocation ofsignalSuccessWhen(Coder, SerializableFunction, SerializableFunction)withObject.toString()as the formatter.<T> org.apache.beam.sdk.transforms.PTransform<org.apache.beam.sdk.values.PCollection<? extends T>,org.apache.beam.sdk.values.POutput>signalSuccessWhen(org.apache.beam.sdk.coders.Coder<T> coder, org.apache.beam.sdk.transforms.SerializableFunction<T,java.lang.String> formatter, org.apache.beam.sdk.transforms.SerializableFunction<java.util.Set<T>,java.lang.Boolean> successPredicate)Outputs a success message whensuccessPredicateis evaluated to true.org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.Supplier<java.lang.Void>waitForStart(org.joda.time.Duration duration)Future that waits for a start signal forduration.voidwaitForSuccess(org.joda.time.Duration duration)Wait for a success signal forduration.
-
-
-
Method Detail
-
create
public static TestPubsubSignal create()
Creates an instance of this rule.Loads GCP configuration from
TestPipelineOptions.
-
apply
public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description)- Specified by:
applyin interfaceorg.junit.rules.TestRule
-
signalStart
public org.apache.beam.sdk.transforms.PTransform<org.apache.beam.sdk.values.PBegin,org.apache.beam.sdk.values.PDone> signalStart()
Outputs a message that the pipeline has started.
-
signalSuccessWhen
public <T> org.apache.beam.sdk.transforms.PTransform<org.apache.beam.sdk.values.PCollection<? extends T>,org.apache.beam.sdk.values.POutput> signalSuccessWhen(org.apache.beam.sdk.coders.Coder<T> coder, org.apache.beam.sdk.transforms.SerializableFunction<T,java.lang.String> formatter, org.apache.beam.sdk.transforms.SerializableFunction<java.util.Set<T>,java.lang.Boolean> successPredicate)Outputs a success message whensuccessPredicateis evaluated to true.successPredicateis aSerializableFunctionthat accepts a set of currently captured events and returns true when the set satisfies the success criteria.If
successPredicateis evaluated to false, then it will be re-evaluated when next event becomes available.If
successPredicateis evaluated to true, then a success will be signaled andwaitForSuccess(Duration)will unblock.If
successPredicatethrows, then failure will be signaled andwaitForSuccess(Duration)will unblock.
-
signalSuccessWhen
public <T> org.apache.beam.sdk.transforms.PTransform<org.apache.beam.sdk.values.PCollection<? extends T>,org.apache.beam.sdk.values.POutput> signalSuccessWhen(org.apache.beam.sdk.coders.Coder<T> coder, org.apache.beam.sdk.transforms.SerializableFunction<java.util.Set<T>,java.lang.Boolean> successPredicate)Invocation ofsignalSuccessWhen(Coder, SerializableFunction, SerializableFunction)withObject.toString()as the formatter.
-
waitForStart
public org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.Supplier<java.lang.Void> waitForStart(org.joda.time.Duration duration)
Future that waits for a start signal forduration.This future must be created before running the pipeline. A subscription must exist prior to the start signal being published, which occurs immediately upon pipeline startup.
-
waitForSuccess
public void waitForSuccess(org.joda.time.Duration duration) throws java.io.IOExceptionWait for a success signal forduration.- Throws:
java.io.IOException
-
-