aboutsummaryrefslogtreecommitdiffstats
path: root/appc-dispatcher/appc-dispatcher-common/transaction-recorder/src/test
diff options
context:
space:
mode:
authorDunietz, Irwin <irwin.dunietz@att.com>2019-03-03 12:20:53 -0500
committerTakamune Cho <takamune.cho@att.com>2019-03-07 19:04:44 +0000
commit6a7b6c092c282884cf263315a4a4802242dcb2fc (patch)
tree614f563ee18ff24560d12ac3acf63f5a56306341 /appc-dispatcher/appc-dispatcher-common/transaction-recorder/src/test
parent7ba77298cc3e45bc215b236414bc406466b1aeec (diff)
Update appc-dispatcher for >1 ansible servers
Change Transaction record update logic to handle null instance entry. Issue-ID: APPC-1516 Change-Id: Ia87e08fbb61d4d0be38802e3e81b45773b1d9498 Signed-off-by: Dunietz, Irwin <irwin.dunietz@att.com>
Diffstat (limited to 'appc-dispatcher/appc-dispatcher-common/transaction-recorder/src/test')
-rw-r--r--appc-dispatcher/appc-dispatcher-common/transaction-recorder/src/test/java/org/onap/appc/transactionrecorder/impl/TransactionRecorderImplTest.java259
1 files changed, 192 insertions, 67 deletions
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 8d30ef302..36cf26bb7 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
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP : APPC
* ================================================================================
- * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Copyright (C) 2017 Amdocs
* ================================================================================
@@ -145,7 +145,7 @@ public class TransactionRecorderImplTest {
}
/**
- * Verify the transactionRecorderImpl.sore() store the TransactionRecord correctly in the database.
+ * Verify the transactionRecorderImpl.store() store the TransactionRecord correctly in the database.
*/
@Test
public void testStore() throws Exception {
@@ -274,9 +274,13 @@ public class TransactionRecorderImplTest {
insertRecord(input);
Map<TransactionConstants.TRANSACTION_ATTRIBUTES, String> 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()));
- transactionRecorderImpl.update(input.getTransactionId(), updateColumns);
+ transactionRecorderImpl.update(input.getTransactionId(), input.getRequestId(), updateColumns);
+ Mockito.verify(dbLibService).getData(anyString(), anyObject(), anyString());
+ Mockito.verify(dbLibService).writeData(anyString(), anyObject(), anyString());
}
@Test
@@ -289,7 +293,97 @@ public class TransactionRecorderImplTest {
expectedEx.expect(APPCException.class);
expectedEx.expectMessage(TransactionConstants.ERROR_ACCESSING_DATABASE);
expectedEx.expectCause(isA(SQLException.class));
- transactionRecorderImpl.update(input.getTransactionId(), updateColumns);
+ transactionRecorderImpl.update(input.getTransactionId(), input.getRequestId(), updateColumns);
+ }
+
+ @Test
+ public void testUpdatewithNullInstance() throws APPCException, SQLException {
+ TransactionRecord input = prepareTransactionsInput();
+ Map<TransactionConstants.TRANSACTION_ATTRIBUTES, String> 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()));
+
+ transactionRecorderImpl.update(input.getTransactionId(), input.getRequestId(), updateColumns);
+ Mockito.verify(dbLibService).getData(anyString(), anyObject(), anyString());
+ Mockito.verify(dbLibService).writeData(anyString(), anyObject(), anyString());
+ }
+
+ private Object returnPositiveResult(Object[] obj) throws Exception {
+ String query = (String) obj[0];
+ ArrayList<String> args = (ArrayList<String>) obj[1];
+ System.out.println("returnPositiveResult: Query: " + query + "\nArgs: " + args);
+
+ insertNullInstanceData(args.get(0));
+
+ try (
+ 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));
+ }
+ CachedRowSet rowSet = new CachedRowSetImpl();
+ rowSet.populate(ps_second.executeQuery());
+ return rowSet;
+ }
+ }
+
+ private void insertNullInstanceData(String transactionId) throws Exception {
+ final String nullInstanceQuery = (TransactionConstants.INSERT_INTO + TransactionConstants.TRANSACTIONS +
+ " values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
+ try (
+ Connection con = dbConnectionPool.getConnection();
+ PreparedStatement ps = con.prepareStatement(nullInstanceQuery)
+ ) {
+ ArrayList<String> input = new ArrayList<String>();
+ input.add(transactionId);
+ input.add(dateToStringConverterMillis(Instant.parse("2017-09-12T00:00:01.00Z")));
+ input.add("REQUEST_ID");
+ input.add("SUB_REQUEST_ID");
+ input.add("ORIGINATOR_ID");
+ input.add(dateToStringConverterMillis(Instant.parse("2018-09-12T00:00:02.00Z")));
+ input.add(dateToStringConverterMillis(Instant.parse("2018-09-12T20:00:02.00Z")));
+ input.add("TARGET_ID");
+ input.add("TARGET_TYPE");
+ input.add("Audit");
+ input.add(String.valueOf(200));
+ input.add("SERVICE_INSTANCE_ID");
+ input.add("ACCEPTED");
+ input.add("DESCRIPTION");
+ input.add("test");
+ input.add("test");
+ input.add("test");
+ input.add("EXCLUSIVE");
+
+ for (int i = 1; i <= input.size(); i++) {
+ ps.setString(i, input.get(i-1));
+ }
+ ps.execute();
+
+ if (checkIfRowIsPresent(input.get(0))) {
+ System.out.println("RECORD INSERTED " + input.get(0));
+ }
+ }
+ }
+
+ private ResultSet returnResult(Object[] obj) throws Exception {
+ String query = (String) obj[0];
+ ArrayList<String> args = (ArrayList<String>) obj[1];
+ System.out.println("Query: " + query + "\nArgs: " + args);
+ try (
+ Connection con = dbConnectionPool.getConnection();
+ PreparedStatement ps = con.prepareStatement(query)
+ ) {
+ for (int i = 1; i <= args.size(); i++) {
+ ps.setString(i, args.get(i - 1));
+ }
+ CachedRowSet rowSet = new CachedRowSetImpl();
+ rowSet.populate(ps.executeQuery());
+ return rowSet;
+ }
}
@Test
@@ -334,74 +428,94 @@ public class TransactionRecorderImplTest {
private ResultSet inMemoryExecutionWithResultSet(Object[] obj) throws Exception {
String query = (String) obj[0];
ArrayList<String> args = (ArrayList<String>) obj[1];
- Connection con = dbConnectionPool.getConnection();
- PreparedStatement ps = con.prepareStatement(query);
- for (int i = 1; i <= args.size(); i++) {
- ps.setString(i, args.get(i - 1));
+ // System.out.println("Query: " + query + "\nArgs: " + args);
+ try (
+ Connection con = dbConnectionPool.getConnection();
+ PreparedStatement ps = con.prepareStatement(query)
+ ) {
+ for (int i = 1; i <= args.size(); i++) {
+ ps.setString(i, args.get(i - 1));
+ }
+ CachedRowSet rowSet = new CachedRowSetImpl();
+ rowSet.populate(ps.executeQuery());
+ return rowSet;
}
- CachedRowSet rowSet = new CachedRowSetImpl();
- rowSet.populate(ps.executeQuery());
- return rowSet;
}
private boolean testMarkAbortedInMemory(Object[] obj) throws Exception {
String query = (String) obj[0];
ArrayList<String> args = (ArrayList<String>) obj[1];
- Connection con = dbConnectionPool.getConnection();
- PreparedStatement ps = con.prepareStatement(query);
- for (int i = 1; i <= args.size(); i++) {
- ps.setString(i, args.get(i - 1));
+ try (
+ Connection con = dbConnectionPool.getConnection();
+ PreparedStatement ps = con.prepareStatement(query)
+ ) {
+ for (int i = 1; i <= args.size(); i++) {
+ ps.setString(i, args.get(i - 1));
+ }
+ ps.execute();
+ return isTransactionAborted();
}
- ps.execute();
- return isTransactionAborted();
}
private boolean isTransactionAborted() throws Exception {
String query = "SELECT COUNT(*) FROM TRANSACTIONS WHERE STATE = ?";
- Connection con = dbConnectionPool.getConnection();
- PreparedStatement ps = con.prepareStatement(query);
- ps.setString(1, RequestStatus.ABORTED.toString());
- ResultSet rs = ps.executeQuery();
- while (rs.next()) {
- int value = rs.getInt(1);
- if (value == 1) {
- System.out.println("Non terminal Transactions are aborted");
- return true;
+ try (
+ Connection con = dbConnectionPool.getConnection();
+ PreparedStatement ps = con.prepareStatement(query)
+ ) {
+ ps.setString(1, RequestStatus.ABORTED.toString());
+ try (
+ ResultSet rs = ps.executeQuery()
+ ) {
+ while (rs.next()) {
+ int value = rs.getInt(1);
+ if (value == 1) {
+ System.out.println("Non terminal Transactions are aborted");
+ return true;
+ }
+ }
+ throw new Exception("Transactions are not aborted");
}
}
- throw new Exception("Transactions are not aborted");
}
private boolean testUpdateInMemory(Object[] obj) throws Exception {
String query = (String) obj[0];
ArrayList<String> args = (ArrayList<String>) obj[1];
- Connection con = dbConnectionPool.getConnection();
- PreparedStatement ps = con.prepareStatement(query);
- for (int i = 1; i <= args.size(); i++) {
- ps.setString(i, args.get(i - 1));
- }
- ps.execute();
- String updatedValue = checkIfValueIsUpdated(args.get(1));
- System.out.println("updated Value is " + updatedValue);
- if (updatedValue.equals("Firewall")) {
- return true;
+ try (
+ 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));
+ }
+ ps.execute();
+ String updatedValue = checkIfValueIsUpdated(args.get(1));
+ System.out.println("updated Value is " + updatedValue);
+ if (updatedValue.equals("Firewall")) {
+ return true;
+ }
+ throw new Exception("Not Updated");
}
- throw new Exception("Not Updated");
}
private boolean testStoreInMemory(Object[] obj) throws Exception {
String query = (String) obj[0];
ArrayList<String> args = (ArrayList<String>) obj[1];
- Connection con = dbConnectionPool.getConnection();
- PreparedStatement ps = con.prepareStatement(query);
- for (int i = 1; i <= args.size(); i++) {
- ps.setString(i, args.get(i - 1));
- }
- ps.execute();
- if (checkIfRowIsPresent(args.get(0))) {
- return true;
+ try (
+ Connection con = dbConnectionPool.getConnection();
+ PreparedStatement ps = con.prepareStatement(query)
+ ) {
+ for (int i = 1; i <= args.size(); i++) {
+ ps.setString(i, args.get(i - 1));
+ }
+ ps.execute();
+ if (checkIfRowIsPresent(args.get(0))) {
+ return true;
+ }
+ throw new Exception("Failed to update");
}
- throw new Exception("Failed to update");
}
private TransactionRecord prepareTransactionsInput() {
@@ -426,19 +540,21 @@ public class TransactionRecorderImplTest {
private void insertRecord(TransactionRecord input) throws SQLException {
final String STORE_DATE_QUERY = TransactionConstants.INSERT_INTO + TransactionConstants.TRANSACTIONS +
" values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
- Connection con = dbConnectionPool.getConnection();
- PreparedStatement ps = con.prepareStatement(STORE_DATE_QUERY);
- ArrayList<String> args = prepareArguments(input);
- args.remove(0);
- args.add(0, "123~" + input.getTransactionId());
- for (int i = 1; i <= 18; i++) {
- ps.setString(i, args.get(i - 1));
- }
- ps.execute();
- if (checkIfRowIsPresent(args.get(0))) {
- System.out.println("RECORD INSERTED " + args.get(0));
+ try (
+ Connection con = dbConnectionPool.getConnection();
+ PreparedStatement ps = con.prepareStatement(STORE_DATE_QUERY)
+ ) {
+ ArrayList<String> args = prepareArguments(input);
+ args.remove(0);
+ args.add(0, "123~" + input.getTransactionId());
+ for (int i = 1; i <= 18; i++) {
+ ps.setString(i, args.get(i - 1));
+ }
+ ps.execute();
+ if (checkIfRowIsPresent(args.get(0))) {
+ System.out.println("RECORD INSERTED " + args.get(0));
+ }
}
-
}
private ArrayList<String> prepareArguments(TransactionRecord input) {
@@ -498,15 +614,24 @@ public class TransactionRecorderImplTest {
}
private String checkIfValueIsUpdated(String key) throws Exception {
- Connection con = dbConnectionPool.getConnection();
- PreparedStatement ps = con.prepareStatement("SELECT TARGET_TYPE FROM TRANSACTIONS WHERE TRANSACTION_ID = ?");
- ps.setString(1, key);
- ResultSet rs = ps.executeQuery();
- while (rs.next()) {
- String value = rs.getString("TARGET_TYPE");
- return value;
+ try (
+ 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");
+ }
}
- throw new Exception("Value not found");
}