From 6686c165d848ee046d98f734624b1939ba512524 Mon Sep 17 00:00:00 2001 From: aressu1985 <175816613@qq.com> Date: Sun, 12 Nov 2023 19:58:40 +0800 Subject: [PATCH] add tag to support not checking designated columns --- lib/mo-tester-1.0-SNAPSHOT.jar | Bin 71726 -> 72837 bytes src/main/java/io/mo/cases/SqlCommand.java | 10 +++++- src/main/java/io/mo/constant/COMMON.java | 2 ++ src/main/java/io/mo/db/Executor.java | 8 +++-- src/main/java/io/mo/result/RSCell.java | 10 ++++++ src/main/java/io/mo/result/RSRow.java | 18 +++++++++++ src/main/java/io/mo/result/RSSet.java | 35 ++++++++++++++++++++- src/main/java/io/mo/result/StmtResult.java | 5 +++ src/main/java/io/mo/util/ScriptParser.java | 10 ++++++ 9 files changed, 93 insertions(+), 5 deletions(-) diff --git a/lib/mo-tester-1.0-SNAPSHOT.jar b/lib/mo-tester-1.0-SNAPSHOT.jar index c545aa25fb7d46a8c906fe91786bbf287044d7f2..1b2c09f3c9f237a277f96b6130c88f34f65a5287 100644 GIT binary patch delta 37557 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 z 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 diff --git a/src/main/java/io/mo/cases/SqlCommand.java b/src/main/java/io/mo/cases/SqlCommand.java index 15e45b4aa..c4d5745ca 100755 --- a/src/main/java/io/mo/cases/SqlCommand.java +++ b/src/main/java/io/mo/cases/SqlCommand.java @@ -34,6 +34,8 @@ public class SqlCommand { private ArrayList sortKeyIndexs = new ArrayList<>(); private ArrayList syscmds = new ArrayList<>(); + + private ArrayList ignoreColumns = new ArrayList<>(); private TestResult testResult; private StmtResult expResult; @@ -293,5 +295,11 @@ public void setWaitOperation(String waitOperation) { this.waitOperation = waitOperation; } - + public ArrayList getIgnoreColumns(){ + return this.ignoreColumns; + } + + public void addIgnoreColumn(int id){ + this.ignoreColumns.add(id); + } } diff --git a/src/main/java/io/mo/constant/COMMON.java b/src/main/java/io/mo/constant/COMMON.java index e2109467a..624a8e26a 100755 --- a/src/main/java/io/mo/constant/COMMON.java +++ b/src/main/java/io/mo/constant/COMMON.java @@ -42,6 +42,8 @@ public class COMMON { //if result is type of error, and not unique, can use this flag to regular match public static String REGULAR_MATCH_FLAG = "-- @pattern"; + + public static String IGNORE_COLUMN_FLAG = "-- @ignore:"; public static String LOG_DIR = "log"; public static String RESULT_DIR = "result"; diff --git a/src/main/java/io/mo/db/Executor.java b/src/main/java/io/mo/db/Executor.java index b1b6d32ba..4ad2969d4 100755 --- a/src/main/java/io/mo/db/Executor.java +++ b/src/main/java/io/mo/db/Executor.java @@ -149,15 +149,17 @@ public static void run(TestScript script){ } ResultSet resultSet = statement.getResultSet(); if (resultSet != null) { - RSSet rsSet = new RSSet(resultSet); + RSSet rsSet = new RSSet(resultSet,command); StmtResult actResult = new StmtResult(rsSet); command.setActResult(actResult); command.getTestResult().setActResult(actResult.toString()); StmtResult expResult = command.getExpResult(); + expResult.setCommand(command); expResult.setType(RESULT.STMT_RESULT_TYPE_SET); expResult.setRsSet(ResultParser.convertToRSSet(expResult.getOrginalRSText(), command.getSeparator())); command.getTestResult().setExpResult(expResult.toString()); + } else { StmtResult actResult = new StmtResult(); actResult.setType(RESULT.STMT_RESULT_TYPE_NONE); @@ -382,7 +384,7 @@ public static boolean genRS(TestScript script){ } ResultSet resultSet = statement.getResultSet(); if(resultSet != null){ - RSSet rsSet = new RSSet(resultSet); + RSSet rsSet = new RSSet(resultSet,command); StmtResult actResult = new StmtResult(rsSet); actResult.setCommand(command); rs_writer.write(command.getCommand().trim()); @@ -502,7 +504,7 @@ public static void genRSForOnlyNotMatch(TestScript script){ statement.execute(sqlCmd); ResultSet resultSet = statement.getResultSet(); if (resultSet != null) { - RSSet rsSet = new RSSet(resultSet); + RSSet rsSet = new RSSet(resultSet,command); StmtResult actResult = new StmtResult(rsSet); command.setActResult(actResult); command.getTestResult().setActResult(actResult.toString()); diff --git a/src/main/java/io/mo/result/RSCell.java b/src/main/java/io/mo/result/RSCell.java index 203c409db..ae173a9ba 100644 --- a/src/main/java/io/mo/result/RSCell.java +++ b/src/main/java/io/mo/result/RSCell.java @@ -13,6 +13,16 @@ public class RSCell { private int precision = 0; //column value precision,remain attr private static Logger LOG = Logger.getLogger(RSCell.class.getName()); + public boolean isNeedcheck() { + return needcheck; + } + + public void setNeedcheck(boolean needcheck) { + this.needcheck = needcheck; + } + + private boolean needcheck = true; + public T getValue() { return value; } diff --git a/src/main/java/io/mo/result/RSRow.java b/src/main/java/io/mo/result/RSRow.java index 4caa03d4a..479adb644 100644 --- a/src/main/java/io/mo/result/RSRow.java +++ b/src/main/java/io/mo/result/RSRow.java @@ -1,5 +1,6 @@ package io.mo.result; +import io.mo.cases.SqlCommand; import io.mo.constant.RESULT; import org.apache.log4j.Logger; @@ -12,6 +13,17 @@ public class RSRow { private String separator = RESULT.COLUMN_SEPARATOR_SPACE; private int index = 0;//the row index in the RSSet + + public SqlCommand getCommand() { + return command; + } + + public void setCommand(SqlCommand command) { + this.command = command; + } + + private SqlCommand command; + private static Logger LOG = Logger.getLogger(RSRow.class.getName()); public RSRow(int colCount){ @@ -59,8 +71,14 @@ public boolean equals(RSRow rsRow){ //Or,compare each values for(int i = 0; i < cells.size(); i++){ + RSCell ct = cells.get(i); + RSCell cc = rsRow.getRowValues().get(i); + + if(!ct.isNeedcheck() || !cc.isNeedcheck()) { + continue; + } if(!ct.equals(cc)){ LOG.error("The value of [row:" + index + ",column:" + i + "] does not equal with each other,one is ["+ct.toString()+"],but the other is ["+cc.toString()+"]"); return false; diff --git a/src/main/java/io/mo/result/RSSet.java b/src/main/java/io/mo/result/RSSet.java index 609cba1fa..73483218e 100644 --- a/src/main/java/io/mo/result/RSSet.java +++ b/src/main/java/io/mo/result/RSSet.java @@ -1,5 +1,6 @@ package io.mo.result; +import io.mo.cases.SqlCommand; import io.mo.constant.COMMON; import io.mo.constant.RESULT; import org.apache.log4j.Logger; @@ -21,13 +22,26 @@ public class RSSet { private String separator = RESULT.COLUMN_SEPARATOR_SPACE; + private ArrayList ignoreColumns = new ArrayList<>(); + + public SqlCommand getCommand() { + return command; + } + + public void setCommand(SqlCommand command) { + this.command = command; + } + + private SqlCommand command; + private static Logger LOG = Logger.getLogger(RSSet.class.getName()); public RSSet(){ } - public RSSet(ResultSet resultSet){ + public RSSet(ResultSet resultSet,SqlCommand command){ + this.command = command; ResultSetMetaData md = null; StringBuffer result = new StringBuffer(); try { @@ -44,6 +58,16 @@ public RSSet(ResultSet resultSet){ RSRow rsRow = new RSRow(cols); for(int j = 0; j < cols; ++j) { RSCell rsCell = new RSCell(); + if(this.command!=null && this.command.getIgnoreColumns().size() != 0){ + if(this.command.getIgnoreColumns().contains(new Integer(j))){ + LOG.debug(String.format("[%s][row:%d][%s] The column[%d] does not need to be check.", + command.getScriptFile(), + command.getPosition(), + command.getCommand(), + j)); + rsCell.setNeedcheck(false); + } + } String value = resultSet.getString(j + 1); if(value == null) value = "null"; @@ -150,6 +174,7 @@ public boolean equals(RSSet set){ } for(int i = 0; i < rows.size();i++){ + if(!this.rows.get(i).equals(set.getRows().get(i))){ return false; } @@ -172,6 +197,14 @@ public void setSeparator(String separator) { } } + public ArrayList getIgnoreColumns(){ + return this.ignoreColumns; + } + + public void addIgnoreColumn(int id){ + this.ignoreColumns.add(id); + } + public String toString(){ if(this.abnormalError != null) return abnormalError; diff --git a/src/main/java/io/mo/result/StmtResult.java b/src/main/java/io/mo/result/StmtResult.java index 6c1f7f575..c5f32ffc4 100644 --- a/src/main/java/io/mo/result/StmtResult.java +++ b/src/main/java/io/mo/result/StmtResult.java @@ -5,6 +5,7 @@ import org.apache.log4j.Logger; import org.apache.xmlbeans.impl.xb.xsdschema.PatternDocument; +import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -28,6 +29,7 @@ public class StmtResult { private static Logger LOG = Logger.getLogger(StmtResult.class.getName()); + public StmtResult(String errorMessage){ this.type = RESULT.STMT_RESULT_TYPE_ERROR; this.errorMessage = errorMessage; @@ -36,6 +38,7 @@ public StmtResult(String errorMessage){ public StmtResult(RSSet rsSet){ this.rsSet = rsSet; if(this.command != null) { + this.rsSet.setCommand(command); if (command.getSeparator().equals("both") || command.getSeparator().equals("space")) this.rsSet.setSeparator(RESULT.COLUMN_SEPARATOR_SPACE); else @@ -149,6 +152,7 @@ public void setRsSet(RSSet rsSet) { this.rsSet = rsSet; if(this.command != null) { + this.rsSet.setCommand(this.command); if (command.getSeparator().equals("both") || command.getSeparator().equals("space")) this.rsSet.setSeparator(RESULT.COLUMN_SEPARATOR_SPACE); else @@ -177,6 +181,7 @@ public SqlCommand getCommand() { public void setCommand(SqlCommand command) { this.command = command; if(this.rsSet != null) { + this.rsSet.setCommand(command); if (command.getSeparator().equals("both") || command.getSeparator().equals("space")) this.rsSet.setSeparator(RESULT.COLUMN_SEPARATOR_SPACE); else diff --git a/src/main/java/io/mo/util/ScriptParser.java b/src/main/java/io/mo/util/ScriptParser.java index 251065ff5..d42817a9f 100755 --- a/src/main/java/io/mo/util/ScriptParser.java +++ b/src/main/java/io/mo/util/ScriptParser.java @@ -83,6 +83,16 @@ public static void parseScript(String path){ command.setRegularMatch(true); } + if(trimmedLine.startsWith(COMMON.IGNORE_COLUMN_FLAG)){ + String ignores = trimmedLine.substring(COMMON.IGNORE_COLUMN_FLAG.length()); + if(ignores != null || !ignores.equalsIgnoreCase("")){ + String[] ignore_ids = ignores.split(","); + for(int i = 0; i < ignore_ids.length;i++){ + command.addIgnoreColumn(Integer.parseInt(ignore_ids[i])); + } + } + } + //if line is mark to set wait paras if(trimmedLine.startsWith(COMMON.WAIT_FLAG)){ String[] items = trimmedLine.split(":");