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

Migrate to Java: SocketPairFactory #225

Merged
merged 1 commit into from
May 9, 2024
Merged
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
11 changes: 4 additions & 7 deletions src/test/scala/tlschannel/AllocationTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import scala.Option;
import java.util.Optional;
import tlschannel.helpers.Loops;
import tlschannel.helpers.SocketGroups.SocketPair;
import tlschannel.helpers.SocketPairFactory;
Expand All @@ -24,12 +24,9 @@ public static void main(String[] args) {

MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();

SocketPair socketPair1 =
factory.nioNio(Option.apply(null), Option.apply(null), true, false, Option.apply(null));
SocketPair socketPair2 =
factory.nioNio(Option.apply(null), Option.apply(null), true, false, Option.apply(null));
SocketPair socketPair3 =
factory.nioNio(Option.apply(null), Option.apply(null), true, false, Option.apply(null));
SocketPair socketPair1 = factory.nioNio(Optional.empty(), Optional.empty(), true, false, Optional.empty());
SocketPair socketPair2 = factory.nioNio(Optional.empty(), Optional.empty(), true, false, Optional.empty());
SocketPair socketPair3 = factory.nioNio(Optional.empty(), Optional.empty(), true, false, Optional.empty());

// do a "warm-up" loop, in order to not count anything statically allocated
Loops.halfDuplex(socketPair1, 10000, false, false);
Expand Down
13 changes: 6 additions & 7 deletions src/test/scala/tlschannel/BlockingTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import org.junit.jupiter.api.TestFactory;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;
import scala.Option;
import tlschannel.helpers.Loops;
import tlschannel.helpers.SocketGroups.SocketPair;
import tlschannel.helpers.SocketPairFactory;
Expand Down Expand Up @@ -37,13 +36,13 @@ public Collection<DynamicTest> testHalfDuplexWireRenegotiations() {
ret.add(DynamicTest.dynamicTest(
String.format("testHalfDuplexWireRenegotiations() - size1=%d, size2=%d", size1, size2), () -> {
SocketPair socketPair = factory.nioNio(
Option.apply(null),
Option.apply(new ChunkSizeConfig(
Optional.empty(),
Optional.of(new ChunkSizeConfig(
new ChuckSizes(Optional.of(size1), Optional.of(size2)),
new ChuckSizes(Optional.of(size1), Optional.of(size2)))),
true,
false,
Option.apply(null));
Optional.empty());
Loops.halfDuplex(socketPair, dataSize, true, false);
System.out.printf("%5d -eng-> %5d -net-> %5d -eng-> %5d\n", size1, size2, size1, size2);
}));
Expand All @@ -65,13 +64,13 @@ public Collection<DynamicTest> testFullDuplex() {
ret.add(DynamicTest.dynamicTest(
String.format("testFullDuplex() - size1=%d, size2=%d", size1, size2), () -> {
SocketPair socketPair = factory.nioNio(
Option.apply(null),
Option.apply(new ChunkSizeConfig(
Optional.empty(),
Optional.of(new ChunkSizeConfig(
new ChuckSizes(Optional.of(size1), Optional.of(size2)),
new ChuckSizes(Optional.of(size1), Optional.of(size2)))),
true,
false,
Option.apply(null));
Optional.empty());
Loops.fullDuplex(socketPair, dataSize);
System.out.printf("%5d -eng-> %5d -net-> %5d -eng-> %5d\n", size1, size2, size1, size2);
}));
Expand Down
11 changes: 3 additions & 8 deletions src/test/scala/tlschannel/CipherTest.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
package tlschannel;

import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
import javax.net.ssl.SSLContext;
import org.junit.jupiter.api.DynamicTest;
import org.junit.jupiter.api.TestFactory;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;
import scala.Option;
import scala.Some;
import tlschannel.helpers.Loops;
import tlschannel.helpers.SocketGroups.SocketPair;
import tlschannel.helpers.SocketPairFactory;
Expand Down Expand Up @@ -49,7 +44,7 @@ public Collection<DynamicTest> testHalfDuplexWithRenegotiation() {
() -> {
SocketPairFactory socketFactory = new SocketPairFactory(ctxFactory.defaultContext());
SocketPair socketPair = socketFactory.nioNio(
Some.apply(cipher), Option.apply(null), true, false, Option.apply(null));
Optional.of(cipher), Optional.empty(), true, false, Optional.empty());
Loops.halfDuplex(socketPair, dataSize, protocol.compareTo("TLSv1.2") < 0, false);
String actualProtocol = socketPair
.client
Expand All @@ -76,7 +71,7 @@ public Collection<DynamicTest> testFullDuplex() {
String.format("testFullDuplex() - protocol: %s, cipher: %s", protocol, cipher), () -> {
SocketPairFactory socketFactory = new SocketPairFactory(ctxFactory.defaultContext());
SocketPair socketPair = socketFactory.nioNio(
Some.apply(cipher), Option.apply(null), true, false, Option.apply(null));
Optional.of(cipher), Optional.empty(), true, false, Optional.empty());
Loops.fullDuplex(socketPair, dataSize);
String actualProtocol = socketPair
.client
Expand Down
50 changes: 24 additions & 26 deletions src/test/scala/tlschannel/CloseTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;
import scala.Option;
import scala.Some;
import tlschannel.helpers.*;
import tlschannel.helpers.SocketPairFactory.ChuckSizes;
import tlschannel.helpers.SocketPairFactory.ChunkSizeConfig;
Expand All @@ -36,13 +34,13 @@ public class CloseTest {
@Test
void testTcpImmediateClose() throws InterruptedException, IOException {
SocketGroups.SocketPair socketPair = factory.nioNio(
Option.apply(null),
Some.apply(new ChunkSizeConfig(
Optional.empty(),
Optional.of(new ChunkSizeConfig(
new ChuckSizes(internalBufferSize, Optional.empty()),
new ChuckSizes(internalBufferSize, Optional.empty()))),
true,
false,
Option.apply(null));
Optional.empty());
SocketGroups.SocketGroup clientGroup = socketPair.client;
SocketGroups.SocketGroup serverGroup = socketPair.server;
ByteChannel client = clientGroup.external;
Expand Down Expand Up @@ -75,13 +73,13 @@ void testTcpImmediateClose() throws InterruptedException, IOException {
@Test
void testTcpClose() throws InterruptedException, IOException {
SocketGroups.SocketPair socketPair = factory.nioNio(
Option.apply(null),
Some.apply(new ChunkSizeConfig(
Optional.empty(),
Optional.of(new ChunkSizeConfig(
new ChuckSizes(internalBufferSize, Optional.empty()),
new ChuckSizes(internalBufferSize, Optional.empty()))),
true,
false,
Option.apply(null));
Optional.empty());
SocketGroups.SocketGroup clientGroup = socketPair.client;
SocketGroups.SocketGroup serverGroup = socketPair.server;
ByteChannel client = clientGroup.external;
Expand Down Expand Up @@ -119,13 +117,13 @@ void testTcpClose() throws InterruptedException, IOException {
@Test
void testClose() throws InterruptedException {
SocketGroups.SocketPair socketPair = factory.nioNio(
Option.apply(null),
Some.apply(new ChunkSizeConfig(
Optional.empty(),
Optional.of(new ChunkSizeConfig(
new ChuckSizes(internalBufferSize, Optional.empty()),
new ChuckSizes(internalBufferSize, Optional.empty()))),
true,
false,
Option.apply(null));
Optional.empty());
SocketGroups.SocketGroup clientGroup = socketPair.client;
SocketGroups.SocketGroup serverGroup = socketPair.server;
ByteChannel client = clientGroup.external;
Expand Down Expand Up @@ -163,13 +161,13 @@ void testClose() throws InterruptedException {
@Test
void testCloseAndWait() throws InterruptedException {
SocketGroups.SocketPair socketPair = factory.nioNio(
Option.apply(null),
Some.apply(new ChunkSizeConfig(
Optional.empty(),
Optional.of(new ChunkSizeConfig(
new ChuckSizes(internalBufferSize, Optional.empty()),
new ChuckSizes(internalBufferSize, Optional.empty()))),
true,
true,
Option.apply(null));
Optional.empty());
SocketGroups.SocketGroup clientGroup = socketPair.client;
SocketGroups.SocketGroup serverGroup = socketPair.server;
ByteChannel client = clientGroup.external;
Expand Down Expand Up @@ -207,13 +205,13 @@ void testCloseAndWait() throws InterruptedException {
@Test
void testCloseAndWaitForever() throws IOException, InterruptedException {
SocketGroups.SocketPair socketPair = factory.nioNio(
Option.apply(null),
Some.apply(new ChunkSizeConfig(
Optional.empty(),
Optional.of(new ChunkSizeConfig(
new ChuckSizes(internalBufferSize, Optional.empty()),
new ChuckSizes(internalBufferSize, Optional.empty()))),
true,
true,
Option.apply(null));
Optional.empty());
SocketGroups.SocketGroup clientGroup = socketPair.client;
SocketGroups.SocketGroup serverGroup = socketPair.server;
ByteChannel client = clientGroup.external;
Expand Down Expand Up @@ -249,13 +247,13 @@ void testCloseAndWaitForever() throws IOException, InterruptedException {
@Test
void testShutdownAndForget() throws InterruptedException, IOException {
SocketGroups.SocketPair socketPair = factory.nioNio(
Option.apply(null),
Some.apply(new ChunkSizeConfig(
Optional.empty(),
Optional.of(new ChunkSizeConfig(
new ChuckSizes(internalBufferSize, Optional.empty()),
new ChuckSizes(internalBufferSize, Optional.empty()))),
true,
false,
Option.apply(null));
Optional.empty());
SocketGroups.SocketGroup clientGroup = socketPair.client;
SocketGroups.SocketGroup serverGroup = socketPair.server;
ByteChannel client = clientGroup.external;
Expand Down Expand Up @@ -291,13 +289,13 @@ void testShutdownAndForget() throws InterruptedException, IOException {
@Test
void testShutdownAndWait() throws IOException, InterruptedException {
SocketGroups.SocketPair socketPair = factory.nioNio(
Option.apply(null),
Some.apply(new ChunkSizeConfig(
Optional.empty(),
Optional.of(new ChunkSizeConfig(
new ChuckSizes(internalBufferSize, Optional.empty()),
new ChuckSizes(internalBufferSize, Optional.empty()))),
true,
false,
Option.apply(null));
Optional.empty());
SocketGroups.SocketGroup clientGroup = socketPair.client;
SocketGroups.SocketGroup serverGroup = socketPair.server;
ByteChannel client = clientGroup.external;
Expand Down Expand Up @@ -343,13 +341,13 @@ void testShutdownAndWait() throws IOException, InterruptedException {
@Test
void testShutdownAndWaitForever() throws InterruptedException, IOException {
SocketGroups.SocketPair socketPair = factory.nioNio(
Option.apply(null),
Some.apply(new ChunkSizeConfig(
Optional.empty(),
Optional.of(new ChunkSizeConfig(
new ChuckSizes(internalBufferSize, Optional.empty()),
new ChuckSizes(internalBufferSize, Optional.empty()))),
true,
false,
Option.apply(null));
Optional.empty());
SocketGroups.SocketGroup clientGroup = socketPair.client;
SocketGroups.SocketGroup serverGroup = socketPair.server;
ByteChannel client = clientGroup.external;
Expand Down
6 changes: 3 additions & 3 deletions src/test/scala/tlschannel/ConcurrentTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicLong;
import java.util.logging.Logger;
import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;
import scala.Option;
import tlschannel.helpers.*;

@TestInstance(Lifecycle.PER_CLASS)
Expand All @@ -31,7 +31,7 @@ public class ConcurrentTest {
// write-side thread safety
@Test
public void testWriteSide() throws IOException {
SocketPair socketPair = factory.nioNio(Option.apply(null), Option.apply(null), true, false, Option.apply(null));
SocketPair socketPair = factory.nioNio(Optional.empty(), Optional.empty(), true, false, Optional.empty());
Thread clientWriterThread1 = new Thread(() -> writerLoop(dataSize, 'a', socketPair.client), "client-writer-1");
Thread clientWriterThread2 = new Thread(() -> writerLoop(dataSize, 'b', socketPair.client), "client-writer-2");
Thread clientWriterThread3 = new Thread(() -> writerLoop(dataSize, 'c', socketPair.client), "client-writer-3");
Expand All @@ -54,7 +54,7 @@ public void testWriteSide() throws IOException {
// read-size thread-safety
@Test
public void testReadSide() throws IOException {
SocketPair socketPair = factory.nioNio(Option.apply(null), Option.apply(null), true, false, Option.apply(null));
SocketPair socketPair = factory.nioNio(Optional.empty(), Optional.empty(), true, false, Optional.empty());
Thread clientWriterThread = new Thread(() -> writerLoop(dataSize, 'a', socketPair.client), "client-writer");
AtomicLong totalRead = new AtomicLong();
Thread serverReaderThread1 =
Expand Down
14 changes: 7 additions & 7 deletions src/test/scala/tlschannel/FailTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@
import java.nio.ByteBuffer;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.Optional;
import javax.net.ssl.SSLException;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;
import scala.Option;
import tlschannel.helpers.SocketPairFactory;
import tlschannel.helpers.SslContextFactory;
import tlschannel.helpers.TestJavaUtil;
Expand All @@ -26,17 +26,17 @@ public class FailTest {
@Test
public void testPlanToTls() throws IOException, InterruptedException {
ServerSocketChannel serverSocket = ServerSocketChannel.open();
serverSocket.bind(new InetSocketAddress(factory.localhost(), 0 /* find free port */));
serverSocket.bind(new InetSocketAddress(factory.localhost, 0 /* find free port */));
int chosenPort = ((InetSocketAddress) serverSocket.getLocalAddress()).getPort();
InetSocketAddress address = new InetSocketAddress(factory.localhost(), chosenPort);
InetSocketAddress address = new InetSocketAddress(factory.localhost, chosenPort);
SocketChannel clientChannel = SocketChannel.open(address);
SocketChannel rawServer = serverSocket.accept();
factory.createClientSslEngine(Option.empty(), chosenPort);
factory.createClientSslEngine(Optional.empty(), chosenPort);
ServerTlsChannel.Builder serverChannelBuilder = ServerTlsChannel.newBuilder(
rawServer,
nameOpt ->
factory.sslContextFactory(factory.clientSniHostName(), factory.sslContext(), nameOpt))
.withEngineFactory(sslContext -> factory.fixedCipherServerSslEngineFactory(Option.empty(), sslContext));
nameOpt -> factory.sslContextFactory(factory.clientSniHostName, factory.sslContext, nameOpt))
.withEngineFactory(
sslContext -> factory.fixedCipherServerSslEngineFactory(Optional.empty(), sslContext));

ServerTlsChannel serverChannel = serverChannelBuilder.build();

Expand Down
Loading