Skip to content

Commit 7d97d0b

Browse files
authored
Fix SchemaRegistry live tests (Azure#37056)
1 parent fd08587 commit 7d97d0b

File tree

5 files changed

+34
-73
lines changed

5 files changed

+34
-73
lines changed

sdk/schemaregistry/azure-data-schemaregistry-apacheavro/src/samples/java/com/azure/data/schemaregistry/apacheavro/generatedtestsources/HandOfCards.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@
1515
@org.apache.avro.specific.AvroGenerated
1616
public class HandOfCards extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord {
1717
private static final long serialVersionUID = 8439630215658806158L;
18+
19+
1820
public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"HandOfCards\",\"namespace\":\"com.azure.data.schemaregistry.apacheavro.generatedtestsources\",\"fields\":[{\"name\":\"cards\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"record\",\"name\":\"PlayingCard\",\"fields\":[{\"name\":\"isFaceCard\",\"type\":\"boolean\"},{\"name\":\"cardValue\",\"type\":\"int\"},{\"name\":\"playingCardSuit\",\"type\":{\"type\":\"enum\",\"name\":\"PlayingCardSuit\",\"symbols\":[\"SPADES\",\"HEARTS\",\"DIAMONDS\",\"CLUBS\"]}}]}}}]}");
1921
public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }
2022

21-
private static SpecificData MODEL$ = new SpecificData();
23+
private static final SpecificData MODEL$ = new SpecificData();
2224

2325
private static final BinaryMessageEncoder<HandOfCards> ENCODER =
2426
new BinaryMessageEncoder<HandOfCards>(MODEL$, SCHEMA$);
@@ -71,7 +73,7 @@ public static HandOfCards fromByteBuffer(
7173
return DECODER.decode(b);
7274
}
7375

74-
private java.util.List<com.azure.data.schemaregistry.apacheavro.generatedtestsources.PlayingCard> cards;
76+
private java.util.List<com.azure.data.schemaregistry.apacheavro.generatedtestsources.PlayingCard> cards;
7577

7678
/**
7779
* Default constructor. Note that this does not initialize fields
@@ -169,7 +171,7 @@ public static class Builder extends org.apache.avro.specific.SpecificRecordBuild
169171

170172
/** Creates a new Builder */
171173
private Builder() {
172-
super(SCHEMA$);
174+
super(SCHEMA$, MODEL$);
173175
}
174176

175177
/**
@@ -189,7 +191,7 @@ private Builder(com.azure.data.schemaregistry.apacheavro.generatedtestsources.Ha
189191
* @param other The existing instance to copy.
190192
*/
191193
private Builder(com.azure.data.schemaregistry.apacheavro.generatedtestsources.HandOfCards other) {
192-
super(SCHEMA$);
194+
super(SCHEMA$, MODEL$);
193195
if (isValidValue(fields()[0], other.cards)) {
194196
this.cards = data().deepCopy(fields()[0].schema(), other.cards);
195197
fieldSetFlags()[0] = true;

sdk/schemaregistry/azure-data-schemaregistry-apacheavro/src/samples/java/com/azure/data/schemaregistry/apacheavro/generatedtestsources/Person.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@
1515
@org.apache.avro.specific.AvroGenerated
1616
public class Person extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord {
1717
private static final long serialVersionUID = -8426514654473393623L;
18+
19+
1820
public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"Person\",\"namespace\":\"com.azure.data.schemaregistry.apacheavro.generatedtestsources\",\"fields\":[{\"name\":\"name\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},{\"name\":\"favourite_number\",\"type\":[\"int\",\"null\"]},{\"name\":\"favourite_colour\",\"type\":[{\"type\":\"string\",\"avro.java.string\":\"String\"},\"null\"]}]}");
1921
public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }
2022

21-
private static SpecificData MODEL$ = new SpecificData();
23+
private static final SpecificData MODEL$ = new SpecificData();
2224

2325
private static final BinaryMessageEncoder<Person> ENCODER =
2426
new BinaryMessageEncoder<Person>(MODEL$, SCHEMA$);
@@ -71,9 +73,9 @@ public static Person fromByteBuffer(
7173
return DECODER.decode(b);
7274
}
7375

74-
private java.lang.String name;
75-
private java.lang.Integer favourite_number;
76-
private java.lang.String favourite_colour;
76+
private java.lang.String name;
77+
private java.lang.Integer favourite_number;
78+
private java.lang.String favourite_colour;
7779

7880
/**
7981
* Default constructor. Note that this does not initialize fields
@@ -215,7 +217,7 @@ public static class Builder extends org.apache.avro.specific.SpecificRecordBuild
215217

216218
/** Creates a new Builder */
217219
private Builder() {
218-
super(SCHEMA$);
220+
super(SCHEMA$, MODEL$);
219221
}
220222

221223
/**
@@ -243,7 +245,7 @@ private Builder(com.azure.data.schemaregistry.apacheavro.generatedtestsources.Pe
243245
* @param other The existing instance to copy.
244246
*/
245247
private Builder(com.azure.data.schemaregistry.apacheavro.generatedtestsources.Person other) {
246-
super(SCHEMA$);
248+
super(SCHEMA$, MODEL$);
247249
if (isValidValue(fields()[0], other.name)) {
248250
this.name = data().deepCopy(fields()[0].schema(), other.name);
249251
fieldSetFlags()[0] = true;

sdk/schemaregistry/azure-data-schemaregistry-apacheavro/src/samples/java/com/azure/data/schemaregistry/apacheavro/generatedtestsources/PlayingCard.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@
1515
@org.apache.avro.specific.AvroGenerated
1616
public class PlayingCard extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord {
1717
private static final long serialVersionUID = -4337560961736900860L;
18+
19+
1820
public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"PlayingCard\",\"namespace\":\"com.azure.data.schemaregistry.apacheavro.generatedtestsources\",\"fields\":[{\"name\":\"isFaceCard\",\"type\":\"boolean\"},{\"name\":\"cardValue\",\"type\":\"int\"},{\"name\":\"playingCardSuit\",\"type\":{\"type\":\"enum\",\"name\":\"PlayingCardSuit\",\"symbols\":[\"SPADES\",\"HEARTS\",\"DIAMONDS\",\"CLUBS\"]}}]}");
1921
public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }
2022

21-
private static SpecificData MODEL$ = new SpecificData();
23+
private static final SpecificData MODEL$ = new SpecificData();
2224

2325
private static final BinaryMessageEncoder<PlayingCard> ENCODER =
2426
new BinaryMessageEncoder<PlayingCard>(MODEL$, SCHEMA$);
@@ -71,9 +73,9 @@ public static PlayingCard fromByteBuffer(
7173
return DECODER.decode(b);
7274
}
7375

74-
private boolean isFaceCard;
75-
private int cardValue;
76-
private com.azure.data.schemaregistry.apacheavro.generatedtestsources.PlayingCardSuit playingCardSuit;
76+
private boolean isFaceCard;
77+
private int cardValue;
78+
private com.azure.data.schemaregistry.apacheavro.generatedtestsources.PlayingCardSuit playingCardSuit;
7779

7880
/**
7981
* Default constructor. Note that this does not initialize fields
@@ -215,7 +217,7 @@ public static class Builder extends org.apache.avro.specific.SpecificRecordBuild
215217

216218
/** Creates a new Builder */
217219
private Builder() {
218-
super(SCHEMA$);
220+
super(SCHEMA$, MODEL$);
219221
}
220222

221223
/**
@@ -243,7 +245,7 @@ private Builder(com.azure.data.schemaregistry.apacheavro.generatedtestsources.Pl
243245
* @param other The existing instance to copy.
244246
*/
245247
private Builder(com.azure.data.schemaregistry.apacheavro.generatedtestsources.PlayingCard other) {
246-
super(SCHEMA$);
248+
super(SCHEMA$, MODEL$);
247249
if (isValidValue(fields()[0], other.isFaceCard)) {
248250
this.isFaceCard = data().deepCopy(fields()[0].schema(), other.isFaceCard);
249251
fieldSetFlags()[0] = true;

sdk/schemaregistry/azure-data-schemaregistry-apacheavro/src/test/java/com/azure/data/schemaregistry/apacheavro/SchemaRegistryApacheAvroSerializerIntegrationTest.java

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,10 @@
33

44
package com.azure.data.schemaregistry.apacheavro;
55

6-
import com.azure.core.credential.AccessToken;
76
import com.azure.core.credential.TokenCredential;
8-
import com.azure.core.credential.TokenRequestContext;
9-
import com.azure.core.http.policy.HttpLogDetailLevel;
10-
import com.azure.core.http.policy.HttpLogOptions;
11-
import com.azure.core.http.policy.RetryPolicy;
127
import com.azure.core.models.MessageContent;
138
import com.azure.core.test.TestProxyTestBase;
9+
import com.azure.core.test.utils.MockTokenCredential;
1410
import com.azure.core.util.serializer.TypeReference;
1511
import com.azure.data.schemaregistry.SchemaRegistryClient;
1612
import com.azure.data.schemaregistry.SchemaRegistryClientBuilder;
@@ -32,22 +28,17 @@
3228
import org.junit.jupiter.api.Assumptions;
3329
import org.junit.jupiter.api.Test;
3430
import org.mockito.Mockito;
35-
import reactor.core.publisher.Mono;
3631
import reactor.core.scheduler.Schedulers;
3732
import reactor.test.StepVerifier;
3833

3934
import java.time.Duration;
40-
import java.time.OffsetDateTime;
4135
import java.util.ArrayList;
4236
import java.util.Collections;
4337
import java.util.UUID;
4438

4539
import static org.junit.jupiter.api.Assertions.assertEquals;
4640
import static org.junit.jupiter.api.Assertions.assertNotNull;
4741
import static org.junit.jupiter.api.Assertions.assertTrue;
48-
import static org.mockito.ArgumentMatchers.any;
49-
import static org.mockito.Mockito.mock;
50-
import static org.mockito.Mockito.when;
5142

5243
/**
5344
* Tests end to end experience of the schema registry class.
@@ -62,29 +53,19 @@ public class SchemaRegistryApacheAvroSerializerIntegrationTest extends TestProxy
6253
static final String PLAYBACK_TEST_GROUP = "azsdk_java_group";
6354
static final String PLAYBACK_ENDPOINT = "https://foo.servicebus.windows.net";
6455

65-
private TokenCredential tokenCredential;
6656
private String schemaGroup;
6757
private SchemaRegistryClientBuilder builder;
68-
private String endpoint;
6958
private String eventHubName;
7059
private String connectionString;
7160

7261
@Override
7362
protected void beforeTest() {
63+
String endpoint;
64+
TokenCredential tokenCredential;
7465
if (interceptorManager.isPlaybackMode()) {
75-
tokenCredential = mock(TokenCredential.class);
66+
tokenCredential = new MockTokenCredential();
7667
schemaGroup = PLAYBACK_TEST_GROUP;
7768

78-
// Sometimes it throws an "NotAMockException", so we had to change from thenReturn to thenAnswer.
79-
when(tokenCredential.getToken(any(TokenRequestContext.class))).thenAnswer(invocationOnMock -> {
80-
return Mono.fromCallable(() -> {
81-
return new AccessToken("foo", OffsetDateTime.now().plusMinutes(20));
82-
});
83-
});
84-
85-
when(tokenCredential.getTokenSync(any(TokenRequestContext.class)))
86-
.thenAnswer(invocationOnMock -> new AccessToken("foo", OffsetDateTime.now().plusMinutes(20)));
87-
8869
endpoint = PLAYBACK_ENDPOINT;
8970
eventHubName = "javaeventhub";
9071
connectionString = "foo-bar";
@@ -107,10 +88,8 @@ protected void beforeTest() {
10788

10889
if (interceptorManager.isPlaybackMode()) {
10990
builder.httpClient(interceptorManager.getPlaybackClient());
110-
} else {
111-
builder.addPolicy(new RetryPolicy())
112-
.httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS))
113-
.addPolicy(interceptorManager.getRecordPolicy());
91+
} else if (interceptorManager.isRecordMode()) {
92+
builder.addPolicy(interceptorManager.getRecordPolicy());
11493
}
11594
}
11695

sdk/schemaregistry/azure-data-schemaregistry-apacheavro/src/test/java/com/azure/data/schemaregistry/apacheavro/SchemaRegistryApacheAvroSerializerTest.java

Lines changed: 6 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,15 @@
33

44
package com.azure.data.schemaregistry.apacheavro;
55

6-
import com.azure.core.credential.AccessToken;
7-
import com.azure.core.credential.TokenCredential;
8-
import com.azure.core.credential.TokenRequestContext;
96
import com.azure.core.http.HttpClient;
107
import com.azure.core.http.HttpHeaders;
118
import com.azure.core.http.HttpPipelineBuilder;
12-
import com.azure.core.http.HttpRequest;
13-
import com.azure.core.http.HttpResponse;
149
import com.azure.core.models.MessageContent;
1510
import com.azure.core.test.http.MockHttpResponse;
1611
import com.azure.core.test.models.NetworkCallRecord;
1712
import com.azure.core.test.models.RecordedData;
13+
import com.azure.core.test.utils.MockTokenCredential;
1814
import com.azure.core.util.BinaryData;
19-
import com.azure.core.util.Context;
2015
import com.azure.core.util.serializer.JacksonAdapter;
2116
import com.azure.core.util.serializer.SerializerAdapter;
2217
import com.azure.core.util.serializer.SerializerEncoding;
@@ -54,8 +49,6 @@
5449
import java.io.InputStream;
5550
import java.io.UncheckedIOException;
5651
import java.time.Duration;
57-
import java.time.OffsetDateTime;
58-
import java.util.concurrent.atomic.AtomicInteger;
5952
import java.util.concurrent.atomic.AtomicReference;
6053
import java.util.stream.Stream;
6154

@@ -67,7 +60,6 @@
6760
import static org.junit.jupiter.api.Assertions.assertNull;
6861
import static org.junit.jupiter.api.Assertions.assertThrows;
6962
import static org.junit.jupiter.api.Assertions.assertTrue;
70-
import static org.mockito.ArgumentMatchers.any;
7163
import static org.mockito.Mockito.mock;
7264
import static org.mockito.Mockito.when;
7365

@@ -451,32 +443,19 @@ private SchemaRegistryAsyncClient getSchemaRegistryClient() {
451443
throw new UncheckedIOException("Unable to get resource input stream for: " + resourceName, e);
452444
}
453445

454-
final TokenCredential tokenCredential = mock(TokenCredential.class);
455-
456-
// Sometimes it throws an "NotAMockException", so we had to change from thenReturn to thenAnswer.
457-
when(tokenCredential.getToken(any(TokenRequestContext.class)))
458-
.thenAnswer(invocationOnMock -> Mono.fromCallable(() ->
459-
new AccessToken("foo", OffsetDateTime.now().plusMinutes(20))));
460-
461446
final HttpClient mockedHttpClient = setupHttpClient(recordedData);
462447

463448
final SchemaRegistryClientBuilder builder = new SchemaRegistryClientBuilder()
464-
.credential(tokenCredential)
449+
.credential(new MockTokenCredential())
465450
.pipeline(new HttpPipelineBuilder().httpClient(mockedHttpClient).build())
466451
.fullyQualifiedNamespace(PLAYBACK_ENDPOINT);
467452

468453
return builder.buildAsyncClient();
469454
}
470455

471456
private static HttpClient setupHttpClient(RecordedData recordedData) {
472-
final AtomicInteger counted = new AtomicInteger();
473-
final HttpClient httpClientMock = mock(HttpClient.class);
474-
475-
when(httpClientMock.send(any(), any(Context.class))).thenAnswer(invocationOnMock -> {
476-
final HttpRequest request = invocationOnMock.getArgument(0);
477-
final NetworkCallRecord networkRecord = recordedData.findFirstAndRemoveNetworkCall(e -> {
478-
return true;
479-
});
457+
return request -> {
458+
final NetworkCallRecord networkRecord = recordedData.findFirstAndRemoveNetworkCall(e -> true);
480459

481460
final String body = networkRecord.getResponse().remove("Body");
482461
final String statusCodeMessage = networkRecord.getResponse().remove("StatusCode");
@@ -488,12 +467,9 @@ private static HttpClient setupHttpClient(RecordedData recordedData) {
488467
System.out.println("Body is empty.");
489468
return Mono.just(new MockHttpResponse(request, statusCode, headers, new byte[0]));
490469
} else {
491-
final HttpResponse response = new MockHttpResponse(request, statusCode, headers, body);
492-
return Mono.just(response);
470+
return Mono.just(new MockHttpResponse(request, statusCode, headers, body));
493471
}
494-
});
495-
496-
return httpClientMock;
472+
};
497473
}
498474

499475
private static MockMessage getPayload(PlayingCard card) throws IOException {

0 commit comments

Comments
 (0)