Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test x #1641

Closed
Closed

Test x #1641

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Features

Bug Fixes
---------
* [#1618](https://github.com/java-native-access/jna/issues/1618): Fix calls to jnidispatch on Android with 16KB page size - [@Thomyrock](https://github.com/Thomyrock)

Release 5.15.0
==============
Expand Down
35 changes: 25 additions & 10 deletions contrib/platform/test/com/sun/jna/platform/linux/UdevTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
import com.sun.jna.platform.linux.Udev.UdevDevice;
import com.sun.jna.platform.linux.Udev.UdevEnumerate;
import com.sun.jna.platform.linux.Udev.UdevListEntry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import junit.framework.TestCase;

Expand All @@ -37,6 +39,8 @@
*/
public class UdevTest extends TestCase {

private static final Pattern SCSI_DISK_PATTERN = Pattern.compile(".*/sd[a-z](\\d+)$");

@Test
public void testEnumerateDevices() {
// Start with the context object
Expand Down Expand Up @@ -74,29 +78,40 @@ public void testEnumerateDevices() {
// No additional reference is acquired from getParent
if (parent != null && parent2 != null) {
// Devnode should match same parent without restricting to block and disk
assertEquals("Partition parent should match with and without filter",
assertEquals(String.format(
"Partition parent should match with and without filter (%s)",
devnode
),
parent.getDevnode(), parent2.getDevnode());
// Save the size and major
parentSize = parent.getSysattrValue("size");
parentMajor = parent.getPropertyValue("MAJOR");
}
}
String size = device.getSysattrValue("size");
assertTrue("Size must be nonnegative", 0 <= Long.parseLong(size));
assertTrue(String.format("Size must be nonnegative (%s)", devnode), 0 <= Long.parseLong(size));
if (parentSize != null) {
assertTrue("Partition can't be bigger than its disk",
assertTrue(String.format("Partition can't be bigger than its disk (%s)", devnode),
Long.parseLong(size) <= Long.parseLong(parentSize));
}
String major = device.getPropertyValue("MAJOR");
assertTrue("Major value must be nonnegative", 0 <= Long.parseLong(major));
assertTrue(String.format("Major value must be nonnegative (%s)", devnode), 0 <= Long.parseLong(major));
if (parentMajor != null) {
assertEquals("Partition and its parent disk should have same major number", major,
parentMajor);
// For scsi disks only the first 15 Partitions have the
// same major as their disk
Matcher scsiMatcher = SCSI_DISK_PATTERN.matcher(devnode);
boolean scsiDiskDynamicMinor = scsiMatcher.matches() && Integer.parseInt(scsiMatcher.group(1)) > 15;
if(! scsiDiskDynamicMinor) {
assertEquals(
String.format("Partition and its parent disk should have same major number (%s)", devnode),
major, parentMajor
);
}
}
assertEquals("DevType mismatch", devType, device.getDevtype());
assertEquals("Subsystem mismatch", "block", device.getSubsystem());
assertEquals("Syspath mismatch", syspath, device.getSyspath());
assertTrue("Syspath should end with name", syspath.endsWith(device.getSysname()));
assertEquals(String.format("DevType mismatch (%s)", devnode), devType, device.getDevtype());
assertEquals(String.format("Subsystem mismatch (%s)", devnode), "block", device.getSubsystem());
assertEquals(String.format("Syspath mismatch (%s)", devnode), syspath, device.getSyspath());
assertTrue(String.format("Syspath should end with name (%s)", devnode), syspath.endsWith(device.getSysname()));
}
} finally {
// Release the reference and iterate to the next device
Expand Down
4 changes: 2 additions & 2 deletions native/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -176,12 +176,12 @@ CPP=$(PREFIX)cpp
LD=$(CC)
RANLIB=$(PREFIX)ranlib
STRIP=$(PREFIX)strip -x
CDEFINES=-DFFI_STATIC_BUILD -DNO_JAWT -DNO_WEAK_GLOBALS -DFFI_MMAP_EXEC_WRIT=1 -DFFI_MMAP_EXEC_SELINUX=0
CDEFINES=-DFFI_STATIC_BUILD -DNO_JAWT -DNO_WEAK_GLOBALS -DFFI_MMAP_EXEC_WRIT=1 -DFFI_MMAP_EXEC_SELINUX=0 -Dmalloc_getpagesize='getpagesize()'
COPT+=-fpic -ffunction-sections -funwind-tables -fno-short-enums
JAVA_INCLUDES=
CINCLUDES+=-I"$(NDK_PLATFORM)/arch-$(AARCH)/usr/include" # -I/usr/include
LIBS=-nostdlib -L"$(NDK_PLATFORM)/arch-$(AARCH)$(ALIBDIR)/" -lgcc -lc -ldl -lm
LDFLAGS+=-Wl,-shared,-Bsymbolic -Wl,--build-id=sha1
LDFLAGS+=-Wl,-shared,-Bsymbolic -Wl,--build-id=sha1 -Wl,-z,max-page-size=16384
FFI_ENV=CPP="$(CPP)" CC="$(CC)" CFLAGS="$(COPT) $(CDEBUG) $(CINCLUDES)" CPPFLAGS="$(CDEFINES) $(CINCLUDES)" LIBS="$(LIBS)" RANLIB="$(RANLIB)"
FFI_CONFIG=--enable-static --disable-shared --with-pic=yes --host=$(HOST)
endif
Expand Down
Loading