X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=appc-dispatcher%2Fappc-dispatcher-common%2Ftransaction-recorder%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fappc%2Ftransactionrecorder%2Fimpl%2FTransactionRecorderImplTest.java;fp=appc-dispatcher%2Fappc-dispatcher-common%2Ftransaction-recorder%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fappc%2Ftransactionrecorder%2Fimpl%2FTransactionRecorderImplTest.java;h=394aa97a184b67225f62a3f60436db778d1e0b98;hb=b5fe8a69e90b950c07dc11af481eab7e9bab52c6;hp=36cf26bb74f9eb8cdd0a976161049196525fc559;hpb=9b32cb60360a2a2973c621053510718de0072111;p=appc.git diff --git a/appc-dispatcher/appc-dispatcher-common/transaction-recorder/src/test/java/org/onap/appc/transactionrecorder/impl/TransactionRecorderImplTest.java b/appc-dispatcher/appc-dispatcher-common/transaction-recorder/src/test/java/org/onap/appc/transactionrecorder/impl/TransactionRecorderImplTest.java index 36cf26bb7..394aa97a1 100644 --- a/appc-dispatcher/appc-dispatcher-common/transaction-recorder/src/test/java/org/onap/appc/transactionrecorder/impl/TransactionRecorderImplTest.java +++ b/appc-dispatcher/appc-dispatcher-common/transaction-recorder/src/test/java/org/onap/appc/transactionrecorder/impl/TransactionRecorderImplTest.java @@ -19,31 +19,12 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * * ============LICENSE_END========================================================= */ package org.onap.appc.transactionrecorder.impl; -import static org.mockito.Matchers.anyObject; -import static org.mockito.Matchers.anyString; -import static org.hamcrest.CoreMatchers.isA; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.text.ParseException; -import java.time.Instant; -import java.time.ZoneOffset; -import java.time.format.DateTimeFormatter; -import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; -import javax.sql.rowset.CachedRowSet; +import com.sun.rowset.CachedRowSetImpl; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -51,6 +32,11 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.mockito.Mockito; + +import static org.mockito.Matchers.anyObject; +import static org.mockito.Matchers.anyString; +import static org.hamcrest.CoreMatchers.isA; + import org.onap.appc.dao.util.dbcp.DBConnectionPool; import org.onap.appc.dao.util.helper.DBHelper; import org.onap.appc.domainmodel.lcm.Flags; @@ -61,7 +47,22 @@ import org.onap.appc.exceptions.APPCException; import org.onap.appc.transactionrecorder.objects.TransactionConstants; import org.onap.appc.transactionrecorder.objects.TransactionConstants.TRANSACTION_ATTRIBUTES; import org.onap.ccsdk.sli.core.dblib.DbLibService; -import com.sun.rowset.CachedRowSetImpl; + +import javax.sql.rowset.CachedRowSet; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.time.Instant; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; /** * Test class for TransactionRecorder @@ -86,26 +87,27 @@ public class TransactionRecorderImplTest { *

* Please ensure this table create script is identical to the source script used in a deployment. */ - private String TRANSACTION_CREATE_TABLE = "CREATE TABLE TRANSACTIONS (" + - " TRANSACTION_ID VARCHAR(75) NOT NULL PRIMARY KEY," + - " ORIGIN_TIMESTAMP DATETIME(3) NOT NULL," + - " REQUEST_ID VARCHAR(256) NOT NULL," + - " SUBREQUEST_ID VARCHAR(256) DEFAULT NULL," + - " ORIGINATOR_ID VARCHAR(256) DEFAULT NULL," + - " START_TIME DATETIME(3) NOT NULL," + - " END_TIME DATETIME(3) DEFAULT NULL," + - " TARGET_ID VARCHAR(256) NOT NULL," + - " TARGET_TYPE VARCHAR(256) DEFAULT NULL," + - " OPERATION VARCHAR(256) NOT NULL," + - " RESULT_CODE INT(11) DEFAULT NULL," + - " DESCRIPTION TEXT," + - " STATE VARCHAR(50) NOT NULL," + - " SERVICE_INSTANCE_ID VARCHAR(256) DEFAULT NULL," + - " VNFC_NAME VARCHAR(256) DEFAULT NULL," + - " VSERVER_ID VARCHAR(256) DEFAULT NULL," + - " VF_MODULE_ID VARCHAR(256) DEFAULT NULL," + - " MODE VARCHAR(50) NOT NULL," + - ")"; + private String TRANSACTION_CREATE_TABLE = + "CREATE TABLE TRANSACTIONS (" + + " TRANSACTION_ID VARCHAR(75) NOT NULL PRIMARY KEY," + + " ORIGIN_TIMESTAMP DATETIME(3) NOT NULL," + + " REQUEST_ID VARCHAR(256) NOT NULL," + + " SUBREQUEST_ID VARCHAR(256) DEFAULT NULL," + + " ORIGINATOR_ID VARCHAR(256) DEFAULT NULL," + + " START_TIME DATETIME(3) NOT NULL," + + " END_TIME DATETIME(3) DEFAULT NULL," + + " TARGET_ID VARCHAR(256) NOT NULL," + + " TARGET_TYPE VARCHAR(256) DEFAULT NULL," + + " OPERATION VARCHAR(256) NOT NULL," + + " RESULT_CODE INT(11) DEFAULT NULL," + + " DESCRIPTION TEXT," + + " STATE VARCHAR(50) NOT NULL," + + " SERVICE_INSTANCE_ID VARCHAR(256) DEFAULT NULL," + + " VNFC_NAME VARCHAR(256) DEFAULT NULL," + + " VSERVER_ID VARCHAR(256) DEFAULT NULL," + + " VF_MODULE_ID VARCHAR(256) DEFAULT NULL," + + " MODE VARCHAR(50) NOT NULL," + + ")"; private String TRANSACTION_DROP_TABLE = "DROP TABLE IF EXISTS TRANSACTIONS"; @Rule @@ -151,8 +153,8 @@ public class TransactionRecorderImplTest { public void testStore() throws Exception { TransactionRecord input = prepareTransactionsInput(); - Mockito.when(dbLibService.writeData(anyString(), anyObject(), anyString())).thenAnswer(invocation -> - testStoreInMemory(invocation.getArguments())); + Mockito.when(dbLibService.writeData(anyString(), anyObject(), anyString())) + .thenAnswer(invocation -> testStoreInMemory(invocation.getArguments())); transactionRecorderImpl.store(input); } @@ -175,8 +177,8 @@ public class TransactionRecorderImplTest { insertRecord(record1); TransactionRecord input = prepareTransactionsInput(); input.setStartTime(Instant.now()); - Mockito.when(dbLibService.getData(anyString(), anyObject(), anyString())).thenAnswer(invocation -> - inMemoryExecutionWithResultSet(invocation.getArguments())); + Mockito.when(dbLibService.getData(anyString(), anyObject(), anyString())) + .thenAnswer(invocation -> inMemoryExecutionWithResultSet(invocation.getArguments())); Assert.assertEquals(1, transactionRecorderImpl.getInProgressRequests(input, 0).size()); } @@ -197,22 +199,22 @@ public class TransactionRecorderImplTest { @Test public void testGetInProgressRequestsWithinTimeInterval() throws SQLException, APPCException { TransactionRecord record1 = prepareTransactionsInput(); - record1.setStartTime(Instant.now().minus(4,ChronoUnit.HOURS)); + record1.setStartTime(Instant.now().minus(4, ChronoUnit.HOURS)); insertRecord(record1); TransactionRecord input = prepareTransactionsInput(); input.setStartTime(Instant.now()); - Mockito.when(dbLibService.getData(anyString(), anyObject(), anyString())).thenAnswer(invocation -> - inMemoryExecutionWithResultSet(invocation.getArguments())); - List aList= transactionRecorderImpl.getInProgressRequests(input,12); - Assert.assertEquals(1, transactionRecorderImpl.getInProgressRequests(input,12).size()); + Mockito.when(dbLibService.getData(anyString(), anyObject(), anyString())) + .thenAnswer(invocation -> inMemoryExecutionWithResultSet(invocation.getArguments())); + List aList = transactionRecorderImpl.getInProgressRequests(input, 12); + Assert.assertEquals(1, transactionRecorderImpl.getInProgressRequests(input, 12).size()); } @Test public void testIsTransactionDuplicate() throws SQLException, APPCException { TransactionRecord input = prepareTransactionsInput(); - Mockito.when(dbLibService.getData(anyString(), anyObject(), anyString())).thenAnswer(invocation -> - inMemoryExecutionWithResultSet(invocation.getArguments())); + Mockito.when(dbLibService.getData(anyString(), anyObject(), anyString())) + .thenAnswer(invocation -> inMemoryExecutionWithResultSet(invocation.getArguments())); Assert.assertFalse(transactionRecorderImpl.isTransactionDuplicate(input)); } @@ -274,10 +276,10 @@ public class TransactionRecorderImplTest { insertRecord(input); Map updateColumns = new HashMap<>(); updateColumns.put(TransactionConstants.TRANSACTION_ATTRIBUTES.TARGET_TYPE, "Firewall"); - Mockito.when(dbLibService.getData(anyString(), anyObject(), anyString())).thenAnswer(invocation -> - returnResult(invocation.getArguments())); - Mockito.when(dbLibService.writeData(anyString(), anyObject(), anyString())).thenAnswer(invocation -> - testUpdateInMemory(invocation.getArguments())); + Mockito.when(dbLibService.getData(anyString(), anyObject(), anyString())) + .thenAnswer(invocation -> returnResult(invocation.getArguments())); + Mockito.when(dbLibService.writeData(anyString(), anyObject(), anyString())) + .thenAnswer(invocation -> testUpdateInMemory(invocation.getArguments())); transactionRecorderImpl.update(input.getTransactionId(), input.getRequestId(), updateColumns); Mockito.verify(dbLibService).getData(anyString(), anyObject(), anyString()); Mockito.verify(dbLibService).writeData(anyString(), anyObject(), anyString()); @@ -301,11 +303,10 @@ public class TransactionRecorderImplTest { TransactionRecord input = prepareTransactionsInput(); Map updateColumns = new HashMap<>(); updateColumns.put(TransactionConstants.TRANSACTION_ATTRIBUTES.TARGET_TYPE, "Firewall"); - Mockito.when(dbLibService.getData(anyString(), anyObject(), anyString())).thenAnswer(invocation -> - returnPositiveResult(invocation.getArguments())); - Mockito.when(dbLibService.writeData(anyString(), anyObject(), anyString())).thenAnswer(invocation -> - testUpdateInMemory(invocation.getArguments())); - + Mockito.when(dbLibService.getData(anyString(), anyObject(), anyString())) + .thenAnswer(invocation -> returnPositiveResult(invocation.getArguments())); + Mockito.when(dbLibService.writeData(anyString(), anyObject(), anyString())) + .thenAnswer(invocation -> testUpdateInMemory(invocation.getArguments())); transactionRecorderImpl.update(input.getTransactionId(), input.getRequestId(), updateColumns); Mockito.verify(dbLibService).getData(anyString(), anyObject(), anyString()); Mockito.verify(dbLibService).writeData(anyString(), anyObject(), anyString()); @@ -319,9 +320,9 @@ public class TransactionRecorderImplTest { insertNullInstanceData(args.get(0)); try ( - Connection con = dbConnectionPool.getConnection(); - PreparedStatement ps_second = con.prepareStatement(query) - ) { + Connection con = dbConnectionPool.getConnection(); + PreparedStatement ps_second = con.prepareStatement(query) + ) { for (int i = 1; i <= args.size(); i++) { ps_second.setString(i, args.get(i - 1)); } @@ -332,12 +333,13 @@ public class TransactionRecorderImplTest { } private void insertNullInstanceData(String transactionId) throws Exception { - final String nullInstanceQuery = (TransactionConstants.INSERT_INTO + TransactionConstants.TRANSACTIONS + - " values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + final String nullInstanceQuery = + TransactionConstants.INSERT_INTO + TransactionConstants.TRANSACTIONS + + " values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; try ( - Connection con = dbConnectionPool.getConnection(); - PreparedStatement ps = con.prepareStatement(nullInstanceQuery) - ) { + Connection con = dbConnectionPool.getConnection(); + PreparedStatement ps = con.prepareStatement(nullInstanceQuery) + ) { ArrayList input = new ArrayList(); input.add(transactionId); input.add(dateToStringConverterMillis(Instant.parse("2017-09-12T00:00:01.00Z"))); @@ -374,9 +376,9 @@ public class TransactionRecorderImplTest { ArrayList args = (ArrayList) obj[1]; System.out.println("Query: " + query + "\nArgs: " + args); try ( - Connection con = dbConnectionPool.getConnection(); - PreparedStatement ps = con.prepareStatement(query) - ) { + Connection con = dbConnectionPool.getConnection(); + PreparedStatement ps = con.prepareStatement(query) + ) { for (int i = 1; i <= args.size(); i++) { ps.setString(i, args.get(i - 1)); } @@ -430,9 +432,9 @@ public class TransactionRecorderImplTest { ArrayList args = (ArrayList) obj[1]; // System.out.println("Query: " + query + "\nArgs: " + args); try ( - Connection con = dbConnectionPool.getConnection(); - PreparedStatement ps = con.prepareStatement(query) - ) { + Connection con = dbConnectionPool.getConnection(); + PreparedStatement ps = con.prepareStatement(query) + ) { for (int i = 1; i <= args.size(); i++) { ps.setString(i, args.get(i - 1)); } @@ -446,9 +448,9 @@ public class TransactionRecorderImplTest { String query = (String) obj[0]; ArrayList args = (ArrayList) obj[1]; try ( - Connection con = dbConnectionPool.getConnection(); - PreparedStatement ps = con.prepareStatement(query) - ) { + Connection con = dbConnectionPool.getConnection(); + PreparedStatement ps = con.prepareStatement(query) + ) { for (int i = 1; i <= args.size(); i++) { ps.setString(i, args.get(i - 1)); } @@ -460,13 +462,13 @@ public class TransactionRecorderImplTest { private boolean isTransactionAborted() throws Exception { String query = "SELECT COUNT(*) FROM TRANSACTIONS WHERE STATE = ?"; try ( - Connection con = dbConnectionPool.getConnection(); - PreparedStatement ps = con.prepareStatement(query) - ) { + Connection con = dbConnectionPool.getConnection(); + PreparedStatement ps = con.prepareStatement(query) + ) { ps.setString(1, RequestStatus.ABORTED.toString()); try ( - ResultSet rs = ps.executeQuery() - ) { + ResultSet rs = ps.executeQuery() + ) { while (rs.next()) { int value = rs.getInt(1); if (value == 1) { @@ -483,9 +485,9 @@ public class TransactionRecorderImplTest { String query = (String) obj[0]; ArrayList args = (ArrayList) obj[1]; try ( - Connection con = dbConnectionPool.getConnection(); - PreparedStatement ps = con.prepareStatement(query) - ) { + Connection con = dbConnectionPool.getConnection(); + PreparedStatement ps = con.prepareStatement(query) + ) { for (int i = 1; i <= args.size(); i++) { System.out.println("Value at " + i + ": " + args.get(i - 1)); ps.setString(i, args.get(i - 1)); @@ -504,9 +506,9 @@ public class TransactionRecorderImplTest { String query = (String) obj[0]; ArrayList args = (ArrayList) obj[1]; try ( - Connection con = dbConnectionPool.getConnection(); - PreparedStatement ps = con.prepareStatement(query) - ) { + Connection con = dbConnectionPool.getConnection(); + PreparedStatement ps = con.prepareStatement(query) + ) { for (int i = 1; i <= args.size(); i++) { ps.setString(i, args.get(i - 1)); } @@ -538,12 +540,13 @@ public class TransactionRecorderImplTest { } private void insertRecord(TransactionRecord input) throws SQLException { - final String STORE_DATE_QUERY = TransactionConstants.INSERT_INTO + TransactionConstants.TRANSACTIONS + - " values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; + final String STORE_DATE_QUERY = + TransactionConstants.INSERT_INTO + TransactionConstants.TRANSACTIONS + + " values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; try ( - Connection con = dbConnectionPool.getConnection(); - PreparedStatement ps = con.prepareStatement(STORE_DATE_QUERY) - ) { + Connection con = dbConnectionPool.getConnection(); + PreparedStatement ps = con.prepareStatement(STORE_DATE_QUERY) + ) { ArrayList args = prepareArguments(input); args.remove(0); args.add(0, "123~" + input.getTransactionId()); @@ -615,21 +618,22 @@ public class TransactionRecorderImplTest { private String checkIfValueIsUpdated(String key) throws Exception { try ( - Connection con = dbConnectionPool.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT TARGET_TYPE,TRANSACTION_ID FROM TRANSACTIONS" + - " WHERE TRANSACTION_ID = ?") - ) { + Connection con = dbConnectionPool.getConnection(); + PreparedStatement ps = con.prepareStatement( + "SELECT TARGET_TYPE, TRANSACTION_ID FROM TRANSACTIONS" + + " WHERE TRANSACTION_ID = ?") + ) { ps.setString(1, key); try ( - ResultSet rs = ps.executeQuery() - ) { - while (rs.next()) { - String value = rs.getString("TARGET_TYPE"); - String transactionId = rs.getString("TRANSACTION_ID"); - System.out.println("Updated data: TRANSACTION_ID: " + transactionId + " TARGET_TYPE: " + value); - return value; - } - throw new Exception("Value not found"); + ResultSet rs = ps.executeQuery() + ) { + while (rs.next()) { + String value = rs.getString("TARGET_TYPE"); + String transactionId = rs.getString("TRANSACTION_ID"); + System.out.println("Updated data: TRANSACTION_ID: " + transactionId + " TARGET_TYPE: " + value); + return value; + } + throw new Exception("Value not found"); } } }