20200818のJavaに関する記事は12件です。

Singletonパターン

Singletonパターン

インスタンスが1つしか存在しないことを保証するパターンのこと。

Singletonの役

Singletonの役は唯一のインスタンスを得るためのstaticメソッドを持つ。
このメソッドはいつも同じインスタンスを返す。

package singleton;

public class Singleton {
    private static Singleton singleton = new Singleton();

    // コンストラクタをprivateにすることでクラス外からコンストラクタを呼び出すことを禁止する
    private Singleton() {
        System.out.println("インスタンスを生成しました");
    }

    // インスタンスを返すstaticなメソッドを提供する
    public static Singleton getInstance() {
        return singleton;
    }
}

呼び出し元

package singleton;

public class Main {

    public static void main(String[] args) {
        System.out.println("Start");
        Singleton obj1 = Singleton.getInstance();
        Singleton obj2 = Singleton.getInstance();
        if (obj1 == obj2) {
            System.out.println("同じインスタンス");
        } else {
            System.out.println("同じインスタンスではない");
        }
        System.out.println("End");
    }
}

// Start
// インスタンスを生成しました
// 同じインスタンス
// End

サンプル

package singleton;

public class TicketMaker {
    private static TicketMaker ticketMaker = new TicketMaker();
    private int ticket = 1000;
    private TicketMaker() {
    }

    public static TicketMaker getInstance() {
        return ticketMaker;
    }

    // 複数のスレッドから呼び出せれた場合でも正しく動作するようsyncronizedを付与
    public synchronized int getNextTiketNumber() {
        return ticket++;
    }
}

インスタンスの数が3つに限定されているクラス

package singleton;

public class Triple {
    private static Triple[] triples = new Triple[] {
            new Triple(0),
            new Triple(1),
            new Triple(2),
    };

    private int id;

    private Triple(int id) {
        System.out.println("The instance" + id + " is created");
        this.id = id;
    }

    public static Triple getInstance(int id) {
        return triples[id];
    }

    public String toString() {
        return "[Triple id = " + id + "]";
    }

}
package singleton;

public class Main {

    public static void main(String[] args) {
        System.out.println("Start");
        for (int i = 0; i < 9; i++) {
            Triple triple = Triple.getInstance(i % 3);
            System.out.println(i + ":" + triple);

        }
        System.out.println("End");

    }
}
// Start
// The instance0 is created
// The instance1 is created
// The instance2 is created
// 0:[Triple id = 0]
// 1:[Triple id = 1]
// 2:[Triple id = 2]
// 3:[Triple id = 0]
// 4:[Triple id = 1]
// 5:[Triple id = 2]
// 6:[Triple id = 0]
// 7:[Triple id = 1]
// 8:[Triple id = 2]
// End
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Java】文字列の扱い(StringクラスとStringBuilderクラス編)

備忘録。

Stringクラス

 String型のデータである文字列は、それ自身を書き換えることができません。また、String型は参照型であるため、初期化されたString型の変数に、異なる文字列を際代入すると、元の文字列が書き換えられるのではなく、新しい文字列が生成され、変数の参照先が切り替わります

Stringクラスのメソッド

Sample.java
String s = "onigiri";
メソッド 説明 結果
charAt(2) 引数にある文字を返す。開始は0番目 i
equals("onigiri") 引数の文字列と同じか比較し、boolean値で返す。 true
intern() 文字列プールの中にある一意の文字列を返す onigiri
indexOf('g') 引数の文字が最初に出現する位置を返す。開始は0番目 3
length() 文字列の数を返す 7
replace('i','Y') 第1引数の文字を、第2引数で指定した文字に置き換え、結果の文字列を返す onYgYrY
substring(2) 引数で指定した位置から最後までの部分文字列を返す。開始は0番目 igiri
Main.java
public class Main {
  public static void main(String[] args){
    String s = "onigiri";
    System.out.println("charAt() : " + s.charAt(2));
    // 出力結果「charAt() : i」
    System.out.println("indexOf() : "+ s.indexOf('g'));
    // 出力結果「indexOf() : g」
    System.out.println("length() : " + s.length());
    // 出力結果「length() : 7」
    System.out.println("replace() : " + s.replace('i','Y'));
    // 出力結果「onYgYrY」
    System.out.println("substring() : " + s.substring(2));
    // 出力結果「igiri」
  }
}

StringBuilderクラス

 StringBuilderクラスもStringクラスと同様、文字列を扱うクラスですが、変数に格納した文字列を変更することが可能です。Stringクラスとは異なり、一度生成した文字列に対して、文字を追加したり、置き換えたりすることができます。

Stringクラスのメソッド

Sample.java
StringBuilder sb = new StringBuilder("ShioMusubi");
メソッド 説明 結果
append("LUNCH") 引数で指定された文字列を現在の文字列に追加する ShioMusubiLUNCH
insert(4,"UME") 引数で指定された文字列を、引数で指定された位置にある文字の前に挿入する。開始は0番目 ShioUMEMusubi
delete(0,4) 第1引数から第2引数の位置の1つ前までの位置にある文字を削除する。開始は0番目 Musubi
replace(4,sb.length(),"ONIGIRI") 第1引数から第2引数の位置の1つ前までの位置にある文字を、第3引数で指定された文字列に置き換える。開始は0番目 ShioONIGIRI
substring(7) 引数で指定した位置から最後までの部分文字列を返す。開始は0番目 ubi
Main.java
public class Main {
  public static void main(String[] args){
    StringBuilder sb1 = new StringBuilder("ShioMusubi");
    System.out.println("append() : " + sb1.append("LUNCH"));
    // 出力結果「append() :ShioMusubiLUNCH」
    StringBuilder sb2 = new StringBuilder("ShioMusubi");
    System.out.println("insert() : "+ sb2.insert(4,"UME"));
    // 出力結果「insert() : ShioUMEMusubi」
    StringBuilder sb3 = new StringBuilder("ShioMusubi");
    System.out.println("delete() : "+ sb3.delete(4,"UME"));
    // 出力結果「delete() : Musubi」
    StringBuilder sb4 = new StringBuilder("ShioMusubi");
    System.out.println("replace() : " + sb4.replace(4,sb.length(),"ONIGIRI"));
    // 出力結果「ShioONIGIRI」
    StringBuilder sb5 = new StringBuilder("ShioMusubi");
    System.out.println("substring() : " + sb5.substring(7));
    // 出力結果「ubi」
  }
}

これがなかなか身につかなくて。不備あればご指摘いただきたく、覚えやすさがあればご教示いただきたく。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

kotlinとjavaで関数を作りたい!

はじめに…

この記事は3個前の記事で書いた、

7日間毎日記事投稿の4日目

になってます

使うコードは下に貼りますが、このアプリの詳しい機能はその3個前の記事をご覧ください!

↓ここからが今回の記事の本題です↓

それぞれの言語で関数を作るには…

  • javaの場合
修飾子 戻り値の型 関数名(引数, 引数, ) {
    関数の内容
    return 戻り値
}

例)
※ 引数なし、戻り値なしの関数を定義している

WhoActivity.java
private void addMember() {  // 78行目
    EditText memberET = findViewById(R.id.member_et);
    ListView memberLV = findViewById(R.id.member_lv);
    memberL.add(memberET.getText().toString());
    memberET.getEditableText().clear();
    ArrayList<String> memberLR = (ArrayList<String>) memberL.clone();
    Collections.reverse(memberLR);
    ArrayAdapter<String> adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, memberLR);
    memberLV.setAdapter(adapter);
    }
  • kotlinの場合
fun 関数名(引数:型, 引数:型, …): 戻り値の型 {
    関数の内容
    return 戻り値
}

例)
※ 引数なし、戻り値なしの関数を定義している

WhoActivity.kt
fun addMember() {  // 52行目
    memberL.add(member_et.text.toString())
    member_et?.text?.clear()
    var memverLR = ArrayList<String>(memberL)
    memverLR.reverse()
    var adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, memverLR)
    member_lv.adapter = adapter
}

書き方は大きく違うが、関数定義時に必要な情報はほとんど変わらない。

最後に…

今回はjavaとkotlinで関数の定義をしました。
引数の種類・戻り値の種類によって様々な機能の関数を定義できるので、これからも多用できたらなと思います。

明日も記事を投稿するので、引き続き温かく見守ってください。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Galasaを使ってみた

はじめに

Galasaというz/OSをベースとしたハイブリッド・クラウド・アプリケーションのためのテストフレームワークがオープンソースのプロジェクトとして提供されています。これはまだ提供されてから日が浅く(2019年の12月にV0.3.0リリース)、当記事執筆時点(2020年8月)でもV0.10.0というレベルでまだまだこれからという感じのモノなのですが、z/OSのアプリケーションをターゲットにしているというところが魅力的です。しかも、CICS TSの開発拠点でもあるIBM Hursley Lab(UK)で作られているというのが激アツです。ということで、このGalasaを使ってみた時のログです。

Galasa概要

Galasaはz/OSをベースとしたハイブリッド・クラウド・アプリケーションのためのテストフレームワークです。Eclipseのプラグインが提供されていますので、3270アプリやz/OSのバッチアプリなどのテストコードをEclipse上でJUnitライクにJavaで実装しテスト実行を行うことができます。
サンプルのテストコードが提供されていますが、それをチュートリアル的に動かすために、なんとEclipse上で動くホストアプリケーションのシミュレーターのようなものまで提供してくれています。なので、Windows上だけで(z/OSとかz/OSアプリを準備しなくても)、とりあえずこのフレームワーク使ったサンプルを試すことができます。素晴らしい!

環境セットアップ

Windows10上に環境構築してみます。

Eclipseインストール

以下からEclipse IDE for Enterprise Java Developers (Eclipse IDE 2020‑06) のWindows 64bit版をダウンロードします。
Eclipse IDE 2020-06 R Packages

ダウンロードされたzipファイル(eclipse-jee-2020-06-R-win32-x86_64.zip: 約400MB)を適当なディレクトリに解凍します。

Galasa Eclipse Pluginのインストール

参考: Installing the Galasa plug-in

Eclipseを起動し、Help - Install New Software を選択
Work withの欄にhttps://p2.galasa.dev/を指定し、表示されたGalasaのフィーチャーを全て選択してNext
image.png

Next
image.png

Licenseを確認してFinish
image.png

Eclipse再起動
image.png

Eclipseのメインメニューに"Galasa"というメニューが追加されました!
image.png

SimBankセットアップ

Galasaには、SimBankというメインフレームアプリケーションをシミュレートするためのコンポーネント(サンプルのアプリ含む)が提供されています。これはSimPlatformと呼ばれるコンポーネントで動作するらしく、Eclipse上でCICSや3270アプリケーションをシミュレートすることができるようです。
サンプルのテストプロジェクトを実行するときのダミーのホストアプリケーションとして使えますので、まずはそれを動かしてみます。

SimBank構成

Galasa - Setup Galasa Workspace を選択
image.png

consoleに以下のようなメッセージが表示されます。
image.png

ホームディレクトリ下に.galasaというディレクトリが作成され、そこにいくつかファイルが作成されました。全てファイルサイズが0 Byteなので中身はカラです。

C:\Users\TomohiroTaguchi\.galasa>dir
 ドライブ C のボリューム ラベルは Windows です
 ボリューム シリアル番号は 1866-E2FC です

 C:\Users\TomohiroTaguchi\.galasa のディレクトリ

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 個のファイル                   0 バイト
               2 個のディレクトリ  253,723,049,984 バイトの空き領域

overrides.propertiesを以下のように編集します。

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

credentials.propertiesを以下のように編集します。

credentials.properties
secure.credentials.SIMBANK.username=IBMUSER
secure.credentials.SIMBANK.password=SYS1

SimBank稼働確認

参考: Exploring Galasa SimBank

SimBankはCICSの3270アプリをシミュレートするもののようです。まずテスト対象のアプリがどのように動くものなのかを確認してみます(実際のz/OSが無くてもEclipse上で動きます)。

EclipseのメニューからRun - Run Configurationsを選択
image.png

Galasa SimBankを右クリックしてNew Configurationを選択
image.png

適当に名前を指定してあとはデフォルトのままApply
image.png

Consoleに以下のメッセージが出力され、サンプルアプリが起動しました。
image.png

2023ポートでTN3270を受け付けるようなので、PCOMなどの3270エミュレーターからアクセスしてみます。
image.png

接続できました!

Userid/Passwordに、IBMUSER/SYS1を指定
image.png

BANKTESTというアプリが動いているようなので、PF1を選択
image.png

なんとCICS端末のログイン画面になりました。
image.png

画面クリアして「BANK」というトランザクションを実行します。
image.png

メニューが表示されるので、Browse(PF1)を選択します
image.png

Account Numberに"123456789"を入力してEnter
image.png

指定したAccountの情報が表示されます。
image.png

Account Number "987654321"も確認してみます。
image.png

PF3でメニューに戻って、次はTransfer(PF4)を選択します。
image.png

Account "123456789" => "987654321"へ $1移動させます。
image.png

成功
image.png

再度Browseしてみると一方は$1減って一方は$1増えてます。
image.png
image.png

操作した時のログはEclipseのConsoleに以下のように出力されています。
image.png
(アプリで出しているログかな? JOBLOG or SYSLOG出力っぽい?)

F3を押していくとCICSのログオフまでされて最初の画面に戻ります。

SimBankのテスト

ここからが本題です。サンプルとして提供されるSimBankのテストを行ってみます。テスト用のプロジェクトもサンプルで提供されているのでそれを使います。

サンプルGalasaプロジェクト作成

Eclipseのメニューから File - New - Exampleを選択
image.png

SimBank example projectsを選択してNext
image.png

そのままFinish
image.png

プロジェクトが2つ追加されます。
image.png

dev.galasa.simbank.managerを右クリック Run As - Maven installを選択
image.png

consoleに処理経過が出力されます。依存関係のあるファイルのダウンロードなどが走ります。 BUILD SUCCESSのメッセージが確認できればOKです。
image.png

dev.galasa.simbank.testsも同様にMaven install実行します。

これでサンプルのテストプロジェクトの作成は完了です。
src/main/javaのdev.galasa.simbank.tests以下にテスト用のコードがいくつか提供されていますので、これを実施していきます。
image.png

テスト開始するまえに、先に構成したSimBankを起動しておきます。
(Run - Run Configurations - SimBankを選択してRun)

テスト(1) SimBankIVT

これは上でPCOMから3270ベースのCICSアプリケーション(BANK)を実行する部分をテストするためのコードです。3270端末操作をJavaのテストコードとして記述して実行することができます。

テストコード
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");
    }
}

このテストコードを実際に動かしてみます。
EclipseのメニューからRun - Run Configurationsを選択
左側のメニューからGalasaを右クリックしてNew Configurationを選択
image.png

名前を適当に付けて、Project: dev.galasa.simbank.tests, TestClass:SimBankIVTを選択し、Apply, Run
image.png

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

3270端末でのテストをテストコードで実行できました!

以下のような画面も裏で表示されていました。
image.png

テスト(2) BasicAccountCreditTest

これはCICS Webサービスとして実装されている(と思われる)"特定の口座の金額をアップデートする"ためのロジックをテストするものです。
テスト対象はWebサービス呼び出しですが、前後の金額情報を取得するのに3270画面のフローを入れています。
つまり、テストコードは以下のような流れとなっています。
1.3270アプリを呼び出して更新前の値を取得
2.Webサービス呼び出しで更新処理(特定口座にある特定の金額を振り込み)
3.3270アプリを呼び出して更新後の値を取得
4.更新前後の値をチェック

参考までに... テスト対象のロジックはWebサービス呼び出しなので、例えば以下のように汎用的なツール(ChromeのTarend API Tester)でもSOAPリクエストの動作確認ができます。
image.png

テストコード
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;
    }
}

このコードの中では、Webサービス呼び出しの際のSOAPメッセージの組み立てとして、以下のようなSkeltonを用意していて、そこに含まれている変数を置き換えるということをやっています。その辺の仕組みもGalasaフレームワークで提供されているようです。

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>

実行するには、先の例と同様にRun Configurationから dev.galasa.simbank.testsのBasicAccountCreditTestをTestClassに指定して実行します。
image.png

テスト結果
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

テスト失敗ケース

テストコードの最後のAssert部分を以下のように変更して、意図的にテスト失敗ケースを作ってみます。

BasicAccountCreditTest.java(抜粋)
        // Assert that the correct amount has been credited to the account
        //assertThat(newUserBalance).isEqualTo(userBalance.add(amount));
        assertThat(newUserBalance).isEqualTo(userBalance);

これを実行してみると、Consoleは以下のような出力結果となりました。

...
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

テスト結果の管理

Galasa Resultというビューを表示させると、過去のテスト結果が確認できます。
(ビューを表示させた時に、"Framework not initialised"というメッセージが出力される場合は、EclipseのメニューからGalasa - Initialise Galasa Frameworkを選択してInitialiseしてみてください)
image.png
テストケースをダブルクリックすると、詳細が表示されます。

テスト正常終了のケース
image.png

テスト失敗のケース
image.png

ログも残っているのであとからテストの詳細を確認することも可能です。

おわりに

上で実行した2つの例では、3270端末エミュレーターでの操作、Webサービス呼び出しのテストコードをJavaで記述してテストできることが確認できました。その他にもサンプルで提供されているBatchAccoutsOpenTest.javaでは、バッチプログラムを実行用のJCLをテストするコードが含まれています。
これらのアプリケーション呼び出しに必要な各種機能は、"Manager"と呼ばれる機能で実装されているようです。Manager機能の一覧は以下に記載があります。
参考: Managers
CICS関連だとCECIトランザクション(CICS端末から実行するEXEC CICS APIのインタープリター)を実行するためのManagerが提供されており、CECI経由でEXEC CICS LINKを発行してサブプログラム単位でのテストコードを書けるようです。素晴らしい!!!
この一覧をみると、"Deep integration testing for z/OS powered hybrid cloud applications"とうたっているだけにz/OS関連だけでなくDocker,Kubernetes,Linuxなど多岐に亘ったManager機能が挙げられています。2020年8月時点ではまだリリースされているものは少なく、Beta版、Alpha版のコードばかりの状態ですが、これからの拡張に期待したいところです。
また、今後はこのフレームワークは既存の開発支援ツール(IBM Developer for z/OSなど)にも組み込まれていくんじゃないかなーという期待も膨らみますね。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

JavaからSalesforceRESTAPIを叩く

はじめに

本記事はJavaからSalesforceのRESTAPIを叩くソースコードの備忘録です。
プロパティファイルなど省略している部分も多いので、このまま書いても動くわけではありません。

とりあえず以下3点がわかれば良いと思っています。
1. JSON形式でリクエストを送信/受信する書き方
2. JSON形式でレスポンスを送信/受信する書き方
3. 配列型のJSONの作成方法

リクエスト・レスポンスの形式

リクエスト

JSON
{
 "request" : [
   [
      "id" : "000",
      "name" : "sample0"
   ]
   [
      "id" : "001",
      "name" : "sample1"
   ]
 ]
}

レスポンス

JSON
{
 "results" : [
   [
      "id" : "000",
      "name" : "sample0",
      "status" : "200"
   ]
   [
      "id" : "001",
      "name" : "sample1",
      "status" : "200"
   ]
 ]
}

サンプルコード

Java側

ConnectApiLogic.java
public class ConnectApiLogic {

    private static final String LOGIN_URL                   = PropertyUtil.getProperty("SF_LOGIN_URL");
    private static final String GRANT_TYPE                  = PropertyUtil.getProperty("SF_GRANT_TYPE");
    private static final String CLIENT_ID                   = PropertyUtil.getProperty("SF_CLIENT_ID");
    private static final String CLIENT_SECRET               = PropertyUtil.getProperty("SF_CLIENT_SECRET");
    private static final String USERNAME                    = PropertyUtil.getProperty("SF_USERNAME");
    private static final String PASSWORD_AND_SECURITY_TOKEN = PropertyUtil.getProperty("SF_PASSWORD_AND_SECURITY_TOKEN");
    private static String url                               = PropertyUtil.getProperty("SF_RESTPASS") + PropertyUtil.getProperty("SF_UPDATE_USERMST");

    RestTemplate restTemplate = new RestTemplate();

    /** リストを与えてリクエスト結果を取得するメソッド */
    public ResponseDTO getResults(List<RequestChildDTO> requestList) {

        // 認証トークン取得
        ResponseEntity<ApiTokenResponseDto> apiTokenResponse = doPostAccess(CLIENT_ID, CLIENT_SECRET);
        String authToken = apiTokenResponse.getBody().getAccessToken();
        if (authToken.isBlank()) {
            System.exit(1);
        }

        RequestParentDTO requestDTO = new RequestUserMstDTO();
        requestDTO.request = requestList;

        // ヘッダ作成
        MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
        headers.add("Authorization","Bearer "+authToken);
        headers.add("Content-Type", "application/json");

        restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

        HttpEntity<RequestParentDTO> request = new HttpEntity<RequestParentDTO>(requestDTO, headers);

        return restTemplate.postForObject(url, request, ResponseParentDTO.class);
    }



    /** アクセストークン取得メソッド */
    private ResponseEntity<ApiTokenResponseDto> doPostAccess(String cliendId, String clientSecret) {

        MultiValueMap<String, String> request = new LinkedMultiValueMap<String, String>();
        request.add("grant_type", GRANT_TYPE);
        request.add("client_id", cliendId);
        request.add("client_secret", clientSecret);
        request.add("username", USERNAME);
        request.add("password", PASSWORD_AND_SECURITY_TOKEN);

        RequestEntity requestEntity = null;
        ResponseEntity<ApiTokenResponseDto> response = null;

        try {
            requestEntity = RequestEntity.post(new URI(LOGIN_URL)).contentType(MediaType.APPLICATION_FORM_URLENCODED).body(request);
            response = restTemplate.exchange(requestEntity, ApiTokenResponseDto.class);
        } catch (URISyntaxException e) {
            e.printStackTrace();
            return response;
        } catch (HttpClientErrorException e) {
            e.printStackTrace();
            return response;
        }
        return response;
    }
}
RequestParentDTO.java
public class RequestParentDTO {
    public List<RequestChildDTO> request;

    public RequestUserMstDTO(){
        request = new ArrayList<>();
    }
}
RequestChildDTO.java
public class RequestChildDTO {

    public String id;
    public String name;

}
ResponseParentDTO.java
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
    "results"
})
public class ResponseParentDTO {

    @JsonProperty("results")
    public List<ResponseChild> results = null;

    public ResponseDTO(){}

}
ResponseChild.java
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
    "id",
    "name",
    "status",
})
public class ResponseChild {

    @JsonProperty("id")
    public String id;
    @JsonProperty("name")
    public String name;
    @JsonProperty("status")
    public String status;

    public Result(){}

}

Salesforce側

PostApi.cls
@RestResource(urlMapping='/sample/*')
global without sharing class PostApi {

    @HttpPost
    global static DT_ResponseParentDto doPost() {
        // パラメータ取得
        RestRequest req = RestContext.request;
        List<InnerRequest> innnerRequestList = setRequest(req);
        // レスポンスを返却
        return setResponse(innnerRequestList);
    }



    /** リクエストパラメータ取得メソッド */
    private static List<InnerRequest> setRequest(RestRequest req) {
        Map<String, Object> requestParams = (Map<String, Object>) JSON.deserializeUntyped(req.requestBody.ToString());
        List<Object> requestList = (List<Object>) requestParams.get('request');
        List<InnerRequest> innerRequestList = new List<InnerRequest>();
        for (Object obj : requestList) {
            Map<String, Object> params = (Map<String, Object>) obj;
            InnerRequest inner       = new InnerRequest();
            inner.id   = (String) params.get('id');
            inner.name = (String) params.get('name');
            innerRequestList.add(inner);
        }
        return innerRequestList;
    }



    /** レスポンス作成メソッド */
    private static DT_ResponseParentDto setResponse(List<InnerRequest> innnerRequestList) {
        DT_ResponseParentDto response = new DT_ResponseParentDto();
        // 成功リストにステータスコードをセット
        if (innnerRequestList.size() > 0) {
            for (InnerRequest inner : innnerRequestList) {
                DT_ResponseChildDto child = new DT_ResponseChildDto();
                child.id                  = inner.id;
                child.name                = inner.name;
                child.status              = "200";
                response.results.add(child);
            }
        }
        return response;
    }



    /** リクエスト保管用内部クラス */
    public class InnerRequest {
        public String id;
        public String name;
    }
}
DT_ResponseParentDto.cls
public class DT_ResponseParentDto{

    public List<DT_ResponseChildDto> results;

    public DT_ResponseParentDto() {
        results = new List<DT_ResponseChildDto>();
    }

}
DT_ResponseChildDto.cls
public class DT_ResponseChildDto{

    public String id;
    public String name;
    public String status;

}
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Spring Boot + GradleでWebサイトを作ってみる(jdk1.8.x)

これは何?

JavaでWebサイトを作るのってどうやるの?という、最初の一歩で、成果物はHTMLページが1枚表示されるのみです。Webサーバを動作させブラウザに表示させることを目標とした記事です。
動作したら、修正を加えながら覚えていくと良いと思います。

動作確認したシステム要件

2020年8月に以下の要件で動作確認を行っています。

  • macOS 10.14.6
  • Homebrew 2.4.12
  • Gradle 6.6
  • jdk1.8.x
  • git

ここで利用するサンプルコードは GitHubにあります。

1. 手順:まずは動かしてみる

1.1. Projectのディレクトリを作成して移動する

Terminal
$ mkdir -p helloworld; cd $_

1.2. Gradle Projectを初期化する

Terminal
$ gradle init

ここから対話形式で進むので以下のように選択する。

  1. Select type of project to generate >> 2: application
  2. Select implementation language >> 3: Java
  3. Select build script DSL >> 1: Groovy
  4. Select test framework >> 1: JUnit 4
  5. Project name (default: helloworld) >> helloworld
  6. Source package (default: ) >> helloworld

以上でGradle Projectの初期化が完了しました。

1.3. サンプルコードをCloneする

Terminal
$ git clone https://github.com/ryoyakawai/java_gradle_springboot_helloworld.git

1.4. Webサーバを起動してみる

Terminal
$ cd java_gradle_springboot_helloworld
$ gradle bootRun

エラーなく起動するとTerminalに以下が表示されるはずです。

Terminal
> Task :bootRun

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.0.RELEASE)

2020-08-18 15:47:55.672  INFO 64412 --- [           main] c.e.helloworld.HelloworldApplication     : Starting HelloworldApplication on S1031198.local with PID 64412 (/..../java_gradle_springboot_helloworld/build/classes/java/main started by ryoya.kawai in /..../java_gradle_springboot_helloworld)
2020-08-18 15:47:55.674  INFO 64412 --- [           main] c.e.helloworld.HelloworldApplication     : No active profile set, falling back to default profiles: default
2020-08-18 15:47:56.180  INFO 64412 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2020-08-18 15:47:56.187  INFO 64412 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-08-18 15:47:56.187  INFO 64412 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.27]
2020-08-18 15:47:56.228  INFO 64412 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-08-18 15:47:56.229  INFO 64412 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 527 ms
2020-08-18 15:47:56.323  INFO 64412 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-08-18 15:47:56.422  INFO 64412 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2020-08-18 15:47:56.424  INFO 64412 --- [           main] c.e.helloworld.HelloworldApplication     : Started HelloworldApplication in 1.139 seconds (JVM running for 1.368)
<=========----> 75% EXECUTING [10s]
> :bootRun

ここでブラウザから動作の確認をします。

ブラウザで http://localhost:8080 にアクセスすると以下が表示されればWebサーバとして正常動作しているということになります。
sample00

2. 内容の説明

2.1 ファイルについて

「1.3. サンプルコードをCloneする」でCloneした直後のファイル構成です。下図のファイル、ディレクトリの右側に説明が書いてある部分に「1.2. Gradle Projectを初期化する」実施後に手をいれました。

├── build.gradle (修正必須:Gradleの設定ファイル)
├── settings.gradle
└── src
    ├── main
    │   ├── java
    │   │   └── helloworld  (以下、修正必須:プログラムコード)
    │   │       ├── HelloworldApplication.java
    │   │       ├── HelloworldController.java
    │   │       ├── HelloworldErrorController.java
    │   │       └── HelloworldServletInitializer.java
    │   ├── resources
    │   │   ├── application.yml (修正必須)
    │   │   ├── static
    │   │   │   └── assets  (以下は新規作成)
    │   │   │       └── sample-300x300.jpg
    │   │   └── templates
    │   │       ├── error.html (修正必須:HTML)
    │   │       └── helloworld.html (修正必須:HTML)
    │   └── webapp
    │       └── WEB-INF
    │           └── appengine-web.xml
    └── test
        └── java
            └── helloworld
                └── HelloworldApplicationTests.java  (修正必須:テストファイル)

2.2. それぞれのファイルの説明

  • build.gradle : Buildの設定を書き込みます。必要に応じた修正が適宜必要です。
  • settings.gradle : エントリーポイントになるプロジェクト名を記述する。

src > main > java > helloworld 以下のファイル

  • HelloworldApplication.java : SpringBootのフレームワークを使うことの宣言をしています。
  • HelloworldController.java : コントローラクラスです。主にどこのPathにアクセスしたら、何を表示するかを記述しています。
  • HelloworldErrorController.java : アプリケーションのエラーをハンドリングするクラスです。適宜修正が必要です。
  • HelloworldServletInitializer.java : WAR ファイルをデプロイして動作させる環境で必要な WebApplicationInitializer 実装クラス。(存在させていますがここでの動作では利用しておらず本来は不要です)

src > main > resources 以下のファイル

このディレクトリにHTMLファイルなどを配置します。

  • application.yml : メッセージを定義しているYAMLファイルです。
  • templates > error.html : エラー時に表示するHTMLです。
  • templates > helloworld.html : 正常背動作時に表示するHTMLです。
  • static > assets : 画像はここに置くとよいでしょう。

References

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

51歳(現52)からのプログラミング 備忘 VScodeでjarの追加 java.lang.ClassNotFoundException:com.mysql.cj.jdbc.Drive

VScodeでjavaしてると、たまにハマります。
今回は、DB(mysql)を扱うために、mysqlのjdbcを使いたかったのですが、

java.long.ClassNotFoundException: com.mysql.cj.jdbc.Driver

っていうエラーが止められなかった。
解決に丸1日(涙

VScodeでは、外部jarファイルの導入は
vscode_dependenciew.jpg
①でjavaファイルを選択し
②のエクスプローラメニュー[ ... ]を選択して
③jdkが java8  なら -> [ java Dependencies ]
 jdkが java11 なら -> [ java Project ]
 にチェックを入れると
④のように [ JAVA PROJECTS ] か [ JAVA DEPANDENCIES ]
 が表示されるので、それらのディレクトリを開いて
 [ Referenced Libraries ]を表示させて
⑤の[ + ]をクリック!

すると
vscode_dependenciex.jpg
利用したい外部ファイルを指定させるようにフォルダが開くので
目的のファイルを指定して終了!

どうだ!時間かかったぞ!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

51歳(現52)からのプログラミング 備忘 VScodeでjarの追加 Class.forName java.lang.ClassNotFoundException:com.mysql.cj.jdbc.Drive

VScodeでjavaしてると、たまにハマります。
今回は、DB(mysql)を扱うために、mysqlのjdbcを使いたかったのですが、

java.long.ClassNotFoundException: com.mysql.cj.jdbc.Driver

っていうエラーが止められなかった。
解決に丸1日(涙

VScodeでは、外部jarファイルの導入は、[java Dependency Viewer]を使うので、VScodeの拡張機能で[Project Manager for java ]をインスツールしときます(jdk8ならインスツールバージョンは0.9.0とか古いのを使ってね)。

では下記備忘です!

vscode_dependenciew.jpg
①でjavaファイルを選択し
②のエクスプローラメニュー[ ... ]を選択して
③jdk8   なら -> [ java Dependencies ]
 jdk11 なら -> [ java Project ]
 にチェックを入れると
④のように [ JAVA PROJECTS ](jdk11) か [ JAVA DEPANDENCIES ](jdk8)
 が表示されるので、それらのディレクトリを開いて
 [ Referenced Libraries ]を表示させて
⑤の[ + ]をクリック!

すると
vscode_dependenciex.jpg
利用したい外部ファイルを指定させるようにフォルダが開くので
目的のファイルを指定して終了!

どうだ!時間かかったぞ!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Eclipseを使ったtwitter4Jの環境構築メモ

Twitter APIをJavaで動かしたいと思い、twitter4Jに出会いました。 ここに、環境構築やデバッグ時の操作についてメモを残します。 動作環境 - Windows10 - Java11 - Eclipse IDE - twitter4J 4.0.7 環境構築 何はともあれTwitter APIの登録を。https://developer.twitter.com/en Consumer API keys, Access token & access token secretを取得しておきましょう。 次に、twitter4Jのダウンロード。http://twitter4j.org/ja/index.html#download 適当なディレクトリに解凍しておきましょう。 Eclipseのインストール方法は省きます。 プロジェクト作成 Javaプロジェクトを作成します。ここでは、TestTwitter4Jという名前にしました。 JARの追加 プロジェクト作成後、このプロジェクトからtwitter4Jが見えるようにします。 プロジェクトを右クリック→Javaのビルド・パス→ライブラリーを選択します。 「クラスパス」を選択し、「外部JARの追加」から先ほどダウンロードしたtwitter4J-core-4.0.7.jarを追加します。 twitter4J-core-4.0.7.jarは、インストール先\twitter4j\libにあります。 ほかにもいろいろ.jarファイルが見えますが、coreだけで充分だそうです。(詳しくは公式サイトで) プロパティファイル twitter4j.propertiesにTwitter APIから取得したConsumer API keys, Access token & access token secretをそれぞれ書きます。 ひな形は、twitter4j\binにあるので参考に。 プロパティの設定についてはこちらを参照してください。 プロパティファイルは、プロジェクトフォルダに置いてください。 デバッグ あとは、普段通りデバッグすれば動きます。 twitter4Jのサンプルは、twitter4j-examplesにあるので参考に。 以下のサンプルを動かしてみます。 Twitterトレンドのロケーションを一覧表示するだけです。 Test.java import twitter4j.Location; import twitter4j.ResponseList; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; public class Test { public static void main(String[] args) { try { Twitter twitter = new TwitterFactory().getInstance(); ResponseList<Location> locations; locations = twitter.getAvailableTrends(); System.out.println("Showing available trends"); for (Location location : locations) { System.out.println(location.getName() + " (woeid:" + location.getWoeid() + ")"); } System.out.println("done."); System.exit(0); } catch (TwitterException te) { te.printStackTrace(); System.out.println("Failed to get trends: " + te.getMessage()); System.exit(-1); } } } 実行結果 以下のように表示されれば、問題ありません。 最後に こうして書き起こすと結構シンプルですね。 最初はよくわからないエラー吐かれたりして、対処法もわからず悩みました。 次はもっといろんなメソッド使ってみたい。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

护网礼盒:哥斯拉Godzilla shell管理工具

护网期间,各大厂商的waf不断,在静态查杀、流量通信等方面对webshell进行拦截,众红队急需一款优秀的权限管理工具,冰蝎3.0的发布可能缓解了流量加密的困境,但是冰蝎3.0的bug众多,很多朋友甚至连不上冰蝎的shell,于是@BeichenDream决定公开他所开发的一款shell权限管理工具,名为“哥斯拉”。

简单使用方法

在哥斯拉安装之前,你需要安装jdk1.8的环境。双击Godzilla.jar打开,此时会在同目录下生成data.db数据库存放数据。首页长这样
image.png

点击 管理-添加 生成所需的webshell,哥斯拉支持jsp、php、aspx等多种载荷,java和c#的载荷原生实现AES加密,PHP使用亦或加密。生成时需要记住自己的生成配置用以链接时用。
image.png

以java的jsp为例,填写密码和密钥,生成jsp/jspx。本文以tomcat7来演示一些功能。将shell.jsp放入tomcat使用哥斯拉链接。点击目标-添加
image.png

image.png

选中shell右键选择进入即可进入shell管理界面。

image.png

jsp/jspx的shell功能如图
image.png

php的功能如图
image.png

aspx/ashx/asmx的功能如图
image.png

简单使用介绍就到这里。

一些特性

为什么我放着冰蝎、蚁剑还有什么天蝎不用而要用你的哥斯拉?

  1. 哥斯拉全部类型的shell均过市面所有静态查杀
  2. 哥斯拉流量加密过市面全部流量waf
  3. 哥斯拉的自带的插件是冰蝎、蚁剑不能比拟的

静态免杀就不说了,工具放出来之后可能会免杀一段时间就不行了,当然随便改改就能继续过。重点是看流量加密和一些自带的插件。

流量加密

先来看流量加密,仍然以jsp为例,修改链接配置里的代理选项为http代理,让流量代理到Burp中。

image.png

执行dir命令的请求包

image.png

响应包
image.png

或许你说headers里的一些ua和Accept太扎眼了,别担心,这些可以自己配置。在shell编辑的请求配置中修改
image.png

或者在配置-全局配置中修改
image.png

此时在看请求包和响应包完全没有特征
image.png

image.png

并且在请求包的thisisleftData和thisisrightData可以修改为其他杂乱数据来进行干扰。到这里还不说一句哥斯拉天下第一

插件模块

一些基本的模块比如:基本信息、文件管理、命令执行我这里就不再赘述了。

数据库管理

相信大家在使用蚁剑的时候没少碰到过连不上数据库的情况,我自己碰到过一个环境就是shell所在的tomcat container没有jdbc的jar包依赖导致连不上数据库,偏偏蚁剑没什么好办法。而在哥斯拉中就不必担心这个问题,在数据库管理中哥斯拉会先从容器中加载可用的jdbc,如果没有就通过内存加载jar驱动来链接数据库。

内存shell

内存shell模块实现了在tomcat中注册、卸载内存马

image.png

你可以直接注册一个哥斯拉的马或者冰蝎、菜刀的马,甚至是regeorg。
image.png

比如注册一个/Godzillashell进去
image.png

访问发现存在
image.png

直接哥斯拉链接就行了。内存shell 无日志,会在tomcat重启后消失。

屏幕截图

点截图会自动保存预览,在windows上需要shell权限够大。
image.png

虚拟终端

这个功能其实是在本地监听端口,通过shell与服务器交互实现cmdshell。点击start之后执行nc 127.0.0.1 4444链接本地4444获取cmdshell。

image.png

如果不使用nc链接的话会一直占用本地4444端口。用完请exit或点击stop。

JMeterpreter

image.png

不用说了 看图就会

ServletManage

用来管理servlet,方便管理内存shell。
image.png

JarLoader

image.png

用其加载jar包,主要用途就是加载jdbc。

JZip

image.png

打包全站的好助手。

ByPassOpenBasedir

image.png

BypassDisableFunctions

image.png

笔记

笔记模块是jsp\php\aspx都有的模块
image.png

ShellCodeLoader

直接通过shell来加载shellcode,或者弹meterpreter

image.png

SafetyKatz

mimikatz 需要高权限
image.png

lemon

抓常用软件密码
image.png

BadPotato

image.png

提权模块,源于 https://github.com/BeichenDream/BadPotato

SharpWeb

image.png

参考 https://github.com/djhohnstein/SharpWeb

SweetPotato

image.png

提权模块

其他选项

配置-程序配置中可以修改字体大小,重启后生效。
image.png

关闭提示语不解释了,上帝模式开启会使文件管理复杂化。
image.png

免责声明

  1. 程序仅限服务器管理使用,切勿用于非法用途,非法使用造成的一切后果由自己承担,与作者无关。
  2. 由于用户滥用造成的一切后果与作者无关。
  3. 使用本程序请自觉遵守当地法律法规,出现一切后果均与作者无关。
  4. 本程序及代码均不得用于商业用途,仅作学习交流,违者必究。

下载地址

https://github.com/BeichenDream/Godzilla/releases/tag/v1.00-godzilla

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Javaメトリクスとは_メモ_20200818

メトリクス

1.メトリクスとは

  便利なメトリクスたち

  メトリクスとは、モデルを構成するクラスやメソッド、クラス間の関係、パッケージ間の関係などを、
  複雑さや結合度、凝集度などの観点から測定し、数値として表すものです。

  ソフトウェア開発で用いられるメトリクスには、マイナーなものも含めると非常にたくさんの種類があります。
  ただし、あまり高度なメトリクスを勉強しても実践の場でうまく使いこなすことは難しいです。
  ですので本資料では便利な3つの指標、「LOC」「CC」「WMC」だけに絞って学習します。
  たくさん覚えても使う機会がないと忘れてしまいますしね。

  メトリクス利用のメリットデメリット

  <メリット>

  コードの規模や複雑さ、凝集度(互いに関連する要素のコード内での散らばり具合)、
  結合度(クラスやパッケージの独立性の高さ)などを専用のツールを使って計測し、
  一定の目標を定めて改善していくことができる。
  

  <デメリット>

  たくさん存在するので覚えるのに時間がかかる

2.LOC

規模を大まかに把握できる LOC

  LOC(Line of Code)は、その名の通りプログラムの行数を表します。
  たとえば、中身が200行のプログラムの場合、LOCは200です。
  ただし、空行やカッコだけの行など、プログラムの本質とは関係のない行をカウントしないなど、
  いくつかの数え方があります。

  また、行数が多い場合は1000行単位で数えるKLOCを使うこともあります。
  (80000行のプログラムは80KLOC)※今回資料では覚える必要はありません。

  LOCの特徴

  コードの書き方や数え方によって容易に増減するメトリクスであるため厳密な運用には向きません。
  あくまで規模を大まかなとらえるための道具と割りきって使いましょう。

3.CC

メソッドの複雑さを示すCC

  CC(Cyclomatic Complexity)はトーマス・マッケーブという人が開発したメトリクスで、
  「マッケーブの循環的複雑度」とも言います。
  CCはある特定のメソッドの中身がどれだけ複雑なのかを表す1以上の数値であり、
  大きいほど複雑であることを示しています。

  具体的には、ifによる分岐やforによるループが多く使われるほど高い数値を示します。
  あまりにも複雑なメソッドは、読みづらく、バグになりやすく、後々の修正も大変です。
  開発中の各メソッドについて、CCが一定以上に抑えられているかチェックし、
  あまりにCCが大きいものは修正したほうが良いこともあります。

  CCの特徴

  高ければ高いほどバグが混入する確率も上がるので、修正をする際に使うこともあると
  考えられます。

4.WMC

クラス複雑度を示すWMC

  WMC(Weighted Method Per Class)は、あるクラスに含まれる全メソッドのCCを合計した値であり、
  クラスの複雑度を表します。
  WMCが異常に大きい値を示しているクラスは、複数に分割できるかを考えたほうがよさそうです。

WMCが大きい時の対応

  ・メソッドの機能を分割する

  ・構造を簡単にできるか検討する

  WMCの特徴

  CCを合計した値になるので、大きければ大きいほど自分が開発しているものが
  複雑になりすぎているか、読みにくいかなどがわかる。

※どうでもいい方は読み飛ばしてください
<筆者の所感>

実際に開発現場で自分が製造を任された際にメトリクスも気を付けて製造しようと思った。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Hull Voronoi 3Dで何度もSingular input data errorが出る原因

Hull Voronoi 3Dについて

3DのVoronoi図を計算するプログラムで、原作はC#で記述されています。私が作ったProcessing(Java)バージョンもあります。Convex HullのfindInitialPoints内で頻繁にSingular input data errorが出るので原因を調べてみました。
https://github.com/Scrawk/Hull-Delaunay-Voronoi
https://github.com/Nekodigi/Hull-Voronoi-3D

原因

そもそも、Singular input data errorは入力した点が、一致しているときに発生します。findInitialPointsには、各軸の座標が最小値、最大値の点に絞り込んで渡すのですが、複数の軸の最小値、最大値を兼ねている場合、稀に点が不足し、同じ点が選ばれてしまうという事態が起こります。

解決法

点が少ない場合は、Singular input data errorが起こりやすいですが、その分処理も軽いので、findInitialPointsに全ての点を渡すことで解決しています。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む