This is an automated email from the ASF dual-hosted git repository. cdutz pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit a5e78c8489b7b6811737e1767e6036f61b8fb0da Author: Christofer Dutz <[email protected]> AuthorDate: Mon Oct 2 14:39:43 2023 +0200 fix: Made sure the OpcuaSubscriptionHandleTest doesn't run on Docker. --- .../protocol/OpcuaSubscriptionHandleTest.java | 2 + .../org/apache/plc4x/test/DisableInDockerFlag.java | 37 ++++++++++++++++ .../plc4x/test/DisableInDockerFlagCondition.java | 50 ++++++++++++++++++++++ 3 files changed, 89 insertions(+) diff --git a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/protocol/OpcuaSubscriptionHandleTest.java b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/protocol/OpcuaSubscriptionHandleTest.java index 20dd30fa70..143703f569 100644 --- a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/protocol/OpcuaSubscriptionHandleTest.java +++ b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/protocol/OpcuaSubscriptionHandleTest.java @@ -24,6 +24,7 @@ import org.apache.plc4x.java.api.messages.PlcSubscriptionRequest; import org.apache.plc4x.java.api.messages.PlcSubscriptionResponse; import org.apache.plc4x.java.api.types.PlcResponseCode; import org.apache.plc4x.java.opcua.OpcuaPlcDriverTest; +import org.apache.plc4x.test.DisableInDockerFlag; import org.apache.plc4x.test.DisableOnParallelsVmFlag; import org.eclipse.milo.examples.server.ExampleServer; import org.junit.jupiter.api.*; @@ -42,6 +43,7 @@ import static org.assertj.core.api.Assertions.assertThat; // I tracked it down into the core of Milo several times now, but got lost in there. // It's not a big issue as the GitHub runners and the Apache Jenkins still run the test. @DisableOnParallelsVmFlag +@DisableInDockerFlag public class OpcuaSubscriptionHandleTest { private static final Logger LOGGER = LoggerFactory.getLogger(OpcuaPlcDriverTest.class); diff --git a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/DisableInDockerFlag.java b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/DisableInDockerFlag.java new file mode 100644 index 0000000000..414a859446 --- /dev/null +++ b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/DisableInDockerFlag.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF 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 + * + * https://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 org.apache.plc4x.test; + +import org.junit.jupiter.api.extension.ExtendWith; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Some tests seem to only fail or block when run in Docker. + * Instead of trying to fix this problem, we'll try this for the + * time till someone finds the problem. + */ +@Target({ElementType.TYPE, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@ExtendWith(DisableInDockerFlagCondition.class) +public @interface DisableInDockerFlag { +} diff --git a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/DisableInDockerFlagCondition.java b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/DisableInDockerFlagCondition.java new file mode 100644 index 0000000000..a481117a11 --- /dev/null +++ b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/DisableInDockerFlagCondition.java @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF 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 + * + * https://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 org.apache.plc4x.test; + +import org.apache.commons.lang3.SystemUtils; +import org.junit.jupiter.api.extension.ConditionEvaluationResult; +import org.junit.jupiter.api.extension.ExecutionCondition; +import org.junit.jupiter.api.extension.ExtensionContext; + +import java.io.*; + +public class DisableInDockerFlagCondition implements ExecutionCondition { + + private static final boolean isDocker; + static { + boolean localIsDocker = false; + if (SystemUtils.IS_OS_LINUX) { + File dockerEnvFile = new File("/.dockerenv"); + if(dockerEnvFile.exists()) { + localIsDocker = true; + } + } + isDocker = localIsDocker; + } + + @Override + public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext extensionContext) { + if(isDocker) { + return ConditionEvaluationResult.disabled("Docker detected"); + } + return ConditionEvaluationResult.enabled("Docker not detected"); + } + +}
