Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
2cef977
Adjust padding to accommodate good enough headers and don't include …
akrambek Oct 25, 2023
d201582
Merge branch 'develop' into feature/consumer-group-cont
akrambek Oct 25, 2023
76bf9de
Merge branch 'feature/consumer-group-cont' into develop
akrambek Oct 26, 2023
29ae79c
Merge branch 'aklivity:develop' into develop
akrambek Oct 30, 2023
ec1b39e
Merge branch 'aklivity:develop' into develop
akrambek Oct 30, 2023
51a9f0e
Merge branch 'aklivity:develop' into develop
akrambek Oct 31, 2023
4394783
Merge branch 'aklivity:develop' into develop
akrambek Oct 31, 2023
e8696ce
Merge branch 'aklivity:develop' into develop
akrambek Nov 2, 2023
51c37b1
Merge branch 'aklivity:develop' into develop
akrambek Nov 2, 2023
5da5f04
Merge branch 'aklivity:develop' into develop
akrambek Nov 2, 2023
db1e17c
Merge branch 'aklivity:develop' into develop
akrambek Nov 4, 2023
40f73dc
Merge branch 'aklivity:develop' into develop
akrambek Nov 6, 2023
d1a0492
Merge branch 'aklivity:develop' into develop
akrambek Nov 23, 2023
45799ce
Merge branch 'aklivity:develop' into develop
akrambek Nov 29, 2023
1e55162
Merge branch 'aklivity:develop' into develop
akrambek Nov 30, 2023
fedc41f
Merge branch 'aklivity:develop' into develop
akrambek Dec 4, 2023
18a8d74
Merge branch 'aklivity:develop' into develop
akrambek Dec 4, 2023
f160aad
Merge branch 'aklivity:develop' into develop
akrambek Dec 4, 2023
e0e7d5a
Merge branch 'aklivity:develop' into develop
akrambek Dec 6, 2023
9f4a8a6
Merge branch 'aklivity:develop' into develop
akrambek Dec 8, 2023
456f111
Merge branch 'aklivity:develop' into develop
akrambek Dec 8, 2023
0d27262
Merge branch 'aklivity:develop' into develop
akrambek Dec 9, 2023
9fe7a91
Merge branch 'aklivity:develop' into develop
akrambek Dec 11, 2023
7e3d237
Merge branch 'aklivity:develop' into develop
akrambek Dec 12, 2023
33c4411
Merge branch 'aklivity:develop' into develop
akrambek Dec 13, 2023
fe9e318
Merge branch 'aklivity:develop' into develop
akrambek Dec 14, 2023
d8b5e5c
Merge branch 'aklivity:develop' into develop
akrambek Dec 14, 2023
ebca7ef
Merge branch 'aklivity:develop' into develop
akrambek Dec 18, 2023
5e3e059
Merge branch 'aklivity:develop' into develop
akrambek Dec 22, 2023
ee71db9
Merge branch 'aklivity:develop' into develop
akrambek Dec 24, 2023
0b7a15a
Merge branch 'aklivity:develop' into develop
akrambek Dec 25, 2023
be13489
Merge branch 'aklivity:develop' into develop
akrambek Dec 26, 2023
95df84c
Merge branch 'aklivity:develop' into develop
akrambek Dec 26, 2023
3ebdbf5
Merge branch 'aklivity:develop' into develop
akrambek Dec 28, 2023
24ad9e1
Merge branch 'aklivity:develop' into develop
akrambek Dec 30, 2023
6d21fec
Merge branch 'aklivity:develop' into develop
akrambek Dec 31, 2023
368a0a6
Merge branch 'aklivity:develop' into develop
akrambek Dec 31, 2023
7069f1a
Merge branch 'aklivity:develop' into develop
akrambek Jan 2, 2024
09b7041
Merge branch 'aklivity:develop' into develop
akrambek Jan 3, 2024
98f1faa
Merge branch 'aklivity:develop' into develop
akrambek Jan 4, 2024
371391a
Merge branch 'aklivity:develop' into develop
akrambek Jan 5, 2024
c6a0882
Merge branch 'aklivity:develop' into develop
akrambek Jan 8, 2024
f99f009
Merge branch 'aklivity:develop' into develop
akrambek Jan 9, 2024
a110b68
Merge branch 'aklivity:develop' into develop
akrambek Jan 11, 2024
80c4625
Merge branch 'aklivity:develop' into develop
akrambek Jan 16, 2024
6617e20
Merge branch 'aklivity:develop' into develop
akrambek Jan 19, 2024
dea9f53
Merge branch 'aklivity:develop' into develop
akrambek Jan 20, 2024
b74db57
Merge branch 'aklivity:develop' into develop
akrambek Jan 23, 2024
4617b54
Merge branch 'aklivity:develop' into develop
akrambek Jan 30, 2024
b3b421d
Merge branch 'aklivity:develop' into develop
akrambek Jan 31, 2024
73d64b1
Merge branch 'aklivity:develop' into develop
akrambek Feb 1, 2024
7bb546e
Merge branch 'aklivity:develop' into develop
akrambek Feb 2, 2024
b1c7901
Merge branch 'aklivity:develop' into develop
akrambek Feb 8, 2024
949df2f
Merge branch 'aklivity:develop' into develop
akrambek Feb 13, 2024
ca946b8
Merge branch 'aklivity:develop' into develop
akrambek Feb 14, 2024
f9dcd75
Merge branch 'aklivity:develop' into develop
akrambek Feb 21, 2024
e1e5e75
Merge branch 'aklivity:develop' into develop
akrambek Feb 22, 2024
5f50549
Merge branch 'aklivity:develop' into develop
akrambek Feb 23, 2024
32725be
Merge branch 'aklivity:develop' into develop
akrambek Feb 28, 2024
83b145a
Merge branch 'aklivity:develop' into develop
akrambek Feb 28, 2024
75e7709
Merge branch 'aklivity:develop' into develop
akrambek Feb 29, 2024
d4c3117
Merge branch 'aklivity:develop' into develop
akrambek Feb 29, 2024
a438cfe
Merge branch 'aklivity:develop' into develop
akrambek Mar 1, 2024
36f8f1e
Merge branch 'aklivity:develop' into develop
akrambek Mar 4, 2024
cf8a5c7
Merge branch 'aklivity:develop' into develop
akrambek Mar 10, 2024
7b46270
Merge branch 'aklivity:develop' into develop
akrambek Mar 12, 2024
6461ebf
Merge branch 'aklivity:develop' into develop
akrambek Mar 13, 2024
a97cfb3
Merge branch 'aklivity:develop' into develop
akrambek Mar 14, 2024
fc97dc2
Merge branch 'aklivity:develop' into develop
akrambek Mar 16, 2024
a5edb3f
Merge branch 'aklivity:develop' into develop
akrambek Mar 17, 2024
7a79fd6
Merge branch 'aklivity:develop' into develop
akrambek Mar 19, 2024
82c24c3
Merge branch 'aklivity:develop' into develop
akrambek Mar 19, 2024
1f3f305
Merge branch 'aklivity:develop' into develop
akrambek Mar 19, 2024
3a12b8b
Merge branch 'aklivity:develop' into develop
akrambek Mar 25, 2024
7684d2a
Merge branch 'aklivity:develop' into develop
akrambek Apr 9, 2024
d40e2cd
Merge branch 'aklivity:develop' into develop
akrambek Apr 9, 2024
fcd6cd2
Merge branch 'aklivity:develop' into develop
akrambek Apr 9, 2024
141a871
Merge branch 'aklivity:develop' into develop
akrambek Apr 9, 2024
782b711
Merge branch 'aklivity:develop' into develop
akrambek Apr 10, 2024
0c93c5f
Merge branch 'aklivity:develop' into develop
akrambek Apr 10, 2024
70f2543
Merge branch 'aklivity:develop' into develop
akrambek Apr 11, 2024
c451d70
Merge branch 'aklivity:develop' into develop
akrambek Apr 12, 2024
45f6a83
Merge branch 'aklivity:develop' into develop
akrambek Apr 12, 2024
32ba7e9
Merge branch 'aklivity:develop' into develop
akrambek Apr 16, 2024
95ff994
Merge branch 'aklivity:develop' into develop
akrambek Apr 22, 2024
716d729
First JMH test
akrambek Apr 24, 2024
7dd3d28
Fix checkstyle
akrambek Apr 24, 2024
6613805
Add licence header
akrambek Apr 24, 2024
e191285
Update NOTICE and dependencies to execute benchmarks via shaded tests…
jfallows Apr 25, 2024
3c62968
Refactor benchmark tests to different package
jfallows Apr 25, 2024
caa3918
WIP
akrambek Apr 25, 2024
ebd0de4
WIP
akrambek Apr 26, 2024
0305d69
WIP
akrambek Apr 30, 2024
b40e377
Add support for vault
akrambek May 1, 2024
49787e7
Merge branch 'aklivity:develop' into develop
akrambek May 1, 2024
fd6b5ad
Merge branch 'develop' into feature/961-tls
akrambek May 1, 2024
485dd84
Apply feedback
akrambek May 1, 2024
a0c2cea
Replace current timestamp with NO_CANCEL_ID
akrambek May 1, 2024
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
Prev Previous commit
Next Next commit
WIP
  • Loading branch information
akrambek committed Apr 26, 2024
commit ebd0de4cdfb4b96f586dfff2b17c790103912e6e
12 changes: 12 additions & 0 deletions runtime/binding-tls/NOTICE
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,18 @@ specific language governing permissions and limitations
under the License.

This project includes:
agrona under The Apache License, Version 2.0
ICU4J under Unicode/ICU License
Jackson-annotations under The Apache Software License, Version 2.0
Jackson-core under The Apache Software License, Version 2.0
jackson-databind under The Apache Software License, Version 2.0
Jackson-dataformat-YAML under The Apache Software License, Version 2.0
Jakarta JSON Processing API under Eclipse Public License 2.0 or GNU General Public License, version 2 with the GNU Classpath Exception
JSON-B API under Eclipse Public License 2.0 or GNU General Public License, version 2 with the GNU Classpath Exception
org.leadpony.justify under The Apache Software License, Version 2.0
SnakeYAML under Apache License, Version 2.0
zilla::runtime::common under The Apache Software License, Version 2.0
zilla::runtime::engine under The Apache Software License, Version 2.0


This project also includes code under copyright of the following entities:
Expand Down
9 changes: 8 additions & 1 deletion runtime/binding-tls/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
<groupId>${project.groupId}</groupId>
<artifactId>engine</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
Expand All @@ -56,6 +55,12 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>binding-echo</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
Expand Down Expand Up @@ -241,6 +246,8 @@
<includes>
<include>org.agrona:agrona</include>
<include>io.aklivity.zilla:engine</include>
<include>io.aklivity.zilla:common</include>
<include>io.aklivity.zilla:binding-echo</include>
<include>org.openjdk.jmh:jmh-core</include>
<include>net.sf.jopt-simple:jopt-simple</include>
<include>org.apache.commons:commons-math3</include>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@
*/
package io.aklivity.zilla.runtime.binding.tls.internal.bench;

import static io.aklivity.zilla.runtime.engine.EngineConfiguration.ENGINE_DIRECTORY;
import static io.aklivity.zilla.runtime.engine.config.KindConfig.CLIENT;
import static io.aklivity.zilla.runtime.engine.config.KindConfig.SERVER;
import static java.util.concurrent.TimeUnit.SECONDS;

import java.io.IOException;
import java.util.Properties;

import org.agrona.MutableDirectBuffer;
import org.agrona.concurrent.UnsafeBuffer;
Expand All @@ -43,12 +44,9 @@

import io.aklivity.zilla.runtime.binding.tls.internal.types.stream.BeginFW;
import io.aklivity.zilla.runtime.binding.tls.internal.types.stream.WindowFW;
import io.aklivity.zilla.runtime.engine.Configuration;
import io.aklivity.zilla.runtime.engine.binding.BindingContext;
import io.aklivity.zilla.runtime.engine.binding.BindingFactory;
import io.aklivity.zilla.runtime.engine.EngineConfiguration;
import io.aklivity.zilla.runtime.engine.binding.BindingHandler;
import io.aklivity.zilla.runtime.engine.binding.function.MessageConsumer;
import io.aklivity.zilla.runtime.engine.config.BindingConfig;
import io.aklivity.zilla.runtime.engine.config.NamespaceConfig;

@State(Scope.Benchmark)
Expand All @@ -65,18 +63,18 @@ public class TlsHandshakeBM
private final WindowFW.Builder windowRW = new WindowFW.Builder();
private final MutableDirectBuffer writeBuffer = new UnsafeBuffer(new byte[BUFFER_SIZE]);

private BindingHandler handler;
private Runnable detacher;
private BindingHandler streamFactory;

@Setup(Level.Trial)
public void init() throws IOException
public void init()
{
BindingFactory bindings = BindingFactory.instantiate();
BindingContext context = bindings.create("tls", new Configuration())
.supply(new TlsWorker());
final Properties properties = new Properties();
properties.setProperty(ENGINE_DIRECTORY.name(), "target/zilla-bm");
final EngineConfiguration config = new EngineConfiguration(properties);
TlsWorker worker = new TlsWorker(config);

NamespaceConfig namespace = NamespaceConfig.builder()
.name("echo")
.name("tls")
.binding()
.name("tls_client0")
.type("tls")
Expand All @@ -96,19 +94,14 @@ public void init() throws IOException
.build()
.build();

BindingConfig binding = namespace.bindings.stream()
.filter(b -> "tls_client0".equals(b.name))
.findFirst()
.get();
worker.attach(namespace);

this.handler = context.attach(binding);
this.detacher = () -> context.detach(binding);
streamFactory = worker.streamFactory();
}

@TearDown(Level.Trial)
public void destroy()
{
detacher.run();
}

@Setup(Level.Iteration)
Expand All @@ -122,7 +115,7 @@ public void handshake(
{
final BeginFW begin = beginRW.wrap(writeBuffer, 0, writeBuffer.capacity())
.originId(0L)
.routedId(0L)
.routedId(4261135416L)
.streamId(0L)
.sequence(0L)
.acknowledge(0L)
Expand All @@ -133,13 +126,14 @@ public void handshake(
.build();

MessageConsumer sender = MessageConsumer.NOOP;
MessageConsumer receiver = handler.newStream(begin.typeId(), begin.buffer(), begin.offset(), begin.sizeof(), sender);
MessageConsumer receiver = streamFactory.newStream(
begin.typeId(), begin.buffer(), begin.offset(), begin.sizeof(), sender);

receiver.accept(begin.typeId(), begin.buffer(), begin.offset(), begin.sizeof());

final WindowFW window = windowRW.wrap(writeBuffer, 0, writeBuffer.capacity())
.originId(0L)
.routedId(0L)
.routedId(4261135416L)
.streamId(0L)
.sequence(0L)
.acknowledge(0L)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,27 @@
*/
package io.aklivity.zilla.runtime.binding.tls.internal.bench;

import static java.nio.charset.StandardCharsets.UTF_8;

import java.net.InetAddress;
import java.net.URL;
import java.nio.channels.SelectableChannel;
import java.time.Clock;
import java.util.function.LongSupplier;
import java.util.zip.CRC32C;

import org.agrona.DirectBuffer;
import org.agrona.MutableDirectBuffer;
import org.agrona.collections.Long2ObjectHashMap;
import org.agrona.collections.Object2ObjectHashMap;
import org.agrona.concurrent.UnsafeBuffer;

import io.aklivity.zilla.runtime.engine.Configuration;
import io.aklivity.zilla.runtime.engine.EngineConfiguration;
import io.aklivity.zilla.runtime.engine.EngineContext;
import io.aklivity.zilla.runtime.engine.binding.Binding;
import io.aklivity.zilla.runtime.engine.binding.BindingContext;
import io.aklivity.zilla.runtime.engine.binding.BindingFactory;
import io.aklivity.zilla.runtime.engine.binding.BindingHandler;
import io.aklivity.zilla.runtime.engine.binding.function.MessageConsumer;
import io.aklivity.zilla.runtime.engine.binding.function.MessageReader;
Expand All @@ -40,6 +50,7 @@
import io.aklivity.zilla.runtime.engine.event.EventFormatter;
import io.aklivity.zilla.runtime.engine.guard.GuardHandler;
import io.aklivity.zilla.runtime.engine.internal.layouts.BufferPoolLayout;
import io.aklivity.zilla.runtime.engine.internal.types.stream.FrameFW;
import io.aklivity.zilla.runtime.engine.metrics.Metric;
import io.aklivity.zilla.runtime.engine.model.ConverterHandler;
import io.aklivity.zilla.runtime.engine.model.ValidatorHandler;
Expand All @@ -50,16 +61,30 @@ public class TlsWorker implements EngineContext
{
private static final int BUFFER_SIZE = 1024 * 8;
private final MutableDirectBuffer writeBuffer = new UnsafeBuffer(new byte[BUFFER_SIZE]);
private final BufferPool bufferPool;
private final Long2ObjectHashMap<BindingHandler> handlers;
private final Object2ObjectHashMap<String, Binding> bindings;
private final BindingFactory factory;
private final Configuration config;

private final FrameFW frameRO = new FrameFW();
private final CRC32C crc32C = new CRC32C();

public TlsWorker(
EngineConfiguration config)
{
final BufferPoolLayout bufferPoolLayout = new BufferPoolLayout.Builder()
.path(config.directory().resolve(String.format("buffers%d", index)))
this.config = config;
this.bufferPool = new BufferPoolLayout.Builder()
.path(config.directory().resolve(String.format("buffers%d", 0)))
.slotCapacity(config.bufferSlotCapacity())
.slotCount(config.bufferPoolCapacity() / config.bufferSlotCapacity())
.readonly(readonly)
.build();
.readonly(false)
.build()
.bufferPool();

this.factory = BindingFactory.instantiate();
this.bindings = new Object2ObjectHashMap<>();
this.handlers = new Long2ObjectHashMap<>();
}

@Override
Expand Down Expand Up @@ -141,28 +166,25 @@ public EventFormatter supplyEventFormatter()
}

@Override
public void attachComposite(NamespaceConfig composite)
public void attachComposite(
NamespaceConfig composite)
{

}

@Override
public void detachComposite(
NamespaceConfig composite)
{

}

@Override
public void detachSender(long replyId)
{

}

@Override
public void detachStreams(long bindingId)
{

}

@Override
Expand All @@ -186,7 +208,7 @@ public MutableDirectBuffer writeBuffer()
@Override
public BufferPool bufferPool()
{
return null;
return bufferPool;
}

@Override
Expand Down Expand Up @@ -279,7 +301,7 @@ public int supplyEventId(
@Override
public BindingHandler streamFactory()
{
return null;
return this::newStream;
}

@Override
Expand Down Expand Up @@ -369,4 +391,60 @@ public Clock clock()
{
return null;
}

public void attach(
NamespaceConfig namespace)
{
namespace.bindings.stream()
.peek(b -> b.id = crc32c(b.name))
.map(b -> b.routes)
.forEach(rs -> rs.stream()
.peek(r -> r.id = crc32c(r.exit))
.forEach(r -> r.authorized = session -> true));

namespace.bindings.forEach(b ->
{
Binding binding = supplyBinding(b.type);
BindingContext context = binding.supply(this);
BindingHandler handler = context.attach(b);

handlers.put(b.id, handler);
});
}

private MessageConsumer newStream(
int msgTypeId,
DirectBuffer buffer,
int index,
int length,
MessageConsumer sender)
{
final FrameFW frame = frameRO.wrap(buffer, index, length);
final long bindingId = frame.routedId();

final BindingHandler handler = handlers.get(bindingId);

return handler.newStream(msgTypeId, buffer, index, length, sender);
}

private Binding supplyBinding(
String type)
{
return bindings.computeIfAbsent(type, this::createBinding);
}

private Binding createBinding(
String type)
{
return factory.create(type, config);
}

private long crc32c(
String value)
{
crc32C.reset();
crc32C.update(value.getBytes(UTF_8));

return crc32C.getValue();
}
}