Skip to content

Commit

Permalink
fix(pubsub): Add payload to pubsub triggers. (#221)
Browse files Browse the repository at this point in the history
  • Loading branch information
jtk54 authored Jan 17, 2018
1 parent dfe3a4e commit d2ca66b
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
@JsonDeserialize(builder = Trigger.TriggerBuilder.class)
@Builder(toBuilder = true)
@Wither
@ToString(of = {"type", "master", "job", "cronExpression", "source", "project", "slug", "account", "repository", "tag", "parameters", "payloadConstraints", "attributeConstraints", "branch", "runAsUser", "subscriptionName", "pubsubSystem", "expectedArtifactIds"}, includeFieldNames = false)
@ToString(of = {"type", "master", "job", "cronExpression", "source", "project", "slug", "account", "repository", "tag", "parameters", "payloadConstraints", "attributeConstraints", "branch", "runAsUser", "subscriptionName", "pubsubSystem", "expectedArtifactIds", "payload"}, includeFieldNames = false)
@Value
public class Trigger {
public enum Type {
Expand Down Expand Up @@ -71,6 +71,7 @@ public String toString() {
String tag;
String digest;
Map payloadConstraints;
Map payload;
Map attributeConstraints;
String branch;
String runAsUser;
Expand All @@ -90,10 +91,6 @@ public Trigger atBuildNumber(final int buildNumber) {
.buildNumber(buildNumber)
.hash(null)
.tag(null)
.payloadConstraints(null)
.attributeConstraints(null)
.subscriptionName(null)
.pubsubSystem(null)
.build();
}

Expand All @@ -102,22 +99,14 @@ public Trigger atHash(final String hash) {
.buildNumber(null)
.hash(hash)
.tag(null)
.payloadConstraints(null)
.attributeConstraints(null)
.subscriptionName(null)
.pubsubSystem(null)
.build();
}

public Trigger atBranch(final String branch) {
return this.toBuilder()
.buildNumber(null)
.tag(null)
.payloadConstraints(null)
.attributeConstraints(null)
.branch(branch)
.subscriptionName(null)
.pubsubSystem(null)
.build();
}

Expand All @@ -126,23 +115,18 @@ public Trigger atTag(final String tag) {
.buildNumber(null)
.hash(null)
.tag(tag)
.payloadConstraints(null)
.attributeConstraints(null)
.subscriptionName(null)
.pubsubSystem(null)
.build();
}

public Trigger atPayloadConstraints(final Map parameters, final Map payloadConstraints) {
public Trigger atPayload(final Map payload) {
return this.toBuilder()
.payload(payload)
.build();
}

public Trigger atParameters(final Map parameters) {
return this.toBuilder()
.buildNumber(null)
.hash(null)
.digest(null)
.parameters(parameters)
.payloadConstraints(payloadConstraints)
.attributeConstraints(null)
.subscriptionName(null)
.pubsubSystem(null)
.build();
}

Expand All @@ -152,8 +136,6 @@ public Trigger atSecret(final String secret) {
.hash(null)
.digest(null)
.secret(secret)
.subscriptionName(null)
.pubsubSystem(null)
.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
import rx.Observable;
import rx.functions.Action1;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
import java.util.function.Predicate;

Expand Down Expand Up @@ -84,10 +86,15 @@ protected boolean isSuccessfulTriggerEvent(final TriggerEvent event) {
@Override
protected Function<Trigger, Pipeline> buildTrigger(Pipeline pipeline, TriggerEvent event) {
PubsubEvent pubsubEvent = (PubsubEvent) event;
Map payload = pubsubEvent.getPayload();
Map parameters = payload.containsKey("parameters") ? (Map) payload.get("parameters") : new HashMap();
MessageDescription description = pubsubEvent.getContent().getMessageDescription();
return trigger -> pipeline
.withReceivedArtifacts(description.getArtifacts())
.withTrigger(trigger.atMessageDescription(description.getSubscriptionName(), description.getPubsubSystem().toString()));
.withTrigger(trigger
.atMessageDescription(description.getSubscriptionName(), description.getPubsubSystem().toString())
.atParameters(parameters)
.atPayload(payload));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ protected boolean isSuccessfulTriggerEvent(final TriggerEvent event) {
protected Function<Trigger, Pipeline> buildTrigger(Pipeline pipeline, TriggerEvent event) {
Map payload = event.getPayload();
Map parameters = payload.containsKey("parameters") ? (Map) payload.get("parameters") : new HashMap();
return trigger -> pipeline.withTrigger(trigger.atPayloadConstraints(parameters, payload));
return trigger -> pipeline.withTrigger(trigger.atParameters(parameters).atPayload(payload));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,12 +98,12 @@ class PubsubEventMonitorSpec extends Specification implements RetrofitStubs {
})

where:
event | trigger
createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", null) | enabledGooglePubsubTrigger
createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", []) | enabledGooglePubsubTrigger
createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", goodArtifacts) | enabledGooglePubsubTrigger.withExpectedArtifactIds(goodExpectedArtifacts*.id)
createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", goodArtifacts) | enabledGooglePubsubTrigger.withExpectedArtifactIds(goodRegexExpectedArtifacts*.id)
createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", goodArtifacts) | enabledGooglePubsubTrigger // Trigger doesn't care about artifacts.
event | trigger
createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", null, [:]) | enabledGooglePubsubTrigger
createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", [], [:]) | enabledGooglePubsubTrigger
createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", goodArtifacts, [:]) | enabledGooglePubsubTrigger.withExpectedArtifactIds(goodExpectedArtifacts*.id)
createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", goodArtifacts, [:]) | enabledGooglePubsubTrigger.withExpectedArtifactIds(goodRegexExpectedArtifacts*.id)
createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", goodArtifacts, [:]) | enabledGooglePubsubTrigger // Trigger doesn't care about artifacts.
// TODO(jacobkiefer): Add Kafka cases when that is implemented.
}

Expand All @@ -123,7 +123,7 @@ class PubsubEventMonitorSpec extends Specification implements RetrofitStubs {
disabledGooglePubsubTrigger | "disabled Google pubsub trigger"

pipeline = createPipelineWith(goodExpectedArtifacts, trigger)
event = createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", [])
event = createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", [], [:])
// TODO(jacobkiefer): Add Kafka cases when that is implemented.
}

Expand All @@ -142,7 +142,7 @@ class PubsubEventMonitorSpec extends Specification implements RetrofitStubs {
})

where:
event = createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", [])
event = createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", [], [:])
pipeline = createPipelineWith(goodExpectedArtifacts, enabledGooglePubsubTrigger, disabledGooglePubsubTrigger)
}

Expand All @@ -164,7 +164,7 @@ class PubsubEventMonitorSpec extends Specification implements RetrofitStubs {
enabledGooglePubsubTrigger.withPubsubSystem("noogle") | "different subscription name"

pipeline = createPipelineWith(goodExpectedArtifacts, trigger)
event = createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", [])
event = createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", [], [:])
}

@Unroll
Expand All @@ -183,7 +183,7 @@ class PubsubEventMonitorSpec extends Specification implements RetrofitStubs {
enabledGooglePubsubTrigger.withExpectedArtifactIds(badExpectedArtifacts*.id) | "non-matching artifact in message"

pipeline = createPipelineWith(goodExpectedArtifacts, trigger)
event = createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", goodArtifacts)
event = createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", goodArtifacts, [:])
}

@Unroll
Expand All @@ -202,7 +202,7 @@ class PubsubEventMonitorSpec extends Specification implements RetrofitStubs {
enabledGooglePubsubTrigger.withSubscriptionName(null) | "subscriptionName"
enabledGooglePubsubTrigger.withPubsubSystem(null) | "pubsubSystem"

event = createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", [])
event = createPubsubEvent(PubsubSystem.GOOGLE, "projects/project/subscriptions/subscription", [], [:])
goodPipeline = createPipelineWith(goodExpectedArtifacts, enabledGooglePubsubTrigger)
badPipeline = createPipelineWith(goodExpectedArtifacts, trigger)
}
Expand Down Expand Up @@ -237,8 +237,8 @@ class PubsubEventMonitorSpec extends Specification implements RetrofitStubs {
})

where:
trigger | callCount
enabledGooglePubsubTrigger | 1
trigger | callCount
enabledGooglePubsubTrigger | 1
enabledGooglePubsubTrigger.withPayloadConstraints([key: 'value']) | 1
enabledGooglePubsubTrigger.withPayloadConstraints([key: 'wrongValue']) | 0
}
Expand Down Expand Up @@ -274,8 +274,8 @@ class PubsubEventMonitorSpec extends Specification implements RetrofitStubs {
})

where:
trigger | callCount
enabledGooglePubsubTrigger | 1
trigger | callCount
enabledGooglePubsubTrigger | 1
enabledGooglePubsubTrigger.withAttributeConstraints([key: 'value']) | 1
enabledGooglePubsubTrigger.withAttributeConstraints([key: 'wrongValue']) | 0
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ trait RetrofitStubs {
return res
}

PubsubEvent createPubsubEvent(PubsubSystem pubsubSystem, String subscriptionName, List<Artifact> artifacts) {
PubsubEvent createPubsubEvent(PubsubSystem pubsubSystem, String subscriptionName, List<Artifact> artifacts, Map payload) {
def res = new PubsubEvent()

def description = MessageDescription.builder()
Expand All @@ -102,6 +102,7 @@ trait RetrofitStubs {

res.details = new Metadata([type: PubsubEventMonitor.PUBSUB_TRIGGER_TYPE])
res.content = content
res.payload = payload
return res
}

Expand Down

0 comments on commit d2ca66b

Please sign in to comment.