diff --git a/.github/workflows/auto-jdk-matrix.yml b/.github/workflows/auto-jdk-matrix.yml
index 381222ac..0a19cb2c 100644
--- a/.github/workflows/auto-jdk-matrix.yml
+++ b/.github/workflows/auto-jdk-matrix.yml
@@ -20,7 +20,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- jdk: [ 21 ] # LTS versions only
+ jdk: [ 25 ] # LTS versions only
os: [ ubuntu-latest ]
include:
# - os: windows-latest
diff --git a/.github/workflows/auto-os-matrix.yml b/.github/workflows/auto-os-matrix.yml
index c267b559..25931906 100644
--- a/.github/workflows/auto-os-matrix.yml
+++ b/.github/workflows/auto-os-matrix.yml
@@ -21,7 +21,7 @@ jobs:
fail-fast: false
matrix:
- jdk: [ 21 ]
+ jdk: [ 25 ]
os: [ windows-latest, ubuntu-latest, macos-latest ]
include:
- os: windows-latest
diff --git a/.github/workflows/javadoc.yml b/.github/workflows/javadoc.yml
index 4511b39a..4586e1d5 100644
--- a/.github/workflows/javadoc.yml
+++ b/.github/workflows/javadoc.yml
@@ -14,7 +14,7 @@ jobs:
- name: Setup Java
uses: actions/setup-java@v4
with:
- java-version: '21'
+ java-version: '25'
distribution: 'temurin'
- name: Echo Java Version
diff --git a/README.md b/README.md
index 208862dc..467ce6d3 100644
--- a/README.md
+++ b/README.md
@@ -72,8 +72,8 @@ Starting with release *datasketches-memory-5.0.0*, this Memory component support
### Runtime Notes:
* There are no run-time dependencies.
* The DataSketches Java Memory Component is not thread-safe.
-* This Release, based on Java 21, leverages the new Java Foreign Function & Memory (FFM) API [JEP 442](https://openjdk.org/jeps/442), which is in its third Preview and will require the JVM flag *--enable-preview* at run-time.
-* We recommend Eclipse Adoptium/Temurin 21.0.5+11 or later as earlier releases of 21 have bugs that affect this product.
+* This Release, based on Java 25, leverages the new Java Foreign Function & Memory (FFM) API [JEP 454](https://openjdk.org/jeps/454).
+* We recommend Eclipse Adoptium/Temurin 25.0.0+36-LTS or later as earlier releases of 25 have bugs that affect this product.
* This component is not designed as a Java Module, so the Jar file should be part of the application classpath.
## Build Instructions
@@ -83,7 +83,6 @@ __NOTES:__
As a result, the directory elements of the full absolute path of the target installation directory must qualify as Java identifiers.
In other words, the directory elements must not have any space characters (or non-Java identifier characters) in any of the path elements. This is required by the Oracle Java Specification in order to ensure location-independent access to resources:
[See Oracle Location-Independent Access to Resources](https://docs.oracle.com/javase/8/docs/technotes/guides/lang/resources.html)
-* The compile command line must contain the JVM flag *--enable-preview* (see [JEP 442](https://openjdk.org/jeps/442)).
#### Build & Test Dependencies
diff --git a/pom.xml b/pom.xml
index f31639a5..83204c59 100644
--- a/pom.xml
+++ b/pom.xml
@@ -82,11 +82,10 @@ under the License.
3.6.3
- 21
- --enable-preview
+ 25
${java.version}
${java.version}
- -Xmx4g -Duser.language=en -Duser.country=US -Dfile.encoding=UTF-8 ${enable.preview}
+ -Xmx4g -Duser.language=en -Duser.country=US -Dfile.encoding=UTF-8
UTF-8
${charset.encoding}
${charset.encoding}
@@ -115,7 +114,7 @@ under the License.
4.3.0
- 0.8.12
+ 0.8.13
2.18.0
@@ -154,11 +153,6 @@ under the License.
org.apache.maven.plugins
maven-compiler-plugin
${maven-compiler-plugin.version}
-
-
- ${enable.preview}
-
-
@@ -182,7 +176,7 @@ under the License.
- ${java.version},
+ ${java.version}
[${maven.version},4.0.0)
@@ -229,9 +223,6 @@ under the License.
org.apache.datasketches.memory/internal
public
-
- ${enable.preview}
-
@@ -276,7 +267,6 @@ under the License.
maven-surefire-plugin
${maven-surefire-failsafe-plugins.version}
- ${enable.preview}
false
false
true
@@ -431,6 +421,14 @@ under the License.
pl.project13.maven
git-commit-id-plugin
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 25
+ 25
+
+
diff --git a/src/main/java/org/apache/datasketches/memory/internal/ResourceImpl.java b/src/main/java/org/apache/datasketches/memory/internal/ResourceImpl.java
index f2e271f2..4304d566 100644
--- a/src/main/java/org/apache/datasketches/memory/internal/ResourceImpl.java
+++ b/src/main/java/org/apache/datasketches/memory/internal/ResourceImpl.java
@@ -19,7 +19,10 @@
package org.apache.datasketches.memory.internal;
-import static org.apache.datasketches.memory.internal.Util.characterPad;
+import org.apache.datasketches.memory.MemoryRequestServer;
+import org.apache.datasketches.memory.Resource;
+import org.apache.datasketches.memory.WritableBuffer;
+import org.apache.datasketches.memory.WritableMemory;
import java.lang.foreign.Arena;
import java.lang.foreign.MemorySegment;
@@ -29,10 +32,7 @@
import java.nio.ByteOrder;
import java.util.Objects;
-import org.apache.datasketches.memory.MemoryRequestServer;
-import org.apache.datasketches.memory.Resource;
-import org.apache.datasketches.memory.WritableBuffer;
-import org.apache.datasketches.memory.WritableMemory;
+import static org.apache.datasketches.memory.internal.Util.characterPad;
/**
* Implements the root Resource methods plus some common static variables and check methods.
@@ -387,7 +387,7 @@ public MemorySegment getMemorySegment() {
@Override
public final long getRelativeOffset(final Resource that) {
final ResourceImpl that2 = (ResourceImpl) that;
- return this.seg.segmentOffset(that2.seg);
+ return that2.seg.address() - this.seg.address();
}
@Override
diff --git a/src/main/java/org/apache/datasketches/memory/internal/WritableMemoryImpl.java b/src/main/java/org/apache/datasketches/memory/internal/WritableMemoryImpl.java
index 339c434b..5de73cc6 100644
--- a/src/main/java/org/apache/datasketches/memory/internal/WritableMemoryImpl.java
+++ b/src/main/java/org/apache/datasketches/memory/internal/WritableMemoryImpl.java
@@ -19,8 +19,7 @@
package org.apache.datasketches.memory.internal;
-import static java.nio.channels.FileChannel.MapMode.READ_ONLY;
-import static java.nio.channels.FileChannel.MapMode.READ_WRITE;
+import org.apache.datasketches.memory.*;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -36,11 +35,8 @@
import java.util.Objects;
import java.util.Set;
-import org.apache.datasketches.memory.Buffer;
-import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.MemoryRequestServer;
-import org.apache.datasketches.memory.WritableBuffer;
-import org.apache.datasketches.memory.WritableMemory;
+import static java.nio.channels.FileChannel.MapMode.READ_ONLY;
+import static java.nio.channels.FileChannel.MapMode.READ_WRITE;
/**
* Common base of native-ordered and non-native-ordered {@link WritableMemory} implementations.
@@ -165,7 +161,7 @@ public static WritableMemory wrapByteBuffer(
* @throws IllegalArgumentException if file is not readable.
* @throws IOException if mapping is not successful.
*/
- @SuppressWarnings({"resource","preview"})
+ @SuppressWarnings("resource")
public static WritableMemory wrapMap(
final File file,
final long fileOffsetBytes,
diff --git a/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java b/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java
index 07c6f108..a356477b 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java
@@ -23,20 +23,17 @@
package org.apache.datasketches.memory.internal;
-import static org.apache.datasketches.memory.internal.ResourceImpl.LS;
-import static org.apache.datasketches.memory.internal.Util.getResourceFile;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
+import org.apache.datasketches.memory.Memory;
+import org.testng.annotations.Test;
import java.io.File;
import java.io.IOException;
import java.lang.foreign.Arena;
import java.nio.ByteOrder;
-import org.apache.datasketches.memory.Memory;
-import org.testng.annotations.Test;
+import static org.apache.datasketches.memory.internal.ResourceImpl.LS;
+import static org.apache.datasketches.memory.internal.Util.getResourceFile;
+import static org.testng.Assert.*;
public class AllocateDirectMapMemoryTest {
@@ -50,6 +47,7 @@ public void simpleMap() throws IOException {
} //The Try-With-Resources will throw since it is already closed
catch (IllegalStateException e) { /* OK */ }
if (mem != null) { assertFalse(mem.isAlive()); }
+ UtilTest.setGettysburgAddressFileToReadWrite();
}
@Test
diff --git a/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectWritableMapMemoryTest.java b/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectWritableMapMemoryTest.java
index 38e0fc15..31981d6e 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectWritableMapMemoryTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectWritableMapMemoryTest.java
@@ -23,38 +23,38 @@
package org.apache.datasketches.memory.internal;
-import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.apache.datasketches.memory.internal.ResourceImpl.LS;
-import static org.apache.datasketches.memory.internal.ResourceImpl.NON_NATIVE_BYTE_ORDER;
-import static org.apache.datasketches.memory.internal.Util.getResourceFile;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
-import java.lang.foreign.Arena;
-import java.nio.ByteOrder;
-import java.nio.file.InvalidPathException;
-
import org.apache.datasketches.memory.Memory;
import org.apache.datasketches.memory.MemoryRequestServer;
import org.apache.datasketches.memory.Resource;
import org.apache.datasketches.memory.WritableMemory;
+import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
+import java.io.*;
+import java.lang.foreign.Arena;
+import java.nio.ByteOrder;
+import java.nio.file.InvalidPathException;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.apache.datasketches.memory.internal.ResourceImpl.LS;
+import static org.apache.datasketches.memory.internal.ResourceImpl.NON_NATIVE_BYTE_ORDER;
+import static org.apache.datasketches.memory.internal.Util.getResourceFile;
+import static org.testng.Assert.*;
+
public class AllocateDirectWritableMapMemoryTest {
private final MemoryRequestServer memReqSvr = Resource.defaultMemReqSvr;
@BeforeClass
- public void setReadOnly() throws IOException {
+ public void setReadOnly() {
UtilTest.setGettysburgAddressFileToReadOnly();
}
+ @AfterClass
+ public void clearReadOnly() {
+ UtilTest.setGettysburgAddressFileToReadWrite();
+ }
+
@Test
public void simpleMap() throws IllegalArgumentException, InvalidPathException, IllegalStateException,
UnsupportedOperationException, IOException, SecurityException {
diff --git a/src/test/java/org/apache/datasketches/memory/internal/Buffer2Test.java b/src/test/java/org/apache/datasketches/memory/internal/Buffer2Test.java
index fff8a718..b3c26cd6 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/Buffer2Test.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/Buffer2Test.java
@@ -19,21 +19,14 @@
package org.apache.datasketches.memory.internal;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
+import org.apache.datasketches.memory.*;
+import org.testng.annotations.Test;
import java.lang.foreign.Arena;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
-import org.apache.datasketches.memory.Resource;
-import org.apache.datasketches.memory.Buffer;
-import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableBuffer;
-import org.apache.datasketches.memory.WritableMemory;
-import org.testng.annotations.Test;
+import static org.testng.Assert.*;
public class Buffer2Test {
@@ -352,7 +345,7 @@ public void testAsMemory() {
}
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testROByteBuffer() {
byte[] arr = new byte[64];
ByteBuffer roBB = ByteBuffer.wrap(arr).asReadOnlyBuffer();
@@ -361,7 +354,7 @@ public void testROByteBuffer() {
wbuf.putByte(0, (byte) 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testROByteBuffer2() {
byte[] arr = new byte[64];
ByteBuffer roBB = ByteBuffer.wrap(arr).asReadOnlyBuffer();
@@ -370,7 +363,7 @@ public void testROByteBuffer2() {
wbuf.putByteArray(arr, 0, 64);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testIllegalFill() {
byte[] arr = new byte[64];
ByteBuffer roBB = ByteBuffer.wrap(arr).asReadOnlyBuffer();
diff --git a/src/test/java/org/apache/datasketches/memory/internal/BufferReadWriteSafetyTest.java b/src/test/java/org/apache/datasketches/memory/internal/BufferReadWriteSafetyTest.java
index 4e375d6b..0e781207 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/BufferReadWriteSafetyTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/BufferReadWriteSafetyTest.java
@@ -19,140 +19,140 @@
package org.apache.datasketches.memory.internal;
-import java.nio.ByteBuffer;
-
import org.apache.datasketches.memory.Buffer;
import org.apache.datasketches.memory.WritableBuffer;
import org.apache.datasketches.memory.WritableMemory;
import org.testng.annotations.Test;
+import java.nio.ByteBuffer;
+
public class BufferReadWriteSafetyTest {
// Test various operations with read-only Buffer
private final WritableBuffer buf = (WritableBuffer) Buffer.wrap(ByteBuffer.allocate(8));
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutByte() {
buf.setPosition(0);
buf.putByte(0, (byte) 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutBytePositional() {
buf.setPosition(0);
buf.putByte((byte) 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutShort() {
buf.setPosition(0);
buf.putShort(0, (short) 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutShortPositional() {
buf.setPosition(0);
buf.putShort((short) 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutChar() {
buf.setPosition(0);
buf.putChar(0, (char) 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutCharPositional() {
buf.setPosition(0);
buf.putChar((char) 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutInt() {
buf.setPosition(0);
buf.putInt(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutIntPositional() {
buf.setPosition(0);
buf.putInt(1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutLong() {
buf.setPosition(0);
buf.putLong(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutLongPositional() {
buf.setPosition(0);
buf.putLong(1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutFloat() {
buf.setPosition(0);
buf.putFloat(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutFloatPositional() {
buf.setPosition(0);
buf.putFloat(1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutDouble() {
buf.setPosition(0);
buf.putDouble(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutDoublePositional() {
buf.setPosition(0);
buf.putDouble(1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutByteArray() {
buf.setPosition(0);
buf.putByteArray(new byte[] {1}, 0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutShortArray() {
buf.setPosition(0);
buf.putShortArray(new short[] {1}, 0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutCharArray() {
buf.setPosition(0);
buf.putCharArray(new char[] {1}, 0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutIntArray() {
buf.setPosition(0);
buf.putIntArray(new int[] {1}, 0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutLongArray() {
buf.setPosition(0);
buf.putLongArray(new long[] {1}, 0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutFloatArray() {
buf.setPosition(0);
buf.putFloatArray(new float[] {1}, 0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testDoubleByteArray() {
buf.setPosition(0);
buf.putDoubleArray(new double[] {1}, 0, 1);
@@ -160,19 +160,19 @@ public void testDoubleByteArray() {
// Now, test that various ways to obtain a read-only buffer produce a read-only buffer indeed
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testWritableMemoryAsBuffer() {
WritableBuffer buf1 = (WritableBuffer) WritableMemory.allocate(8).asBuffer();
buf1.putInt(1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testWritableBufferRegion() {
WritableBuffer buf1 = (WritableBuffer) WritableMemory.allocate(8).asWritableBuffer().region();
buf1.putInt(1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testWritableBufferDuplicate() {
WritableBuffer buf1 = (WritableBuffer) WritableMemory.allocate(8).asWritableBuffer().duplicate();
buf1.putInt(1);
diff --git a/src/test/java/org/apache/datasketches/memory/internal/MemoryReadWriteSafetyTest.java b/src/test/java/org/apache/datasketches/memory/internal/MemoryReadWriteSafetyTest.java
index 25a54eb1..cdcedf2b 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/MemoryReadWriteSafetyTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/MemoryReadWriteSafetyTest.java
@@ -19,6 +19,11 @@
package org.apache.datasketches.memory.internal;
+import org.apache.datasketches.memory.Memory;
+import org.apache.datasketches.memory.WritableMemory;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
@@ -26,13 +31,6 @@
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
-import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableMemory;
-import org.testng.annotations.Test;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-
public class MemoryReadWriteSafetyTest {
// Test various operations with read-only Memory
@@ -49,145 +47,145 @@ public void allocate() {
// mem.close();
// }
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutByte() {
mem.putByte(0, (byte) 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutShort() {
mem.putShort(0, (short) 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutChar() {
mem.putChar(0, (char) 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutInt() {
mem.putInt(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutLong() {
mem.putLong(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutFloat() {
mem.putFloat(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutDouble() {
mem.putDouble(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutByteArray() {
mem.putByteArray(0, new byte[] {1}, 0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutShortArray() {
mem.putShortArray(0, new short[] {1}, 0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutCharArray() {
mem.putCharArray(0, new char[] {1}, 0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutIntArray() {
mem.putIntArray(0, new int[] {1}, 0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutLongArray() {
mem.putLongArray(0, new long[] {1}, 0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testPutFloatArray() {
mem.putFloatArray(0, new float[] {1}, 0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testDoubleByteArray() {
mem.putDoubleArray(0, new double[] {1}, 0, 1);
}
// Now, test that various ways to obtain a read-only memory produce a read-only memory indeed
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testWritableMemoryRegion() {
WritableMemory mem1 = (WritableMemory) WritableMemory.allocate(8).region(0, 8);
mem1.putInt(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testByteArrayWrap() {
WritableMemory mem1 = (WritableMemory) Memory.wrap(new byte[8]);
mem1.putInt(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testByteArrayWrapWithBO() {
WritableMemory mem1 = (WritableMemory) Memory.wrap(new byte[8], ByteOrder.nativeOrder());
mem1.putInt(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testByteArrayWrapWithOffsetsAndBO() {
WritableMemory mem1 = (WritableMemory) Memory.wrap(new byte[8], 0, 4, ByteOrder.nativeOrder());
mem1.putInt(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testShortArrayWrap() {
WritableMemory mem1 = (WritableMemory) Memory.wrap(new short[8]);
mem1.putInt(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testCharArrayWrap() {
WritableMemory mem1 = (WritableMemory) Memory.wrap(new char[8]);
mem1.putInt(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testIntArrayWrap() {
WritableMemory mem1 = (WritableMemory) Memory.wrap(new int[8]);
mem1.putInt(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testLongArrayWrap() {
WritableMemory mem1 = (WritableMemory) Memory.wrap(new long[8]);
mem1.putInt(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testFloatArrayWrap() {
WritableMemory mem1 = (WritableMemory) Memory.wrap(new float[8]);
mem1.putInt(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testDoubleArrayWrap() {
WritableMemory mem1 = (WritableMemory) Memory.wrap(new double[8]);
mem1.putInt(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testByteBufferWrap() {
WritableMemory mem1 = (WritableMemory) Memory.wrap(ByteBuffer.allocate(8));
mem1.putInt(0, 1);
}
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testMapFile() throws Exception {
File tempFile = File.createTempFile("test", null);
tempFile.deleteOnExit();
@@ -202,7 +200,7 @@ public void testMapFile() throws Exception {
}
@SuppressWarnings("resource")
- @Test(expectedExceptions = UnsupportedOperationException.class)
+ @Test(expectedExceptions = { IllegalArgumentException.class, UnsupportedOperationException.class })
public void testMapFileWithOffsetsAndBO() throws Exception {
File tempFile = File.createTempFile("test", "test");
tempFile.deleteOnExit();
diff --git a/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java b/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java
index 86f8fa68..3bf8f22a 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java
@@ -23,38 +23,33 @@
package org.apache.datasketches.memory.internal;
-import static org.apache.datasketches.memory.internal.ResourceImpl.LS;
-import static org.apache.datasketches.memory.internal.ResourceImpl.NATIVE_BYTE_ORDER;
-import static org.apache.datasketches.memory.internal.ResourceImpl.NON_NATIVE_BYTE_ORDER;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import java.io.IOException;
+import org.apache.datasketches.memory.*;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.testng.collections.Lists;
+
import java.lang.foreign.Arena;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.List;
-import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.MemoryRequestServer;
-import org.apache.datasketches.memory.Resource;
-import org.apache.datasketches.memory.WritableBuffer;
-import org.apache.datasketches.memory.WritableMemory;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.testng.collections.Lists;
+import static org.apache.datasketches.memory.internal.ResourceImpl.*;
+import static org.testng.Assert.*;
public class MemoryTest {
final MemoryRequestServer myMemReqSvr = Resource.defaultMemReqSvr;
@BeforeClass
- public void setReadOnly() throws IOException {
+ public void setReadOnly() {
UtilTest.setGettysburgAddressFileToReadOnly();
}
+ @AfterClass
+ public void clearReadOnly() {
+ UtilTest.setGettysburgAddressFileToReadWrite();
+ }
+
@Test
public void checkDirectRoundTrip() throws Exception {
int n = 1024; //longs
diff --git a/src/test/java/org/apache/datasketches/memory/internal/ResourceTest.java b/src/test/java/org/apache/datasketches/memory/internal/ResourceTest.java
index 5be59c85..0931960a 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/ResourceTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/ResourceTest.java
@@ -19,24 +19,14 @@
package org.apache.datasketches.memory.internal;
-import java.lang.foreign.Arena;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
-import static java.lang.foreign.ValueLayout.JAVA_BYTE;
+import org.apache.datasketches.memory.*;
+import org.testng.annotations.Test;
+import java.lang.foreign.Arena;
import java.lang.foreign.MemorySegment;
-import java.lang.foreign.ValueLayout;
-import java.lang.foreign.ValueLayout.OfByte;
import java.nio.ByteOrder;
-import org.apache.datasketches.memory.Buffer;
-import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.MemoryRequestServer;
-import org.apache.datasketches.memory.Resource;
-import org.apache.datasketches.memory.WritableMemory;
-import org.testng.annotations.Test;
+import static org.testng.Assert.*;
public class ResourceTest {
private static final MemoryRequestServer memReqSvr = Resource.defaultMemReqSvr;
@@ -208,8 +198,7 @@ public void checkParseJavaVersion() {
ResourceImpl.parseJavaVersion("20");
fail();
} catch (IllegalArgumentException e) { }
- ResourceImpl.parseJavaVersion("21");
- ResourceImpl.parseJavaVersion("22");
+ ResourceImpl.parseJavaVersion("25");
}
@Test
diff --git a/src/test/java/org/apache/datasketches/memory/internal/UtilTest.java b/src/test/java/org/apache/datasketches/memory/internal/UtilTest.java
index de276e9f..02f531d4 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/UtilTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/UtilTest.java
@@ -23,9 +23,7 @@
package org.apache.datasketches.memory.internal;
-import static java.nio.file.Files.readString;
-import static org.apache.datasketches.memory.internal.Util.getResourceFile;
-import static org.testng.Assert.assertTrue;
+import org.testng.annotations.Test;
import java.io.File;
import java.io.IOException;
@@ -35,7 +33,9 @@
import java.nio.file.attribute.PosixFileAttributes;
import java.nio.file.attribute.PosixFilePermissions;
-import org.testng.annotations.Test;
+import static java.nio.file.Files.readString;
+import static org.apache.datasketches.memory.internal.Util.getResourceFile;
+import static org.testng.Assert.assertTrue;
public class UtilTest {
@@ -56,6 +56,12 @@ static final File setGettysburgAddressFileToReadOnly() {
return file;
}
+ static final File setGettysburgAddressFileToReadWrite() {
+ File file = getResourceFile("GettysburgAddress.txt");
+ if (!file.setWritable(true)) { throw new IllegalStateException("File could not set Read-Only"); }
+ return file;
+ }
+
//Resources
@Test
diff --git a/src/test/java/org/apache/datasketches/memory/internal/WritableMemoryTest.java b/src/test/java/org/apache/datasketches/memory/internal/WritableMemoryTest.java
index 0305f8cf..1c4dac95 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/WritableMemoryTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/WritableMemoryTest.java
@@ -19,17 +19,15 @@
package org.apache.datasketches.memory.internal;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
+import org.apache.datasketches.memory.Memory;
+import org.apache.datasketches.memory.WritableMemory;
+import org.testng.annotations.Test;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.concurrent.ThreadLocalRandom;
-import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableMemory;
-import org.testng.annotations.Test;
+import static org.testng.Assert.*;
public class WritableMemoryTest {
@@ -166,7 +164,8 @@ public void checkOwnerClientCase() {
Memory client2 = owner.region(0, owner.getCapacity()); //create a readOnly region (MemorySegment) from owner
try {
((WritableMemory) client2).putInt(0, 3); //now you cannot make client2 writable
- } catch (UnsupportedOperationException e) { }
+ }
+ catch (UnsupportedOperationException | IllegalArgumentException e) { }
}
@Test