Skip to content

Commit decc5b8

Browse files
committed
Fix test errors
1 parent ea62b41 commit decc5b8

File tree

8 files changed

+72
-72
lines changed

8 files changed

+72
-72
lines changed

build-logic/src/main/kotlin/polaris-java.gradle.kts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,11 @@ testing {
9797
GradleException("mockito-core not declared in libs.versions.toml")
9898
}
9999
)
100+
implementation(
101+
libs.findLibrary("mockito-inline").orElseThrow {
102+
GradleException("mockito-core not declared in libs.versions.toml")
103+
}
104+
)
100105
}
101106
}
102107
}
@@ -143,6 +148,11 @@ dependencies {
143148
GradleException("mockito-core not declared in libs.versions.toml")
144149
}
145150
)
151+
testFixturesImplementation(
152+
libs.findLibrary("mockito-inline").orElseThrow {
153+
GradleException("mockito-inline not declared in libs.versions.toml")
154+
}
155+
)
146156
}
147157

148158
tasks.withType(Jar::class).configureEach {

gradle/libs.versions.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ junit-bom = { module = "org.junit:junit-bom", version = "5.11.4" }
7676
logback-classic = { module = "ch.qos.logback:logback-classic", version = "1.5.16" }
7777
micrometer-bom = { module = "io.micrometer:micrometer-bom", version = "1.14.3" }
7878
mockito-core = { module = "org.mockito:mockito-core", version = "5.15.2" }
79+
mockito-inline = { module = "org.mockito:mockito-inline", version = "5.2.0" }
7980
mockito-junit-jupiter = { module = "org.mockito:mockito-junit-jupiter", version = "5.15.2" }
8081
opentelemetry-bom = { module = "io.opentelemetry:opentelemetry-bom", version = "1.46.0" }
8182
opentelemetry-semconv = { module = "io.opentelemetry.semconv:opentelemetry-semconv", version = "1.25.0-alpha" }

quarkus/service/src/test/java/org/apache/polaris/service/quarkus/TestServices.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import org.apache.polaris.service.catalog.IcebergCatalogAdapter;
4242
import org.apache.polaris.service.catalog.api.IcebergRestCatalogApi;
4343
import org.apache.polaris.service.catalog.api.IcebergRestCatalogApiService;
44-
import org.apache.polaris.service.catalog.io.FileIOFactory;
4544
import org.apache.polaris.service.config.DefaultConfigurationStore;
4645
import org.apache.polaris.service.config.RealmEntityManagerFactory;
4746
import org.apache.polaris.service.persistence.InMemoryPolarisMetaStoreManagerFactory;
@@ -54,19 +53,16 @@ public record TestServices(
5453
IcebergRestCatalogApi restApi,
5554
PolarisCatalogsApi catalogsApi,
5655
RealmId realmId,
57-
SecurityContext securityContext) {
56+
SecurityContext securityContext,
57+
TestFileIOFactory testFileIOFactory) {
5858

5959
private static final RealmId testRealm = RealmId.newRealmId("test-realm");
6060

61-
public static TestServices inMemory(Map<String, Object> config) {
62-
return inMemory(new TestFileIOFactory(), config);
63-
}
64-
65-
public static TestServices inMemory(FileIOFactory ioFactory) {
66-
return inMemory(ioFactory, Map.of());
61+
public static TestServices inMemory() {
62+
return inMemory(Map.of());
6763
}
6864

69-
public static TestServices inMemory(FileIOFactory ioFactory, Map<String, Object> config) {
65+
public static TestServices inMemory(Map<String, Object> config) {
7066

7167
DefaultConfigurationStore configurationStore = new DefaultConfigurationStore(config);
7268
PolarisDiagnostics polarisDiagnostics = Mockito.mock(PolarisDiagnostics.class);
@@ -98,6 +94,10 @@ public static TestServices inMemory(FileIOFactory ioFactory, Map<String, Object>
9894

9995
PolarisAuthorizer authorizer = Mockito.mock(PolarisAuthorizer.class);
10096

97+
TestFileIOFactory testFileIOFactory =
98+
new TestFileIOFactory(
99+
testRealm, entityManager, metaStoreManager, session, configurationStore);
100+
101101
IcebergRestCatalogApiService service =
102102
new IcebergCatalogAdapter(
103103
testRealm,
@@ -108,7 +108,7 @@ public static TestServices inMemory(FileIOFactory ioFactory, Map<String, Object>
108108
polarisDiagnostics,
109109
authorizer,
110110
Mockito.mock(TaskExecutor.class),
111-
ioFactory);
111+
testFileIOFactory);
112112

113113
IcebergRestCatalogApi restApi = new IcebergRestCatalogApi(service);
114114

@@ -158,6 +158,6 @@ public String getAuthenticationScheme() {
158158
authorizer,
159159
polarisDiagnostics));
160160

161-
return new TestServices(restApi, catalogsApi, testRealm, securityContext);
161+
return new TestServices(restApi, catalogsApi, testRealm, securityContext, testFileIOFactory);
162162
}
163163
}

quarkus/service/src/test/java/org/apache/polaris/service/quarkus/admin/ManagementServiceTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,11 @@
3333
import org.apache.polaris.core.admin.model.StorageConfigInfo;
3434
import org.apache.polaris.core.admin.model.UpdateCatalogRequest;
3535
import org.apache.polaris.service.quarkus.TestServices;
36-
import org.apache.polaris.service.quarkus.catalog.io.TestFileIOFactory;
3736
import org.junit.jupiter.api.Test;
3837

3938
public class ManagementServiceTest {
4039
static TestServices services =
4140
TestServices.inMemory(
42-
new TestFileIOFactory(),
4341
Map.of("SUPPORTED_CATALOG_STORAGE_TYPES", List.of("S3", "GCS", "AZURE")));
4442

4543
@Test

quarkus/service/src/test/java/org/apache/polaris/service/quarkus/admin/PolarisOverlappingCatalogTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,13 @@
3434
import org.apache.polaris.core.admin.model.CreateCatalogRequest;
3535
import org.apache.polaris.core.admin.model.StorageConfigInfo;
3636
import org.apache.polaris.service.quarkus.TestServices;
37-
import org.apache.polaris.service.quarkus.catalog.io.TestFileIOFactory;
3837
import org.junit.jupiter.params.ParameterizedTest;
3938
import org.junit.jupiter.params.provider.CsvSource;
4039

4140
public class PolarisOverlappingCatalogTest {
4241

4342
static TestServices services =
44-
TestServices.inMemory(
45-
new TestFileIOFactory(), Map.of("ALLOW_OVERLAPPING_CATALOG_URLS", "false"));
43+
TestServices.inMemory(Map.of("ALLOW_OVERLAPPING_CATALOG_URLS", "false"));
4644

4745
private Response createCatalog(String prefix, String defaultBaseLocation, boolean isExternal) {
4846
return createCatalog(prefix, defaultBaseLocation, isExternal, new ArrayList<String>());

quarkus/service/src/test/java/org/apache/polaris/service/quarkus/catalog/BasePolarisCatalogTest.java

Lines changed: 46 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.apache.commons.lang3.NotImplementedException;
4444
import org.apache.iceberg.BaseTable;
4545
import org.apache.iceberg.CatalogProperties;
46+
import org.apache.iceberg.CatalogUtil;
4647
import org.apache.iceberg.PartitionSpec;
4748
import org.apache.iceberg.Schema;
4849
import org.apache.iceberg.SortOrder;
@@ -73,15 +74,13 @@
7374
import org.apache.polaris.core.entity.CatalogEntity;
7475
import org.apache.polaris.core.entity.PolarisBaseEntity;
7576
import org.apache.polaris.core.entity.PolarisEntity;
76-
import org.apache.polaris.core.entity.PolarisEntityConstants;
7777
import org.apache.polaris.core.entity.PolarisEntitySubType;
7878
import org.apache.polaris.core.entity.PolarisEntityType;
7979
import org.apache.polaris.core.entity.PrincipalEntity;
8080
import org.apache.polaris.core.entity.TaskEntity;
8181
import org.apache.polaris.core.persistence.*;
8282
import org.apache.polaris.core.persistence.cache.EntityCache;
8383
import org.apache.polaris.core.storage.PolarisCredentialProperty;
84-
import org.apache.polaris.core.storage.PolarisStorageActions;
8584
import org.apache.polaris.core.storage.PolarisStorageIntegration;
8685
import org.apache.polaris.core.storage.PolarisStorageIntegrationProvider;
8786
import org.apache.polaris.core.storage.aws.AwsCredentialsStorageIntegration;
@@ -109,6 +108,7 @@
109108
import org.junit.jupiter.api.BeforeEach;
110109
import org.junit.jupiter.api.Test;
111110
import org.junit.jupiter.api.TestInfo;
111+
import org.mockito.MockedStatic;
112112
import org.mockito.Mockito;
113113
import software.amazon.awssdk.services.sts.StsClient;
114114
import software.amazon.awssdk.services.sts.model.AssumeRoleRequest;
@@ -1462,55 +1462,52 @@ public void testDropTableWithPurgeDisabled() {
14621462
}
14631463

14641464
@Test
1465-
public void testRefreshIOForTableLikeAndInternalProperties() {
1465+
public void testRefreshIOForTableLike() {
14661466
// Enable ALLOW_SPECIFYING_FILE_IO_IMPL and disable SKIP_CREDENTIAL_SUBSCOPING_INDIRECTION
14671467
PolarisConfigurationStore configurationStore =
1468-
new DefaultConfigurationStore(Map.of("ALLOW_SPECIFYING_FILE_IO_IMPL", true));
1469-
FileIOFactory fileIOFactoryMocked =
1470-
new FileIOFactory() {
1471-
@Override
1472-
public FileIO loadFileIO(
1473-
String ioImplClassName,
1474-
Map<String, String> properties,
1475-
TableIdentifier identifier,
1476-
Set<String> tableLocations,
1477-
Set<PolarisStorageActions> storageActions,
1478-
PolarisResolvedPathWrapper resolvedStorageEntity) {
1479-
// properties should contain credentials and internal properties
1480-
Assertions.assertThat(properties)
1481-
.containsEntry(S3FileIOProperties.ACCESS_KEY_ID, TEST_ACCESS_KEY)
1482-
.containsEntry(S3FileIOProperties.SECRET_ACCESS_KEY, SECRET_ACCESS_KEY)
1483-
.containsEntry(S3FileIOProperties.SESSION_TOKEN, SESSION_TOKEN)
1484-
.containsKey(PolarisEntityConstants.getStorageConfigInfoPropertyName());
1485-
return fileIOFactory.loadFileIO(
1486-
ioImplClassName,
1487-
properties,
1488-
identifier,
1489-
tableLocations,
1490-
storageActions,
1491-
resolvedStorageEntity);
1492-
}
1493-
};
1494-
BasePolarisCatalog catalog =
1495-
new BasePolarisCatalog(
1496-
realmId,
1497-
entityManager,
1498-
metaStoreManager,
1499-
metaStoreSession,
1500-
configurationStore,
1501-
diagServices,
1502-
passthroughView,
1503-
securityContext,
1504-
Mockito.mock(),
1505-
fileIOFactoryMocked);
1506-
catalog.initialize(
1507-
CATALOG_NAME,
1508-
ImmutableMap.of(
1509-
CatalogProperties.FILE_IO_IMPL, "org.apache.iceberg.inmemory.InMemoryFileIO"));
1510-
1511-
catalog.createNamespace(NS);
1512-
catalog.buildTable(TABLE, SCHEMA).create();
1513-
Table table = catalog.loadTable(TABLE);
1468+
new DefaultConfigurationStore(
1469+
Map.of(
1470+
"ALLOW_SPECIFYING_FILE_IO_IMPL",
1471+
true,
1472+
PolarisConfiguration.SKIP_CREDENTIAL_SUBSCOPING_INDIRECTION.key,
1473+
false));
1474+
try (MockedStatic<CatalogUtil> catalogUtil =
1475+
Mockito.mockStatic(CatalogUtil.class, Mockito.CALLS_REAL_METHODS)) {
1476+
catalogUtil
1477+
.when(() -> CatalogUtil.loadFileIO(Mockito.any(), Mockito.any(), Mockito.any()))
1478+
.thenAnswer(
1479+
invocation -> {
1480+
Map<String, String> properties = invocation.getArgument(1);
1481+
// properties should contain credentials
1482+
Assertions.assertThat(properties)
1483+
.containsEntry(S3FileIOProperties.ACCESS_KEY_ID, TEST_ACCESS_KEY)
1484+
.containsEntry(S3FileIOProperties.SECRET_ACCESS_KEY, SECRET_ACCESS_KEY)
1485+
.containsEntry(S3FileIOProperties.SESSION_TOKEN, SESSION_TOKEN);
1486+
return invocation.callRealMethod();
1487+
});
1488+
FileIOFactory fileIOFactory =
1489+
new DefaultFileIOFactory(
1490+
realmId, entityManager, metaStoreManager, metaStoreSession, configurationStore);
1491+
BasePolarisCatalog catalog =
1492+
new BasePolarisCatalog(
1493+
realmId,
1494+
entityManager,
1495+
metaStoreManager,
1496+
metaStoreSession,
1497+
configurationStore,
1498+
diagServices,
1499+
passthroughView,
1500+
securityContext,
1501+
Mockito.mock(),
1502+
fileIOFactory);
1503+
catalog.initialize(
1504+
CATALOG_NAME,
1505+
ImmutableMap.of(CatalogProperties.FILE_IO_IMPL, InMemoryFileIO.class.getName()));
1506+
1507+
catalog.createNamespace(NS);
1508+
catalog.buildTable(TABLE, SCHEMA).create();
1509+
Table table = catalog.loadTable(TABLE);
1510+
}
15141511
}
15151512

15161513
private TableMetadata createSampleTableMetadata(String tableLocation) {

quarkus/service/src/test/java/org/apache/polaris/service/quarkus/catalog/io/FileIOExceptionsTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,13 @@ public class FileIOExceptionsTest {
5353
private static final String catalog = "test-catalog";
5454
private static final String catalogBaseLocation = "file:/tmp/buckets/my-bucket/path/to/data";
5555

56-
private static TestFileIOFactory ioFactory;
5756
private static TestServices services;
57+
private static TestFileIOFactory ioFactory;
5858

5959
@BeforeAll
6060
public static void beforeAll() {
61-
ioFactory = new TestFileIOFactory();
62-
services = TestServices.inMemory(ioFactory);
61+
services = TestServices.inMemory();
62+
ioFactory = services.testFileIOFactory();
6363

6464
FileStorageConfigInfo storageConfigInfo =
6565
FileStorageConfigInfo.builder()

quarkus/service/src/test/java/org/apache/polaris/service/quarkus/catalog/io/TestFileIOFactory.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,6 @@ public class TestFileIOFactory extends DefaultFileIOFactory {
4747
public Optional<Supplier<RuntimeException>> newOutputFileExceptionSupplier = Optional.empty();
4848
public Optional<Supplier<RuntimeException>> getLengthExceptionSupplier = Optional.empty();
4949

50-
public TestFileIOFactory() {
51-
super(null, null, null, null, null);
52-
}
53-
5450
@Inject
5551
public TestFileIOFactory(
5652
RealmId realmId,

0 commit comments

Comments
 (0)