Fork me on GitHub

Selftest

Since junixsocket supports many environments that can run Java and Unix domain sockets, it is important to verify whether junixsocket works as expected on your target environment.

junixsocket-selftest provides such a self-contained test suite, in the form of a jarfile that contains all necessary dependencies. You can run the selftest as follows:

java -jar junixsocket-selftest-X.Y.Z-jar-with-dependencies.jar

(replace X.Y.Z with your junixsocket version)

The selftest runs a series of unit tests, also including some information from your target system (such as system properties, OS version, etc.) and then summarizes the result of the selftest in the form of “PASSED”, “FAIL”, “PASSED WITH ISSUES” or “INCONCLUSIVE”.

The selftest is also able to detect common errors, such as permission errors, and add corresponding notes in plain English as part of the selftest output.

If you encounter any selftest failures, please file a bug report with the output of the selftest.

Controlling what selftest does

There are several configuration options when dealing with selftest problems, usually via setting some System properties when launching junixsocket-selftest.

For now, if you're interested in these properties, please consult the Selftest source code. In general, it is not expected that you have to set any of those.

Example output

Running the selftest should output something like this below. Please note that the output format is not guaranteed to be stable, however it can be assumed that a line with Selftest PASSED indicates success:

This program determines whether junixsocket is supported on the current platform. The final line should say whether the selftest passed or failed.

If the selftest failed, please visit https://github.com/kohlschutter/junixsocket/issues and file a new bug report with the output below.

junixsocket selftest version X.Y.Z

Git properties:

git.build.version: X.Y.Z
git.commit.id.abbrev: 6ef19b4
git.commit.id.describe: junixsocket-X.Y.Z
git.commit.id.full: 6ef19b41225c5369f1c104d45d8d85efa9b057b5
git.commit.time: 2022-10-25T22:09:40+02:00
git.dirty: false

System properties:

file.encoding: UTF-8
file.separator: /
java.class.path: junixsocket-selftest-X.Y.Z-jar-with-dependencies.jar
java.class.version: 61.0
java.home: /usr/lib/jvm/java-17-openjdk
java.io.tmpdir: /tmp
java.library.path: /usr/lib/jvm/java-17-openjdk/lib/server:/usr/lib/jvm/java-17-openjdk/lib:/usr/lib/jvm/java-17-openjdk/../lib:/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
java.runtime.name: OpenJDK Runtime Environment
java.runtime.version: 17.0.4.1+1-alpine-r0
java.specification.name: Java Platform API Specification
java.specification.vendor: Oracle Corporation
java.specification.version: 17
java.vendor: Alpine
java.vendor.url: https://alpinelinux.org/
java.vendor.url.bug: https://gitlab.alpinelinux.org/alpine/aports/issues
java.version: 17.0.4.1
java.version.date: 2022-08-12
java.vm.compressedOopsMode: 32-bit
java.vm.info: mixed mode, sharing
java.vm.name: OpenJDK 64-Bit Server VM
java.vm.specification.name: Java Virtual Machine Specification
java.vm.specification.vendor: Oracle Corporation
java.vm.specification.version: 17
java.vm.vendor: Alpine
java.vm.version: 17.0.4.1+1-alpine-r0
jdk.debug: release
line.separator: \n
native.encoding: UTF-8
os.arch: aarch64
os.name: Linux
os.version: 6.0.0-rc7
path.separator: :
sun.arch.data.model: 64
sun.boot.library.path: /usr/lib/jvm/java-17-openjdk/lib
sun.cpu.endian: little
sun.io.unicode.encoding: UnicodeLittle
sun.java.command: junixsocket-selftest-X.Y.Z-jar-with-dependencies.jar
sun.java.launcher: SUN_STANDARD
sun.jnu.encoding: UTF-8
sun.management.compiler: HotSpot 64-Bit Tiered Compilers
sun.stderr.encoding: UTF-8
user.country: US
user.dir: /home/ck
user.home: /home/ck
user.language: en
user.name: ck

BEGIN contents of file: /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.16.2
PRETTY_NAME="Alpine Linux v3.16"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues"
=END= contents of file: /etc/os-release

AFSocket.isSupported: true

AFUNIXSocket.isSupported: true

Testing "junixsocket-common"... 
Testing "junixsocket-common"... AFTIPCSocketAddressTest.testParseFail()... 
Testing "junixsocket-common"... AFTIPCSocketAddressTest.testSchemesAvailable()... 
Testing "junixsocket-common"... AFTIPCSocketAddressTest.testGeneric()... 
Testing "junixsocket-common"... AFTIPCSocketAddressTest.testSocatString()... 
Testing "junixsocket-common"... AFTIPCSocketAddressTest.testSocketURI()... 
Testing "junixsocket-common"... AFTIPCSocketAddressTest.testServiceRangeURI()... 
Testing "junixsocket-common"... AFTIPCSocketAddressTest.testServiceURI()... 
Testing "junixsocket-common"... AFUNIXSocketAddressTest.testSchemesAvailable()... 
Testing "junixsocket-common"... AFUNIXSocketAddressTest.testSocatString()... 
Testing "junixsocket-common"... AFUNIXSocketAddressTest.testURITemplateWithPortNumber()... 
Testing "junixsocket-common"... AFUNIXSocketAddressTest.testURITemplate()... 
Testing "junixsocket-common"... AFUNIXSocketAddressTest.testHttpUnix()... 
Testing "junixsocket-common"... AFUNIXSocketAddressTest.testUnixScheme()... 
Testing "junixsocket-common"... AFUNIXSocketAddressTest.testFileScheme()... 
Testing "junixsocket-common"... AFUNIXSocketAddressTest.testAbstractNamespace()... 
Testing "junixsocket-common"... AFUNIXSocketAddressTest.testParseURIandBack()... 
Testing "junixsocket-common"... AbstractNamespaceTest.testBindTrailingZeroes()... 
Testing "junixsocket-common"... AbstractNamespaceTest.testBind()... 
Testing "junixsocket-common"... AbstractNamespaceTest.testBindLongAbstractAddress()... 
Testing "junixsocket-common"... AcceptTimeoutTest.testCatchTimeout()... 
Testing "junixsocket-common"... AcceptTimeoutTest.testTimeoutAfterDelay()... 
Testing "junixsocket-common"... AcceptTimeoutTest.testAcceptWithoutBindToService()... 
Testing "junixsocket-common"... AvailableTest.testAvailableAtClient()... 
Testing "junixsocket-common"... AvailableTest.testAvailableAtServer()... 
Testing "junixsocket-common"... BufferOverflowTest.writeOverflow()... 
Testing "junixsocket-common"... BufferOverflowTest.readUpTo()... 
Testing "junixsocket-common"... BufferOverflowTest.readOutOfBounds()... 
Testing "junixsocket-common"... CancelAcceptTest.issue6test1()... 
Testing "junixsocket-common"... DatagramSocketTest.testBindConnect()... 
Testing "junixsocket-common"... DatagramSocketTest.testPeekTimeout()... 
Testing "junixsocket-common"... DatagramSocketTest.testReadTimeout()... 
Testing "junixsocket-common"... EndOfFileTest.clientWriteToSocketClosedByClient()... 
Testing "junixsocket-common"... EndOfFileTest.clientWriteToSocketClosedByServer()... 
Testing "junixsocket-common"... EndOfFileTest.bidirectionalSanity()... 
Testing "junixsocket-common"... EndOfFileTest.serverWriteToSocketClosedByClient()... 
Testing "junixsocket-common"... EndOfFileTest.serverWriteToSocketClosedByServer()... 
Testing "junixsocket-common"... EndOfFileTest.clientReadEof()... 
Testing "junixsocket-common"... EndOfFileTest.serverReadEof()... 
Testing "junixsocket-common"... FileDescriptorCastTest.testInvalidFileDescriptor()... 
Testing "junixsocket-common"... FileDescriptorCastTest.testPipe()... 
Testing "junixsocket-common"... FileDescriptorCastTest.testAvailableTypes()... 
Testing "junixsocket-common"... FileDescriptorCastTest.testStdout()... 
Testing "junixsocket-common"... FileDescriptorCastTest.testRandomAccessFile()... 
Testing "junixsocket-common"... FileDescriptorCastTest.testUnconnectedServerAsSocket()... 
Testing "junixsocket-common"... FileDescriptorCastTest.testSocketPairNative()... 
Testing "junixsocket-common"... FileDescriptorCastTest.testDatagramFileChannel()... 
Testing "junixsocket-common"... FileDescriptorCastTest.testSocketPair()... 
Testing "junixsocket-common"... FileDescriptorCastTest.testDatagramSocket()... 
Testing "junixsocket-common"... FileDescriptorCastTest.testSocketPorts()... 
Testing "junixsocket-common"... FileDescriptorCastTest.testDatagramPorts()... 
Testing "junixsocket-common"... FileDescriptorCastTest.testForkedVMRedirectStdin()... 
Testing "junixsocket-common"... FileDescriptorCastTest.testServer()... 
Testing "junixsocket-common"... FileDescriptorsTest.testNullFileDescriptorArray()... 
Testing "junixsocket-common"... FileDescriptorsTest.testNoAncillaryReceiveBuffer()... 
Testing "junixsocket-common"... FileDescriptorsTest.testSendRecvFileDescriptors()... 
Testing "junixsocket-common"... FileDescriptorsTest.testBadFileDescriptor()... 
Testing "junixsocket-common"... FileDescriptorsTest.testDatagramSocket()... 
Testing "junixsocket-common"... FileDescriptorsTest.testAncillaryReceiveBufferTooSmall()... 
Testing "junixsocket-common"... FileDescriptorsTest.testFileInputStreamPartiallyConsumed()... 
Testing "junixsocket-common"... FileDescriptorsTest.testEmptyFileDescriptorArray()... 
Testing "junixsocket-common"... FileDescriptorsTest.testFileInputStream()... 
Testing "junixsocket-common"... InetAddressTest.testFromToBytes()... 
Testing "junixsocket-common"... InetAddressTest.testHostnameString()... 
Testing "junixsocket-common"... InetAddressTest.testIsLoopbackAddress()... 
Testing "junixsocket-common"... InetAddressTest.testHostnameStringEndsWithJunixSocket()... 
Testing "junixsocket-common"... PeerCredentialsTest.testSocketsSameProcess()... 
Testing "junixsocket-common"... PeerCredentialsTest.testDatagramSocket()... 
Supported credentials:   pid uid gid additional_gids
Unsupported credentials: uuid
Testing "junixsocket-common"... PipeTest.testPipe()... 
Testing "junixsocket-common"... PipeTest.testPipeRecvHang()... 
Testing "junixsocket-common"... ReadWriteTest.testReceiveWithByteArraySendByteForByte()... 
Testing "junixsocket-common"... ReadWriteTest.testReceiveWithByteArraySendWithByteArray()... 
Testing "junixsocket-common"... ReadWriteTest.testReceiveDataByteForByteSendByteForByte()... 
Testing "junixsocket-common"... ReadWriteTest.testReceiveDataByteForByteSendWithByteArray()... 
Testing "junixsocket-common"... SelectorTest.testNonBlockingAccept()... 
Testing "junixsocket-common"... SelectorTest.testClosedSelectorSelect()... 
Testing "junixsocket-common"... SelectorTest.testClosedSelectorWakeup()... 
Testing "junixsocket-common"... SelectorTest.testCancelSelect()... 
Testing "junixsocket-common"... SelectorTest.testConnectionCloseImmediateClientDisconnect()... 
Testing "junixsocket-common"... SelectorTest.testConnectionCloseImmediateClientDisconnectKeepLooping()... 
Testing "junixsocket-common"... SelectorTest.testConnectionCloseEventualClientDisconnectKeepLooping()... 
Testing "junixsocket-common"... SelectorTest.testConnectionCloseEventualClientDisconnect()... 
Testing "junixsocket-common"... ServerSocketCloseTest.testUnblockAcceptsWithSoTimeout()... 
Testing "junixsocket-common"... ServerSocketCloseTest.testUnblockAcceptsWithoutSoTimeout()... 
Testing "junixsocket-common"... ServerSocketTest.testUnboundServerSocket()... 
Testing "junixsocket-common"... ServerSocketTest.testBindBadArguments()... 
Testing "junixsocket-common"... ServerSocketTest.testCloseable()... 
Testing "junixsocket-common"... ServerSocketTest.testSupported()... 
Testing "junixsocket-common"... SocketAddressTest.testInetAddress()... 
Testing "junixsocket-common"... SocketAddressTest.testPath()... 
Testing "junixsocket-common"... SocketAddressTest.testPort()... 
Testing "junixsocket-common"... SocketAddressTest.testEmptyAddress()... 
Testing "junixsocket-common"... SocketAddressTest.testLegacyConstructor()... 
Testing "junixsocket-common"... SocketAddressTest.testByteConstructor()... 
Testing "junixsocket-common"... SocketAddressTest.testAbstractNamespace()... 
Testing "junixsocket-common"... SocketChannelTest.testDoubleBindAddressReusable()... 
Testing "junixsocket-common"... SocketChannelTest.testDoubleBindAddressNotReusable()... 
Testing "junixsocket-common"... SocketChannelTest.testNonBlockingConnect()... 
Testing "junixsocket-common"... SocketFactoryTest.testURISchemeCeateSocketWithInvalidHostname()... 
Testing "junixsocket-common"... SocketFactoryTest.testURISchemeCeateSocketWithIllegalArguments()... 
Testing "junixsocket-common"... SocketFactoryTest.testURISchemeCeateSocketThenConnect()... 
Testing "junixsocket-common"... SocketFactoryTest.testURISchemeCeateSocketWithHostnameValidCases()... 
Testing "junixsocket-common"... SocketFactoryTest.testSystemProperty()... 
Testing "junixsocket-common"... SocketFactoryTest.testFactoryArg()... 
Testing "junixsocket-common"... SocketPairTest.testDatagramPair()... 
Testing "junixsocket-common"... SocketPairTest.testSocketPair()... 
Testing "junixsocket-common"... SocketTest.testConnectBadArguments()... 
Testing "junixsocket-common"... SocketTest.testBindBadArguments()... 
Testing "junixsocket-common"... SocketTest.testCloseable()... 
Testing "junixsocket-common"... SocketTest.testUnconnectedSocket()... 
Testing "junixsocket-common"... SocketTest.testMain()... 
org.newsclub.net.unix.AFUNIXSocket.isSupported(): true
CAPABILITY_PEER_CREDENTIALS: true
CAPABILITY_ANCILLARY_MESSAGES: true
CAPABILITY_FILE_DESCRIPTORS: true
CAPABILITY_ABSTRACT_NAMESPACE: true
CAPABILITY_UNIX_DATAGRAMS: true
CAPABILITY_NATIVE_SOCKETPAIR: true
CAPABILITY_FD_AS_REDIRECT: true
CAPABILITY_TIPC: false
CAPABILITY_UNIX_DOMAIN: true
CAPABILITY_VSOCK: true
CAPABILITY_VSOCK_DGRAM: false
CAPABILITY_ZERO_LENGTH_SEND: true
Testing "junixsocket-common"... SocketTest.testLoadedLibrary()... 
Testing "junixsocket-common"... SocketTest.testSupports()... 
Testing "junixsocket-common"... SocketTest.testVersion()... 
Testing "junixsocket-common"... SocketTest.testReceivedFileDescriptorsUnconnected()... 
Testing "junixsocket-common"... SocketTest.testSupported()... 
Testing "junixsocket-common"... SoTimeoutTest.issue14Fail()... 
Testing "junixsocket-common"... SoTimeoutTest.issue14Pass()... 
Testing "junixsocket-common"... SoTimeoutTest.testSocketTimeoutExceptionRead()... 
Testing "junixsocket-common"... SoTimeoutTest.testSocketTimeoutExceptionWrite()... 
Testing "junixsocket-common"... StandardSocketOptionsTest.testUnconnectedServerSocketOptions()... 
Testing "junixsocket-common"... StandardSocketOptionsTest.testSocketOptions()... 
Testing "junixsocket-common"... TcpNoDelayTest.testDefaultImpl()... 
Testing "junixsocket-common"... TcpNoDelayTest.testStrictImpl()... 
Testing "junixsocket-common"... ThroughputTest.testDatagramChannel()... 
Testing "junixsocket-common"... ThroughputTest.testDatagramChannelDirect()... 
Testing "junixsocket-common"... ThroughputTest.testDatagramChannelNonBlocking()... 
Testing "junixsocket-common"... ThroughputTest.testDatagramChannelNonBlockingDirect()... 
Testing "junixsocket-common"... ThroughputTest.testDatagramPacket()... 
Testing "junixsocket-common"... ThroughputTest.testSocket()... 
Testing "junixsocket-common"... ThroughputTest.testSocketChannel()... 
Testing "junixsocket-common"... ThroughputTest.testSocketChannelDirectBuffer()... 
Testing "junixsocket-common"... done
.
'-- JUnit Jupiter [OK]
  +-- AFTIPCSocketAddressTest [OK]
  | +-- testParseFail() [OK]
  | +-- testSchemesAvailable() [OK]
  | +-- testGeneric() [OK]
  | +-- testSocatString() [OK]
  | +-- testSocketURI() [OK]
  | +-- testServiceRangeURI() [OK]
  | '-- testServiceURI() [OK]
  +-- AFUNIXSocketAddressTest [OK]
  | +-- testSchemesAvailable() [OK]
  | +-- testSocatString() [OK]
  | +-- testURITemplateWithPortNumber() [OK]
  | +-- testURITemplate() [OK]
  | +-- testHttpUnix() [OK]
  | +-- testUnixScheme() [OK]
  | +-- testFileScheme() [OK]
  | +-- testAbstractNamespace() [OK]
  | '-- testParseURIandBack() [OK]
  +-- AbstractNamespaceTest [OK]
  | +-- testBindTrailingZeroes() [OK]
  | +-- testBind() [OK]
  | '-- testBindLongAbstractAddress() [OK]
  +-- AcceptTimeoutTest [OK]
  | +-- testCatchTimeout() [OK]
  | +-- testTimeoutAfterDelay() [OK]
  | '-- testAcceptWithoutBindToService() [OK]
  +-- AvailableTest [OK]
  | +-- testAvailableAtClient() [OK]
  | '-- testAvailableAtServer() [OK]
  +-- BufferOverflowTest [OK]
  | +-- writeOverflow() [OK]
  | +-- readUpTo() [OK]
  | '-- readOutOfBounds() [OK]
  +-- CancelAcceptTest [OK]
  | '-- issue6test1() [OK]
  +-- DatagramSocketTest [OK]
  | +-- testBindConnect() [OK]
  | +-- testPeekTimeout() [OK]
  | '-- testReadTimeout() [OK]
  +-- EndOfFileTest [OK]
  | +-- clientWriteToSocketClosedByClient() [OK]
  | +-- clientWriteToSocketClosedByServer() [OK]
  | +-- bidirectionalSanity() [OK]
  | +-- serverWriteToSocketClosedByClient() [OK]
  | +-- serverWriteToSocketClosedByServer() [OK]
  | +-- clientReadEof() [OK]
  | '-- serverReadEof() [OK]
  +-- FileDescriptorCastTest [OK]
  | +-- testInvalidFileDescriptor() [OK]
  | +-- testPipe() [OK]
  | +-- testAvailableTypes() [OK]
  | +-- testStdout() [OK]
  | '-- testRandomAccessFile() [OK]
  +-- FileDescriptorCastTest [OK]
  | +-- testUnconnectedServerAsSocket() [OK]
  | +-- testSocketPairNative() [OK]
  | +-- testDatagramFileChannel() [OK]
  | +-- testSocketPair() [OK]
  | +-- testDatagramSocket() [OK]
  | +-- testSocketPorts() [OK]
  | +-- testDatagramPorts() [OK]
  | +-- testForkedVMRedirectStdin() [OK]
  | '-- testServer() [OK]
  +-- FileDescriptorsTest [OK]
  | +-- testNullFileDescriptorArray() [OK]
  | +-- testNoAncillaryReceiveBuffer() [OK]
  | +-- testSendRecvFileDescriptors() [OK]
  | +-- testBadFileDescriptor() [OK]
  | +-- testDatagramSocket() [OK]
  | +-- testAncillaryReceiveBufferTooSmall() [OK]
  | +-- testFileInputStreamPartiallyConsumed() [OK]
  | +-- testEmptyFileDescriptorArray() [OK]
  | '-- testFileInputStream() [OK]
  +-- InetAddressTest [OK]
  | +-- testFromToBytes() [OK]
  | +-- testHostnameString() [OK]
  | +-- testIsLoopbackAddress() [OK]
  | '-- testHostnameStringEndsWithJunixSocket() [OK]
  +-- PeerCredentialsTest [OK]
  | +-- testSocketsSameProcess() [OK]
  | '-- testDatagramSocket() [OK]
  +-- PipeTest [OK]
  | +-- testPipe() [OK]
  | '-- testPipeRecvHang() [OK]
  +-- ReadWriteTest [OK]
  | +-- testReceiveWithByteArraySendByteForByte() [OK]
  | +-- testReceiveWithByteArraySendWithByteArray() [OK]
  | +-- testReceiveDataByteForByteSendByteForByte() [OK]
  | '-- testReceiveDataByteForByteSendWithByteArray() [OK]
  +-- SelectorTest [OK]
  | +-- testNonBlockingAccept() [OK]
  | +-- testClosedSelectorSelect() [OK]
  | +-- testClosedSelectorWakeup() [OK]
  | +-- testCancelSelect() [OK]
  | +-- testConnectionCloseImmediateClientDisconnect() [OK]
  | +-- testConnectionCloseImmediateClientDisconnectKeepLooping() [OK]
  | +-- testConnectionCloseEventualClientDisconnectKeepLooping() [OK]
  | '-- testConnectionCloseEventualClientDisconnect() [OK]
  +-- ServerSocketCloseTest [OK]
  | +-- testUnblockAcceptsWithSoTimeout() [OK]
  | '-- testUnblockAcceptsWithoutSoTimeout() [OK]
  +-- ServerSocketTest [OK]
  | +-- testUnboundServerSocket() [OK]
  | +-- testBindBadArguments() [OK]
  | +-- testCloseable() [OK]
  | '-- testSupported() [OK]
  +-- SocketAddressTest [OK]
  | +-- testInetAddress() [OK]
  | +-- testPath() [OK]
  | +-- testPort() [OK]
  | +-- testEmptyAddress() [OK]
  | +-- testLegacyConstructor() [OK]
  | +-- testByteConstructor() [OK]
  | '-- testAbstractNamespace() [OK]
  +-- SocketChannelTest [OK]
  | +-- testDoubleBindAddressReusable() [OK]
  | +-- testDoubleBindAddressNotReusable() [OK]
  | '-- testNonBlockingConnect() [OK]
  +-- SocketFactoryTest [OK]
  | +-- testURISchemeCeateSocketWithInvalidHostname() [OK]
  | +-- testURISchemeCeateSocketWithIllegalArguments() [OK]
  | +-- testURISchemeCeateSocketThenConnect() [OK]
  | +-- testURISchemeCeateSocketWithHostnameValidCases() [OK]
  | +-- testSystemProperty() [OK]
  | '-- testFactoryArg() [OK]
  +-- SocketPairTest [OK]
  | +-- testDatagramPair() [OK]
  | '-- testSocketPair() [OK]
  +-- SocketTest [OK]
  | +-- testConnectBadArguments() [OK]
  | +-- testBindBadArguments() [OK]
  | +-- testCloseable() [OK]
  | +-- testUnconnectedSocket() [OK]
  | +-- testMain() [OK]
  | +-- testLoadedLibrary() [OK]
  | +-- testSupports() [OK]
  | +-- testVersion() [OK]
  | +-- testReceivedFileDescriptorsUnconnected() [OK]
  | '-- testSupported() [OK]
  +-- SoTimeoutTest [OK]
  | +-- issue14Fail() [OK]
  | +-- issue14Pass() [OK]
  | +-- testSocketTimeoutExceptionRead() [OK]
  | '-- testSocketTimeoutExceptionWrite() [OK]
  +-- StandardSocketOptionsTest [OK]
  | +-- testUnconnectedServerSocketOptions() [OK]
  | '-- testSocketOptions() [OK]
  +-- TcpNoDelayTest [OK]
  | +-- testDefaultImpl() [OK]
  | '-- testStrictImpl() [OK]
  '-- ThroughputTest [OK]
    +-- testDatagramChannel() [OK]
    +-- testDatagramChannelDirect() [OK]
    +-- testDatagramChannelNonBlocking() [OK]
    +-- testDatagramChannelNonBlockingDirect() [OK]
    +-- testDatagramPacket() [OK]
    +-- testSocket() [OK]
    +-- testSocketChannel() [OK]
    '-- testSocketChannelDirectBuffer() [OK]

Test run finished after 9482 ms
[        29 containers found      ]
[         0 containers skipped    ]
[        29 containers started    ]
[         0 containers aborted    ]
[        29 containers successful ]
[         0 containers failed     ]
[       131 tests found           ]
[         0 tests skipped         ]
[       131 tests started         ]
[         0 tests aborted         ]
[       131 tests successful      ]
[         0 tests failed          ]

Testing "junixsocket-tipc"... 
Testing "junixsocket-tipc"... done
.
'-- JUnit Jupiter [OK]
  +-- AcceptTimeoutTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- AFTIPCTopologyWatcherTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- AncillaryMessageTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- AvailableTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- BufferOverflowTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- CancelAcceptTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- DatagramSocketTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- EndOfFileTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- ReadWriteTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- SelectorTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- ServerSocketCloseTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- ServerSocketTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- SocketChannelTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- SocketOptionsTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- SocketPairTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- SocketTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- SoTimeoutTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- StandardSocketOptionsTest [S] Missing capabilities: [CAPABILITY_TIPC]
  +-- TcpNoDelayTest [S] Missing capabilities: [CAPABILITY_TIPC]
  '-- ThroughputTest [S] Missing capabilities: [CAPABILITY_TIPC]

Test run finished after 100 ms
[        21 containers found      ]
[        20 containers skipped    ]
[         1 containers started    ]
[         0 containers aborted    ]
[         1 containers successful ]
[         0 containers failed     ]
[        80 tests found           ]
[        80 tests skipped         ]
[         0 tests started         ]
[         0 tests aborted         ]
[         0 tests successful      ]
[         0 tests failed          ]

Testing "junixsocket-vsock"... 
Testing "junixsocket-vsock"... AFVSOCKExtensionsTest.testGetLocalID()... 
Local CID: 2
Testing "junixsocket-vsock"... AcceptTimeoutTest.testCatchTimeout()... 
Testing "junixsocket-vsock"... AcceptTimeoutTest.testAcceptWithoutBindToService()... 
Testing "junixsocket-vsock"... AcceptTimeoutTest.testTimeoutAfterDelay()... 
Testing "junixsocket-vsock"... AvailableTest.testAvailableAtClient()... 
Testing "junixsocket-vsock"... AvailableTest.testAvailableAtServer()... 
Testing "junixsocket-vsock"... BufferOverflowTest.writeOverflow()... 
Testing "junixsocket-vsock"... BufferOverflowTest.readUpTo()... 
Testing "junixsocket-vsock"... BufferOverflowTest.readOutOfBounds()... 
Testing "junixsocket-vsock"... CancelAcceptTest.issue6test1()... 
Testing "junixsocket-vsock"... EndOfFileTest.clientWriteToSocketClosedByClient()... 
Testing "junixsocket-vsock"... EndOfFileTest.clientWriteToSocketClosedByServer()... 
Testing "junixsocket-vsock"... EndOfFileTest.bidirectionalSanity()... 
Testing "junixsocket-vsock"... EndOfFileTest.serverWriteToSocketClosedByClient()... 
Testing "junixsocket-vsock"... EndOfFileTest.serverWriteToSocketClosedByServer()... 
Testing "junixsocket-vsock"... EndOfFileTest.clientReadEof()... 
Testing "junixsocket-vsock"... EndOfFileTest.serverReadEof()... 
Testing "junixsocket-vsock"... ReadWriteTest.testReceiveWithByteArraySendByteForByte()... 
Testing "junixsocket-vsock"... ReadWriteTest.testReceiveWithByteArraySendWithByteArray()... 
Testing "junixsocket-vsock"... ReadWriteTest.testReceiveDataByteForByteSendByteForByte()... 
Testing "junixsocket-vsock"... ReadWriteTest.testReceiveDataByteForByteSendWithByteArray()... 
Testing "junixsocket-vsock"... SelectorTest.testClosedSelectorSelect()... 
Testing "junixsocket-vsock"... SelectorTest.testClosedSelectorWakeup()... 
Testing "junixsocket-vsock"... SelectorTest.testCancelSelect()... 
Testing "junixsocket-vsock"... SelectorTest.testConnectionCloseImmediateClientDisconnect()... 
Testing "junixsocket-vsock"... SelectorTest.testConnectionCloseImmediateClientDisconnectKeepLooping()... 
Testing "junixsocket-vsock"... SelectorTest.testConnectionCloseEventualClientDisconnectKeepLooping()... 
Testing "junixsocket-vsock"... SelectorTest.testConnectionCloseEventualClientDisconnect()... 
Testing "junixsocket-vsock"... SelectorTest.testNonBlockingAccept()... 
Testing "junixsocket-vsock"... ServerSocketCloseTest.testUnblockAcceptsWithSoTimeout()... 
Testing "junixsocket-vsock"... ServerSocketCloseTest.testUnblockAcceptsWithoutSoTimeout()... 
Testing "junixsocket-vsock"... ServerSocketTest.testUnboundServerSocket()... 
Testing "junixsocket-vsock"... ServerSocketTest.testBindBadArguments()... 
Testing "junixsocket-vsock"... ServerSocketTest.testCloseable()... 
Testing "junixsocket-vsock"... ServerSocketTest.testSupported()... 
Testing "junixsocket-vsock"... SocketChannelTest.testDoubleBindAddressReusable()... 
Testing "junixsocket-vsock"... SocketChannelTest.testDoubleBindAddressNotReusable()... 
Testing "junixsocket-vsock"... SocketChannelTest.testNonBlockingConnect()... 
Testing "junixsocket-vsock"... SocketPairTest.testDatagramPair()... 
Testing "junixsocket-vsock"... SocketPairTest.testSocketPair()... 
Testing "junixsocket-vsock"... SocketTest.testConnectBadArguments()... 
Testing "junixsocket-vsock"... SocketTest.testBindBadArguments()... 
Testing "junixsocket-vsock"... SocketTest.testCloseable()... 
Testing "junixsocket-vsock"... SocketTest.testUnconnectedSocket()... 
Testing "junixsocket-vsock"... SocketTest.testMain()... 
org.newsclub.net.unix.vsock.AFVSOCKSocket.isSupported(): true
Testing "junixsocket-vsock"... SocketTest.testLoadedLibrary()... 
Testing "junixsocket-vsock"... SocketTest.testVersion()... 
Testing "junixsocket-vsock"... SocketTest.testSupported()... 
Testing "junixsocket-vsock"... SoTimeoutTest.issue14Fail()... 
Testing "junixsocket-vsock"... SoTimeoutTest.issue14Pass()... 
Testing "junixsocket-vsock"... SoTimeoutTest.testSocketTimeoutExceptionRead()... 
Testing "junixsocket-vsock"... SoTimeoutTest.testSocketTimeoutExceptionWrite()... 
Testing "junixsocket-vsock"... StandardSocketOptionsTest.testUnconnectedServerSocketOptions()... 
Testing "junixsocket-vsock"... StandardSocketOptionsTest.testSocketOptions()... 
Testing "junixsocket-vsock"... TcpNoDelayTest.testDefaultImpl()... 
Testing "junixsocket-vsock"... TcpNoDelayTest.testStrictImpl()... 
Testing "junixsocket-vsock"... ThroughputTest.testSocket()... 
Testing "junixsocket-vsock"... ThroughputTest.testSocketChannel()... 
Testing "junixsocket-vsock"... ThroughputTest.testSocketChannelDirectBuffer()... 
Testing "junixsocket-vsock"... done
.
'-- JUnit Jupiter [OK]
  +-- AFVSOCKExtensionsTest [OK]
  | '-- testGetLocalID() [OK]
  +-- AcceptTimeoutTest [OK]
  | +-- testCatchTimeout() [OK]
  | +-- testAcceptWithoutBindToService() [OK]
  | '-- testTimeoutAfterDelay() [OK]
  +-- AvailableTest [OK]
  | +-- testAvailableAtClient() [OK]
  | '-- testAvailableAtServer() [OK]
  +-- BufferOverflowTest [OK]
  | +-- writeOverflow() [OK]
  | +-- readUpTo() [OK]
  | '-- readOutOfBounds() [OK]
  +-- CancelAcceptTest [OK]
  | '-- issue6test1() [OK]
  +-- DatagramSocketTest [S] Missing capabilities: [CAPABILITY_VSOCK_DGRAM]
  +-- EndOfFileTest [OK]
  | +-- clientWriteToSocketClosedByClient() [OK]
  | +-- clientWriteToSocketClosedByServer() [OK]
  | +-- bidirectionalSanity() [OK]
  | +-- serverWriteToSocketClosedByClient() [OK]
  | +-- serverWriteToSocketClosedByServer() [OK]
  | +-- clientReadEof() [OK]
  | '-- serverReadEof() [OK]
  +-- ReadWriteTest [OK]
  | +-- testReceiveWithByteArraySendByteForByte() [OK]
  | +-- testReceiveWithByteArraySendWithByteArray() [OK]
  | +-- testReceiveDataByteForByteSendByteForByte() [OK]
  | '-- testReceiveDataByteForByteSendWithByteArray() [OK]
  +-- SelectorTest [OK]
  | +-- testClosedSelectorSelect() [OK]
  | +-- testClosedSelectorWakeup() [OK]
  | +-- testCancelSelect() [OK]
  | +-- testConnectionCloseImmediateClientDisconnect() [OK]
  | +-- testConnectionCloseImmediateClientDisconnectKeepLooping() [OK]
  | +-- testConnectionCloseEventualClientDisconnectKeepLooping() [OK]
  | +-- testConnectionCloseEventualClientDisconnect() [OK]
  | '-- testNonBlockingAccept() [OK]
  +-- ServerSocketCloseTest [OK]
  | +-- testUnblockAcceptsWithSoTimeout() [OK]
  | '-- testUnblockAcceptsWithoutSoTimeout() [OK]
  +-- ServerSocketTest [OK]
  | +-- testUnboundServerSocket() [OK]
  | +-- testBindBadArguments() [OK]
  | +-- testCloseable() [OK]
  | '-- testSupported() [OK]
  +-- SocketChannelTest [OK]
  | +-- testDoubleBindAddressReusable() [OK]
  | +-- testDoubleBindAddressNotReusable() [OK]
  | '-- testNonBlockingConnect() [OK]
  +-- SocketPairTest [OK]
  | +-- testDatagramPair() [OK]
  | '-- testSocketPair() [OK]
  +-- SocketTest [OK]
  | +-- testConnectBadArguments() [OK]
  | +-- testBindBadArguments() [OK]
  | +-- testCloseable() [OK]
  | +-- testUnconnectedSocket() [OK]
  | +-- testMain() [OK]
  | +-- testLoadedLibrary() [OK]
  | +-- testVersion() [OK]
  | '-- testSupported() [OK]
  +-- SoTimeoutTest [OK]
  | +-- issue14Fail() [OK]
  | +-- issue14Pass() [OK]
  | +-- testSocketTimeoutExceptionRead() [OK]
  | '-- testSocketTimeoutExceptionWrite() [OK]
  +-- StandardSocketOptionsTest [OK]
  | +-- testUnconnectedServerSocketOptions() [OK]
  | '-- testSocketOptions() [OK]
  +-- TcpNoDelayTest [OK]
  | +-- testDefaultImpl() [OK]
  | '-- testStrictImpl() [OK]
  '-- ThroughputTest [OK]
    +-- testDatagramChannel() [S] Missing capabilities: [CAPABILITY_VSOCK_DGRAM]
    +-- testDatagramChannelDirect() [S] Missing capabilities: [CAPABILITY_VSOCK_DGRAM]
    +-- testDatagramChannelNonBlocking() [S] Missing capabilities: [CAPABILITY_VSOCK_DGRAM]
    +-- testDatagramChannelNonBlockingDirect() [S] Missing capabilities: [CAPABILITY_VSOCK_DGRAM]
    +-- testDatagramPacket() [S] Missing capabilities: [CAPABILITY_VSOCK_DGRAM]
    +-- testSocket() [OK]
    +-- testSocketChannel() [OK]
    '-- testSocketChannelDirectBuffer() [OK]

Test run finished after 5210 ms
[        19 containers found      ]
[         1 containers skipped    ]
[        18 containers started    ]
[         0 containers aborted    ]
[        18 containers successful ]
[         0 containers failed     ]
[        67 tests found           ]
[         8 tests skipped         ]
[        59 tests started         ]
[         0 tests aborted         ]
[        59 tests successful      ]
[         0 tests failed          ]

Testing "junixsocket-rmi"... 
Testing "junixsocket-rmi"... RegistryTest.testDoubleCreateRegistry()... 
Testing "junixsocket-rmi"... RegistryTest.testExportAndBind()... 
Testing "junixsocket-rmi"... RemoteCloseableTest.testRemoteCloseableWithANotCloseableThing()... 
Testing "junixsocket-rmi"... RemoteCloseableTest.testRemoteCloseableWithACloseableThing()... 
Testing "junixsocket-rmi"... RemoteFileDescriptorTest.testReadWrite()... 
Testing "junixsocket-rmi"... RemoteFileDescriptorTest.testFindSocketFactory()... 
Testing "junixsocket-rmi"... RemoteFileDescriptorTest.testRemoteStdoutNoop()... 
Testing "junixsocket-rmi"... RemoteFileDescriptorTest.testRemoteStdout()... 
Testing "junixsocket-rmi"... RemoteFileDescriptorTest.testWriteAndReadHello()... 
Testing "junixsocket-rmi"... RemoteFileDescriptorTest.testServiceProxy()... 
Testing "junixsocket-rmi"... RMIPeerCredentialsTest.testRemotePeerCredentials()... 
Testing "junixsocket-rmi"... JunixsocketVersionTest.testVersion()... 
Testing "junixsocket-rmi"... done
.
'-- JUnit Jupiter [OK]
  +-- RegistryTest [OK]
  | +-- testDoubleCreateRegistry() [OK]
  | '-- testExportAndBind() [OK]
  +-- RemoteCloseableTest [OK]
  | +-- testRemoteCloseableWithANotCloseableThing() [OK]
  | '-- testRemoteCloseableWithACloseableThing() [OK]
  +-- RemoteFileDescriptorTest [OK]
  | +-- testReadWrite() [OK]
  | +-- testFindSocketFactory() [OK]
  | +-- testRemoteStdoutNoop() [OK]
  | +-- testRemoteStdout() [OK]
  | +-- testWriteAndReadHello() [OK]
  | '-- testServiceProxy() [OK]
  +-- RMIPeerCredentialsTest [OK]
  | '-- testRemotePeerCredentials() [OK]
  '-- JunixsocketVersionTest [OK]
    '-- testVersion() [OK]

Test run finished after 864 ms
[         6 containers found      ]
[         0 containers skipped    ]
[         6 containers started    ]
[         0 containers aborted    ]
[         6 containers successful ]
[         0 containers failed     ]
[        12 tests found           ]
[         0 tests skipped         ]
[        12 tests started         ]
[         0 tests aborted         ]
[        12 tests successful      ]
[         0 tests failed          ]

Skipping optional module: junixsocket-common.JavaInet; enable by launching with -Dselftest.enable-module.junixsocket-common.JavaInet=true

Selftest results:
PASS	junixsocket-common	131/131
PASS	junixsocket-tipc	0/80 (80 skipped)
PASS	junixsocket-vsock	59/67 (8 skipped)
PASS	junixsocket-rmi	12/12

Supported capabilities:   [CAPABILITY_PEER_CREDENTIALS, CAPABILITY_ANCILLARY_MESSAGES, CAPABILITY_FILE_DESCRIPTORS, CAPABILITY_ABSTRACT_NAMESPACE, CAPABILITY_UNIX_DATAGRAMS, CAPABILITY_NATIVE_SOCKETPAIR, CAPABILITY_FD_AS_REDIRECT, CAPABILITY_UNIX_DOMAIN, CAPABILITY_VSOCK, CAPABILITY_ZERO_LENGTH_SEND]
Unsupported capabilities: [CAPABILITY_TIPC, CAPABILITY_VSOCK_DGRAM]

Selftest PASSED