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

Test appClientSupport with InstantOn #30272

Open
wants to merge 1 commit into
base: integration
Choose a base branch
from
Open
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
9 changes: 9 additions & 0 deletions dev/io.openliberty.checkpoint_fat_appClientSupport/.classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="bin" path="fat/src"/>
<classpathentry kind="src" output="bin" path="test-applications/InjectionAppClient.jar/src"/>
<classpathentry kind="src" output="bin" path="test-applications/InjectionAppEJB.jar/src"/>
<classpathentry kind="con" path="aQute.bnd.classpath.container"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="output" path="bin"/>
</classpath>
23 changes: 23 additions & 0 deletions dev/io.openliberty.checkpoint_fat_appClientSupport/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>io.openliberty.checkpoint_fat_appClientSupport</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>bndtools.core.bndbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>bndtools.core.bndnature</nature>
</natures>
</projectDescription>
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
compileErrorAction=build
eclipse.preferences.version=1
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#Ant properties
#Automatically generated by the ant prepare.settings.files task
eclipse.preferences.version=1
encoding/<project>=UTF-8

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
eclipse.preferences.version=1
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
org.eclipse.jdt.ui.ignorelowercasenames=true
org.eclipse.jdt.ui.importorder=java;javax;org;com;
org.eclipse.jdt.ui.javadoc=true
org.eclipse.jdt.ui.ondemandthreshold=99
org.eclipse.jdt.ui.staticondemandthreshold=99
org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/** */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
sp_cleanup.add_default_serial_version_id=true
sp_cleanup.add_generated_serial_version_id=false
sp_cleanup.add_missing_annotations=true
sp_cleanup.add_missing_deprecated_annotations=true
sp_cleanup.add_missing_methods=false
sp_cleanup.add_missing_nls_tags=false
sp_cleanup.add_missing_override_annotations=true
sp_cleanup.add_missing_override_annotations_interface_methods=true
sp_cleanup.add_serial_version_id=false
sp_cleanup.always_use_blocks=true
sp_cleanup.always_use_parentheses_in_expressions=false
sp_cleanup.always_use_this_for_non_static_field_access=false
sp_cleanup.always_use_this_for_non_static_method_access=false
sp_cleanup.convert_to_enhanced_for_loop=false
sp_cleanup.correct_indentation=false
sp_cleanup.format_source_code=true
sp_cleanup.format_source_code_changes_only=false
sp_cleanup.make_local_variable_final=false
sp_cleanup.make_parameters_final=false
sp_cleanup.make_private_fields_final=false
sp_cleanup.make_type_abstract_if_missing_method=false
sp_cleanup.make_variable_declarations_final=true
sp_cleanup.never_use_blocks=false
sp_cleanup.never_use_parentheses_in_expressions=true
sp_cleanup.on_save_use_additional_actions=true
sp_cleanup.organize_imports=true
sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
sp_cleanup.remove_private_constructors=true
sp_cleanup.remove_trailing_whitespaces=true
sp_cleanup.remove_trailing_whitespaces_all=true
sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
sp_cleanup.remove_unnecessary_casts=true
sp_cleanup.remove_unnecessary_nls_tags=true
sp_cleanup.remove_unused_imports=true
sp_cleanup.remove_unused_local_variables=false
sp_cleanup.remove_unused_private_fields=true
sp_cleanup.remove_unused_private_members=false
sp_cleanup.remove_unused_private_methods=true
sp_cleanup.remove_unused_private_types=true
sp_cleanup.sort_members=false
sp_cleanup.sort_members_all=false
sp_cleanup.use_blocks=false
sp_cleanup.use_blocks_only_for_return_and_throw=false
sp_cleanup.use_parentheses_in_expressions=false
sp_cleanup.use_this_for_non_static_field_access=false
sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
sp_cleanup.use_this_for_non_static_method_access=false
sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
45 changes: 45 additions & 0 deletions dev/io.openliberty.checkpoint_fat_appClientSupport/bnd.bnd
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#*******************************************************************************
# Copyright (c) 2024 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
# IBM Corporation - initial API and implementation
#*******************************************************************************

-include= ~../cnf/resources/bnd/bundle.props
bVersion=1.0

fat.project: true

tested.features: appclientsupport-2.0,\
enterprisebeans-4.0,\
mdb-4.0,\
connectors-2.1,\
enterprisebeansremote-4.0,\
cdi-3.0,\
cdi-4.0,\
cdi-4.1,\
enterprisebeanshome-4.0,\
enterprisebeanslite-4.0,\
enterprisebeanspersistenttimer-4.0,\
checkpoint

src:\
fat/src,\
test-applications/InjectionAppClient.jar/src,\
test-applications/InjectionAppEJB.jar/src


-buildpath: \
io.openliberty.org.apache.commons.logging;version=latest,\
com.ibm.websphere.javaee.annotation.1.1;version=latest,\
com.ibm.websphere.javaee.ejb.3.2;version=latest,\
com.ibm.ws.kernel.service;version=latest,\
com.ibm.ws.logging;version=latest,\
com.ibm.ws.kernel.boot.common;version=latest,\
com.ibm.websphere.javaee.cdi.2.0;version=latest
94 changes: 94 additions & 0 deletions dev/io.openliberty.checkpoint_fat_appClientSupport/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
/*******************************************************************************
* Copyright (c) 2020, 2024 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
addRequiredLibraries.dependsOn addJakartaTransformer

/*
* This is where all test applications will be built.
*/
def appBuildDir = "${buildDir}/test-application"

/******************************************************************
******************************************************************
**
** InjectionAppClient.jar
**
******************************************************************
******************************************************************/
task InjectionAppClient_JAR (type: Zip, dependsOn: classes) {
destinationDirectory = new File(appBuildDir)
archiveFileName = 'InjectionAppClient.jar'

from (new File(projectDir, 'test-applications/InjectionAppClient.jar/resources')) {
include 'META-INF/**'
}
from (new File(projectDir, 'build/classes/java/main')) {
include 'io/openliberty/checkpoint/fat/appclientsupport/InjectionClientMain.class'
}
}

/******************************************************************
******************************************************************
**
** InjectionAppEJB.jar
**
******************************************************************
******************************************************************/
task InjectionAppEJB_JAR (type: Zip, dependsOn: classes) {
destinationDirectory = new File(appBuildDir)
archiveFileName = 'InjectionAppEJB.jar'

from (new File(projectDir, 'test-applications/InjectionAppEJB.jar/resources')) {
include 'META-INF/**'
}
from (new File(projectDir, 'build/classes/java/main')) {
include 'io/openliberty/checkpoint/fat/appclientsupport/*Bean.class'
include 'io/openliberty/checkpoint/fat/appclientsupport/view/*.class'
}
}

/******************************************************************
******************************************************************
**
** InjectionApp.ear
**
******************************************************************
******************************************************************/
task InjectionApp_EAR (type: Zip) {
dependsOn InjectionAppClient_JAR, InjectionAppEJB_JAR

destinationDirectory = new File(appBuildDir)
archiveFileName = 'InjectionApp.ear'

from (new File(projectDir, 'test-applications/InjectionApp.ear/resources')) {
include 'META-INF/**'
}
from (new File(buildDir, 'test-application')) {
include 'InjectionAppClient.jar', 'InjectionAppEJB.jar'
}
}


assemble.dependsOn InjectionApp_EAR

autoFVT.doLast {

copy {
from new File(project.buildDir, 'test-application/InjectionApp.ear')
into new File(autoFvtDir, 'publish/clients/clientInjection/dropins')
}

copy {
from new File(project.buildDir, 'test-application/InjectionApp.ear')
into new File(autoFvtDir, 'publish/servers/serverInjection/dropins')
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/*******************************************************************************
* Copyright (c) 2024 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/

package io.openliberty.checkpoint.fat.appclientsupport;

import static io.openliberty.checkpoint.fat.appclientsupport.FATSuite.transformApp;
import static org.junit.Assert.assertTrue;

import java.util.List;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestName;
import org.junit.runner.RunWith;

import com.ibm.websphere.simplicity.log.Log;

import componenttest.annotation.CheckpointTest;
import componenttest.custom.junit.runner.FATRunner;
import componenttest.topology.impl.LibertyClient;
import componenttest.topology.impl.LibertyClientFactory;
import componenttest.topology.impl.LibertyServer;
import componenttest.topology.impl.LibertyServerFactory;
import io.openliberty.checkpoint.spi.CheckpointPhase;

@RunWith(FATRunner.class)
@CheckpointTest
public class AppClientSupportTest {
private static Class<?> c = AppClientSupportTest.class;

private static final String app = "InjectionApp.ear";

@Rule
public TestName testName = new TestName();

private static LibertyClient client = LibertyClientFactory.getLibertyClient("clientInjection");
private static LibertyServer server = LibertyServerFactory.getLibertyServer("serverInjection");

@BeforeClass
public static void beforeClass() throws Exception {
transformApp(server.getServerRoot(), app);
server.setCheckpoint(CheckpointPhase.AFTER_APP_START, true, null);
server.startServer();
transformApp(client.getClientRoot(), app);
client.startClient();
}

@AfterClass
public static void afterClass() throws Exception {
server.stopServer();
}

/**
* Tests that a remote EJB is injected when using a
* java:global lookup.
*/
@Test
public void injectGlobal_EJB() throws Exception {
String methodName = testName.getMethodName();
int idx = -1;
if ((idx = methodName.indexOf("_EE")) != -1) {
methodName = methodName.substring(0, idx);
}
List<String> strings = client.findStringsInCopiedLogs(methodName + "-PASSED");
Log.info(c, methodName, "Found in logs: " + strings);
assertTrue("Did not find expected method message " + methodName, strings != null && strings.size() >= 1);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*******************************************************************************
* Copyright (c) 2024 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/

package io.openliberty.checkpoint.fat.appclientsupport;

import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;

import org.junit.ClassRule;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

import componenttest.custom.junit.runner.AlwaysPassesTest;
import componenttest.rules.repeater.FeatureReplacementAction;
import componenttest.rules.repeater.JakartaEE10Action;
import componenttest.rules.repeater.JakartaEEAction;
import componenttest.rules.repeater.RepeatTests;

@RunWith(Suite.class)
@SuiteClasses({
AlwaysPassesTest.class,
AppClientSupportTest.class
})
public class FATSuite {

@ClassRule
public static RepeatTests r = RepeatTests.withoutModification()
.andWith(new JakartaEE10Action().fullFATOnly())
.andWith(FeatureReplacementAction.EE11_FEATURES());

public static void transformApp(String rootPath, String app) {
if (JakartaEEAction.isEE9OrLaterActive()) {
Path someArchive = Paths.get(rootPath + File.separatorChar + "dropins" + File.separatorChar + app);
JakartaEEAction.transformApp(someArchive);
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
###############################################################################
# Copyright (c) 2024 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
# IBM Corporation - initial API and implementation
###############################################################################

bootstrap.include=../../servers/../servers/../servers/./testports.properties
Loading