A test framework for z / OS-based hybrid cloud applications called Galasa is provided as an open source project. It's only a short time since it was released (V0.3.0 released in December 2019), and at the time of writing this article (August 2020), it's still at the level of V0.10.0, but it seems like it's about to come. It is attractive that it targets z / OS applications. What's more, it is extremely hot that it is made at IBM Hursley Lab (UK), which is also the development base of CICS TS. So, it is a log when I tried using this Galasa.
Galasa is a testing framework for z / OS based hybrid cloud applications. Since the Eclipse plug-in is provided, you can implement test code such as 3270 application and z / OS batch application in Java like JUnit on Eclipse and execute the test. A sample test code is provided, but to make it work as a tutorial, it even provides something like a simulator of a host application that runs on Eclipse. So you can try a sample using this framework on Windows only (without having to prepare a z / OS or z / OS app). Great!
Let's build an environment on Windows 10.
Download the Windows 64bit version of Eclipse IDE for Enterprise Java Developers (Eclipse IDE 2020-06) from the following. Eclipse IDE 2020-06 R Packages
Unzip the downloaded zip file (eclipse-jee-2020-06-R-win32-x86_64.zip: about 400MB) to a suitable directory.
Reference: Installing the Galasa plug-in
Launch Eclipse and select Help --Install New Software
Specify https://p2.galasa.dev/
in the Work with field, select all the displayed Galasa features, and click Next.
Next
Check License and Finish
Eclipse restart
A menu called "Galasa" has been added to the main menu of Eclipse!
Galasa provides a component (including a sample app) for simulating a mainframe application called SimBank. It seems to work with a component called SimPlatform, which seems to be able to simulate CICS and 3270 applications on Eclipse. It can be used as a dummy host application when running a sample test project, so let's run it first.
Galasa --Setup Select Galasa Workspace
The following message is displayed on the console.
A directory called .galasa was created under the home directory, and some files were created there. The file size is 0 Byte, so the contents are empty.
C:\Users\TomohiroTaguchi\.galasa>dir
The volume label on drive C is Windows
Volume serial number is 1866-E2FC
C:\Users\TomohiroTaguchi\.galasa directory
2020/08/15 15:09 <DIR> .
2020/08/15 15:09 <DIR> ..
2020/08/15 15:09 0 bootstrap.properties
2020/08/15 15:09 0 cps.properties
2020/08/15 15:09 0 credentials.properties
2020/08/15 15:09 0 dss.properties
2020/08/15 15:09 0 overrides.properties
5 files 0 bytes
2 directories 253,723,049,984 bytes of free space
Edit overrides.properties as follows:
overrides.properties
zos.dse.tag.SIMBANK.imageid=SIMBANK
zos.dse.tag.SIMBANK.clusterid=SIMBANK
simbank.dse.instance.name=SIMBANK
simbank.instance.SIMBANK.zos.image=SIMBANK
zos.image.SIMBANK.ipv4.hostname=127.0.0.1
zos.image.SIMBANK.telnet.port=2023
zos.image.SIMBANK.webnet.port=2080
zos.image.SIMBANK.telnet.tls=false
zos.image.SIMBANK.credentials=SIMBANK
zosmf.server.SIMBANK.images=SIMBANK
zosmf.server.SIMBANK.hostname=127.0.0.1
zosmf.server.SIMBANK.port=2040
zosmf.server.SIMBANK.https=false
Edit credentials.properties as follows:
credentials.properties
secure.credentials.SIMBANK.username=IBMUSER
secure.credentials.SIMBANK.password=SYS1
Reference: Exploring Galasa SimBank
SimBank seems to simulate the CICS 3270 app. First, let's see how the app under test works (it works on Eclipse without the actual z / OS).
Select Run --Run Configurations from the Eclipse menu
Right click on Galasa Sim Bank and select New Configuration
Specify a name appropriately and leave the default as Apply
The following message was output to the Console and the sample application was started.
It seems that TN3270 is accepted on port 2023, so try accessing it from a 3270 emulator such as PCOM.
I was able to connect!
Specify IBMUSER / SYS1 for Userid / Password
It seems that an application called BANKTEST is running, so select PF1
The login screen of the CICS terminal is displayed.
Clear the screen and execute the transaction "BANK".
A menu will appear, select Browse (PF1)
Enter "123456789" for Account Number and Enter
The information of the specified Account is displayed.
Also check the Account Number "987654321".
Go back to the menu with PF3 and then select Transfer (PF4).
Move $ 1 to Account "123456789" => "987654321".
success
If you browse again, one will decrease by $ 1 and the other will increase by $ 1.
The log at the time of operation is output to the Console of Eclipse as follows. (Is it the log output by the application? Is it like JOBLOG or SYSLOG output?)
Press F3 to log off CICS and return to the first screen.
Here is the main issue. Let's test SimBank provided as a sample. A test project is also provided as a sample, so use that.
Select File --New --Example from the Eclipse menu
Select SimBank example projects and Next
Finish as it is
Two projects will be added.
Right click on dev.galasa.simbank.manager and select Run As --Maven install
The processing progress is output to the console. Downloading of dependent files etc. will run. It is OK if you can confirm the message of BUILD SUCCESS.
Run dev.galasa.simbank.tests as well as Maven install.
This completes the creation of the sample test project. Some code for testing is provided under dev.galasa.simbank.tests in src / main / java, so we will implement it.
Before starting the test, start the SimBank configured earlier. (Select Run --Run Configurations --Sim Bank and Run)
Here is the code to test the part that runs the 3270 based CICS application (BANK) from PCOM above. 3270 Terminal operations can be written and executed as Java test code.
SimBankIVT.java
/*
* Licensed Materials - Property of IBM
*
* (c) Copyright IBM Corp. 2019.
*/
package dev.galasa.simbank.tests;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.IOException;
import java.net.URISyntaxException;
import dev.galasa.Test;
import dev.galasa.artifact.BundleResources;
import dev.galasa.artifact.IBundleResources;
import dev.galasa.artifact.TestBundleResourceException;
import dev.galasa.core.manager.CoreManager;
import dev.galasa.core.manager.ICoreManager;
import dev.galasa.http.HttpClient;
import dev.galasa.http.HttpClientException;
import dev.galasa.http.IHttpClient;
import dev.galasa.zos.IZosImage;
import dev.galasa.zos.ZosImage;
import dev.galasa.zos.ZosManagerException;
import dev.galasa.zos3270.FieldNotFoundException;
import dev.galasa.zos3270.ITerminal;
import dev.galasa.zos3270.KeyboardLockedException;
import dev.galasa.zos3270.TerminalInterruptedException;
import dev.galasa.zos3270.TextNotFoundException;
import dev.galasa.zos3270.TimeoutException;
import dev.galasa.zos3270.Zos3270Terminal;
import dev.galasa.zos3270.spi.DatastreamException;
import dev.galasa.zos3270.spi.NetworkException;
@Test
public class SimBankIVT {
@ZosImage(imageTag = "SIMBANK")
public IZosImage image;
@Zos3270Terminal(imageTag = "SIMBANK")
public ITerminal terminal;
@BundleResources
public IBundleResources resources;
@HttpClient
public IHttpClient client;
@CoreManager
public ICoreManager coreManager;
@Test
public void testNotNull() {
// Check all objects loaded
assertThat(terminal).isNotNull();
assertThat(resources).isNotNull();
assertThat(client).isNotNull();
}
/**
* Test which checks the initial balance of an account, uses the webservice to
* credit the account, then checks the balance again. The test passes if the
* final balance is equal to the old balance + the credited amount.
*
* @throws TestBundleResourceException
* @throws URISyntaxException
* @throws IOException
* @throws HttpClientException
* @throws ZosManagerException
* @throws TextNotFoundException
* @throws FieldNotFoundException
* @throws NetworkException
* @throws KeyboardLockedException
* @throws TimeoutException
* @throws DatastreamException
* @throws InterruptedException
*/
@Test
public void checkBankIsAvailable() throws TestBundleResourceException, URISyntaxException, IOException,
HttpClientException, ZosManagerException, DatastreamException, TimeoutException, KeyboardLockedException,
NetworkException, FieldNotFoundException, TextNotFoundException, TerminalInterruptedException {
// Register the password to the confidential text filtering service
coreManager.registerConfidentialText("SYS1", "IBMUSER password");
// Logon through the session manager
terminal.waitForKeyboard().positionCursorToFieldContaining("Userid").tab().type("IBMUSER")
.positionCursorToFieldContaining("Password").tab().type("SYS1").enter().waitForKeyboard();
// Assert that the session manager has a bank session available
assertThat(terminal.retrieveScreen()).containsOnlyOnce("SIMPLATFORM MAIN MENU");
assertThat(terminal.retrieveScreen()).containsOnlyOnce("BANKTEST");
// Open banking application
terminal.pf1().waitForKeyboard().clear().waitForKeyboard();
terminal.type("bank").enter().waitForKeyboard();
// Assert that the bank menu is showing
assertThat(terminal.retrieveScreen()).containsOnlyOnce("Options Description PFKey ");
assertThat(terminal.retrieveScreen()).containsOnlyOnce("BROWSE Browse Accounts PF1");
assertThat(terminal.retrieveScreen()).containsOnlyOnce("TRANSF Transfer Money PF4");
}
}
Let's actually run this test code. Select Run --Run Configurations from the Eclipse menu Right-click Galasa from the menu on the left and select New Configuration
Give it a name and select Project: dev.galasa.simbank.tests, TestClass: SimBankIVT, Apply, Run
You should see a result similar to the following in the Console.
18/08/2020 17:25:55.704 DEBUG dev.galasa.boot.Launcher.processCommandLine - Supplied command line arguments: --bootstrap file:///C:/Users/TomohiroTaguchi/.galasa/bootstrap.properties --overrides file:///C:/Users/TOMOHI~1/AppData/Local/Temp/galasa_eclipse_cache_8879301005844695930/galasaoverrides1461489270957804148.properties --localmaven file:/C:/Users/TomohiroTaguchi/.m2/repository/ --remotemaven https://repo.maven.apache.org/maven2/ --obr file:/C:/y/workspace/workspace_eclipse-jee-2020-06-R-galasa/.metadata/.plugins/dev.galasa.eclipse/workspace.obr --obr mvn:dev.galasa/dev.galasa.uber.obr/LATEST/obr --test dev.galasa.simbank.tests/dev.galasa.simbank.tests.SimBankIVT
18/08/2020 17:25:55.724 DEBUG dev.galasa.boot.Launcher.launch - OBR Repository Files: [file:/C:/y/workspace/workspace_eclipse-jee-2020-06-R-galasa/.metadata/.plugins/dev.galasa.eclipse/workspace.obr, mvn:dev.galasa/dev.galasa.uber.obr/LATEST/obr]
18/08/2020 17:25:55.725 DEBUG dev.galasa.boot.Launcher.launch - Launching Framework...
18/08/2020 17:25:55.725 DEBUG dev.galasa.boot.Launcher.buildFramework - Launching Framework...
18/08/2020 17:25:55.725 DEBUG dev.galasa.boot.felix.FelixFramework.buildFramework - Building Felix Framework...
18/08/2020 17:25:55.808 DEBUG dev.galasa.boot.felix.FelixFramework.buildFramework - Initializing Felix Framework
18/08/2020 17:25:55.930 DEBUG dev.galasa.boot.felix.FelixFramework.buildFramework - Starting Felix Framework
18/08/2020 17:25:55.931 DEBUG dev.galasa.boot.felix.FelixFramework.buildFramework - Felix Framework started
18/08/2020 17:25:55.932 DEBUG dev.galasa.boot.felix.FelixFramework.buildFramework - Installing required OSGi bundles
18/08/2020 17:25:57.299 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Attempting to download https://repo.maven.apache.org/maven2/dev/galasa/dev.galasa.uber.obr/maven-metadata.xml
18/08/2020 17:25:59.132 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Version 'LATEST' resolved to 0.10.0
18/08/2020 17:25:59.134 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Checking https://repo.maven.apache.org/maven2
18/08/2020 17:25:59.134 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Attempting to download https://repo.maven.apache.org/maven2/dev/galasa/dev.galasa.uber.obr/0.10.0/dev.galasa.uber.obr-0.10.0.obr
18/08/2020 17:25:59.928 DEBUG dev.galasa.boot.felix.FelixFramework.buildFramework - installing Framework bundle
18/08/2020 17:26:00.116 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Checking https://repo.maven.apache.org/maven2
18/08/2020 17:26:00.116 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Attempting to download https://repo.maven.apache.org/maven2/org/apache/felix/org.apache.felix.http.servlet-api/1.1.2/org.apache.felix.http.servlet-api-1.1.2.jar
18/08/2020 17:26:00.305 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Checking https://repo.maven.apache.org/maven2
18/08/2020 17:26:00.305 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Attempting to download https://repo.maven.apache.org/maven2/org/apache/bcel/bcel/6.3/bcel-6.3.jar
18/08/2020 17:26:00.744 INFO d.g.f.Framework - Framework service activated
18/08/2020 17:26:00.745 INFO d.g.f.Framework - Framework version = 0.10.0
18/08/2020 17:26:00.751 INFO d.g.f.Framework - Framework build = Tue, 4 Aug 2020 22:57:46 +0900
18/08/2020 17:26:00.761 DEBUG dev.galasa.boot.Launcher.launch - Test Bundle: dev.galasa.simbank.tests
18/08/2020 17:26:00.761 DEBUG dev.galasa.boot.Launcher.launch - Test Class: dev.galasa.simbank.tests.SimBankIVT
18/08/2020 17:26:00.767 DEBUG dev.galasa.boot.felix.FelixFramework.runTest - Invoking runTest()
18/08/2020 17:26:00.768 INFO d.g.f.FrameworkInitialisation - Initialising the Galasa Framework
18/08/2020 17:26:00.770 DEBUG d.g.f.FrameworkInitialisation - Configuration Property Store is file:///C:/Users/TomohiroTaguchi/.galasa/cps.properties
18/08/2020 17:26:00.781 DEBUG d.g.f.FrameworkInitialisation - Selected CPS Service is dev.galasa.framework.internal.cps.FpfConfigurationPropertyStore
18/08/2020 17:26:00.782 DEBUG d.g.f.FrameworkInitialisation - Dynamic Status Store is file:///C:/Users/TomohiroTaguchi/.galasa/dss.properties
18/08/2020 17:26:00.801 INFO d.g.f.FrameworkInitialisation - Allocated Run Name U1 to this run
18/08/2020 17:26:00.803 DEBUG d.g.f.FrameworkInitialisation - Result Archive Stores are [file:///C:/Users/TomohiroTaguchi/.galasa/ras]
18/08/2020 17:26:00.827 DEBUG d.g.f.FrameworkInitialisation - Credentials Store is file:///C:/Users/TomohiroTaguchi/.galasa/credentials.properties
18/08/2020 17:26:00.834 INFO d.g.f.FrameworkInitialisation - Framework initialised
18/08/2020 17:26:00.964 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Checking https://repo.maven.apache.org/maven2
18/08/2020 17:26:00.965 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Attempting to download https://repo.maven.apache.org/maven2/dev/galasa/com.jcraft.jsch/0.1.55/com.jcraft.jsch-0.1.55.jar
18/08/2020 17:26:01.267 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Checking https://repo.maven.apache.org/maven2
18/08/2020 17:26:01.268 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Attempting to download https://repo.maven.apache.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
18/08/2020 17:26:01.957 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Checking https://repo.maven.apache.org/maven2
18/08/2020 17:26:01.958 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Attempting to download https://repo.maven.apache.org/maven2/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar
18/08/2020 17:26:02.238 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Checking https://repo.maven.apache.org/maven2
18/08/2020 17:26:02.238 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Attempting to download https://repo.maven.apache.org/maven2/org/apache/felix/org.apache.felix.configadmin/1.9.16/org.apache.felix.configadmin-1.9.16.jar
18/08/2020 17:26:02.572 INFO d.g.f.TestRunner - Run test: dev.galasa.simbank.tests/dev.galasa.simbank.tests.SimBankIVT
18/08/2020 17:26:02.660 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Checking https://repo.maven.apache.org/maven2
18/08/2020 17:26:02.661 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Attempting to download https://repo.maven.apache.org/maven2/dev/galasa/dev.galasa.zosbatch.zosmf.manager/0.10.0/dev.galasa.zosbatch.zosmf.manager-0.10.0.jar
18/08/2020 17:26:03.074 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Checking https://repo.maven.apache.org/maven2
18/08/2020 17:26:03.074 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Attempting to download https://repo.maven.apache.org/maven2/dev/galasa/dev.galasa.zosmf.manager/0.10.0/dev.galasa.zosmf.manager-0.10.0.jar
18/08/2020 17:26:03.519 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Checking https://repo.maven.apache.org/maven2
18/08/2020 17:26:03.520 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Attempting to download https://repo.maven.apache.org/maven2/dev/galasa/dev.galasa.zosconsole.zosmf.manager/0.10.0/dev.galasa.zosconsole.zosmf.manager-0.10.0.jar
18/08/2020 17:26:03.838 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Checking https://repo.maven.apache.org/maven2
18/08/2020 17:26:03.839 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Attempting to download https://repo.maven.apache.org/maven2/dev/galasa/dev.galasa.zosfile.zosmf.manager/0.10.0/dev.galasa.zosfile.zosmf.manager-0.10.0.jar
18/08/2020 17:26:04.120 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Checking https://repo.maven.apache.org/maven2
18/08/2020 17:26:04.120 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Attempting to download https://repo.maven.apache.org/maven2/dev/galasa/dev.galasa.zostsocommand.ssh.manager/0.10.0/dev.galasa.zostsocommand.ssh.manager-0.10.0.jar
18/08/2020 17:26:04.422 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Checking https://repo.maven.apache.org/maven2
18/08/2020 17:26:04.423 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Attempting to download https://repo.maven.apache.org/maven2/dev/galasa/dev.galasa.zosunixcommand.ssh.manager/0.10.0/dev.galasa.zosunixcommand.ssh.manager-0.10.0.jar
18/08/2020 17:26:04.685 DEBUG d.g.f.TestRunManagers - The following Managers are active:-
18/08/2020 17:26:04.685 DEBUG d.g.f.TestRunManagers - dev.galasa.core.manager.internal.CoreManager
18/08/2020 17:26:04.685 DEBUG d.g.f.TestRunManagers - dev.galasa.zos.internal.ZosManagerImpl
18/08/2020 17:26:04.686 DEBUG d.g.f.TestRunManagers - dev.galasa.ipnetwork.internal.IpNetworkManagerImpl
18/08/2020 17:26:04.686 DEBUG d.g.f.TestRunManagers - dev.galasa.zos3270.internal.Zos3270ManagerImpl
18/08/2020 17:26:04.686 DEBUG d.g.f.TestRunManagers - dev.galasa.http.internal.HttpManagerImpl
18/08/2020 17:26:04.686 DEBUG d.g.f.TestRunManagers - dev.galasa.artifact.internal.ArtifactManagerImpl
18/08/2020 17:26:04.687 DEBUG d.g.f.TestRunManagers - The following Managers are sorted in provisioning order:-
18/08/2020 17:26:04.687 DEBUG d.g.f.TestRunManagers - dev.galasa.core.manager.internal.CoreManager
18/08/2020 17:26:04.687 DEBUG d.g.f.TestRunManagers - dev.galasa.zos.internal.ZosManagerImpl
18/08/2020 17:26:04.687 DEBUG d.g.f.TestRunManagers - dev.galasa.ipnetwork.internal.IpNetworkManagerImpl
18/08/2020 17:26:04.687 DEBUG d.g.f.TestRunManagers - dev.galasa.zos3270.internal.Zos3270ManagerImpl
18/08/2020 17:26:04.688 DEBUG d.g.f.TestRunManagers - dev.galasa.http.internal.HttpManagerImpl
18/08/2020 17:26:04.688 DEBUG d.g.f.TestRunManagers - dev.galasa.artifact.internal.ArtifactManagerImpl
18/08/2020 17:26:04.719 INFO d.g.f.TestRunner - Starting Provision Generate phase
18/08/2020 17:26:04.722 INFO d.g.z.i.ZosManagerImpl - zOS DSE Image SIMBANK selected for zosTag 'SIMBANK'
18/08/2020 17:26:05.022 INFO d.g.z.i.Zos3270ManagerImpl - Generated a terminal for zOS Image tagged SIMBANK
18/08/2020 17:26:05.036 INFO d.g.f.TestRunner - Starting Provision Build phase
18/08/2020 17:26:05.037 INFO d.g.f.TestRunner - Starting Provision Start phase
18/08/2020 17:26:05.037 INFO d.g.z.i.Zos3270ManagerImpl - Connecting zOS3270 Terminals
18/08/2020 17:26:05.060 INFO d.g.f.TestRunner - Running the test class
18/08/2020 17:26:05.060 INFO d.g.f.TestClassWrapper - Starting
----------------------- ****************************************************************************************************
----------------------- *** Start of test class dev.galasa.simbank.tests.SimBankIVT
----------------------- ****************************************************************************************************
18/08/2020 17:26:05.061 INFO d.g.f.GenericMethodWrapper - Starting
----------------------- ****************************************************************************************************
----------------------- *** Start of test method dev.galasa.simbank.tests.SimBankIVT#testNotNull,type=Test
----------------------- ****************************************************************************************************
18/08/2020 17:26:05.096 INFO d.g.f.GenericMethodWrapper - Ending
----------------------- ****************************************************************************************************
----------------------- *** Passed - Test method dev.galasa.simbank.tests.SimBankIVT#testNotNull,type=Test
----------------------- ****************************************************************************************************
18/08/2020 17:26:05.097 INFO d.g.f.GenericMethodWrapper - Starting
----------------------- ****************************************************************************************************
----------------------- *** Start of test method dev.galasa.simbank.tests.SimBankIVT#checkBankIsAvailable,type=Test
----------------------- ****************************************************************************************************
18/08/2020 17:26:05.098 INFO d.g.f.i.c.FrameworkConfidentialTextService - Confidential text registered as '*1**', with comment IBMUSER password
18/08/2020 17:26:05.317 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-1
=| TERM0001 SIMPLATFORM LOGON SCREEN 17:26:05|
=| -------------------------------------------------------------------------------|
=| |
=| |
=| *******\ ******\ ****\ ****\ |
=| *********\ ******\ *****\ *****\ |
=| **\\\\\**\ \**\\\ **\ **\ **\\**\ |
=| **\ **\ **\ **\**\\ **\ |
=| *********\ **\ **\ ***\\ **\ |
=| *********\ **\ **\ *\\ **\ |
=| \\\\\\**\ **\ **\ \ **\ |
=| **\ **\ **\ **\ |
=| *********\ ******\ **\ **\ |
=| *******\\ ******\ **\ **\ |
=| \\\\\\\ \\\\\\ \\ \\ |
=| |
=| |
=| P L A T F O R M |
=| |
=| |
=| -------------------------------------------------------------------------------|
=| Userid ===> Password ===> |
^| ^
=| |
=| |
18/08/2020 17:26:05.340 DEBUG d.g.z.s.Zos3270TerminalImpl - SENDING, ENTER to 3270 terminal term1, updateId=term1-2
=| TERM0001 SIMPLATFORM LOGON SCREEN 17:26:05|
=| -------------------------------------------------------------------------------|
=| |
=| |
=| *******\ ******\ ****\ ****\ |
=| *********\ ******\ *****\ *****\ |
=| **\\\\\**\ \**\\\ **\ **\ **\\**\ |
=| **\ **\ **\ **\**\\ **\ |
=| *********\ **\ **\ ***\\ **\ |
=| *********\ **\ **\ *\\ **\ |
=| \\\\\\**\ **\ **\ \ **\ |
=| **\ **\ **\ **\ |
=| *********\ ******\ **\ **\ |
=| *******\\ ******\ **\ **\ |
=| \\\\\\\ \\\\\\ \\ \\ |
=| |
=| |
=| P L A T F O R M |
=| |
=| |
=| -------------------------------------------------------------------------------|
=| Userid ===> IBMUSER Password ===> *1** |
^| ^
=| |
=| |
18/08/2020 17:26:05.361 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-3
=| TERM0001 SIMPLATFORM MAIN MENU 17:26:05|
=| -------------------------------------------------------------------------------|
=| |
=| Application PKey Status |
=| ----------- ---- ------------------------------------------------- |
=| |
=| BANKTEST PF1 UP |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| -------------------------------------------------------------------------------|
=| Application ===> |
^| ^
=| |
=| |
18/08/2020 17:26:05.377 DEBUG d.g.z.s.Zos3270TerminalImpl - SENDING, PF1 to 3270 terminal term1, updateId=term1-4
=| TERM0001 SIMPLATFORM MAIN MENU 17:26:05|
=| -------------------------------------------------------------------------------|
=| |
=| Application PKey Status |
=| ----------- ---- ------------------------------------------------- |
=| |
=| BANKTEST PF1 UP |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| -------------------------------------------------------------------------------|
=| Application ===> |
^| ^
=| |
=| |
18/08/2020 17:26:05.396 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-5
=| DFHZC2312 *** WELCOME TO CICS *** 17:26:05 |
^|^
=| |
=| |
=| |
=| |
=| |
=| ******\ ******\ ******\ ******\(R) |
=| ********\ ******\ ********\ ********\ |
=| **\\\\**\ **\\\ **\\\\**\ **\\\\**\ |
=| **\ \\ **\ **\ \\ **\ \\ |
=| **\ **\ **\ *******\ |
=| **\ **\ **\ *******\ |
=| **\ **\ **\ \\\\**\ |
=| **\ **\ **\ **\ **\ **\ **\ |
=| ********\ ******\ ********\ ********\ |
=| ******\\ ******\ ******\\ ******\\ |
=| \\\\\\ \\\\\\ \\\\\\ \\\\\\ |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 17:26:05.412 DEBUG d.g.z.s.Zos3270TerminalImpl - SENDING, CLEAR to 3270 terminal term1, updateId=term1-6
=| |
^|^
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 17:26:05.608 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-7
=| |
^|^
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 17:26:05.619 DEBUG d.g.z.s.Zos3270TerminalImpl - SENDING, ENTER to 3270 terminal term1, updateId=term1-8
=|bank |
^| ^
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 17:26:05.640 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-9
=| CONNECTED SIMBANK MAIN MENU 17:26:05|
=| -------------------------------------------------------------------------------|
=| ===> |
^| ^
=| |
=| Options Description PFKey |
=| ------- --------------------------------------------------------------- |
=| BROWSE Browse Accounts PF1 |
=| TRANSF Transfer Money PF4 |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 17:26:05.642 INFO d.g.f.GenericMethodWrapper - Ending
----------------------- ****************************************************************************************************
----------------------- *** Passed - Test method dev.galasa.simbank.tests.SimBankIVT#checkBankIsAvailable,type=Test
----------------------- ****************************************************************************************************
18/08/2020 17:26:05.642 INFO d.g.f.TestClassWrapper - Ending
----------------------- ****************************************************************************************************
----------------------- *** Passed - Test class dev.galasa.simbank.tests.SimBankIVT
----------------------- ****************************************************************************************************
18/08/2020 17:26:05.644 INFO d.g.f.TestRunner - Starting Provision Stop phase
18/08/2020 17:26:05.659 INFO d.g.f.TestRunner - Starting Provision Discard phase
18/08/2020 17:26:06.088 DEBUG dev.galasa.boot.felix.FelixFramework.stopFramework - Stopping Felix framework
18/08/2020 17:26:06.107 INFO d.g.f.Framework - Framework service deactivated
18/08/2020 17:26:06.121 DEBUG dev.galasa.boot.felix.FelixFramework.stopFramework - Felix framework stopped
18/08/2020 17:26:06.121 INFO dev.galasa.boot.Launcher.launch - Boot complete
I was able to run a test on a 3270 terminal with test code!
The following screen was also displayed behind the scenes.
This tests the logic for "updating the amount of a particular account" that is (possibly) implemented as a CICS web service. The test target is a Web service call, but I put a flow of 3270 screens to get the amount information before and after. In other words, the test code has the following flow. 1.3270 Call the app to get the value before the update 2. Update processing by calling a Web service (transfer a specific amount in a specific account) 3.3270 Call the app to get the updated value 4. Check the values before and after the update
For reference ... Since the logic to be tested is a Web service call, you can check the operation of SOAP request with a general-purpose tool (Tarend API Tester of Chrome) as shown below.
BasicAccountCreditTest
/*
* Licensed Materials - Property of IBM
*
* (c) Copyright IBM Corp. 2019.
*/
package dev.galasa.simbank.tests;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.IOException;
import java.math.BigDecimal;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import dev.galasa.Test;
import dev.galasa.artifact.BundleResources;
import dev.galasa.artifact.IBundleResources;
import dev.galasa.artifact.TestBundleResourceException;
import dev.galasa.core.manager.CoreManager;
import dev.galasa.core.manager.ICoreManager;
import dev.galasa.http.HttpClient;
import dev.galasa.http.HttpClientException;
import dev.galasa.http.IHttpClient;
import dev.galasa.simbank.manager.ISimBank;
import dev.galasa.simbank.manager.SimBank;
import dev.galasa.zos.IZosImage;
import dev.galasa.zos.ZosImage;
import dev.galasa.zos.ZosManagerException;
import dev.galasa.zos3270.FieldNotFoundException;
import dev.galasa.zos3270.ITerminal;
import dev.galasa.zos3270.KeyboardLockedException;
import dev.galasa.zos3270.TerminalInterruptedException;
import dev.galasa.zos3270.TextNotFoundException;
import dev.galasa.zos3270.TimeoutException;
import dev.galasa.zos3270.Zos3270Terminal;
import dev.galasa.zos3270.spi.DatastreamException;
import dev.galasa.zos3270.spi.NetworkException;
@Test
public class BasicAccountCreditTest {
@SimBank
public ISimBank simBank;
@ZosImage(imageTag = "SIMBANK")
public IZosImage image;
@Zos3270Terminal(imageTag = "SIMBANK")
public ITerminal terminal;
@BundleResources
public IBundleResources resources;
@CoreManager
public ICoreManager coreManager;
@HttpClient
public IHttpClient client;
/**
* Test which checks the initial balance of an account, uses the webservice to
* credit the account, then checks the balance again. The test passes if the
* final balance is equal to the old balance + the credited amount.
*
* @throws TestBundleResourceException
* @throws URISyntaxException
* @throws IOException
* @throws HttpClientException
* @throws ZosManagerException
* @throws TextNotFoundException
* @throws FieldNotFoundException
* @throws NetworkException
* @throws KeyboardLockedException
* @throws TimeoutException
* @throws DatastreamException
* @throws InterruptedException
*/
@Test
public void updateAccountWebServiceTest() throws TestBundleResourceException, URISyntaxException, IOException,
HttpClientException, ZosManagerException, DatastreamException, TimeoutException, KeyboardLockedException,
NetworkException, FieldNotFoundException, TextNotFoundException, TerminalInterruptedException {
// Register the password to the confidential text filtering service
coreManager.registerConfidentialText("SYS1", "IBMUSER password");
// Initial actions to get into banking application
terminal.waitForKeyboard().positionCursorToFieldContaining("Userid").tab().type("IBMUSER")
.positionCursorToFieldContaining("Password").tab().type("SYS1").enter().waitForKeyboard()
// Open banking application
.pf1().waitForKeyboard().clear().waitForKeyboard().type("bank").enter().waitForKeyboard();
// Obtain the initial balance
BigDecimal userBalance = getBalance("123456789");
// Set the amount be credited and call web service
BigDecimal amount = BigDecimal.valueOf(500.50);
HashMap<String, Object> parameters = new HashMap<String, Object>();
parameters.put("ACCOUNT_NUMBER", "123456789");
parameters.put("AMOUNT", amount.toString());
// Load sample request with the given parameters
String textContent = resources.retrieveSkeletonFileAsString("/resources/skeletons/testSkel.skel", parameters);
// Invoke the web request
client.setURI(new URI("http://" + this.simBank.getHost() + ":" + this.simBank.getWebnetPort()));
client.postText("updateAccount", textContent);
// Obtain the final balance
BigDecimal newUserBalance = getBalance("123456789");
// Assert that the correct amount has been credited to the account
assertThat(newUserBalance).isEqualTo(userBalance.add(amount));
}
/**
* Navigate through the banking application and extract the balance of a given
* account
*
* @param accountNum - Account Number of the account being queried
* @return Balance of the account being queried
* @throws TextNotFoundException
* @throws FieldNotFoundException
* @throws NetworkException
* @throws KeyboardLockedException
* @throws TimeoutException
* @throws DatastreamException
* @throws InterruptedException
*/
private BigDecimal getBalance(String accountNum)
throws DatastreamException, TimeoutException, KeyboardLockedException, NetworkException,
FieldNotFoundException, TextNotFoundException, TerminalInterruptedException {
BigDecimal amount = BigDecimal.ZERO;
// Open account menu and enter account number
terminal.pf1().waitForKeyboard().positionCursorToFieldContaining("Account Number").tab().type(accountNum)
.enter().waitForKeyboard();
// Retrieve balance from screen
amount = new BigDecimal(terminal.retrieveFieldTextAfterFieldWithString("Balance").trim());
// Return to bank menu
terminal.pf3().waitForKeyboard();
return amount;
}
}
In this code, the following Skelton is prepared as a SOAP message assembly when calling a Web service, and the variables contained in it are replaced. It seems that the mechanism around that is also provided by the Galasa framework.
testSkel.skel
<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'>
<soapenv:Body>
<ns1:UPDACCTOperation xmlns:ns1='http://www.UPDACCT.STCUSTN2.Request.com'>
<ns1:update_account_record>
<ns1:account_key>
<ns1:sort_code>00-00-00</ns1:sort_code>
<ns1:account_number>++ACCOUNT_NUMBER++</ns1:account_number>
</ns1:account_key>
<ns1:account_change>++AMOUNT++</ns1:account_change>
</ns1:update_account_record></ns1:UPDACCTOperation>
</soapenv:Body>
</soapenv:Envelope>
To run it, run the BasicAccountCreditTest in dev.galasa.simbank.tests from Run Configuration with TestClass as in the previous example.
18/08/2020 18:40:07.096 DEBUG dev.galasa.boot.Launcher.processCommandLine - Supplied command line arguments: --bootstrap file:///C:/Users/TomohiroTaguchi/.galasa/bootstrap.properties --overrides file:///C:/Users/TOMOHI~1/AppData/Local/Temp/galasa_eclipse_cache_8879301005844695930/galasaoverrides1146231306188016707.properties --localmaven file:/C:/Users/TomohiroTaguchi/.m2/repository/ --remotemaven https://repo.maven.apache.org/maven2/ --obr file:/C:/y/workspace/workspace_eclipse-jee-2020-06-R-galasa/.metadata/.plugins/dev.galasa.eclipse/workspace.obr --obr mvn:dev.galasa/dev.galasa.uber.obr/LATEST/obr --test dev.galasa.simbank.tests/dev.galasa.simbank.tests.BasicAccountCreditTest
18/08/2020 18:40:07.118 DEBUG dev.galasa.boot.Launcher.launch - OBR Repository Files: [file:/C:/y/workspace/workspace_eclipse-jee-2020-06-R-galasa/.metadata/.plugins/dev.galasa.eclipse/workspace.obr, mvn:dev.galasa/dev.galasa.uber.obr/LATEST/obr]
18/08/2020 18:40:07.119 DEBUG dev.galasa.boot.Launcher.launch - Launching Framework...
18/08/2020 18:40:07.119 DEBUG dev.galasa.boot.Launcher.buildFramework - Launching Framework...
18/08/2020 18:40:07.119 DEBUG dev.galasa.boot.felix.FelixFramework.buildFramework - Building Felix Framework...
18/08/2020 18:40:07.292 DEBUG dev.galasa.boot.felix.FelixFramework.buildFramework - Initializing Felix Framework
18/08/2020 18:40:07.412 DEBUG dev.galasa.boot.felix.FelixFramework.buildFramework - Starting Felix Framework
18/08/2020 18:40:07.413 DEBUG dev.galasa.boot.felix.FelixFramework.buildFramework - Felix Framework started
18/08/2020 18:40:07.413 DEBUG dev.galasa.boot.felix.FelixFramework.buildFramework - Installing required OSGi bundles
18/08/2020 18:40:08.778 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Attempting to download https://repo.maven.apache.org/maven2/dev/galasa/dev.galasa.uber.obr/maven-metadata.xml
18/08/2020 18:40:10.634 DEBUG d.g.f.m.r.i.GalasaMavenUrlHandlerService - Version 'LATEST' resolved to 0.10.0
18/08/2020 18:40:10.684 DEBUG dev.galasa.boot.felix.FelixFramework.buildFramework - installing Framework bundle
18/08/2020 18:40:11.095 INFO d.g.f.Framework - Framework service activated
18/08/2020 18:40:11.095 INFO d.g.f.Framework - Framework version = 0.10.0
18/08/2020 18:40:11.102 INFO d.g.f.Framework - Framework build = Tue, 4 Aug 2020 22:57:46 +0900
18/08/2020 18:40:11.117 DEBUG dev.galasa.boot.Launcher.launch - Test Bundle: dev.galasa.simbank.tests
18/08/2020 18:40:11.117 DEBUG dev.galasa.boot.Launcher.launch - Test Class: dev.galasa.simbank.tests.BasicAccountCreditTest
18/08/2020 18:40:11.124 DEBUG dev.galasa.boot.felix.FelixFramework.runTest - Invoking runTest()
18/08/2020 18:40:11.125 INFO d.g.f.FrameworkInitialisation - Initialising the Galasa Framework
18/08/2020 18:40:11.127 DEBUG d.g.f.FrameworkInitialisation - Configuration Property Store is file:///C:/Users/TomohiroTaguchi/.galasa/cps.properties
18/08/2020 18:40:11.138 DEBUG d.g.f.FrameworkInitialisation - Selected CPS Service is dev.galasa.framework.internal.cps.FpfConfigurationPropertyStore
18/08/2020 18:40:11.139 DEBUG d.g.f.FrameworkInitialisation - Dynamic Status Store is file:///C:/Users/TomohiroTaguchi/.galasa/dss.properties
18/08/2020 18:40:11.164 INFO d.g.f.FrameworkInitialisation - Allocated Run Name U10 to this run
18/08/2020 18:40:11.166 DEBUG d.g.f.FrameworkInitialisation - Result Archive Stores are [file:///C:/Users/TomohiroTaguchi/.galasa/ras/]
18/08/2020 18:40:11.190 DEBUG d.g.f.FrameworkInitialisation - Credentials Store is file:///C:/Users/TomohiroTaguchi/.galasa/credentials.properties
18/08/2020 18:40:11.197 INFO d.g.f.FrameworkInitialisation - Framework initialised
18/08/2020 18:40:12.662 INFO d.g.f.TestRunner - Run test: dev.galasa.simbank.tests/dev.galasa.simbank.tests.BasicAccountCreditTest
18/08/2020 18:40:13.758 DEBUG d.g.f.TestRunManagers - The following Managers are active:-
18/08/2020 18:40:13.759 DEBUG d.g.f.TestRunManagers - dev.galasa.core.manager.internal.CoreManager
18/08/2020 18:40:13.759 DEBUG d.g.f.TestRunManagers - dev.galasa.simbank.manager.internal.SimBankManagerImpl
18/08/2020 18:40:13.759 DEBUG d.g.f.TestRunManagers - dev.galasa.zos.internal.ZosManagerImpl
18/08/2020 18:40:13.760 DEBUG d.g.f.TestRunManagers - dev.galasa.ipnetwork.internal.IpNetworkManagerImpl
18/08/2020 18:40:13.760 DEBUG d.g.f.TestRunManagers - dev.galasa.zos3270.internal.Zos3270ManagerImpl
18/08/2020 18:40:13.760 DEBUG d.g.f.TestRunManagers - dev.galasa.http.internal.HttpManagerImpl
18/08/2020 18:40:13.760 DEBUG d.g.f.TestRunManagers - dev.galasa.artifact.internal.ArtifactManagerImpl
18/08/2020 18:40:13.761 DEBUG d.g.f.TestRunManagers - The following Managers are sorted in provisioning order:-
18/08/2020 18:40:13.761 DEBUG d.g.f.TestRunManagers - dev.galasa.core.manager.internal.CoreManager
18/08/2020 18:40:13.761 DEBUG d.g.f.TestRunManagers - dev.galasa.zos.internal.ZosManagerImpl
18/08/2020 18:40:13.761 DEBUG d.g.f.TestRunManagers - dev.galasa.zos3270.internal.Zos3270ManagerImpl
18/08/2020 18:40:13.762 DEBUG d.g.f.TestRunManagers - dev.galasa.ipnetwork.internal.IpNetworkManagerImpl
18/08/2020 18:40:13.762 DEBUG d.g.f.TestRunManagers - dev.galasa.http.internal.HttpManagerImpl
18/08/2020 18:40:13.762 DEBUG d.g.f.TestRunManagers - dev.galasa.simbank.manager.internal.SimBankManagerImpl
18/08/2020 18:40:13.762 DEBUG d.g.f.TestRunManagers - dev.galasa.artifact.internal.ArtifactManagerImpl
18/08/2020 18:40:13.949 INFO d.g.f.TestRunner - Starting Provision Generate phase
18/08/2020 18:40:13.952 INFO d.g.z.i.ZosManagerImpl - zOS DSE Image SIMBANK selected for zosTag 'SIMBANK'
18/08/2020 18:40:14.042 INFO d.g.z.i.Zos3270ManagerImpl - Generated a terminal for zOS Image tagged SIMBANK
18/08/2020 18:40:14.091 INFO d.g.f.i.c.FrameworkConfidentialTextService - Confidential text registered as '*1**', with comment IBMUSER password
18/08/2020 18:40:14.185 INFO d.g.s.m.i.SimBankManagerImpl - SimBank instance SIMBANK provisioned for this run
18/08/2020 18:40:14.190 INFO d.g.f.TestRunner - Starting Provision Build phase
18/08/2020 18:40:14.191 INFO d.g.f.TestRunner - Starting Provision Start phase
18/08/2020 18:40:14.192 INFO d.g.z.i.Zos3270ManagerImpl - Connecting zOS3270 Terminals
18/08/2020 18:40:14.479 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-1
=| TERM0001 SIMPLATFORM LOGON SCREEN 18:40:14|
=| -------------------------------------------------------------------------------|
=| |
=| |
=| *******\ ******\ ****\ ****\ |
=| *********\ ******\ *****\ *****\ |
=| **\\\\\**\ \**\\\ **\ **\ **\\**\ |
=| **\ **\ **\ **\**\\ **\ |
=| *********\ **\ **\ ***\\ **\ |
=| *********\ **\ **\ *\\ **\ |
=| \\\\\\**\ **\ **\ \ **\ |
=| **\ **\ **\ **\ |
=| *********\ ******\ **\ **\ |
=| *******\\ ******\ **\ **\ |
=| \\\\\\\ \\\\\\ \\ \\ |
=| |
=| |
=| P L A T F O R M |
=| |
=| |
=| -------------------------------------------------------------------------------|
=| Userid ===> Password ===> |
^| ^
=| |
=| |
18/08/2020 18:40:14.479 DEBUG d.g.s.m.i.SimBankTerminalImpl - RECEIVED update to 3270 terminal simbank-ctrl, updateId=simbank-ctrl-1
=| TERM0001 SIMPLATFORM LOGON SCREEN 18:40:14|
=| -------------------------------------------------------------------------------|
=| |
=| |
=| *******\ ******\ ****\ ****\ |
=| *********\ ******\ *****\ *****\ |
=| **\\\\\**\ \**\\\ **\ **\ **\\**\ |
=| **\ **\ **\ **\**\\ **\ |
=| *********\ **\ **\ ***\\ **\ |
=| *********\ **\ **\ *\\ **\ |
=| \\\\\\**\ **\ **\ \ **\ |
=| **\ **\ **\ **\ |
=| *********\ ******\ **\ **\ |
=| *******\\ ******\ **\ **\ |
=| \\\\\\\ \\\\\\ \\ \\ |
=| |
=| |
=| P L A T F O R M |
=| |
=| |
=| -------------------------------------------------------------------------------|
=| Userid ===> Password ===> |
^| ^
=| |
=| |
18/08/2020 18:40:14.494 DEBUG d.g.s.m.i.SimBankTerminalImpl - SENDING, ENTER to 3270 terminal simbank-ctrl, updateId=simbank-ctrl-2
=| TERM0001 SIMPLATFORM LOGON SCREEN 18:40:14|
=| -------------------------------------------------------------------------------|
=| |
=| |
=| *******\ ******\ ****\ ****\ |
=| *********\ ******\ *****\ *****\ |
=| **\\\\\**\ \**\\\ **\ **\ **\\**\ |
=| **\ **\ **\ **\**\\ **\ |
=| *********\ **\ **\ ***\\ **\ |
=| *********\ **\ **\ *\\ **\ |
=| \\\\\\**\ **\ **\ \ **\ |
=| **\ **\ **\ **\ |
=| *********\ ******\ **\ **\ |
=| *******\\ ******\ **\ **\ |
=| \\\\\\\ \\\\\\ \\ \\ |
=| |
=| |
=| P L A T F O R M |
=| |
=| |
=| -------------------------------------------------------------------------------|
=| Userid ===> IBMUSER Password ===> *1** |
^| ^
=| |
=| |
18/08/2020 18:40:14.539 DEBUG d.g.s.m.i.SimBankTerminalImpl - RECEIVED update to 3270 terminal simbank-ctrl, updateId=simbank-ctrl-3
=| TERM0001 SIMPLATFORM MAIN MENU 18:40:14|
=| -------------------------------------------------------------------------------|
=| |
=| Application PKey Status |
=| ----------- ---- ------------------------------------------------- |
=| |
=| BANKTEST PF1 UP |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| -------------------------------------------------------------------------------|
=| Application ===> |
^| ^
=| |
=| |
18/08/2020 18:40:14.549 DEBUG d.g.s.m.i.SimBankTerminalImpl - SENDING, ENTER to 3270 terminal simbank-ctrl, updateId=simbank-ctrl-4
=| TERM0001 SIMPLATFORM MAIN MENU 18:40:14|
=| -------------------------------------------------------------------------------|
=| |
=| Application PKey Status |
=| ----------- ---- ------------------------------------------------- |
=| |
=| BANKTEST PF1 UP |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| -------------------------------------------------------------------------------|
=| Application ===> BANKTEST |
^| ^
=| |
=| |
18/08/2020 18:40:14.568 DEBUG d.g.s.m.i.SimBankTerminalImpl - RECEIVED update to 3270 terminal simbank-ctrl, updateId=simbank-ctrl-5
=| DFHZC2312 *** WELCOME TO CICS *** 18:40:14 |
^|^
=| |
=| |
=| |
=| |
=| |
=| ******\ ******\ ******\ ******\(R) |
=| ********\ ******\ ********\ ********\ |
=| **\\\\**\ **\\\ **\\\\**\ **\\\\**\ |
=| **\ \\ **\ **\ \\ **\ \\ |
=| **\ **\ **\ *******\ |
=| **\ **\ **\ *******\ |
=| **\ **\ **\ \\\\**\ |
=| **\ **\ **\ **\ **\ **\ **\ |
=| ********\ ******\ ********\ ********\ |
=| ******\\ ******\ ******\\ ******\\ |
=| \\\\\\ \\\\\\ \\\\\\ \\\\\\ |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:14.580 DEBUG d.g.s.m.i.SimBankTerminalImpl - SENDING, CLEAR to 3270 terminal simbank-ctrl, updateId=simbank-ctrl-6
=| |
^|^
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:14.707 DEBUG d.g.s.m.i.SimBankTerminalImpl - RECEIVED update to 3270 terminal simbank-ctrl, updateId=simbank-ctrl-7
=| |
^|^
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:14.716 DEBUG d.g.s.m.i.SimBankTerminalImpl - SENDING, ENTER to 3270 terminal simbank-ctrl, updateId=simbank-ctrl-8
=|bank |
^| ^
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:14.731 DEBUG d.g.s.m.i.SimBankTerminalImpl - RECEIVED update to 3270 terminal simbank-ctrl, updateId=simbank-ctrl-9
=| CONNECTED SIMBANK MAIN MENU 18:40:14|
=| -------------------------------------------------------------------------------|
=| ===> |
^| ^
=| |
=| Options Description PFKey |
=| ------- --------------------------------------------------------------- |
=| BROWSE Browse Accounts PF1 |
=| TRANSF Transfer Money PF4 |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:14.732 INFO d.g.s.m.i.SimBankImpl - Connected to SimBank Terminal
18/08/2020 18:40:14.734 INFO d.g.f.TestRunner - Running the test class
18/08/2020 18:40:14.734 INFO d.g.f.TestClassWrapper - Starting
----------------------- ****************************************************************************************************
----------------------- *** Start of test class dev.galasa.simbank.tests.BasicAccountCreditTest
----------------------- ****************************************************************************************************
18/08/2020 18:40:14.734 INFO d.g.f.GenericMethodWrapper - Starting
----------------------- ****************************************************************************************************
----------------------- *** Start of test method dev.galasa.simbank.tests.BasicAccountCreditTest#updateAccountWebServiceTest,type=Test
----------------------- ****************************************************************************************************
18/08/2020 18:40:14.735 INFO d.g.f.i.c.FrameworkConfidentialTextService - Confidential text registered as '*2**', with comment IBMUSER password
18/08/2020 18:40:14.747 DEBUG d.g.z.s.Zos3270TerminalImpl - SENDING, ENTER to 3270 terminal term1, updateId=term1-2
=| TERM0001 SIMPLATFORM LOGON SCREEN 18:40:14|
=| -------------------------------------------------------------------------------|
=| |
=| |
=| *******\ ******\ ****\ ****\ |
=| *********\ ******\ *****\ *****\ |
=| **\\\\\**\ \**\\\ **\ **\ **\\**\ |
=| **\ **\ **\ **\**\\ **\ |
=| *********\ **\ **\ ***\\ **\ |
=| *********\ **\ **\ *\\ **\ |
=| \\\\\\**\ **\ **\ \ **\ |
=| **\ **\ **\ **\ |
=| *********\ ******\ **\ **\ |
=| *******\\ ******\ **\ **\ |
=| \\\\\\\ \\\\\\ \\ \\ |
=| |
=| |
=| P L A T F O R M |
=| |
=| |
=| -------------------------------------------------------------------------------|
=| Userid ===> IBMUSER Password ===> *1** |
^| ^
=| |
=| |
18/08/2020 18:40:14.763 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-3
=| TERM0001 SIMPLATFORM MAIN MENU 18:40:14|
=| -------------------------------------------------------------------------------|
=| |
=| Application PKey Status |
=| ----------- ---- ------------------------------------------------- |
=| |
=| BANKTEST PF1 UP |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| -------------------------------------------------------------------------------|
=| Application ===> |
^| ^
=| |
=| |
18/08/2020 18:40:14.775 DEBUG d.g.z.s.Zos3270TerminalImpl - SENDING, PF1 to 3270 terminal term1, updateId=term1-4
=| TERM0001 SIMPLATFORM MAIN MENU 18:40:14|
=| -------------------------------------------------------------------------------|
=| |
=| Application PKey Status |
=| ----------- ---- ------------------------------------------------- |
=| |
=| BANKTEST PF1 UP |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| -------------------------------------------------------------------------------|
=| Application ===> |
^| ^
=| |
=| |
18/08/2020 18:40:14.792 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-5
=| DFHZC2312 *** WELCOME TO CICS *** 18:40:14 |
^|^
=| |
=| |
=| |
=| |
=| |
=| ******\ ******\ ******\ ******\(R) |
=| ********\ ******\ ********\ ********\ |
=| **\\\\**\ **\\\ **\\\\**\ **\\\\**\ |
=| **\ \\ **\ **\ \\ **\ \\ |
=| **\ **\ **\ *******\ |
=| **\ **\ **\ *******\ |
=| **\ **\ **\ \\\\**\ |
=| **\ **\ **\ **\ **\ **\ **\ |
=| ********\ ******\ ********\ ********\ |
=| ******\\ ******\ ******\\ ******\\ |
=| \\\\\\ \\\\\\ \\\\\\ \\\\\\ |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:14.804 DEBUG d.g.z.s.Zos3270TerminalImpl - SENDING, CLEAR to 3270 terminal term1, updateId=term1-6
=| |
^|^
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:14.948 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-7
=| |
^|^
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:14.957 DEBUG d.g.z.s.Zos3270TerminalImpl - SENDING, ENTER to 3270 terminal term1, updateId=term1-8
=|bank |
^| ^
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:14.973 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-9
=| CONNECTED SIMBANK MAIN MENU 18:40:14|
=| -------------------------------------------------------------------------------|
=| ===> |
^| ^
=| |
=| Options Description PFKey |
=| ------- --------------------------------------------------------------- |
=| BROWSE Browse Accounts PF1 |
=| TRANSF Transfer Money PF4 |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:14.992 DEBUG d.g.z.s.Zos3270TerminalImpl - SENDING, PF1 to 3270 terminal term1, updateId=term1-10
=| CONNECTED SIMBANK MAIN MENU 18:40:14|
=| -------------------------------------------------------------------------------|
=| ===> |
^| ^
=| |
=| Options Description PFKey |
=| ------- --------------------------------------------------------------- |
=| BROWSE Browse Accounts PF1 |
=| TRANSF Transfer Money PF4 |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:15.008 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-11
=| CONNECTED SIMBANK ACCOUNT MENU 18:40:14|
=| -------------------------------------------------------------------------------|
=| ===> |
=| |
=| Account Number _________ |
^| ^
=| Sort Code |
=| Balance |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:15.019 DEBUG d.g.z.s.Zos3270TerminalImpl - SENDING, ENTER to 3270 terminal term1, updateId=term1-12
=| CONNECTED SIMBANK ACCOUNT MENU 18:40:14|
=| -------------------------------------------------------------------------------|
=| ===> |
=| |
=| Account Number 123456789 |
=| Sort Code |
^| ^
=| Balance |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:15.037 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-13
=| CONNECTED SIMBANK ACCOUNT MENU 18:40:15|
=| -------------------------------------------------------------------------------|
=| ===> |
=| |
=| Account Number 123456789 |
^| ^
=| Sort Code 11-01-45 |
=| Balance 5562.42 |
=| |
=| Account Found |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:15.048 DEBUG d.g.z.s.Zos3270TerminalImpl - SENDING, PF3 to 3270 terminal term1, updateId=term1-14
=| CONNECTED SIMBANK ACCOUNT MENU 18:40:15|
=| -------------------------------------------------------------------------------|
=| ===> |
=| |
=| Account Number 123456789 |
^| ^
=| Sort Code 11-01-45 |
=| Balance 5562.42 |
=| |
=| Account Found |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:15.194 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-15
=| CONNECTED SIMBANK MAIN MENU 18:40:15|
=| -------------------------------------------------------------------------------|
=| ===> |
^| ^
=| |
=| Options Description PFKey |
=| ------- --------------------------------------------------------------- |
=| BROWSE Browse Accounts PF1 |
=| TRANSF Transfer Money PF4 |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:15.195 DEBUG d.g.a.i.BundleResourcesImpl - Searching for artifact: resources/skeletons/testSkel.skel in bundle dev.galasa.simbank.tests
18/08/2020 18:40:15.474 DEBUG d.g.z.s.Zos3270TerminalImpl - SENDING, PF1 to 3270 terminal term1, updateId=term1-16
=| CONNECTED SIMBANK MAIN MENU 18:40:15|
=| -------------------------------------------------------------------------------|
=| ===> |
^| ^
=| |
=| Options Description PFKey |
=| ------- --------------------------------------------------------------- |
=| BROWSE Browse Accounts PF1 |
=| TRANSF Transfer Money PF4 |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:15.491 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-17
=| CONNECTED SIMBANK ACCOUNT MENU 18:40:15|
=| -------------------------------------------------------------------------------|
=| ===> |
=| |
=| Account Number _________ |
^| ^
=| Sort Code |
=| Balance |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:15.501 DEBUG d.g.z.s.Zos3270TerminalImpl - SENDING, ENTER to 3270 terminal term1, updateId=term1-18
=| CONNECTED SIMBANK ACCOUNT MENU 18:40:15|
=| -------------------------------------------------------------------------------|
=| ===> |
=| |
=| Account Number 123456789 |
=| Sort Code |
^| ^
=| Balance |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:15.515 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-19
=| CONNECTED SIMBANK ACCOUNT MENU 18:40:15|
=| -------------------------------------------------------------------------------|
=| ===> |
=| |
=| Account Number 123456789 |
^| ^
=| Sort Code 11-01-45 |
=| Balance 6062.92 |
=| |
=| Account Found |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:15.535 DEBUG d.g.z.s.Zos3270TerminalImpl - SENDING, PF3 to 3270 terminal term1, updateId=term1-20
=| CONNECTED SIMBANK ACCOUNT MENU 18:40:15|
=| -------------------------------------------------------------------------------|
=| ===> |
=| |
=| Account Number 123456789 |
^| ^
=| Sort Code 11-01-45 |
=| Balance 6062.92 |
=| |
=| Account Found |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:15.555 DEBUG d.g.z.s.Zos3270TerminalImpl - RECEIVED update to 3270 terminal term1, updateId=term1-21
=| CONNECTED SIMBANK MAIN MENU 18:40:15|
=| -------------------------------------------------------------------------------|
=| ===> |
^| ^
=| |
=| Options Description PFKey |
=| ------- --------------------------------------------------------------- |
=| BROWSE Browse Accounts PF1 |
=| TRANSF Transfer Money PF4 |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
=| |
18/08/2020 18:40:15.587 INFO d.g.f.GenericMethodWrapper - Ending
----------------------- ****************************************************************************************************
----------------------- *** Passed - Test method dev.galasa.simbank.tests.BasicAccountCreditTest#updateAccountWebServiceTest,type=Test
----------------------- ****************************************************************************************************
18/08/2020 18:40:15.588 INFO d.g.f.TestClassWrapper - Ending
----------------------- ****************************************************************************************************
----------------------- *** Passed - Test class dev.galasa.simbank.tests.BasicAccountCreditTest
----------------------- ****************************************************************************************************
18/08/2020 18:40:15.591 INFO d.g.f.TestRunner - Starting Provision Stop phase
18/08/2020 18:40:15.595 INFO d.g.f.TestRunner - Starting Provision Discard phase
18/08/2020 18:40:15.688 DEBUG dev.galasa.boot.felix.FelixFramework.stopFramework - Stopping Felix framework
18/08/2020 18:40:15.711 INFO d.g.f.Framework - Framework service deactivated
18/08/2020 18:40:15.725 DEBUG dev.galasa.boot.felix.FelixFramework.stopFramework - Felix framework stopped
18/08/2020 18:40:15.725 INFO dev.galasa.boot.Launcher.launch - Boot complete
Let's intentionally create a test failure case by changing the Assert part at the end of the test code as follows.
BasicAccountCreditTest.java(Excerpt)
// Assert that the correct amount has been credited to the account
//assertThat(newUserBalance).isEqualTo(userBalance.add(amount));
assertThat(newUserBalance).isEqualTo(userBalance);
When I ran this, the Console produced the following output:
...
18/08/2020 18:45:00.737 INFO d.g.f.GenericMethodWrapper - Ending
----------------------- ****************************************************************************************************
----------------------- *** Failed - Test method dev.galasa.simbank.tests.BasicAccountCreditTest#updateAccountWebServiceTest,type=Test
----------------------- ****************************************************************************************************
java.lang.AssertionError:
Expecting:
<6563.42>
to be equal to:
<6062.92>
but was not.
at dev.galasa.simbank.tests.BasicAccountCreditTest.updateAccountWebServiceTest(BasicAccountCreditTest.java:115)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at dev.galasa.framework.GenericMethodWrapper.invoke(GenericMethodWrapper.java:82)
at dev.galasa.framework.TestMethodWrapper.invoke(TestMethodWrapper.java:56)
at dev.galasa.framework.TestClassWrapper.runTestMethods(TestClassWrapper.java:182)
at dev.galasa.framework.TestRunner.runTestClassWrapper(TestRunner.java:510)
at dev.galasa.framework.TestRunner.runEnvironment(TestRunner.java:482)
at dev.galasa.framework.TestRunner.createEnvironment(TestRunner.java:442)
at dev.galasa.framework.TestRunner.generateEnvironment(TestRunner.java:415)
at dev.galasa.framework.TestRunner.runTest(TestRunner.java:337)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at dev.galasa.boot.felix.FelixFramework.runTest(FelixFramework.java:220)
at dev.galasa.boot.Launcher.launch(Launcher.java:152)
at dev.galasa.boot.Launcher.main(Launcher.java:106)
18/08/2020 18:45:00.737 INFO d.g.f.TestClassWrapper - Ending
----------------------- ****************************************************************************************************
----------------------- *** Failed - Test class dev.galasa.simbank.tests.BasicAccountCreditTest
----------------------- ****************************************************************************************************
18/08/2020 18:45:00.739 INFO d.g.f.TestRunner - Starting Provision Stop phase
18/08/2020 18:45:00.741 INFO d.g.f.TestRunner - Starting Provision Discard phase
18/08/2020 18:45:01.144 DEBUG dev.galasa.boot.felix.FelixFramework.stopFramework - Stopping Felix framework
18/08/2020 18:45:01.161 INFO d.g.f.Framework - Framework service deactivated
18/08/2020 18:45:01.170 DEBUG dev.galasa.boot.felix.FelixFramework.stopFramework - Felix framework stopped
18/08/2020 18:45:01.170 INFO dev.galasa.boot.Launcher.launch - Boot complete
You can see the past test results by displaying the view called Galasa Result. (If the message "Framework not initialized" is output when the view is displayed, select Galasa --Initialise Galasa Framework from the Eclipse menu and try Initialize.) Double-click on the test case to see the details.
Case of successful test completion
Test failure case
It is also possible to check the details of the test later because the log remains.
In the two examples executed above, it was confirmed that the test code for the operation with the 3270 terminal emulator and the Web service call can be written and tested in Java. In addition, BatchAccoutsOpenTest.java, which is provided as a sample, contains the code to test the JCL for executing the batch program. It seems that the various functions required to call these applications are implemented by a function called "Manager". A list of Manager functions is listed below. Reference: Managers For CICS, a Manager for executing CECI transactions (an interpreter of the EXEC CICS API executed from a CICS terminal) is provided, and EXEC CICS LINK can be issued via CECI to write test code for each subprogram. It seems. Great! !! !! Looking at this list, not only z / OS related but also a wide range of Manager functions such as Docker, Kubernetes, Linux, etc. are listed because it says "Deep integration testing for z / OS powered hybrid cloud applications". As of August 2020, few have been released yet, and only Beta and Alpha versions of the code have been released, but I would like to expect future expansion. In addition, there are growing expectations that this framework will be incorporated into existing development support tools (IBM Developer for z / OS, etc.) in the future.
Recommended Posts