Skip to content

Commit 467a124

Browse files
authored
Merge branch 'opensearch-project:main' into feature/worker-partition-retry-strategy
2 parents c5252de + ee96c7c commit 467a124

22 files changed

Lines changed: 174 additions & 159 deletions

File tree

data-prepper-core/src/integrationTest/java/org/opensearch/dataprepper/integration/ProcessorValidationIT.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,12 @@ private void verifyProcessingResults(String pipelineType, int expectedTotalEvent
211211
}
212212

213213
private static void verifySingleThreadUsage() {
214+
// Wait for all processor instances to be registered (one per worker)
215+
await().atMost(WAIT_TIMEOUT_SECONDS, TimeUnit.SECONDS)
216+
.untilAsserted(() -> assertThat(
217+
SingleThreadEventsTrackingTestProcessor.getProcessors().size(),
218+
equalTo(4)));
219+
214220
List<SingleThreadEventsTrackingTestProcessor> singleThreadProcessors = SingleThreadEventsTrackingTestProcessor.getProcessors();
215221
assertThat(singleThreadProcessors.size(), equalTo(4));
216222
assertAll(

data-prepper-plugins/cloudwatch-logs/src/main/java/org/opensearch/dataprepper/plugins/sink/cloudwatch_logs/client/CloudWatchLogsClientFactory.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
1313
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
14+
import software.amazon.awssdk.core.retry.RetryPolicy;
1415
import software.amazon.awssdk.regions.Region;
1516
import software.amazon.awssdk.services.cloudwatchlogs.CloudWatchLogsClient;
1617
import software.amazon.awssdk.services.cloudwatchlogs.CloudWatchLogsClientBuilder;
@@ -64,8 +65,12 @@ public static CloudWatchLogsClient createCwlClient(final AwsConfig awsConfig,
6465
}
6566

6667
private static ClientOverrideConfiguration createOverrideConfiguration(final Map<String, String> customHeaders) {
68+
final RetryPolicy retryPolicy = RetryPolicy.builder()
69+
.numRetries(AwsConfig.DEFAULT_CONNECTION_ATTEMPTS)
70+
.build();
71+
6772
final ClientOverrideConfiguration.Builder configBuilder = ClientOverrideConfiguration.builder()
68-
.retryPolicy(r -> r.numRetries(AwsConfig.DEFAULT_CONNECTION_ATTEMPTS));
73+
.retryPolicy(retryPolicy);
6974

7075
customHeaders.forEach(configBuilder::putHeader);
7176

data-prepper-plugins/cloudwatch-logs/src/test/java/org/opensearch/dataprepper/plugins/sink/cloudwatch_logs/client/CloudWatchLogsServiceTest.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@
1212
import org.opensearch.dataprepper.model.event.Event;
1313
import org.opensearch.dataprepper.model.event.EventHandle;
1414
import org.opensearch.dataprepper.model.event.JacksonEvent;
15+
import org.opensearch.dataprepper.model.log.JacksonLog;
1516
import org.opensearch.dataprepper.model.record.Record;
17+
import org.opensearch.dataprepper.plugins.dlq.DlqPushHandler;
1618
import org.opensearch.dataprepper.plugins.sink.cloudwatch_logs.buffer.Buffer;
1719
import org.opensearch.dataprepper.plugins.sink.cloudwatch_logs.buffer.InMemoryBuffer;
1820
import org.opensearch.dataprepper.plugins.sink.cloudwatch_logs.buffer.InMemoryBufferFactory;
1921
import org.opensearch.dataprepper.plugins.sink.cloudwatch_logs.config.CloudWatchLogsSinkConfig;
2022
import org.opensearch.dataprepper.plugins.sink.cloudwatch_logs.config.ThresholdConfig;
2123
import org.opensearch.dataprepper.plugins.sink.cloudwatch_logs.utils.CloudWatchLogsLimits;
2224
import software.amazon.awssdk.services.cloudwatchlogs.CloudWatchLogsClient;
23-
import org.opensearch.dataprepper.plugins.dlq.DlqPushHandler;
24-
import org.opensearch.dataprepper.model.log.JacksonLog;
2525

2626
import java.util.ArrayList;
2727
import java.util.Collection;
@@ -31,13 +31,13 @@
3131
import static org.mockito.ArgumentMatchers.any;
3232
import static org.mockito.ArgumentMatchers.eq;
3333
import static org.mockito.Mockito.atLeast;
34+
import static org.mockito.Mockito.doAnswer;
3435
import static org.mockito.Mockito.mock;
36+
import static org.mockito.Mockito.never;
3537
import static org.mockito.Mockito.spy;
36-
import static org.mockito.Mockito.verify;
3738
import static org.mockito.Mockito.times;
38-
import static org.mockito.Mockito.never;
39+
import static org.mockito.Mockito.verify;
3940
import static org.mockito.Mockito.when;
40-
import static org.mockito.Mockito.doAnswer;
4141

4242
class CloudWatchLogsServiceTest {
4343
private static final int LARGE_THREAD_COUNT = 1000;
@@ -95,8 +95,10 @@ Collection<Record<Event>> getSampleRecordsCollection() {
9595

9696
Collection<Record<Event>> getSampleRecordsOfLargerSize() {
9797
final ArrayList<Record<Event>> returnCollection = new ArrayList<>();
98+
int messageSize = (int) (thresholdConfig.getMaxRequestSizeBytes() / 24);
9899
for (int i = 0; i < thresholdConfig.getBatchSize() * 2; i++) {
99-
JacksonEvent mockJacksonEvent = (JacksonEvent) JacksonEvent.fromMessage("a".repeat((int) (thresholdConfig.getMaxRequestSizeBytes()/24)));
100+
JacksonEvent mockJacksonEvent =
101+
(JacksonEvent) JacksonEvent.fromMessage(RandomStringUtils.insecure().nextAlphabetic(messageSize));
100102
returnCollection.add(new Record<>(mockJacksonEvent));
101103
}
102104

@@ -105,8 +107,10 @@ Collection<Record<Event>> getSampleRecordsOfLargerSize() {
105107

106108
Collection<Record<Event>> getSampleRecordsOfLimitSize() {
107109
final ArrayList<Record<Event>> returnCollection = new ArrayList<>();
110+
int messageSize = (int) thresholdConfig.getMaxEventSizeBytes();
108111
for (int i = 0; i < thresholdConfig.getBatchSize(); i++) {
109-
JacksonEvent mockJacksonEvent = (JacksonEvent) JacksonEvent.fromMessage("testMessage".repeat((int) thresholdConfig.getMaxEventSizeBytes()));
112+
JacksonEvent mockJacksonEvent =
113+
(JacksonEvent) JacksonEvent.fromMessage(RandomStringUtils.insecure().nextAlphabetic(messageSize));
110114
returnCollection.add(new Record<>(mockJacksonEvent));
111115
}
112116

@@ -248,8 +252,8 @@ void GIVEN_large_thread_count_WHEN_processing_log_events_THEN_dispatcher_should_
248252
}
249253

250254
private Record<Event> getLargeRecord(long size) {
251-
final Event event = JacksonLog.builder().withData(Map.of("key", RandomStringUtils.randomAlphabetic((int)size))).withEventHandle(eventHandle).build();
255+
final Event event = JacksonLog.builder().withData(Map.of("key", RandomStringUtils.insecure().nextAlphabetic((int)size))).withEventHandle(eventHandle).build();
252256

253257
return new Record<>(event);
254-
}
258+
}
255259
}

data-prepper-plugins/date-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/date/DateProcessorConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,18 @@ public boolean isValidPatterns() {
108108
}
109109

110110
public static boolean isValidPattern(final String pattern) {
111+
// Check for valid epoch patterns first
111112
if (pattern.equals("epoch_second") ||
112113
pattern.equals("epoch_milli") ||
113114
pattern.equals("epoch_micro") ||
114115
pattern.equals("epoch_nano")) {
115116
return true;
116117
}
118+
// Reject any other pattern starting with "epoch_" as invalid
119+
if (pattern.startsWith("epoch_")) {
120+
return false;
121+
}
122+
// Validate as DateTimeFormatter pattern
117123
try {
118124
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
119125
return true;

data-prepper-plugins/date-processor/src/test/java/org/opensearch/dataprepper/plugins/processor/date/DateProcessorConfigTest.java

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -69,23 +69,28 @@ void isValidMatchAndFromTimestampReceived_should_return_false_if_from_time_recei
6969
assertThat(dateProcessorConfig.isValidMatchAndFromTimestampReceived(), equalTo(false));
7070
}
7171

72-
@Test
73-
void testValidAndInvalidOutputFormats() throws NoSuchFieldException, IllegalAccessException {
74-
setField(DateProcessorConfig.class, dateProcessorConfig, "outputFormat", random);
75-
assertThat(dateProcessorConfig.isValidOutputFormat(), equalTo(false));
76-
77-
setField(DateProcessorConfig.class, dateProcessorConfig, "outputFormat", "epoch_second");
78-
assertThat(dateProcessorConfig.isValidOutputFormat(), equalTo(true));
79-
setField(DateProcessorConfig.class, dateProcessorConfig, "outputFormat", "epoch_milli");
80-
assertThat(dateProcessorConfig.isValidOutputFormat(), equalTo(true));
81-
setField(DateProcessorConfig.class, dateProcessorConfig, "outputFormat", "epoch_nano");
82-
assertThat(dateProcessorConfig.isValidOutputFormat(), equalTo(true));
83-
setField(DateProcessorConfig.class, dateProcessorConfig, "outputFormat", "epoch_micro");
72+
@ParameterizedTest
73+
@ValueSource(strings = {
74+
"epoch_second",
75+
"epoch_milli",
76+
"epoch_nano",
77+
"epoch_micro",
78+
"yyyy-MM-dd'T'HH:mm:ss.nnnnnnnnnXXX"
79+
})
80+
void testValidOutputFormats(String outputFormat) throws NoSuchFieldException, IllegalAccessException {
81+
setField(DateProcessorConfig.class, dateProcessorConfig, "outputFormat", outputFormat);
8482
assertThat(dateProcessorConfig.isValidOutputFormat(), equalTo(true));
85-
setField(DateProcessorConfig.class, dateProcessorConfig, "outputFormat", "epoch_xyz");
83+
}
84+
85+
@ParameterizedTest
86+
@ValueSource(strings = {
87+
"invalid[pattern]format",
88+
"epoch_xyz",
89+
"epoch_invalid"
90+
})
91+
void testInvalidOutputFormats(String outputFormat) throws NoSuchFieldException, IllegalAccessException {
92+
setField(DateProcessorConfig.class, dateProcessorConfig, "outputFormat", outputFormat);
8693
assertThat(dateProcessorConfig.isValidOutputFormat(), equalTo(false));
87-
setField(DateProcessorConfig.class, dateProcessorConfig, "outputFormat", "yyyy-MM-dd'T'HH:mm:ss.nnnnnnnnnXXX");
88-
assertThat(dateProcessorConfig.isValidOutputFormat(), equalTo(true));
8994
}
9095

9196
@Test

data-prepper-plugins/dynamodb-source-coordination-store/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ dependencies {
1717
implementation 'software.amazon.awssdk:sts'
1818
implementation 'javax.inject:javax.inject:1'
1919
testImplementation 'com.amazonaws:DynamoDBLocal:2.2.1'
20+
testImplementation 'org.awaitility:awaitility:4.2.0'
2021
}
2122

2223
configurations {

data-prepper-plugins/dynamodb-source-coordination-store/src/test/java/org/opensearch/dataprepper/plugins/sourcecoordinator/dynamodb/DynamoDbSourceCoordinationStoreIT.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
import java.util.Optional;
3737
import java.util.Random;
3838
import java.util.UUID;
39+
import java.util.concurrent.TimeUnit;
3940

41+
import static org.awaitility.Awaitility.await;
4042
import static org.hamcrest.MatcherAssert.assertThat;
4143
import static org.hamcrest.Matchers.equalTo;
4244
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
@@ -265,8 +267,16 @@ void tryAcquireAvailablePartition_gets_first_unassigned_partition() {
265267
objectUnderTest.tryCreatePartitionItem(sourceIdentifier,
266268
unassignedPartitionKey3, SourcePartitionStatus.UNASSIGNED, 1L, partitionProgressState, false);
267269

268-
final Optional<SourcePartitionStoreItem> maybeAcquired =
269-
objectUnderTest.tryAcquireAvailablePartition(sourceIdentifier, ownerId, Duration.ofSeconds(20));
270+
// Wait for partition to be available in DynamoDB Local before attempting to acquire
271+
final Optional<SourcePartitionStoreItem>[] maybeAcquiredHolder = new Optional[]{Optional.empty()};
272+
await().atMost(5, TimeUnit.SECONDS)
273+
.pollInterval(100, TimeUnit.MILLISECONDS)
274+
.untilAsserted(() -> {
275+
maybeAcquiredHolder[0] = objectUnderTest.tryAcquireAvailablePartition(sourceIdentifier, ownerId, Duration.ofSeconds(20));
276+
assertThat(maybeAcquiredHolder[0].isPresent(), equalTo(true));
277+
});
278+
279+
final Optional<SourcePartitionStoreItem> maybeAcquired = maybeAcquiredHolder[0];
270280

271281
assertThat(maybeAcquired, notNullValue());
272282
assertThat(maybeAcquired.isPresent(), equalTo(true));

data-prepper-plugins/s3-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/s3/ClientFactory.java

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
/*
22
* Copyright OpenSearch Contributors
33
* SPDX-License-Identifier: Apache-2.0
4+
*
5+
* The OpenSearch Contributors require contributions made to
6+
* this file be licensed under the Apache-2.0 license or a
7+
* compatible open source license.
48
*/
59

610
package org.opensearch.dataprepper.plugins.sink.s3;
@@ -16,33 +20,23 @@
1620
import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient;
1721
import software.amazon.awssdk.services.s3.S3AsyncClient;
1822
import software.amazon.awssdk.services.s3.S3AsyncClientBuilder;
19-
import software.amazon.awssdk.services.s3.S3Client;
2023

2124
public final class ClientFactory {
2225
private ClientFactory() { }
2326

24-
static S3Client createS3Client(final S3SinkConfig s3SinkConfig, final AwsCredentialsSupplier awsCredentialsSupplier) {
25-
final AwsCredentialsOptions awsCredentialsOptions = convertToCredentialsOptions(s3SinkConfig.getAwsAuthenticationOptions());
26-
final AwsCredentialsProvider awsCredentialsProvider = awsCredentialsSupplier.getProvider(awsCredentialsOptions);
27-
28-
return S3Client.builder()
29-
.region(s3SinkConfig.getAwsAuthenticationOptions().getAwsRegion())
30-
.credentialsProvider(awsCredentialsProvider)
31-
.overrideConfiguration(createOverrideConfiguration(s3SinkConfig)).build();
32-
}
33-
3427
static S3AsyncClient createS3AsyncClient(final S3SinkConfig s3SinkConfig, final AwsCredentialsSupplier awsCredentialsSupplier) {
3528
final AwsCredentialsOptions awsCredentialsOptions = convertToCredentialsOptions(s3SinkConfig.getAwsAuthenticationOptions());
3629
final AwsCredentialsProvider awsCredentialsProvider = awsCredentialsSupplier.getProvider(awsCredentialsOptions);
3730

38-
S3AsyncClientBuilder s3AsyncClientBuilder = S3AsyncClient.builder()
31+
final S3AsyncClientBuilder s3AsyncClientBuilder = S3AsyncClient.builder()
3932
.region(s3SinkConfig.getAwsAuthenticationOptions().getAwsRegion())
33+
.crossRegionAccessEnabled(true)
4034
.credentialsProvider(awsCredentialsProvider)
4135
.overrideConfiguration(createOverrideConfiguration(s3SinkConfig));
4236

4337
if (s3SinkConfig.getClientOptions() != null) {
4438
final ClientOptions clientOptions = s3SinkConfig.getClientOptions();
45-
SdkAsyncHttpClient httpClient = NettyNioAsyncHttpClient.builder()
39+
final SdkAsyncHttpClient httpClient = NettyNioAsyncHttpClient.builder()
4640
.connectionAcquisitionTimeout(clientOptions.getAcquireTimeout())
4741
.maxConcurrency(clientOptions.getMaxConnections())
4842
.build();

data-prepper-plugins/s3-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/s3/ClientFactoryTest.java

Lines changed: 7 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
/*
22
* Copyright OpenSearch Contributors
33
* SPDX-License-Identifier: Apache-2.0
4+
*
5+
* The OpenSearch Contributors require contributions made to
6+
* this file be licensed under the Apache-2.0 license or a
7+
* compatible open source license.
48
*/
59

610
package org.opensearch.dataprepper.plugins.sink.s3;
@@ -25,8 +29,6 @@
2529
import software.amazon.awssdk.services.s3.S3AsyncClient;
2630
import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient;
2731
import software.amazon.awssdk.services.s3.S3AsyncClientBuilder;
28-
import software.amazon.awssdk.services.s3.S3Client;
29-
import software.amazon.awssdk.services.s3.S3ClientBuilder;
3032

3133
import java.time.Duration;
3234
import java.util.Map;
@@ -62,14 +64,14 @@ void setUp() {
6264
@Test
6365
void createS3AsyncClient_with_real_S3AsyncClient() {
6466
when(awsAuthenticationOptions.getAwsRegion()).thenReturn(Region.US_EAST_1);
65-
final S3Client s3Client = ClientFactory.createS3Client(s3SinkConfig, awsCredentialsSupplier);
67+
final S3AsyncClient s3Client = ClientFactory.createS3AsyncClient(s3SinkConfig, awsCredentialsSupplier);
6668

6769
assertThat(s3Client, notNullValue());
6870
}
6971

7072
@ParameterizedTest
7173
@ValueSource(strings = {"us-east-1", "us-west-2", "eu-central-1"})
72-
void createS3Client_provides_correct_inputs(final String regionString) {
74+
void createS3AsyncClient_with_client_options_returns_expected_client(final String regionString) {
7375
final Region region = Region.of(regionString);
7476
final String stsRoleArn = UUID.randomUUID().toString();
7577
final String externalId = UUID.randomUUID().toString();
@@ -82,49 +84,9 @@ void createS3Client_provides_correct_inputs(final String regionString) {
8284
final AwsCredentialsProvider expectedCredentialsProvider = mock(AwsCredentialsProvider.class);
8385
when(awsCredentialsSupplier.getProvider(any())).thenReturn(expectedCredentialsProvider);
8486

85-
final S3ClientBuilder s3ClientBuilder = mock(S3ClientBuilder.class);
86-
when(s3ClientBuilder.region(region)).thenReturn(s3ClientBuilder);
87-
when(s3ClientBuilder.credentialsProvider(any())).thenReturn(s3ClientBuilder);
88-
when(s3ClientBuilder.overrideConfiguration(any(ClientOverrideConfiguration.class))).thenReturn(s3ClientBuilder);
89-
try(final MockedStatic<S3Client> s3ClientMockedStatic = mockStatic(S3Client.class)) {
90-
s3ClientMockedStatic.when(S3Client::builder)
91-
.thenReturn(s3ClientBuilder);
92-
ClientFactory.createS3Client(s3SinkConfig, awsCredentialsSupplier);
93-
}
94-
95-
final ArgumentCaptor<AwsCredentialsProvider> credentialsProviderArgumentCaptor = ArgumentCaptor.forClass(AwsCredentialsProvider.class);
96-
verify(s3ClientBuilder).credentialsProvider(credentialsProviderArgumentCaptor.capture());
97-
98-
final AwsCredentialsProvider actualCredentialsProvider = credentialsProviderArgumentCaptor.getValue();
99-
100-
assertThat(actualCredentialsProvider, equalTo(expectedCredentialsProvider));
101-
102-
final ArgumentCaptor<AwsCredentialsOptions> optionsArgumentCaptor = ArgumentCaptor.forClass(AwsCredentialsOptions.class);
103-
verify(awsCredentialsSupplier).getProvider(optionsArgumentCaptor.capture());
104-
105-
final AwsCredentialsOptions actualCredentialsOptions = optionsArgumentCaptor.getValue();
106-
assertThat(actualCredentialsOptions.getRegion(), equalTo(region));
107-
assertThat(actualCredentialsOptions.getStsRoleArn(), equalTo(stsRoleArn));
108-
assertThat(actualCredentialsOptions.getStsExternalId(), equalTo(externalId));
109-
assertThat(actualCredentialsOptions.getStsHeaderOverrides(), equalTo(stsHeaderOverrides));
110-
}
111-
112-
@Test
113-
void createS3AsyncClient_with_client_options_returns_expected_client() {
114-
final Region region = Region.of("us-east-1");
115-
final String stsRoleArn = UUID.randomUUID().toString();
116-
final String externalId = UUID.randomUUID().toString();
117-
final Map<String, String> stsHeaderOverrides = Map.of(UUID.randomUUID().toString(), UUID.randomUUID().toString());
118-
when(awsAuthenticationOptions.getAwsRegion()).thenReturn(region);
119-
when(awsAuthenticationOptions.getAwsStsRoleArn()).thenReturn(stsRoleArn);
120-
when(awsAuthenticationOptions.getAwsStsExternalId()).thenReturn(externalId);
121-
when(awsAuthenticationOptions.getAwsStsHeaderOverrides()).thenReturn(stsHeaderOverrides);
122-
123-
final AwsCredentialsProvider expectedCredentialsProvider = mock(AwsCredentialsProvider.class);
124-
when(awsCredentialsSupplier.getProvider(any())).thenReturn(expectedCredentialsProvider);
125-
12687
final S3AsyncClientBuilder s3AsyncClientBuilder = mock(S3AsyncClientBuilder.class);
12788
when(s3AsyncClientBuilder.region(region)).thenReturn(s3AsyncClientBuilder);
89+
when(s3AsyncClientBuilder.crossRegionAccessEnabled(true)).thenReturn(s3AsyncClientBuilder);
12890
when(s3AsyncClientBuilder.credentialsProvider(any())).thenReturn(s3AsyncClientBuilder);
12991
when(s3AsyncClientBuilder.overrideConfiguration(any(ClientOverrideConfiguration.class))).thenReturn(s3AsyncClientBuilder);
13092

data-prepper-plugins/saas-source-plugins/confluence-source/src/test/java/org/opensearch/dataprepper/plugins/source/confluence/ConfluenceConfigHelperTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ void testValidateConfig() {
118118

119119
@Test
120120
void testValidateConfigBasic() {
121-
when(confluenceSourceConfig.getAccountUrl()).thenReturn("https://test.com");
121+
when(confluenceSourceConfig.getAccountUrl()).thenReturn("https://somedomain.atlassian.net");
122122
when(confluenceSourceConfig.getAuthType()).thenReturn(BASIC);
123123
when(confluenceSourceConfig.getAuthenticationConfig()).thenReturn(authenticationConfig);
124124
when(authenticationConfig.getBasicConfig()).thenReturn(basicConfig);
@@ -137,7 +137,7 @@ void testValidateConfigBasic() {
137137

138138
@Test
139139
void testValidateConfigOauth2() {
140-
when(confluenceSourceConfig.getAccountUrl()).thenReturn("https://test.com");
140+
when(confluenceSourceConfig.getAccountUrl()).thenReturn("https://somedomain.atlassian.net");
141141
when(confluenceSourceConfig.getAuthType()).thenReturn(OAUTH2);
142142
when(confluenceSourceConfig.getAuthenticationConfig()).thenReturn(authenticationConfig);
143143
when(authenticationConfig.getOauth2Config()).thenReturn(oauth2Config);

0 commit comments

Comments
 (0)