Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions src/test/JD/CS/JDCSGetBigDecimal.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,12 @@ public static void main(String args[]) throws Exception {
test.JDCSTest.main(newArgs);
}
// table names
private static String INTEGER_TABLE = JDCSTest.COLLECTION + ".int_tab";
private static String INTEGER_PROCEDURE = JDCSTest.COLLECTION + ".int_proc";
private static String VARCHAR_TABLE = JDCSTest.COLLECTION + ".vc_tab";
private static String VARCHAR_PROCEDURE = JDCSTest.COLLECTION + ".vc_proc";
private static String NUMERIC_TABLE = JDCSTest.COLLECTION + ".num_tab";
private static String NUMERIC_PROCEDURE = JDCSTest.COLLECTION + ".num_proc";
private static String INTEGER_TABLE = JDCSTest.COLLECTION + ".int_tabgbd";
private static String INTEGER_PROCEDURE = JDCSTest.COLLECTION + ".int_procgbd";
private static String VARCHAR_TABLE = JDCSTest.COLLECTION + ".vc_tabgbd";
private static String VARCHAR_PROCEDURE = JDCSTest.COLLECTION + ".vc_procgbd";
private static String NUMERIC_TABLE = JDCSTest.COLLECTION + ".num_tabgbd";
private static String NUMERIC_PROCEDURE = JDCSTest.COLLECTION + ".num_procgbd";


// Private data.
Expand Down Expand Up @@ -100,12 +100,12 @@ protected void setup ()
{

// reset table names after -lib arg is processed.
INTEGER_TABLE = JDCSTest.COLLECTION + ".int_tab";
INTEGER_PROCEDURE = JDCSTest.COLLECTION + ".int_proc";
VARCHAR_TABLE = JDCSTest.COLLECTION + ".vc_tab";
VARCHAR_PROCEDURE = JDCSTest.COLLECTION + ".vc_proc";
NUMERIC_TABLE = JDCSTest.COLLECTION + ".num_tab";
NUMERIC_PROCEDURE = JDCSTest.COLLECTION + ".num_proc";
INTEGER_TABLE = JDCSTest.COLLECTION + ".int_tabgbd";
INTEGER_PROCEDURE = JDCSTest.COLLECTION + ".int_procgbd";
VARCHAR_TABLE = JDCSTest.COLLECTION + ".vc_tabgbd";
VARCHAR_PROCEDURE = JDCSTest.COLLECTION + ".vc_procgbd";
NUMERIC_TABLE = JDCSTest.COLLECTION + ".num_tabgbd";
NUMERIC_PROCEDURE = JDCSTest.COLLECTION + ".num_procgbd";



Expand Down
45 changes: 35 additions & 10 deletions src/test/JDDataAreaLock.java → src/test/JD/JDDataAreaLock.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,33 +10,52 @@
// others. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
package test;
package test.JD;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;

import test.JTOpenTestEnvironment;

public class JDDataAreaLock {

private Statement s_;
private String dataArea_;
private String library_;

public JDDataAreaLock(Statement s, String dataArea) throws SQLException {
if (dataArea.length() > 10) {
throw new SQLException("Too long :"+dataArea);
}
s_ = s;
dataArea_ = dataArea;
library_ = JTOpenTestEnvironment.testInfoSchema;
}


public JDDataAreaLock(Statement s, String library, String dataArea) throws SQLException {
if (dataArea.length() > 10) {
throw new SQLException("Too long :"+dataArea);
}
s_ = s;
dataArea_ = dataArea;
library_ = library ;
}


public void lock(String comment, int waitTime) throws SQLException {



String sql="CALL QSYS2.QCMDEXC(' CRTDTAARA DTAARA("+JTOpenTestEnvironment.testInfoSchema+"/"+dataArea_+") TYPE(*CHAR) LEN(2000)')";
String sql="CALL QSYS2.QCMDEXC(' CRTDTAARA DTAARA("+library_+"/"+dataArea_+") TYPE(*CHAR) LEN(2000)')";
try {
s_.execute(sql);
sql = "CALL QSYS2.QCMDEXC('GRTOBJAUT OBJ("+library_+"/"+dataArea_+") OBJTYPE(*DTAARA) USER(*PUBLIC) AUT(*ALL)')";
s_.execute(sql);


} catch (Exception e) {
String message = e.getMessage();
String expected = "exists";
Expand All @@ -47,11 +66,11 @@ public void lock(String comment, int waitTime) throws SQLException {
}
// Lock exclusive on the system and delay one second
try {
sql="CALL QSYS2.QCMDEXC(' ALCOBJ OBJ(("+JTOpenTestEnvironment.testInfoSchema+"/"+dataArea_+" *DTAARA *EXCLRD)) WAIT("+waitTime+") ')";
sql="CALL QSYS2.QCMDEXC(' ALCOBJ OBJ(("+library_+"/"+dataArea_+" *DTAARA *EXCLRD)) WAIT("+waitTime+") ')";
s_.execute(sql);
// Look at the data area to make sure it isn't already locked
sql="select JOB_NAME, TRIM(INTERPRET(REPLACE(BINARY(DATA_AREA_VALUE),BX'00',BX'40') AS CHAR(2000) CCSID 37)) "
+ "from qsys2.data_area_info where DATA_AREA_LIBRARY='" + JTOpenTestEnvironment.testInfoSchema
+ "from qsys2.data_area_info where DATA_AREA_LIBRARY='" + library_
+ "' AND DATA_AREA_NAME='" + dataArea_ + "'";
try (ResultSet rs = s_.executeQuery(sql)) {
if (rs.next()) {
Expand All @@ -60,13 +79,13 @@ public void lock(String comment, int waitTime) throws SQLException {
if (data.indexOf("LOCK") == 0) {
String jobname = rs.getString(1);
if (data.indexOf(jobname) > 0) {
sql = "CALL QSYS2.QCMDEXC(' DLCOBJ OBJ((" + JTOpenTestEnvironment.testInfoSchema + "/" + dataArea_
sql = "CALL QSYS2.QCMDEXC(' DLCOBJ OBJ((" + library_ + "/" + dataArea_
+ " *DTAARA *EXCLRD)) ')";
try {
s_.execute(sql);
} catch (SQLException sqlex) {
}
throw new SQLException("Data area " + JTOpenTestEnvironment.testInfoSchema + "/" + dataArea_
throw new SQLException("Data area " + library_ + "/" + dataArea_
+ " already locked by this job " + jobname);
}
}
Expand All @@ -77,7 +96,7 @@ public void lock(String comment, int waitTime) throws SQLException {

Timestamp ts = new Timestamp(System.currentTimeMillis());
String callerString = getCallString();
sql="CALL QSYS2.QCMDEXC(' CHGDTAARA DTAARA("+JTOpenTestEnvironment.testInfoSchema+"/"+dataArea_+" *ALL) VALUE(''LOCK ' || JOB_NAME || ' "+
sql="CALL QSYS2.QCMDEXC(' CHGDTAARA DTAARA("+library_+"/"+dataArea_+" *ALL) VALUE(''LOCK ' || JOB_NAME || ' "+
" "+
pad50(comment+" "+ts.toString())+" "+callerString+"'')')";

Expand All @@ -88,6 +107,7 @@ public void lock(String comment, int waitTime) throws SQLException {
throw e;
}



}

Expand All @@ -102,12 +122,17 @@ private String pad50(String inString) {

}



private String getCallString() {
String stackString = "";
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
for(int i = 3; i < 10 && i <stackTrace.length; i++) {
int stackTraceLength = stackTrace.length;
int i = 3;
while( (i < 10) && ( i < stackTraceLength)) {
StackTraceElement element = stackTrace[i];
stackString+= pad50(element.getClassName()+"."+element.getMethodName()+":"+element.getLineNumber());
i++;
}
return stackString;
}
Expand All @@ -121,11 +146,11 @@ public void unlock(String comment, Timestamp ts) throws SQLException {
if (ts == null)
ts = new Timestamp(System.currentTimeMillis());
String callerString = getCallString();
sql = "CALL QSYS2.QCMDEXC(' CHGDTAARA DTAARA(" + JTOpenTestEnvironment.testInfoSchema + "/" + dataArea_
sql = "CALL QSYS2.QCMDEXC(' CHGDTAARA DTAARA(" + library_ + "/" + dataArea_
+ " *ALL) VALUE(''UNLOCK ' || JOB_NAME || ' " + " " + pad50(comment + " " + ts.toString())
+ " " + callerString + "'')')";
s_.execute(sql);
sql = "CALL QSYS2.QCMDEXC(' DLCOBJ OBJ((" + JTOpenTestEnvironment.testInfoSchema + "/" + dataArea_
sql = "CALL QSYS2.QCMDEXC(' DLCOBJ OBJ((" + library_ + "/" + dataArea_
+ " *DTAARA *EXCLRD)) ')";
s_.execute(sql);

Expand Down
Loading