Remove support for epoll level-triggered (#9826)
Motivation: Netty uses epoll edge-triggered by default forever and there is really not reason why someone should use level-triggered (its considered a implementation detail). Modifications: - Remove code that was related to level-triggered mode - Adjust testclass names Result: Fixes https://github.com/netty/netty/issues/9349
This commit is contained in:
parent
01e8100496
commit
f7fadd67dd
@ -102,7 +102,6 @@ public abstract class AbstractEpollServerChannel extends AbstractEpollChannel im
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final EpollRecvByteAllocatorHandle allocHandle = recvBufAllocHandle();
|
final EpollRecvByteAllocatorHandle allocHandle = recvBufAllocHandle();
|
||||||
allocHandle.edgeTriggered(isFlagSet(Native.EPOLLET));
|
|
||||||
|
|
||||||
final ChannelPipeline pipeline = pipeline();
|
final ChannelPipeline pipeline = pipeline();
|
||||||
allocHandle.reset(config);
|
allocHandle.reset(config);
|
||||||
|
@ -543,7 +543,6 @@ public abstract class AbstractEpollStreamChannel extends AbstractEpollChannel im
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final EpollRecvByteAllocatorHandle allocHandle = recvBufAllocHandle();
|
final EpollRecvByteAllocatorHandle allocHandle = recvBufAllocHandle();
|
||||||
allocHandle.edgeTriggered(isFlagSet(Native.EPOLLET));
|
|
||||||
|
|
||||||
final ChannelPipeline pipeline = pipeline();
|
final ChannelPipeline pipeline = pipeline();
|
||||||
final ByteBufAllocator allocator = config.getAllocator();
|
final ByteBufAllocator allocator = config.getAllocator();
|
||||||
|
@ -16,16 +16,13 @@
|
|||||||
package io.netty.channel.epoll;
|
package io.netty.channel.epoll;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBufAllocator;
|
import io.netty.buffer.ByteBufAllocator;
|
||||||
import io.netty.channel.ChannelOption;
|
|
||||||
import io.netty.channel.DefaultChannelConfig;
|
import io.netty.channel.DefaultChannelConfig;
|
||||||
import io.netty.channel.MessageSizeEstimator;
|
import io.netty.channel.MessageSizeEstimator;
|
||||||
import io.netty.channel.RecvByteBufAllocator;
|
import io.netty.channel.RecvByteBufAllocator;
|
||||||
import io.netty.channel.WriteBufferWaterMark;
|
import io.netty.channel.WriteBufferWaterMark;
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import static io.netty.channel.unix.Limits.SSIZE_MAX;
|
import static io.netty.channel.unix.Limits.SSIZE_MAX;
|
||||||
import static java.util.Objects.requireNonNull;
|
|
||||||
|
|
||||||
public class EpollChannelConfig extends DefaultChannelConfig {
|
public class EpollChannelConfig extends DefaultChannelConfig {
|
||||||
private volatile long maxBytesPerGatheringWrite = SSIZE_MAX;
|
private volatile long maxBytesPerGatheringWrite = SSIZE_MAX;
|
||||||
@ -34,31 +31,6 @@ public class EpollChannelConfig extends DefaultChannelConfig {
|
|||||||
super(channel);
|
super(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<ChannelOption<?>, Object> getOptions() {
|
|
||||||
return getOptions(super.getOptions(), EpollChannelOption.EPOLL_MODE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
|
||||||
public <T> T getOption(ChannelOption<T> option) {
|
|
||||||
if (option == EpollChannelOption.EPOLL_MODE) {
|
|
||||||
return (T) getEpollMode();
|
|
||||||
}
|
|
||||||
return super.getOption(option);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T> boolean setOption(ChannelOption<T> option, T value) {
|
|
||||||
validate(option, value);
|
|
||||||
if (option == EpollChannelOption.EPOLL_MODE) {
|
|
||||||
setEpollMode((EpollMode) value);
|
|
||||||
} else {
|
|
||||||
return super.setOption(option, value);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EpollChannelConfig setConnectTimeoutMillis(int connectTimeoutMillis) {
|
public EpollChannelConfig setConnectTimeoutMillis(int connectTimeoutMillis) {
|
||||||
super.setConnectTimeoutMillis(connectTimeoutMillis);
|
super.setConnectTimeoutMillis(connectTimeoutMillis);
|
||||||
@ -126,48 +98,6 @@ public class EpollChannelConfig extends DefaultChannelConfig {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the {@link EpollMode} used. Default is
|
|
||||||
* {@link EpollMode#EDGE_TRIGGERED}. If you want to use {@link #isAutoRead()} {@code false} or
|
|
||||||
* {@link #getMaxMessagesPerRead()} and have an accurate behaviour you should use
|
|
||||||
* {@link EpollMode#LEVEL_TRIGGERED}.
|
|
||||||
*/
|
|
||||||
public EpollMode getEpollMode() {
|
|
||||||
return ((AbstractEpollChannel) channel).isFlagSet(Native.EPOLLET)
|
|
||||||
? EpollMode.EDGE_TRIGGERED : EpollMode.LEVEL_TRIGGERED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the {@link EpollMode} used. Default is
|
|
||||||
* {@link EpollMode#EDGE_TRIGGERED}. If you want to use {@link #isAutoRead()} {@code false} or
|
|
||||||
* {@link #getMaxMessagesPerRead()} and have an accurate behaviour you should use
|
|
||||||
* {@link EpollMode#LEVEL_TRIGGERED}.
|
|
||||||
*
|
|
||||||
* <strong>Be aware this config setting can only be adjusted before the channel was registered.</strong>
|
|
||||||
*/
|
|
||||||
public EpollChannelConfig setEpollMode(EpollMode mode) {
|
|
||||||
requireNonNull(mode, "mode");
|
|
||||||
switch (mode) {
|
|
||||||
case EDGE_TRIGGERED:
|
|
||||||
checkChannelNotRegistered();
|
|
||||||
((AbstractEpollChannel) channel).setFlag(Native.EPOLLET);
|
|
||||||
break;
|
|
||||||
case LEVEL_TRIGGERED:
|
|
||||||
checkChannelNotRegistered();
|
|
||||||
((AbstractEpollChannel) channel).clearFlag(Native.EPOLLET);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new Error();
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void checkChannelNotRegistered() {
|
|
||||||
if (channel.isRegistered()) {
|
|
||||||
throw new IllegalStateException("EpollMode can only be changed before channel is registered");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final void autoReadCleared() {
|
protected final void autoReadCleared() {
|
||||||
((AbstractEpollChannel) channel).clearEpollIn();
|
((AbstractEpollChannel) channel).clearEpollIn();
|
||||||
|
@ -39,12 +39,7 @@ public final class EpollChannelOption<T> extends UnixChannelOption<T> {
|
|||||||
ChannelOption.valueOf(EpollChannelOption.class, "TCP_DEFER_ACCEPT");
|
ChannelOption.valueOf(EpollChannelOption.class, "TCP_DEFER_ACCEPT");
|
||||||
public static final ChannelOption<Boolean> TCP_QUICKACK = valueOf(EpollChannelOption.class, "TCP_QUICKACK");
|
public static final ChannelOption<Boolean> TCP_QUICKACK = valueOf(EpollChannelOption.class, "TCP_QUICKACK");
|
||||||
public static final ChannelOption<Integer> SO_BUSY_POLL = valueOf(EpollChannelOption.class, "SO_BUSY_POLL");
|
public static final ChannelOption<Integer> SO_BUSY_POLL = valueOf(EpollChannelOption.class, "SO_BUSY_POLL");
|
||||||
|
|
||||||
public static final ChannelOption<EpollMode> EPOLL_MODE =
|
|
||||||
ChannelOption.valueOf(EpollChannelOption.class, "EPOLL_MODE");
|
|
||||||
|
|
||||||
public static final ChannelOption<Map<InetAddress, byte[]>> TCP_MD5SIG = valueOf("TCP_MD5SIG");
|
public static final ChannelOption<Map<InetAddress, byte[]>> TCP_MD5SIG = valueOf("TCP_MD5SIG");
|
||||||
|
|
||||||
public static final ChannelOption<Integer> MAX_DATAGRAM_PAYLOAD_SIZE = valueOf("MAX_DATAGRAM_PAYLOAD_SIZE");
|
public static final ChannelOption<Integer> MAX_DATAGRAM_PAYLOAD_SIZE = valueOf("MAX_DATAGRAM_PAYLOAD_SIZE");
|
||||||
|
|
||||||
@SuppressWarnings({ "unused", "deprecation" })
|
@SuppressWarnings({ "unused", "deprecation" })
|
||||||
|
@ -468,7 +468,6 @@ public final class EpollDatagramChannel extends AbstractEpollChannel implements
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final EpollRecvByteAllocatorHandle allocHandle = recvBufAllocHandle();
|
final EpollRecvByteAllocatorHandle allocHandle = recvBufAllocHandle();
|
||||||
allocHandle.edgeTriggered(isFlagSet(Native.EPOLLET));
|
|
||||||
|
|
||||||
final ChannelPipeline pipeline = pipeline();
|
final ChannelPipeline pipeline = pipeline();
|
||||||
final ByteBufAllocator allocator = config.getAllocator();
|
final ByteBufAllocator allocator = config.getAllocator();
|
||||||
|
@ -399,12 +399,6 @@ public final class EpollDatagramChannelConfig extends EpollChannelConfig impleme
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public EpollDatagramChannelConfig setEpollMode(EpollMode mode) {
|
|
||||||
super.setEpollMode(mode);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns {@code true} if the SO_REUSEPORT option is set.
|
* Returns {@code true} if the SO_REUSEPORT option is set.
|
||||||
*/
|
*/
|
||||||
|
@ -153,7 +153,6 @@ public final class EpollDomainSocketChannel extends AbstractEpollStreamChannel i
|
|||||||
}
|
}
|
||||||
final ChannelConfig config = config();
|
final ChannelConfig config = config();
|
||||||
final EpollRecvByteAllocatorHandle allocHandle = recvBufAllocHandle();
|
final EpollRecvByteAllocatorHandle allocHandle = recvBufAllocHandle();
|
||||||
allocHandle.edgeTriggered(isFlagSet(Native.EPOLLET));
|
|
||||||
|
|
||||||
final ChannelPipeline pipeline = pipeline();
|
final ChannelPipeline pipeline = pipeline();
|
||||||
allocHandle.reset(config);
|
allocHandle.reset(config);
|
||||||
|
@ -154,12 +154,6 @@ public final class EpollDomainSocketChannelConfig extends EpollChannelConfig
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public EpollDomainSocketChannelConfig setEpollMode(EpollMode mode) {
|
|
||||||
super.setEpollMode(mode);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EpollDomainSocketChannelConfig setReadMode(DomainSocketReadMode mode) {
|
public EpollDomainSocketChannelConfig setReadMode(DomainSocketReadMode mode) {
|
||||||
requireNonNull(mode, "mode");
|
requireNonNull(mode, "mode");
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2015 The Netty Project
|
|
||||||
*
|
|
||||||
* The Netty Project licenses this file to you under the Apache License,
|
|
||||||
* version 2.0 (the "License"); you may not use this file except in compliance
|
|
||||||
* with the License. You may obtain a copy of the License at:
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
* License for the specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
package io.netty.channel.epoll;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The <a href="http://linux.die.net/man/7/epoll">epoll</a> mode to use.
|
|
||||||
*/
|
|
||||||
public enum EpollMode {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Use {@code EPOLLET} (edge-triggered).
|
|
||||||
*
|
|
||||||
* @see <a href="http://linux.die.net/man/7/epoll">man 7 epoll</a>.
|
|
||||||
*/
|
|
||||||
EDGE_TRIGGERED,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Do not use {@code EPOLLET} (level-triggered).
|
|
||||||
*
|
|
||||||
* @see <a href="http://linux.die.net/man/7/epoll">man 7 epoll</a>.
|
|
||||||
*/
|
|
||||||
LEVEL_TRIGGERED
|
|
||||||
}
|
|
@ -26,7 +26,6 @@ class EpollRecvByteAllocatorHandle extends DelegatingHandle implements ExtendedH
|
|||||||
private final PreferredDirectByteBufAllocator preferredDirectByteBufAllocator =
|
private final PreferredDirectByteBufAllocator preferredDirectByteBufAllocator =
|
||||||
new PreferredDirectByteBufAllocator();
|
new PreferredDirectByteBufAllocator();
|
||||||
private final UncheckedBooleanSupplier defaultMaybeMoreDataSupplier = this::maybeMoreDataToRead;
|
private final UncheckedBooleanSupplier defaultMaybeMoreDataSupplier = this::maybeMoreDataToRead;
|
||||||
private boolean isEdgeTriggered;
|
|
||||||
private boolean receivedRdHup;
|
private boolean receivedRdHup;
|
||||||
|
|
||||||
EpollRecvByteAllocatorHandle(ExtendedHandle handle) {
|
EpollRecvByteAllocatorHandle(ExtendedHandle handle) {
|
||||||
@ -51,16 +50,7 @@ class EpollRecvByteAllocatorHandle extends DelegatingHandle implements ExtendedH
|
|||||||
*
|
*
|
||||||
* It is assumed RDHUP is handled externally by checking {@link #isReceivedRdHup()}.
|
* It is assumed RDHUP is handled externally by checking {@link #isReceivedRdHup()}.
|
||||||
*/
|
*/
|
||||||
return (isEdgeTriggered && lastBytesRead() > 0) ||
|
return lastBytesRead() > 0;
|
||||||
(!isEdgeTriggered && lastBytesRead() == attemptedBytesRead());
|
|
||||||
}
|
|
||||||
|
|
||||||
final void edgeTriggered(boolean edgeTriggered) {
|
|
||||||
isEdgeTriggered = edgeTriggered;
|
|
||||||
}
|
|
||||||
|
|
||||||
final boolean isEdgeTriggered() {
|
|
||||||
return isEdgeTriggered;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -223,10 +223,4 @@ public class EpollServerChannelConfig extends EpollChannelConfig implements Serv
|
|||||||
super.setMessageSizeEstimator(estimator);
|
super.setMessageSizeEstimator(estimator);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public EpollServerChannelConfig setEpollMode(EpollMode mode) {
|
|
||||||
super.setEpollMode(mode);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -655,12 +655,6 @@ public final class EpollSocketChannelConfig extends EpollChannelConfig implement
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public EpollSocketChannelConfig setEpollMode(EpollMode mode) {
|
|
||||||
super.setEpollMode(mode);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void calculateMaxBytesPerGatheringWrite() {
|
private void calculateMaxBytesPerGatheringWrite() {
|
||||||
// Multiply by 2 to give some extra space in case the OS can process write data faster than we can provide.
|
// Multiply by 2 to give some extra space in case the OS can process write data faster than we can provide.
|
||||||
int newSendBufferSize = getSendBufferSize() << 1;
|
int newSendBufferSize = getSendBufferSize() << 1;
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2018 The Netty Project
|
|
||||||
*
|
|
||||||
* The Netty Project licenses this file to you under the Apache License,
|
|
||||||
* version 2.0 (the "License"); you may not use this file except in compliance
|
|
||||||
* with the License. You may obtain a copy of the License at:
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
* License for the specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
package io.netty.channel.epoll;
|
|
||||||
|
|
||||||
import io.netty.bootstrap.Bootstrap;
|
|
||||||
import io.netty.bootstrap.ServerBootstrap;
|
|
||||||
import io.netty.buffer.ByteBufAllocator;
|
|
||||||
|
|
||||||
public class EpollETSocketStringEchoBusyWaitTest extends EpollSocketStringEchoBusyWaitTest {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBootstrap bootstrap, Bootstrap bootstrap2, ByteBufAllocator allocator) {
|
|
||||||
super.configure(bootstrap, bootstrap2, allocator);
|
|
||||||
bootstrap.option(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED)
|
|
||||||
.childOption(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED);
|
|
||||||
bootstrap2.option(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2016 The Netty Project
|
|
||||||
*
|
|
||||||
* The Netty Project licenses this file to you under the Apache License,
|
|
||||||
* version 2.0 (the "License"); you may not use this file except in compliance
|
|
||||||
* with the License. You may obtain a copy of the License at:
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
* License for the specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
package io.netty.channel.epoll;
|
|
||||||
|
|
||||||
import io.netty.bootstrap.Bootstrap;
|
|
||||||
import io.netty.bootstrap.ServerBootstrap;
|
|
||||||
import io.netty.buffer.ByteBufAllocator;
|
|
||||||
import io.netty.testsuite.transport.TestsuitePermutation;
|
|
||||||
import io.netty.testsuite.transport.socket.SocketAutoReadTest;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class EpollLTSocketAutoReadTest extends SocketAutoReadTest {
|
|
||||||
@Override
|
|
||||||
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
|
||||||
return EpollSocketTestPermutation.INSTANCE.socket();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBootstrap bootstrap, Bootstrap bootstrap2, ByteBufAllocator allocator) {
|
|
||||||
super.configure(bootstrap, bootstrap2, allocator);
|
|
||||||
bootstrap.option(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED)
|
|
||||||
.childOption(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED);
|
|
||||||
bootstrap2.option(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2018 The Netty Project
|
|
||||||
*
|
|
||||||
* The Netty Project licenses this file to you under the Apache License,
|
|
||||||
* version 2.0 (the "License"); you may not use this file except in compliance
|
|
||||||
* with the License. You may obtain a copy of the License at:
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
* License for the specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
package io.netty.channel.epoll;
|
|
||||||
|
|
||||||
import io.netty.bootstrap.Bootstrap;
|
|
||||||
import io.netty.bootstrap.ServerBootstrap;
|
|
||||||
import io.netty.buffer.ByteBufAllocator;
|
|
||||||
import io.netty.testsuite.transport.TestsuitePermutation;
|
|
||||||
import io.netty.testsuite.transport.socket.SocketConditionalWritabilityTest;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class EpollLTSocketConditionalWritabilityTest extends SocketConditionalWritabilityTest {
|
|
||||||
@Override
|
|
||||||
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
|
||||||
return EpollSocketTestPermutation.INSTANCE.socket();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBootstrap bootstrap, Bootstrap bootstrap2, ByteBufAllocator allocator) {
|
|
||||||
super.configure(bootstrap, bootstrap2, allocator);
|
|
||||||
bootstrap.option(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED)
|
|
||||||
.childOption(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED);
|
|
||||||
bootstrap2.option(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2018 The Netty Project
|
|
||||||
*
|
|
||||||
* The Netty Project licenses this file to you under the Apache License,
|
|
||||||
* version 2.0 (the "License"); you may not use this file except in compliance
|
|
||||||
* with the License. You may obtain a copy of the License at:
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
* License for the specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
package io.netty.channel.epoll;
|
|
||||||
|
|
||||||
import io.netty.bootstrap.Bootstrap;
|
|
||||||
import io.netty.bootstrap.ServerBootstrap;
|
|
||||||
import io.netty.buffer.ByteBufAllocator;
|
|
||||||
import io.netty.testsuite.transport.TestsuitePermutation;
|
|
||||||
import io.netty.testsuite.transport.socket.SocketDataReadInitialStateTest;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class EpollLTSocketDataReadInitialStateTest extends SocketDataReadInitialStateTest {
|
|
||||||
@Override
|
|
||||||
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
|
||||||
return EpollSocketTestPermutation.INSTANCE.socket();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBootstrap bootstrap, Bootstrap bootstrap2, ByteBufAllocator allocator) {
|
|
||||||
super.configure(bootstrap, bootstrap2, allocator);
|
|
||||||
bootstrap.option(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED)
|
|
||||||
.childOption(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED);
|
|
||||||
bootstrap2.option(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2016 The Netty Project
|
|
||||||
*
|
|
||||||
* The Netty Project licenses this file to you under the Apache License,
|
|
||||||
* version 2.0 (the "License"); you may not use this file except in compliance
|
|
||||||
* with the License. You may obtain a copy of the License at:
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
* License for the specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
package io.netty.channel.epoll;
|
|
||||||
|
|
||||||
import io.netty.bootstrap.Bootstrap;
|
|
||||||
import io.netty.bootstrap.ServerBootstrap;
|
|
||||||
import io.netty.buffer.ByteBufAllocator;
|
|
||||||
import io.netty.testsuite.transport.TestsuitePermutation;
|
|
||||||
import io.netty.testsuite.transport.socket.SocketExceptionHandlingTest;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class EpollLTSocketExceptionHandlingTest extends SocketExceptionHandlingTest {
|
|
||||||
@Override
|
|
||||||
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
|
||||||
return EpollSocketTestPermutation.INSTANCE.socket();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBootstrap bootstrap, Bootstrap bootstrap2, ByteBufAllocator allocator) {
|
|
||||||
super.configure(bootstrap, bootstrap2, allocator);
|
|
||||||
bootstrap.option(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED)
|
|
||||||
.childOption(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED);
|
|
||||||
bootstrap2.option(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2017 The Netty Project
|
|
||||||
*
|
|
||||||
* The Netty Project licenses this file to you under the Apache License,
|
|
||||||
* version 2.0 (the "License"); you may not use this file except in compliance
|
|
||||||
* with the License. You may obtain a copy of the License at:
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
* License for the specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
package io.netty.channel.epoll;
|
|
||||||
|
|
||||||
import io.netty.bootstrap.Bootstrap;
|
|
||||||
import io.netty.bootstrap.ServerBootstrap;
|
|
||||||
import io.netty.buffer.ByteBufAllocator;
|
|
||||||
import io.netty.testsuite.transport.TestsuitePermutation;
|
|
||||||
import io.netty.testsuite.transport.socket.SocketHalfClosedTest;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class EpollLTSocketHalfClosed extends SocketHalfClosedTest {
|
|
||||||
@Override
|
|
||||||
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
|
||||||
return EpollSocketTestPermutation.INSTANCE.socket();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBootstrap bootstrap, Bootstrap bootstrap2, ByteBufAllocator allocator) {
|
|
||||||
super.configure(bootstrap, bootstrap2, allocator);
|
|
||||||
bootstrap.option(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED)
|
|
||||||
.childOption(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED);
|
|
||||||
bootstrap2.option(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2016 The Netty Project
|
|
||||||
*
|
|
||||||
* The Netty Project licenses this file to you under the Apache License,
|
|
||||||
* version 2.0 (the "License"); you may not use this file except in compliance
|
|
||||||
* with the License. You may obtain a copy of the License at:
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
* License for the specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
package io.netty.channel.epoll;
|
|
||||||
|
|
||||||
import io.netty.bootstrap.Bootstrap;
|
|
||||||
import io.netty.bootstrap.ServerBootstrap;
|
|
||||||
import io.netty.buffer.ByteBufAllocator;
|
|
||||||
import io.netty.testsuite.transport.TestsuitePermutation;
|
|
||||||
import io.netty.testsuite.transport.socket.SocketReadPendingTest;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class EpollLTSocketReadPendingTest extends SocketReadPendingTest {
|
|
||||||
@Override
|
|
||||||
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
|
||||||
return EpollSocketTestPermutation.INSTANCE.socket();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBootstrap bootstrap, Bootstrap bootstrap2, ByteBufAllocator allocator) {
|
|
||||||
super.configure(bootstrap, bootstrap2, allocator);
|
|
||||||
bootstrap.option(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED)
|
|
||||||
.childOption(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED);
|
|
||||||
bootstrap2.option(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,31 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2018 The Netty Project
|
|
||||||
*
|
|
||||||
* The Netty Project licenses this file to you under the Apache License,
|
|
||||||
* version 2.0 (the "License"); you may not use this file except in compliance
|
|
||||||
* with the License. You may obtain a copy of the License at:
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
* License for the specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
package io.netty.channel.epoll;
|
|
||||||
|
|
||||||
import io.netty.bootstrap.Bootstrap;
|
|
||||||
import io.netty.bootstrap.ServerBootstrap;
|
|
||||||
import io.netty.buffer.ByteBufAllocator;
|
|
||||||
|
|
||||||
public class EpollLTSocketStringEchoBusyWaitTest extends EpollSocketStringEchoBusyWaitTest {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBootstrap bootstrap, Bootstrap bootstrap2, ByteBufAllocator allocator) {
|
|
||||||
super.configure(bootstrap, bootstrap2, allocator);
|
|
||||||
bootstrap.option(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED)
|
|
||||||
.childOption(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED);
|
|
||||||
bootstrap2.option(EpollChannelOption.EPOLL_MODE, EpollMode.LEVEL_TRIGGERED);
|
|
||||||
}
|
|
||||||
}
|
|
@ -17,23 +17,14 @@ package io.netty.channel.epoll;
|
|||||||
|
|
||||||
import io.netty.bootstrap.Bootstrap;
|
import io.netty.bootstrap.Bootstrap;
|
||||||
import io.netty.bootstrap.ServerBootstrap;
|
import io.netty.bootstrap.ServerBootstrap;
|
||||||
import io.netty.buffer.ByteBufAllocator;
|
|
||||||
import io.netty.testsuite.transport.TestsuitePermutation;
|
import io.netty.testsuite.transport.TestsuitePermutation;
|
||||||
import io.netty.testsuite.transport.socket.SocketAutoReadTest;
|
import io.netty.testsuite.transport.socket.SocketAutoReadTest;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class EpollETSocketAutoReadTest extends SocketAutoReadTest {
|
public class EpollSocketAutoReadTest extends SocketAutoReadTest {
|
||||||
@Override
|
@Override
|
||||||
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
||||||
return EpollSocketTestPermutation.INSTANCE.socket();
|
return EpollSocketTestPermutation.INSTANCE.socket();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBootstrap bootstrap, Bootstrap bootstrap2, ByteBufAllocator allocator) {
|
|
||||||
super.configure(bootstrap, bootstrap2, allocator);
|
|
||||||
bootstrap.option(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED)
|
|
||||||
.childOption(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED);
|
|
||||||
bootstrap2.option(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED);
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -23,17 +23,9 @@ import io.netty.testsuite.transport.socket.SocketConditionalWritabilityTest;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class EpollETSocketConditionalWritabilityTest extends SocketConditionalWritabilityTest {
|
public class EpollSocketConditionalWritabilityTest extends SocketConditionalWritabilityTest {
|
||||||
@Override
|
@Override
|
||||||
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
||||||
return EpollSocketTestPermutation.INSTANCE.socket();
|
return EpollSocketTestPermutation.INSTANCE.socket();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBootstrap bootstrap, Bootstrap bootstrap2, ByteBufAllocator allocator) {
|
|
||||||
super.configure(bootstrap, bootstrap2, allocator);
|
|
||||||
bootstrap.option(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED)
|
|
||||||
.childOption(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED);
|
|
||||||
bootstrap2.option(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED);
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -23,17 +23,9 @@ import io.netty.testsuite.transport.socket.SocketDataReadInitialStateTest;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class EpollETSocketDataReadInitialStateTest extends SocketDataReadInitialStateTest {
|
public class EpollSocketDataReadInitialStateTest extends SocketDataReadInitialStateTest {
|
||||||
@Override
|
@Override
|
||||||
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
||||||
return EpollSocketTestPermutation.INSTANCE.socket();
|
return EpollSocketTestPermutation.INSTANCE.socket();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBootstrap bootstrap, Bootstrap bootstrap2, ByteBufAllocator allocator) {
|
|
||||||
super.configure(bootstrap, bootstrap2, allocator);
|
|
||||||
bootstrap.option(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED)
|
|
||||||
.childOption(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED);
|
|
||||||
bootstrap2.option(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED);
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -23,17 +23,9 @@ import io.netty.testsuite.transport.socket.SocketExceptionHandlingTest;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class EpollETSocketExceptionHandlingTest extends SocketExceptionHandlingTest {
|
public class EpollSocketExceptionHandlingTest extends SocketExceptionHandlingTest {
|
||||||
@Override
|
@Override
|
||||||
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
||||||
return EpollSocketTestPermutation.INSTANCE.socket();
|
return EpollSocketTestPermutation.INSTANCE.socket();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBootstrap bootstrap, Bootstrap bootstrap2, ByteBufAllocator allocator) {
|
|
||||||
super.configure(bootstrap, bootstrap2, allocator);
|
|
||||||
bootstrap.option(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED)
|
|
||||||
.childOption(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED);
|
|
||||||
bootstrap2.option(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED);
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -23,17 +23,9 @@ import io.netty.testsuite.transport.socket.SocketHalfClosedTest;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class EpollETSocketHalfClosed extends SocketHalfClosedTest {
|
public class EpollSocketHalfClosed extends SocketHalfClosedTest {
|
||||||
@Override
|
@Override
|
||||||
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
||||||
return EpollSocketTestPermutation.INSTANCE.socket();
|
return EpollSocketTestPermutation.INSTANCE.socket();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBootstrap bootstrap, Bootstrap bootstrap2, ByteBufAllocator allocator) {
|
|
||||||
super.configure(bootstrap, bootstrap2, allocator);
|
|
||||||
bootstrap.option(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED)
|
|
||||||
.childOption(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED);
|
|
||||||
bootstrap2.option(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED);
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -23,17 +23,9 @@ import io.netty.testsuite.transport.socket.SocketReadPendingTest;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class EpollETSocketReadPendingTest extends SocketReadPendingTest {
|
public class EpollSocketReadPendingTest extends SocketReadPendingTest {
|
||||||
@Override
|
@Override
|
||||||
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
||||||
return EpollSocketTestPermutation.INSTANCE.socket();
|
return EpollSocketTestPermutation.INSTANCE.socket();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBootstrap bootstrap, Bootstrap bootstrap2, ByteBufAllocator allocator) {
|
|
||||||
super.configure(bootstrap, bootstrap2, allocator);
|
|
||||||
bootstrap.option(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED)
|
|
||||||
.childOption(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED);
|
|
||||||
bootstrap2.option(EpollChannelOption.EPOLL_MODE, EpollMode.EDGE_TRIGGERED);
|
|
||||||
}
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user