|
35 | 35 | import static org.junit.jupiter.api.Assertions.assertThrows;
|
36 | 36 | import static org.junit.jupiter.api.Assertions.assertTrue;
|
37 | 37 |
|
| 38 | +import java.lang.reflect.Constructor; |
38 | 39 | import java.util.EnumSet;
|
39 | 40 | import java.util.LinkedHashSet;
|
| 41 | +import java.util.List; |
40 | 42 | import java.util.Map;
|
41 | 43 | import java.util.Set;
|
42 | 44 | import java.util.SortedMap;
|
43 | 45 | import java.util.TreeMap;
|
44 | 46 | import java.util.UUID;
|
| 47 | +import java.util.concurrent.atomic.AtomicBoolean; |
| 48 | +import java.util.stream.Stream; |
45 | 49 |
|
46 | 50 | import org.apache.accumulo.core.data.Key;
|
47 | 51 | import org.apache.accumulo.core.data.Mutation;
|
@@ -283,6 +287,27 @@ public void testMergedColumn() {
|
283 | 287 | assertThrows(IllegalStateException.class, tm::hasMerged);
|
284 | 288 | }
|
285 | 289 |
|
| 290 | + @Test |
| 291 | + public void testTabletsMetadataAutoClose() throws Exception { |
| 292 | + AtomicBoolean closeCalled = new AtomicBoolean(); |
| 293 | + AutoCloseable autoCloseable = () -> closeCalled.set(true); |
| 294 | + Constructor<TabletsMetadata> tmConstructor = |
| 295 | + TabletsMetadata.class.getDeclaredConstructor(AutoCloseable.class, Iterable.class); |
| 296 | + tmConstructor.setAccessible(true); |
| 297 | + |
| 298 | + try (TabletsMetadata ignored = tmConstructor.newInstance(autoCloseable, List.of())) { |
| 299 | + // test autoCloseable used directly on TabletsMetadata |
| 300 | + } |
| 301 | + assertTrue(closeCalled.get()); |
| 302 | + |
| 303 | + closeCalled.set(false); |
| 304 | + try (Stream<TabletMetadata> ignored = |
| 305 | + tmConstructor.newInstance(autoCloseable, List.of()).stream()) { |
| 306 | + // test stream delegates to close on TabletsMetadata |
| 307 | + } |
| 308 | + assertTrue(closeCalled.get()); |
| 309 | + } |
| 310 | + |
286 | 311 | private SortedMap<Key,Value> toRowMap(Mutation mutation) {
|
287 | 312 | SortedMap<Key,Value> rowMap = new TreeMap<>();
|
288 | 313 | mutation.getUpdates().forEach(cu -> {
|
|
0 commit comments