Repository: knative-sandbox/eventing-kafka
Pull request #754 (2021-07-07 02:12:00)

[main] Upgrade to latest dependencies
Cron -knative-prow-robot

/cc knative-sandbox/channel-wg-leads
/assign knative-sandbox/channel-wg-leads

Produced by: knative-sandbox/knobots/actions/update-deps

Details:
```
bumping knative.dev/eventing a574b7b...9ced574:
  > 9ced574 Update actions (# 5557)
  > 9bc39bd Add DeadLetterURI to trigger status (# 5551)
  > cc883dc Make apiserversource test watch for update events (# 5568)
  > 90932eb upgrade to latest dependencies (# 5556)
bumping knative.dev/pkg 30f9568...fe90576:
  > fe90576 Retry 'no route to host' errors by default (# 2181)
bumping knative.dev/reconciler-test 2a6d91d...5879dd7:
  > 5879dd7 More flexible eventshub main (# 225)
bumping knative.dev/networking b983b72...2a685f4:
  > 2a685f4 upgrade to latest dependencies (# 458)
  > ca0a601 Remove deprecated label (# 457)
  > c8ff46f add annotation for setting http option (# 440)
```

knative-prow-robot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by: *<a href="https://github.com/knative-sandbox/eventing-kafka/pull/754#" title="Author self-approved">knative-automation</a>*
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please assign **devguyio** after the PR has been reviewed.
You can assign the PR to them by writing `/assign @devguyio` in a comment when ready.

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=knative-sandbox%2Feventing-kafka).

<details open>
Needs approval from an approver in each of these files:

- **[OWNERS](https://github.com/knative-sandbox/eventing-kafka/blob/main/OWNERS)**

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":["devguyio"]} -->
codecov[bot]: # [Codecov](https://codecov.io/gh/knative-sandbox/eventing-kafka/pull/754?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox) Report
> Merging [#754](https://codecov.io/gh/knative-sandbox/eventing-kafka/pull/754?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox) (bed0dc0) into [main](https://codecov.io/gh/knative-sandbox/eventing-kafka/commit/b1a4350a16905b045371a6128b9bbb6dc609ccf4?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox) (b1a4350) will **not change** coverage.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/knative-sandbox/eventing-kafka/pull/754/graphs/tree.svg?width=650&height=150&src=pr&token=W765CT93QC&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox)](https://codecov.io/gh/knative-sandbox/eventing-kafka/pull/754?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox)

```diff
@@           Coverage Diff           @@
##             main     #754   +/-   ##
=======================================
  Coverage   75.39%   75.39%           
=======================================
  Files         141      141           
  Lines        6357     6357           
=======================================
  Hits         4793     4793           
  Misses       1344     1344           
  Partials      220      220           
```



------

[Continue to review full report at Codecov](https://codecov.io/gh/knative-sandbox/eventing-kafka/pull/754?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/knative-sandbox/eventing-kafka/pull/754?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox). Last update [b1a4350...bed0dc0](https://codecov.io/gh/knative-sandbox/eventing-kafka/pull/754?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox).

knative-prow-robot: @knative-automation: The following test **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-sandbox-eventing-kafka-unit-tests | 855304ca38ad8acd683aaf70c1e3c363490d3990 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative-sandbox_eventing-kafka/754/pull-knative-sandbox-eventing-kafka-unit-tests/1412802475550838784) | `/test pull-knative-sandbox-eventing-kafka-unit-tests`

[Full PR test history](https://gubernator.knative.dev/pr/knative-sandbox_eventing-kafka/754). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
travis-minke-sap: /approve
/test pull-knative-sandbox-eventing-kafka-unit-tests
knative-prow-robot: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/knative-sandbox/eventing-kafka/pull/754#" title="Author self-approved">knative-automation</a>*, *<a href="https://github.com/knative-sandbox/eventing-kafka/pull/754#issuecomment-875881054" title="Approved">travis-minke-sap</a>*

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=knative-sandbox%2Feventing-kafka).

The pull request process is described [here](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process)

<details >
Needs approval from an approver in each of these files:

- ~~[OWNERS](https://github.com/knative-sandbox/eventing-kafka/blob/main/OWNERS)~~ [travis-minke-sap]

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":[]} -->
travis-minke-sap: /lgtm

Patch:
diff --git a/go.mod b/go.mod
index 7808ec340..dd5eeee4c 100644
--- a/go.mod
+++ b/go.mod
@@ -35,9 +35,9 @@ require (
 	k8s.io/client-go v0.20.7
 	k8s.io/utils v0.0.0-20201110183641-67b214c5f920
 	knative.dev/control-protocol v0.0.0-20210701061703-8ddeca27693a
-	knative.dev/eventing v0.24.0
+	knative.dev/eventing v0.24.1-0.20210706174220-9ced57400dce
 	knative.dev/hack v0.0.0-20210622141627-e28525d8d260
-	knative.dev/networking v0.0.0-20210701025203-b983b728ca42
-	knative.dev/pkg v0.0.0-20210701025203-30f9568e894e
-	knative.dev/reconciler-test v0.0.0-20210630182710-2a6d91dfee1e
+	knative.dev/networking v0.0.0-20210707064918-2a685f4fdd5a
+	knative.dev/pkg v0.0.0-20210706174620-fe90576475ca
+	knative.dev/reconciler-test v0.0.0-20210707095218-5879dd7b78c8
 )
diff --git a/go.sum b/go.sum
index 7ad6a29f6..ba249d137 100644
--- a/go.sum
+++ b/go.sum
@@ -1269,20 +1269,21 @@ k8s.io/utils v0.0.0-20201110183641-67b214c5f920 h1:CbnUZsM497iRC5QMVkHwyl8s2tB3g
 k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
 knative.dev/control-protocol v0.0.0-20210701061703-8ddeca27693a h1:Cf7/DiRxxdgyIeb2Qqlklna8dCqYzTKEc7Mukh06PXE=
 knative.dev/control-protocol v0.0.0-20210701061703-8ddeca27693a/go.mod h1:dtbmpIxgzRH178SPIMD2iV9w9ezTOYJSEEElv+rhZ6g=
-knative.dev/eventing v0.24.0 h1:CoaQwZBizxZyOFJUvFcyb7vYSvpYBmfb4IYRNWUdTPE=
-knative.dev/eventing v0.24.0/go.mod h1:9xo0SWkIfpXrx0lvGQO7MUlPF8cu+QCMd2gGxj6wxrU=
+knative.dev/eventing v0.24.1-0.20210706174220-9ced57400dce h1:ookNNc49x4KxIoBuYPlZ3UbB5KLfq/JoqP/tx5edRB0=
+knative.dev/eventing v0.24.1-0.20210706174220-9ced57400dce/go.mod h1:93VHah2XghrfrDFr4jSN4KdZS7RtoZuv4qR2Jn2B6x8=
 knative.dev/hack v0.0.0-20210622141627-e28525d8d260 h1:f2eMtOubAOc/Q7JlvFPDKXiPlJVK+VpX2Cot8hRzCgQ=
 knative.dev/hack v0.0.0-20210622141627-e28525d8d260/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
 knative.dev/hack/schema v0.0.0-20210622141627-e28525d8d260/go.mod h1:ffjwmdcrH5vN3mPhO8RrF2KfNnbHeCE2C60A+2cv3U0=
-knative.dev/networking v0.0.0-20210701025203-b983b728ca42 h1:cb6SREaPADE9wciaTcCPAJhCFqTw2f11NSLmeXIwoT0=
-knative.dev/networking v0.0.0-20210701025203-b983b728ca42/go.mod h1:lT2n243XZb7K59q4FLtCuAeuboOjoJeLYvTxxfO5rIY=
+knative.dev/networking v0.0.0-20210707064918-2a685f4fdd5a h1:AHYs6Yg6LrW8AaAbaSmfdXYX1so3lsE7bXTGo/K/RSk=
+knative.dev/networking v0.0.0-20210707064918-2a685f4fdd5a/go.mod h1:ljfndmG90nC/0NpzCMsrvru2uf1IUx4HFPLgRgqzMys=
 knative.dev/pkg v0.0.0-20210622173328-dd0db4b05c80/go.mod h1:kGegTnbZ+ljFjAE3E1+8wgaH2LMv8qYi+72o3F3cbdc=
 knative.dev/pkg v0.0.0-20210628225612-51cfaabbcdf6/go.mod h1:kGegTnbZ+ljFjAE3E1+8wgaH2LMv8qYi+72o3F3cbdc=
-knative.dev/pkg v0.0.0-20210701025203-30f9568e894e h1:2TofgD72tjBuWN3a4Rg3uzrMu1OWOlh2KY2m0fsjwqQ=
 knative.dev/pkg v0.0.0-20210701025203-30f9568e894e/go.mod h1:kGegTnbZ+ljFjAE3E1+8wgaH2LMv8qYi+72o3F3cbdc=
-knative.dev/reconciler-test v0.0.0-20210623134345-88c84739abd9/go.mod h1:4wqv2WyWUC5yhTesRUVwgjv/fHTHny1RYBfdB6tVDok=
-knative.dev/reconciler-test v0.0.0-20210630182710-2a6d91dfee1e h1:OlvD5NiM8rl3j56NIQfmwSazBffwofQE+XDAt88+BV4=
+knative.dev/pkg v0.0.0-20210706174620-fe90576475ca h1:WF0VUpn7S8RvhQ1Q419NAlI+iFJUBTDmVR7lbMzhGMk=
+knative.dev/pkg v0.0.0-20210706174620-fe90576475ca/go.mod h1:kGegTnbZ+ljFjAE3E1+8wgaH2LMv8qYi+72o3F3cbdc=
 knative.dev/reconciler-test v0.0.0-20210630182710-2a6d91dfee1e/go.mod h1:4wqv2WyWUC5yhTesRUVwgjv/fHTHny1RYBfdB6tVDok=
+knative.dev/reconciler-test v0.0.0-20210707095218-5879dd7b78c8 h1:fL/JzFNidKb9EWWrY8yfY0KVm2CGpLdL2SfrLife7Po=
+knative.dev/reconciler-test v0.0.0-20210707095218-5879dd7b78c8/go.mod h1:4wqv2WyWUC5yhTesRUVwgjv/fHTHny1RYBfdB6tVDok=
 pgregory.net/rapid v0.3.3 h1:jCjBsY4ln4Atz78QoBWxUEvAHaFyNDQg9+WU62aCn1U=
 pgregory.net/rapid v0.3.3/go.mod h1:UYpPVyjFHzYBGHIxLFoupi8vwk6rXNzRY9OMvVxFIOU=
 rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
diff --git a/vendor/knative.dev/eventing/pkg/apis/eventing/v1/trigger_lifecycle.go b/vendor/knative.dev/eventing/pkg/apis/eventing/v1/trigger_lifecycle.go
index 5dceb767a..c2ebce95c 100644
--- a/vendor/knative.dev/eventing/pkg/apis/eventing/v1/trigger_lifecycle.go
+++ b/vendor/knative.dev/eventing/pkg/apis/eventing/v1/trigger_lifecycle.go
@@ -23,7 +23,7 @@ import (
 	duckv1 "knative.dev/pkg/apis/duck/v1"
 )
 
-var triggerCondSet = apis.NewLivingConditionSet(TriggerConditionBroker, TriggerConditionSubscribed, TriggerConditionDependency, TriggerConditionSubscriberResolved)
+var triggerCondSet = apis.NewLivingConditionSet(TriggerConditionBroker, TriggerConditionSubscribed, TriggerConditionDependency, TriggerConditionSubscriberResolved, TriggerConditionDeadLetterSinkResolved)
 
 const (
 	// TriggerConditionReady has status True when all subconditions below have been set to True.
@@ -37,6 +37,8 @@ const (
 
 	TriggerConditionSubscriberResolved apis.ConditionType = "SubscriberResolved"
 
+	TriggerConditionDeadLetterSinkResolved apis.ConditionType = "DeadLetterSinkResolved"
+
 	// TriggerAnyFilter Constant to represent that we should allow anything.
 	TriggerAnyFilter = ""
 )
@@ -150,6 +152,18 @@ func (ts *TriggerStatus) MarkSubscriberResolvedUnknown(reason, messageFormat str
 	triggerCondSet.Manage(ts).MarkUnknown(TriggerConditionSubscriberResolved, reason, messageFormat, messageA...)
 }
 
+func (ts *TriggerStatus) MarkDeadLetterSinkResolvedSucceeded() {
+	triggerCondSet.Manage(ts).MarkTrue(TriggerConditionDeadLetterSinkResolved)
+}
+
+func (ts *TriggerStatus) MarkDeadLetterSinkNotConfigured() {
+	triggerCondSet.Manage(ts).MarkTrueWithReason(TriggerConditionDeadLetterSinkResolved, "DeadLetterSinkNotConfigured", "No dead letter sink is configured.")
+}
+
+func (ts *TriggerStatus) MarkDeadLetterSinkResolvedFailed(reason, messageFormat string, messageA ...interface{}) {
+	triggerCondSet.Manage(ts).MarkFalse(TriggerConditionDeadLetterSinkResolved, reason, messageFormat, messageA...)
+}
+
 func (ts *TriggerStatus) MarkDependencySucceeded() {
 	triggerCondSet.Manage(ts).MarkTrue(TriggerConditionDependency)
 }
diff --git a/vendor/knative.dev/eventing/pkg/apis/eventing/v1/trigger_types.go b/vendor/knative.dev/eventing/pkg/apis/eventing/v1/trigger_types.go
index f40e80292..97ffc8759 100644
--- a/vendor/knative.dev/eventing/pkg/apis/eventing/v1/trigger_types.go
+++ b/vendor/knative.dev/eventing/pkg/apis/eventing/v1/trigger_types.go
@@ -119,6 +119,10 @@ type TriggerStatus struct {
 	// SubscriberURI is the resolved URI of the receiver for this Trigger.
 	// +optional
 	SubscriberURI *apis.URL `json:"subscriberUri,omitempty"`
+
+	// DeadLetterURI is the resolved URI of the dead letter sink for this Trigger.
+	// +optional
+	DeadLetterURI *apis.URL `json:"deadLetterUri,omitempty"`
 }
 
 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
diff --git a/vendor/knative.dev/eventing/pkg/apis/eventing/v1/zz_generated.deepcopy.go b/vendor/knative.dev/eventing/pkg/apis/eventing/v1/zz_generated.deepcopy.go
index c1f4be248..7be79a4ee 100644
--- a/vendor/knative.dev/eventing/pkg/apis/eventing/v1/zz_generated.deepcopy.go
+++ b/vendor/knative.dev/eventing/pkg/apis/eventing/v1/zz_generated.deepcopy.go
@@ -274,6 +274,11 @@ func (in *TriggerStatus) DeepCopyInto(out *TriggerStatus) {
 		*out = new(apis.URL)
 		(*in).DeepCopyInto(*out)
 	}
+	if in.DeadLetterURI != nil {
+		in, out := &in.DeadLetterURI, &out.DeadLetterURI
+		*out = new(apis.URL)
+		(*in).DeepCopyInto(*out)
+	}
 	return
 }
 
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 1fee3e342..92d5b8784 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -1118,7 +1118,7 @@ knative.dev/control-protocol/pkg/message
 knative.dev/control-protocol/pkg/network
 knative.dev/control-protocol/pkg/reconciler
 knative.dev/control-protocol/pkg/service
-# knative.dev/eventing v0.24.0
+# knative.dev/eventing v0.24.1-0.20210706174220-9ced57400dce
 ## explicit
 knative.dev/eventing/pkg/adapter/v2
 knative.dev/eventing/pkg/adapter/v2/test
@@ -1241,10 +1241,10 @@ knative.dev/eventing/test/upgrade/prober/wathola/sender
 ## explicit
 knative.dev/hack
 knative.dev/hack/shell
-# knative.dev/networking v0.0.0-20210701025203-b983b728ca42
+# knative.dev/networking v0.0.0-20210707064918-2a685f4fdd5a
 ## explicit
 knative.dev/networking/pkg/prober
-# knative.dev/pkg v0.0.0-20210701025203-30f9568e894e
+# knative.dev/pkg v0.0.0-20210706174620-fe90576475ca
 ## explicit
 knative.dev/pkg/apiextensions/storageversion
 knative.dev/pkg/apiextensions/storageversion/cmd/migrate
@@ -1351,7 +1351,7 @@ knative.dev/pkg/webhook/resourcesemantics
 knative.dev/pkg/webhook/resourcesemantics/conversion
 knative.dev/pkg/webhook/resourcesemantics/defaulting
 knative.dev/pkg/webhook/resourcesemantics/validation
-# knative.dev/reconciler-test v0.0.0-20210630182710-2a6d91dfee1e
+# knative.dev/reconciler-test v0.0.0-20210707095218-5879dd7b78c8
 ## explicit
 knative.dev/reconciler-test/cmd/eventshub
 knative.dev/reconciler-test/pkg/environment


Test patch:
diff --git a/vendor/knative.dev/eventing/pkg/reconciler/testing/v1/broker.go b/vendor/knative.dev/eventing/pkg/reconciler/testing/v1/broker.go
index 5412b3b0b..e417270ba 100644
--- a/vendor/knative.dev/eventing/pkg/reconciler/testing/v1/broker.go
+++ b/vendor/knative.dev/eventing/pkg/reconciler/testing/v1/broker.go
@@ -18,6 +18,7 @@ import (
 	"time"
 
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	eventingv1 "knative.dev/eventing/pkg/apis/duck/v1"
 	"knative.dev/eventing/pkg/apis/eventing"
 	v1 "knative.dev/eventing/pkg/apis/eventing/v1"
 	"knative.dev/eventing/pkg/client/injection/reconciler/eventing/v1/broker"
@@ -192,3 +193,19 @@ func WithChannelNameAnnotation(name string) BrokerOption {
 		b.Status.Annotations[eventing.BrokerChannelNameStatusAnnotationKey] = name
 	}
 }
+
+func WithDeadLeaderSink(ref *duckv1.KReference, uri string) BrokerOption {
+	return func(b *v1.Broker) {
+		if b.Spec.Delivery == nil {
+			b.Spec.Delivery = new(eventingv1.DeliverySpec)
+		}
+		var u *apis.URL
+		if uri != "" {
+			u, _ = apis.ParseURL(uri)
+		}
+		b.Spec.Delivery.DeadLetterSink = &duckv1.Destination{
+			Ref: ref,
+			URI: u,
+		}
+	}
+}
diff --git a/vendor/knative.dev/eventing/pkg/reconciler/testing/v1/trigger.go b/vendor/knative.dev/eventing/pkg/reconciler/testing/v1/trigger.go
index 73e5b8539..bd9ba6ad0 100644
--- a/vendor/knative.dev/eventing/pkg/reconciler/testing/v1/trigger.go
+++ b/vendor/knative.dev/eventing/pkg/reconciler/testing/v1/trigger.go
@@ -189,6 +189,13 @@ func WithTriggerStatusSubscriberURI(uri string) TriggerOption {
 	}
 }
 
+func WithTriggerStatusDeadLetterSinkURI(uri string) TriggerOption {
+	return func(t *v1.Trigger) {
+		u, _ := apis.ParseURL(uri)
+		t.Status.DeadLetterURI = u
+	}
+}
+
 func WithAnnotation(key, value string) TriggerOption {
 	return func(t *v1.Trigger) {
 		if t.Annotations == nil {
@@ -237,6 +244,24 @@ func WithTriggerSubscriberResolvedFailed(reason, message string) TriggerOption {
 	}
 }
 
+func WithTriggerDeadLetterSinkResolvedFailed(reason, message string) TriggerOption {
+	return func(t *v1.Trigger) {
+		t.Status.MarkDeadLetterSinkResolvedFailed(reason, message)
+	}
+}
+
+func WithTriggerDeadLetterSinkResolvedSucceeded() TriggerOption {
+	return func(t *v1.Trigger) {
+		t.Status.MarkDeadLetterSinkResolvedSucceeded()
+	}
+}
+
+func WithTriggerDeadLetterSinkNotConfigured() TriggerOption {
+	return func(t *v1.Trigger) {
+		t.Status.MarkDeadLetterSinkNotConfigured()
+	}
+}
+
 func WithTriggerSubscriberResolvedUnknown(reason, message string) TriggerOption {
 	return func(t *v1.Trigger) {
 		t.Status.MarkSubscriberResolvedUnknown(reason, message)
diff --git a/vendor/knative.dev/pkg/test/spoof/error_checks.go b/vendor/knative.dev/pkg/test/spoof/error_checks.go
index e152e11d7..378bf5824 100644
--- a/vendor/knative.dev/pkg/test/spoof/error_checks.go
+++ b/vendor/knative.dev/pkg/test/spoof/error_checks.go
@@ -58,3 +58,7 @@ func isConnectionRefused(err error) bool {
 func isConnectionReset(err error) bool {
 	return err != nil && strings.Contains(err.Error(), "connection reset by peer")
 }
+
+func isNoRouteToHostError(err error) bool {
+	return err != nil && strings.Contains(err.Error(), "connect: no route to host")
+}
diff --git a/vendor/knative.dev/pkg/test/spoof/spoof.go b/vendor/knative.dev/pkg/test/spoof/spoof.go
index 0513f7e0f..74e735623 100644
--- a/vendor/knative.dev/pkg/test/spoof/spoof.go
+++ b/vendor/knative.dev/pkg/test/spoof/spoof.go
@@ -223,6 +223,11 @@ func DefaultErrorRetryChecker(err error) (bool, error) {
 	if errors.Is(err, io.EOF) {
 		return true, fmt.Errorf("retrying for: %w", err)
 	}
+	// No route to host errors are in the same category as connection refused errors and
+	// are usually transient.
+	if isNoRouteToHostError(err) {
+		return true, fmt.Errorf("retrying for 'no route to host' error: %w", err)
+	}
 	return false, err
 }
 
diff --git a/vendor/knative.dev/reconciler-test/cmd/eventshub/main.go b/vendor/knative.dev/reconciler-test/cmd/eventshub/main.go
index af0606d67..566b2cd92 100644
--- a/vendor/knative.dev/reconciler-test/cmd/eventshub/main.go
+++ b/vendor/knative.dev/reconciler-test/cmd/eventshub/main.go
@@ -19,9 +19,6 @@ package main
 import (
 	"context"
 
-	"github.com/kelseyhightower/envconfig"
-	"golang.org/x/sync/errgroup"
-	"knative.dev/pkg/injection"
 	"knative.dev/pkg/logging"
 
 	"knative.dev/reconciler-test/pkg/eventshub"
@@ -31,66 +28,23 @@ import (
 	"knative.dev/reconciler-test/pkg/eventshub/sender"
 )
 
-type envConfig struct {
-	EventGenerators []string `envconfig:"EVENT_GENERATORS" required:"true"`
-	EventLogs       []string `envconfig:"EVENT_LOGS" required:"true"`
-}
-
 func main() {
-	//nolint // nil ctx is fine here, look at the code of EnableInjectionOrDie
-	ctx, _ := injection.EnableInjectionOrDie(nil, nil)
-	ctx = eventshub.ConfigureLogging(ctx, "eventshub")
-
-	if err := eventshub.ConfigureTracing(logging.FromContext(ctx), ""); err != nil {
-		logging.FromContext(ctx).Fatal("Unable to setup trace publishing", err)
-	}
-
-	var env envConfig
-	if err := envconfig.Process("", &env); err != nil {
-		logging.FromContext(ctx).Fatal("Failed to process env var", err)
-	}
-	logging.FromContext(ctx).Infof("Events Hub environment configuration: %+v", env)
-
-	eventLogs := createEventLogs(ctx, env.EventLogs)
-	err := startEventGenerators(ctx, env.EventGenerators, eventLogs)
-
-	if err != nil {
-		logging.FromContext(ctx).Fatal("Error during start: ", err)
-	}
-
-	logging.FromContext(ctx).Info("Closing the eventshub process")
-}
-
-func createEventLogs(ctx context.Context, logTypes []string) *eventshub.EventLogs {
-	var l []eventshub.EventLog
-	for _, logType := range logTypes {
-		switch eventshub.EventLogType(logType) {
-		case eventshub.RecorderEventLog:
-			l = append(l, recorder_vent.NewFromEnv(ctx))
-		case eventshub.LoggerEventLog:
-			l = append(l, logger_vent.Logger(logging.FromContext(ctx).Named("event logger").Infof))
-		default:
-			logging.FromContext(ctx).Fatal("Cannot recognize event log type: ", logType)
-		}
-	}
-	return eventshub.NewEventLogs(l...)
-}
-
-func startEventGenerators(ctx context.Context, genTypes []string, eventLogs *eventshub.EventLogs) error {
-	errs, _ := errgroup.WithContext(ctx)
-	for _, genType := range genTypes {
-		switch eventshub.EventGeneratorType(genType) {
-		case eventshub.ReceiverEventGenerator:
-			errs.Go(func() error {
-				return receiver.NewFromEnv(ctx, eventLogs).Start(ctx, eventshub.WithTracing)
-			})
-		case eventshub.SenderEventGenerator:
-			errs.Go(func() error {
-				return sender.Start(ctx, eventLogs)
-			})
-		default:
-			logging.FromContext(ctx).Fatal("Cannot recognize event generator type: ", genType)
-		}
-	}
-	return errs.Wait()
+	eventshub.Start(
+		map[string]eventshub.EventLogFactory{
+			eventshub.RecorderEventLog: func(ctx context.Context) (eventshub.EventLog, error) {
+				return recorder_vent.NewFromEnv(ctx), nil
+			},
+			eventshub.LoggerEventLog: func(ctx context.Context) (eventshub.EventLog, error) {
+				return logger_vent.Logger(logging.FromContext(ctx).Named("event logger").Infof), nil
+			},
+		},
+		map[string]eventshub.EventGeneratorStarter{
+			eventshub.ReceiverEventGenerator: func(ctx context.Context, logs *eventshub.EventLogs) error {
+				return receiver.NewFromEnv(ctx, logs).Start(ctx, eventshub.WithTracing)
+			},
+			eventshub.SenderEventGenerator: func(ctx context.Context, logs *eventshub.EventLogs) error {
+				return sender.Start(ctx, logs)
+			},
+		},
+	)
 }
diff --git a/vendor/knative.dev/reconciler-test/pkg/eventshub/103-pod.yaml b/vendor/knative.dev/reconciler-test/pkg/eventshub/103-pod.yaml
index fdf1bfe80..faf7d6e8b 100644
--- a/vendor/knative.dev/reconciler-test/pkg/eventshub/103-pod.yaml
+++ b/vendor/knative.dev/reconciler-test/pkg/eventshub/103-pod.yaml
@@ -24,7 +24,7 @@ spec:
   restartPolicy: "Never"
   containers:
     - name: eventshub
-      image: ko://knative.dev/reconciler-test/cmd/eventshub
+      image: {{ .image }}
       imagePullPolicy: "IfNotPresent"
       env:
         - name: "SYSTEM_NAMESPACE"
diff --git a/vendor/knative.dev/reconciler-test/pkg/eventshub/event_info.go b/vendor/knative.dev/reconciler-test/pkg/eventshub/event_info.go
index 8035d892a..e8f2ca054 100644
--- a/vendor/knative.dev/reconciler-test/pkg/eventshub/event_info.go
+++ b/vendor/knative.dev/reconciler-test/pkg/eventshub/event_info.go
@@ -64,6 +64,9 @@ type EventInfo struct {
 	// This is filled with the ID of the sent event (if any) and in the Response also
 	// jot it down so you can correlate which event (ID) as well as sequence to match sent/response 1:1.
 	SentId string `json:"id"`
+
+	// AdditionalInfo can be used by event generator implementations to add more event details
+	AdditionalInfo map[string]interface{} `json:"additionalInfo"`
 }
 
 // Pretty print the event. Meant for debugging.
diff --git a/vendor/knative.dev/reconciler-test/pkg/eventshub/event_log.go b/vendor/knative.dev/reconciler-test/pkg/eventshub/event_log.go
index b68139a32..dc17e88f5 100644
--- a/vendor/knative.dev/reconciler-test/pkg/eventshub/event_log.go
+++ b/vendor/knative.dev/reconciler-test/pkg/eventshub/event_log.go
@@ -44,16 +44,10 @@ func (e *EventLogs) Vent(observed EventInfo) error {
 	return nil
 }
 
-type EventGeneratorType string
-
 const (
-	ReceiverEventGenerator EventGeneratorType = "receiver"
-	SenderEventGenerator   EventGeneratorType = "sender"
-)
+	ReceiverEventGenerator string = "receiver"
+	SenderEventGenerator   string = "sender"
 
-type EventLogType string
-
-const (
-	RecorderEventLog EventLogType = "recorder"
-	LoggerEventLog   EventLogType = "logger"
+	RecorderEventLog string = "recorder"
+	LoggerEventLog   string = "logger"
 )
diff --git a/vendor/knative.dev/reconciler-test/pkg/eventshub/eventshub.go b/vendor/knative.dev/reconciler-test/pkg/eventshub/eventshub.go
new file mode 100644
index 000000000..acf491118
--- /dev/null
+++ b/vendor/knative.dev/reconciler-test/pkg/eventshub/eventshub.go
@@ -0,0 +1,97 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	https://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package eventshub
+
+import (
+	"context"
+
+	"github.com/kelseyhightower/envconfig"
+	"golang.org/x/sync/errgroup"
+	"knative.dev/pkg/injection"
+	"knative.dev/pkg/logging"
+)
+
+type envConfig struct {
+	EventGenerators []string `envconfig:"EVENT_GENERATORS" required:"true"`
+	EventLogs       []string `envconfig:"EVENT_LOGS" required:"true"`
+}
+
+// EventLogFactory creates a new EventLog instance.
+type EventLogFactory func(context.Context) (EventLog, error)
+
+// EventGeneratorStarter starts a new event generator. This function is executed in a separate goroutine, so it can block.
+type EventGeneratorStarter func(context.Context, *EventLogs) error
+
+// Start starts a new eventshub process, with the provided factories.
+// You can create your own eventshub providing event log factories and event generator factories.
+func Start(eventLogFactories map[string]EventLogFactory, eventGeneratorFactories map[string]EventGeneratorStarter) {
+	//nolint // nil ctx is fine here, look at the code of EnableInjectionOrDie
+	ctx, _ := injection.EnableInjectionOrDie(nil, nil)
+	ctx = ConfigureLogging(ctx, "eventshub")
+
+	if err := ConfigureTracing(logging.FromContext(ctx), ""); err != nil {
+		logging.FromContext(ctx).Fatal("Unable to setup trace publishing", err)
+	}
+
+	var env envConfig
+	if err := envconfig.Process("", &env); err != nil {
+		logging.FromContext(ctx).Fatal("Failed to process env var", err)
+	}
+	logging.FromContext(ctx).Infof("Events Hub environment configuration: %+v", env)
+
+	eventLogs := createEventLogs(ctx, eventLogFactories, env.EventLogs)
+	err := startEventGenerators(ctx, eventGeneratorFactories, env.EventGenerators, eventLogs)
+
+	if err != nil {
+		logging.FromContext(ctx).Fatal("Error during start: ", err)
+	}
+
+	logging.FromContext(ctx).Info("Closing the eventshub process")
+}
+
+func createEventLogs(ctx context.Context, factories map[string]EventLogFactory, logTypes []string) *EventLogs {
+	var eventLogs []EventLog
+	for _, logType := range logTypes {
+		factory, ok := factories[logType]
+		if !ok {
+			logging.FromContext(ctx).Fatal("Cannot recognize event log type: ", logType)
+		}
+
+		eventLog, err := factory(ctx)
+		if err != nil {
+			logging.FromContext(ctx).Fatalf("Error while instantiating the event log %s: %s", logType, err)
+		}
+
+		eventLogs = append(eventLogs, eventLog)
+	}
+	return NewEventLogs(eventLogs...)
+}
+
+func startEventGenerators(ctx context.Context, factories map[string]EventGeneratorStarter, genTypes []string, eventLogs *EventLogs) error {
+	errs, _ := errgroup.WithContext(ctx)
+	for _, genType := range genTypes {
+		factory, ok := factories[genType]
+		if !ok {
+			logging.FromContext(ctx).Fatal("Cannot recognize event generator type: ", genType)
+		}
+
+		errs.Go(func() error {
+			return factory(ctx, eventLogs)
+		})
+	}
+	return errs.Wait()
+}
diff --git a/vendor/knative.dev/reconciler-test/pkg/eventshub/eventshub_image.go b/vendor/knative.dev/reconciler-test/pkg/eventshub/eventshub_image.go
new file mode 100644
index 000000000..5c79e80ed
--- /dev/null
+++ b/vendor/knative.dev/reconciler-test/pkg/eventshub/eventshub_image.go
@@ -0,0 +1,45 @@
+/*
+Copyright 2021 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	https://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package eventshub
+
+import (
+	"context"
+
+	"knative.dev/reconciler-test/pkg/environment"
+)
+
+const (
+	thisPackage           = "knative.dev/reconciler-test/cmd/eventshub"
+	defaultEventshubImage = "ko://" + thisPackage
+)
+
+type eventshubImageKey struct{}
+
+// ImageFromContext gets the eventshub image from context
+func ImageFromContext(ctx context.Context) string {
+	if e, ok := ctx.Value(eventshubImageKey{}).(string); ok {
+		return e
+	}
+	return defaultEventshubImage
+}
+
+// WithCustomImage allows you to specify a custom eventshub image to be used when invoking eventshub.Install
+func WithCustomImage(image string) environment.EnvOpts {
+	return func(ctx context.Context, env environment.Environment) (context.Context, error) {
+		return context.WithValue(ctx, eventshubImageKey{}, image), nil
+	}
+}
diff --git a/vendor/knative.dev/reconciler-test/pkg/eventshub/resources.go b/vendor/knative.dev/reconciler-test/pkg/eventshub/resources.go
index 0dfcbcda1..d31ba3634 100644
--- a/vendor/knative.dev/reconciler-test/pkg/eventshub/resources.go
+++ b/vendor/knative.dev/reconciler-test/pkg/eventshub/resources.go
@@ -32,7 +32,7 @@ import (
 var templates embed.FS
 
 func init() {
-	environment.RegisterPackage(manifest.ImagesFromFS(templates)...)
+	environment.RegisterPackage(thisPackage)
 }
 
 // Install starts a new eventshub with the provided name
@@ -67,8 +67,9 @@ func Install(name string, options ...EventsHubOption) feature.StepFn {
 
 		// Deploy
 		if _, err := manifest.InstallYamlFS(ctx, templates, map[string]interface{}{
-			"name": name,
-			"envs": envs,
+			"name":  name,
+			"envs":  envs,
+			"image": ImageFromContext(ctx),
 		}); err != nil {
 			t.Fatal(err)
 		}