This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat-tck.git

commit fd064450fe93c31057816d4a2923a12a7ab59056
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Fri Mar 29 16:49:46 2024 +0000

    Add support for running tests in parallel
---
 .../tomcat/tck/jsp/TomcatJspTckConfiguration.java  | 66 ++++++++++++++++++++++
 ...org.jboss.arquillian.core.spi.LoadableExtension |  1 +
 jsp-tck/src/test/resources/arquillian.xml          | 11 ++++
 3 files changed, 78 insertions(+)

diff --git 
a/jsp-tck/src/test/java/org/apache/tomcat/tck/jsp/TomcatJspTckConfiguration.java
 
b/jsp-tck/src/test/java/org/apache/tomcat/tck/jsp/TomcatJspTckConfiguration.java
new file mode 100644
index 0000000..f7dbb38
--- /dev/null
+++ 
b/jsp-tck/src/test/java/org/apache/tomcat/tck/jsp/TomcatJspTckConfiguration.java
@@ -0,0 +1,66 @@
+/*
+ * 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
+ *
+ *      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 org.apache.tomcat.tck.jsp;
+
+import java.lang.reflect.Field;
+import java.net.URL;
+
+import org.apache.catalina.Host;
+import org.apache.catalina.connector.Connector;
+import org.apache.catalina.startup.Tomcat;
+import org.apache.tomcat.util.net.SSLHostConfig;
+import org.apache.tomcat.util.net.SSLHostConfigCertificate;
+import org.apache.tomcat.util.net.SSLHostConfigCertificate.Type;
+import org.apache.tomcat.util.scan.StandardJarScanner;
+import org.jboss.arquillian.container.spi.event.container.BeforeDeploy;
+import org.jboss.arquillian.core.api.annotation.Observes;
+import org.jboss.arquillian.core.spi.LoadableExtension;
+import org.jboss.arquillian.container.tomcat.embedded.EmbeddedContextConfig;
+import 
org.jboss.arquillian.container.tomcat.embedded.Tomcat10EmbeddedContainer;
+
+public class TomcatJspTckConfiguration implements LoadableExtension {
+
+    @Override
+    public void register(ExtensionBuilder builder) {
+        builder.observer(JspObserver.class);
+    }
+
+    public static class JspObserver {
+
+        public void configureContext(@Observes final BeforeDeploy 
beforeDeploy) {
+            Tomcat10EmbeddedContainer container = (Tomcat10EmbeddedContainer) 
beforeDeploy.getDeployableContainer();
+            try {
+                // Obtain reference to Tomcat instance
+                Field tomcatField = 
Tomcat10EmbeddedContainer.class.getDeclaredField("tomcat");
+                tomcatField.setAccessible(true);
+                Tomcat tomcat = (Tomcat) tomcatField.get(container);
+                Connector connectorHttp = tomcat.getConnector();
+                int localPort = connectorHttp.getLocalPort();
+
+                // Update Arquillian configuration with port being used by 
Tomcat
+                Field configurationField = 
Tomcat10EmbeddedContainer.class.getDeclaredField("configuration");
+                configurationField.setAccessible(true);
+                Object configuration = configurationField.get(container);
+                Field portField = 
container.getConfigurationClass().getDeclaredField("bindHttpPort");
+                portField.setAccessible(true);
+                portField.set(configuration, Integer.valueOf(localPort));
+            } catch (ReflectiveOperationException e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+}
diff --git 
a/jsp-tck/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
 
b/jsp-tck/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
new file mode 100644
index 0000000..9a04876
--- /dev/null
+++ 
b/jsp-tck/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
@@ -0,0 +1 @@
+org.apache.tomcat.tck.jsp.TomcatJspTckConfiguration
\ No newline at end of file
diff --git a/jsp-tck/src/test/resources/arquillian.xml 
b/jsp-tck/src/test/resources/arquillian.xml
new file mode 100644
index 0000000..9367c9f
--- /dev/null
+++ b/jsp-tck/src/test/resources/arquillian.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+    xmlns="http://jboss.org/schema/arquillian";
+    xsi:schemaLocation="http://jboss.org/schema/arquillian 
http://www.jboss.org/schema/arquillian/arquillian_1_0.xsd";>
+    
+  <container qualifier="http" default="true">
+    <configuration>
+      <property name="bindHttpPort">0</property>
+    </configuration>
+  </container>
+</arquillian>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to