Ali Ustek
11/18/2022, 1:05 PMYousaf Nabi (pactflow.io)
Matt (pactflow.io / pact-js / pact-go)
Yousaf Nabi (pactflow.io)
{
"type": "record",
"name": "Item",
"namespace": "example.avro",
"fields": [
{
"name": "name",
"type": "string"
},
{
"name": "description",
"type": [
"string",
"null"
]
},
{
"name": "price",
"type": [
"double",
"null"
]
}
]
}
Ali Ustek
12/14/2022, 11:13 AMAli Ustek
02/12/2023, 8:20 PMPactAvroPluginService
is the Plugin implementation. I've lots of questions but here is a small list before I can continue
1- what is supposed to be in the ConfigureInteractionResponse, what is the content of the each Interaction? is it what ever the user put into the test for the consumer?
2- I've tried a dummy Interaction but getting While parsing a protocol message, the input ended unexpectedly in the middle of a field. This could mean either that the input has been truncated or that an embedded message misreported its own length.
, so far I don't know why
3- What is plugin supposed to do? get a request, get a response and make the mock server respond with that response given the request?
4- where do content matchers/generators get into picture?Ali Ustek
02/16/2023, 4:48 PMAli Ustek
02/16/2023, 4:48 PMAli Ustek
02/28/2023, 11:36 PMCompareContentsRequest.actual
and CompareContentsRequest.expected
are of type ByteString
. how are the values of those fields calculated. Can I just use actualBody.getContent.toStringUtf8
to and use it to build the Avro message?Ali Ustek
02/28/2023, 11:36 PMAli Ustek
03/07/2023, 11:00 AMAli Ustek
03/07/2023, 11:03 AMContentMismatch.actual
and ContentMismatch.expected
?Ali Ustek
03/14/2023, 9:49 AMAli Ustek
03/14/2023, 9:51 AMAli Ustek
03/14/2023, 10:02 AMAli Ustek
03/14/2023, 10:02 AM09:42:14.391 [main] DEBUG a.c.d.pact.provider.ProviderVerifier - found class @au.com.dius.pact.provider.junitsupport.Provider("order-provider") @au.com.dius.pact.provider.junitsupport.loader.PactBroker(url="<http://localhost:9292>", host="${pactbroker.host:}", port="${pactbroker.port:}", scheme="${pactbroker.scheme:http}", tags={${pactbroker.tags:}}, consumerVersionSelectors={@au.com.dius.pact.provider.junitsupport.loader.VersionSelector(tag="${pactbroker.consumerversionselectors.tags:}", latest="${pactbroker.consumerversionselectors.latest:}", consumer="${pactbroker.consumers:}", fallbackTag="")}, consumers={${pactbroker.consumers:}}, authentication=@au.com.dius.pact.provider.junitsupport.loader.PactBrokerAuth(username="${pactbroker.auth.username:}", password="${pactbroker.auth.password:}", token="${pactbroker.auth.token:}", headerName="Authorization"), valueResolver=au.com.dius.pact.core.support.expressions.SystemPropertyResolver.class, enablePendingPacts="${pactbroker.enablePending:false}", providerTags={${pactbroker.providerTags:}}, providerBranch="${pactbroker.providerBranch:}", includeWipPactsSince="${pactbroker.includeWipPactsSince:}", enableInsecureTls="${pactbroker.enableInsecureTls:false}") class com.collibra.example.pulsar.avro.PactPulsarProducerTest
09:42:14.393 [main] DEBUG a.c.d.pact.provider.ProviderVerifier - found method [@au.com.dius.pact.provider.PactVerifyProvider("Order Created") public au.com.dius.pact.provider.MessageAndMetadata orderCreatedEvent()]
09:42:14.399 [main] DEBUG a.c.d.pact.provider.ProviderVerifier - Found methods = [public au.com.dius.pact.provider.MessageAndMetadata com.collibra.example.pulsar.avro.PactPulsarProducerTest.orderCreatedEvent() throws java.io.IOException]
generates a message which
has a matching body (FAILED)
has matching metadata (OK)
Failures:
1) Order Created: generates a message which has a matching body
1.1) body: / Actual body '�name-1��|A�������?�street nameItem-1Item21' is not equal to the expected body '�name-1��|A�������?�street nameItem-1Item-2'
09:42:14.720 [main] DEBUG a.c.d.p.p.DefaultTestResultAccumulator - Received test result 'Failed(results=[{attribute=body, description=Actual body '�name-1��|A�������?�street nameItem-1Item21' is not equal to the expected body '�name-1��|A�������?�street nameItem-1Item-2', identifier=/, diff=null, interactionId=857a381662884d96adb1cb05bc50788bf9d1ed65}], description=Body had differences)' for Pact order-provider-avro-consumer and Order Created (Pact Broker <http://localhost:9292/pacts/provider/order-provider/consumer/avro-consumer/pact-version/d5c261bfc261542df7e0d1f0ba81810ef94bb192/metadata/c1tdW2N2XT05>)
09:42:14.723 [main] DEBUG a.c.d.p.p.DefaultTestResultAccumulator - Number of interactions #1 and results: [Failed(results=[{attribute=body, description=Actual body '�name-1��|A�������?�street nameItem-1Item21' is not equal to the expected body '�name-1��|A�������?�street nameItem-1Item-2', identifier=/, diff=null, interactionId=857a381662884d96adb1cb05bc50788bf9d1ed65}], description=Body had differences)]
09:42:14.724 [main] DEBUG a.c.d.p.p.DefaultTestResultAccumulator - All interactions for Pact order-provider-avro-consumer have a verification result
09:42:14.724 [main] WARN a.c.d.p.p.DefaultTestResultAccumulator - Skipping publishing of verification results as it has been disabled (pact.verifier.publishResults is not 'true')
09:42:14.725 [main] DEBUG a.c.d.p.p.j.PactVerificationStateChangeExtension - afterEach for interaction 'Order Created'
Ali Ustek
03/14/2023, 11:20 AMMessageAndMetadata
target and using matcher <http://au.com|au.com>.dius.pact.core.matchers.Matching#matchBodyContents
not the matcher from the plugin what am I missing?Yousaf Nabi (pactflow.io)
Ali Ustek
03/14/2023, 4:23 PMAli Ustek
03/14/2023, 4:25 PMAli Ustek
03/14/2023, 4:25 PMMap.entry("pact:avro", schemasPath),
Map.entry("pact:record-name", "Order"),
Map.entry("pact:content-type", "avro/binary"),
Ali Ustek
03/14/2023, 4:25 PMuglyog
Ali Ustek
03/16/2023, 11:19 PMcompareContents
method request.getPluginConfiguration.interactionConfiguration
has no configuration, did I miss something?Yousaf Nabi (pactflow.io)
Tõnis Ojandu
03/24/2023, 5:32 PMAli Ustek
11/29/2023, 6:55 AMYousaf Nabi (pactflow.io)
Nathan Deamer
01/08/2025, 4:19 PM`body: $ Plugin Avro Schema configuration item with key '65304033840260accc36fc52520ed0ff' is required`
I've built a sample repo showing the problem here:
https://github.com/nathandeamer/pact-sample-avro
It seems to be because the metadata.plugins.configuration
in the consumer pact file only gets populated with 1 of the 2 schemas
(Disclaimer: This is my first time using avro and pact plugins).