Fixed bugs, local communication HMAC added in
[iotcloud.git] / version2 / src / java / iotcloud / Test.java
index 9e80defdf4ec576e5abe81b1a16e03e648941371..d6598628b86c7ce7551d97a6e7bc540d77b566a1 100644 (file)
@@ -11,7 +11,7 @@ import java.util.ArrayList;
 
 public class Test {
 
-    public static final  int NUMBER_OF_TESTS = 100;
+    public static final  int NUMBER_OF_TESTS = 10;
 
     public static void main(String[] args)  throws ServerException {
         if (args[0].equals("2")) {
@@ -28,9 +28,621 @@ public class Test {
             test7();
         } else if (args[0].equals("8")) {
             test8();
+        } else if (args[0].equals("9")) {
+            test9();
+        } else if (args[0].equals("10")) {
+            test10();
+        } else if (args[0].equals("11")) {
+            test11();
         }
     }
 
+
+    static void test11() {
+
+        boolean foundError = false;
+        List<TransactionStatus> transStatusList = new ArrayList<TransactionStatus>();
+
+        // Setup the 2 clients
+        Table t1 = new Table("http://127.0.0.1/test.iotcloud/", "reallysecret", 321, 6000);
+
+        System.out.println("Init Table t1s");
+
+        while (true) {
+            try {
+                t1.initTable();
+                break;
+            } catch (Exception e) { }
+        }
+
+
+        System.out.println("Update Table t2");
+        Table t2 = new Table("http://127.0.0.1/test.iotcloud/", "reallysecret", 351, 6001);
+        while (t2.update() == false) {}
+
+        // Make the Keys
+        System.out.println("Setting up keys");
+        for (int i = 0; i < NUMBER_OF_TESTS; i++) {
+            System.out.println(i);
+
+            String a = "a" + i;
+            String b = "b" + i;
+            String c = "c" + i;
+            String d = "d" + i;
+            IoTString ia = new IoTString(a);
+            IoTString ib = new IoTString(b);
+            IoTString ic = new IoTString(c);
+            IoTString id = new IoTString(d);
+
+            while (true) {
+                try {
+                    t1.createNewKey(ia, 321);
+                    break;
+                } catch (Exception e) { }
+            }
+
+            while (true) {
+                try {
+                    t1.createNewKey(ib, 351);
+                    break;
+                } catch (Exception e) { }
+            }
+
+            while (true) {
+                try {
+                    t2.createNewKey(ic, 321);
+                    break;
+                } catch (Exception e) { }
+            }
+
+            while (true) {
+                try {
+                    t2.createNewKey(id, 351);
+                    break;
+                } catch (Exception e) { }
+            }
+        }
+
+        // Do Updates for the keys
+        System.out.println("Setting Key-Values...");
+        for (int i = 0; i < NUMBER_OF_TESTS; i++) {
+            System.out.println(i);
+            String keyA = "a" + i;
+            String keyB = "b" + i;
+            String keyC = "c" + i;
+            String keyD = "d" + i;
+            String valueA = "a" + i;
+            String valueB = "b" + i;
+            String valueC = "c" + i;
+            String valueD = "d" + i;
+
+            IoTString iKeyA = new IoTString(keyA);
+            IoTString iKeyB = new IoTString(keyB);
+            IoTString iKeyC = new IoTString(keyC);
+            IoTString iKeyD = new IoTString(keyD);
+            IoTString iValueA = new IoTString(valueA);
+            IoTString iValueB = new IoTString(valueB);
+            IoTString iValueC = new IoTString(valueC);
+            IoTString iValueD = new IoTString(valueD);
+
+
+            String keyAPrev = "a" + (i - 1);
+            String keyBPrev = "b" + (i - 1);
+            String keyCPrev = "c" + (i - 1);
+            String keyDPrev = "d" + (i - 1);
+            String valueAPrev = "a" + (i - 1);
+            String valueBPrev = "b" + (i - 1);
+            String valueCPrev = "c" + (i - 1);
+            String valueDPrev = "d" + (i - 1);
+
+            IoTString iKeyAPrev = new IoTString(keyAPrev);
+            IoTString iKeyBPrev = new IoTString(keyBPrev);
+            IoTString iKeyCPrev = new IoTString(keyCPrev);
+            IoTString iKeyDPrev = new IoTString(keyDPrev);
+            IoTString iValueAPrev = new IoTString(valueAPrev);
+            IoTString iValueBPrev = new IoTString(valueBPrev);
+            IoTString iValueCPrev = new IoTString(valueCPrev);
+            IoTString iValueDPrev = new IoTString(valueDPrev);
+
+            t1.startTransaction();
+            t1.addKV(iKeyA, iValueA);
+            transStatusList.add(t1.commitTransaction());
+
+            t1.startTransaction();
+            t1.addKV(iKeyB, iValueB);
+            transStatusList.add(t1.commitTransaction());
+
+            t2.startTransaction();
+            t2.addKV(iKeyC, iValueC);
+            transStatusList.add(t2.commitTransaction());
+
+            t2.startTransaction();
+            t2.addKV(iKeyD, iValueD);
+            transStatusList.add(t2.commitTransaction());
+        }
+
+        System.out.println("Updating...");
+        while (t1.update() == false) {}
+        while (t2.update() == false) {}
+        while (t1.update() == false) {}
+        while (t2.update() == false) {}
+
+        System.out.println("Checking Key-Values...");
+        for (int i = 0; i < NUMBER_OF_TESTS; i++) {
+
+            String keyA = "a" + i;
+            String keyB = "b" + i;
+            String keyC = "c" + i;
+            String keyD = "d" + i;
+            String valueA = "a" + i;
+            String valueB = "b" + i;
+            String valueC = "c" + i;
+            String valueD = "d" + i;
+
+            IoTString iKeyA = new IoTString(keyA);
+            IoTString iKeyB = new IoTString(keyB);
+            IoTString iKeyC = new IoTString(keyC);
+            IoTString iKeyD = new IoTString(keyD);
+            IoTString iValueA = new IoTString(valueA);
+            IoTString iValueB = new IoTString(valueB);
+            IoTString iValueC = new IoTString(valueC);
+            IoTString iValueD = new IoTString(valueD);
+
+
+            IoTString testValA1 = t1.getCommitted(iKeyA);
+            IoTString testValB1 = t1.getCommitted(iKeyB);
+            IoTString testValC1 = t1.getCommitted(iKeyC);
+            IoTString testValD1 = t1.getCommitted(iKeyD);
+
+            IoTString testValA2 = t2.getCommitted(iKeyA);
+            IoTString testValB2 = t2.getCommitted(iKeyB);
+            IoTString testValC2 = t2.getCommitted(iKeyC);
+            IoTString testValD2 = t2.getCommitted(iKeyD);
+
+            if ((testValA1 == null) || (testValA1.equals(iValueA) == false)) {
+                System.out.println("Key-Value t1 incorrect: " + keyA + "    " + testValA1);
+                foundError = true;
+            }
+
+            if ((testValB1 == null) || (testValB1.equals(iValueB) == false)) {
+                System.out.println("Key-Value t1 incorrect: " + keyB + "    " + testValB1);
+                foundError = true;
+            }
+
+            if ((testValC1 == null) || (testValC1.equals(iValueC) == false)) {
+                System.out.println("Key-Value t1 incorrect: " + keyC + "    " + testValC1);
+                foundError = true;
+            }
+
+            if ((testValD1 == null) || (testValD1.equals(iValueD) == false)) {
+                System.out.println("Key-Value t1 incorrect: " + keyD + "    " + testValD1);
+                foundError = true;
+            }
+
+
+            if ((testValA2 == null) || (testValA2.equals(iValueA) == false)) {
+                System.out.println("Key-Value t2 incorrect: " + keyA + "    " + testValA2);
+                foundError = true;
+            }
+
+            if ((testValB2 == null) || (testValB2.equals(iValueB) == false)) {
+                System.out.println("Key-Value t2 incorrect: " + keyB + "    " + testValB2);
+                foundError = true;
+            }
+
+            if ((testValC2 == null) || (testValC2.equals(iValueC) == false)) {
+                System.out.println("Key-Value t2 incorrect: " + keyC + "    " + testValC2);
+                foundError = true;
+            }
+
+            if ((testValD2 == null) || (testValD2.equals(iValueD) == false)) {
+                System.out.println("Key-Value t2 incorrect: " + keyD + "    " + testValD2);
+                foundError = true;
+            }
+        }
+
+        for (TransactionStatus status : transStatusList) {
+            if (status.getStatus() != TransactionStatus.StatusCommitted) {
+                foundError = true;
+            }
+        }
+
+        if (foundError) {
+            System.out.println("Found Errors...");
+        } else {
+            System.out.println("No Errors Found...");
+        }
+
+        t1.close();
+        t2.close();
+    }
+
+    static void test10() {
+
+        boolean foundError = false;
+        List<TransactionStatus> transStatusList = new ArrayList<TransactionStatus>();
+
+        // Setup the 2 clients
+        Table t1 = new Table("http://127.0.0.1/test.iotcloud/", "reallysecret", 321, 6000);
+        System.out.println("Init Table t1s");
+        while (true) {
+            try {
+                t1.initTable();
+                break;
+            } catch (Exception e) { }
+        }
+        Table t2 = new Table("http://127.0.0.1/test.iotcloud/", "reallysecret", 351, 6001);
+        while (t2.update() == false) {}
+
+        t1.addLocalCommunication(351, "127.0.0.1", 6001);
+        t2.addLocalCommunication(321, "127.0.0.1", 6000);
+
+
+        // Make the Keys
+        System.out.println("Setting up keys");
+        for (int i = 0; i < 4; i++) {
+            String a = "a" + i;
+            String b = "b" + i;
+            String c = "c" + i;
+            String d = "d" + i;
+            IoTString ia = new IoTString(a);
+            IoTString ib = new IoTString(b);
+            IoTString ic = new IoTString(c);
+            IoTString id = new IoTString(d);
+            while (true) {
+                try {
+                    t1.createNewKey(ia, 321);
+                    break;
+                } catch (Exception e) { }
+            }
+
+            while (true) {
+                try {
+                    t1.createNewKey(ib, 351);
+                    break;
+                } catch (Exception e) { }
+            }
+
+            while (true) {
+                try {
+                    t2.createNewKey(ic, 321);
+                    break;
+                } catch (Exception e) { }
+            }
+
+            while (true) {
+                try {
+                    t2.createNewKey(id, 351);
+                    break;
+                } catch (Exception e) { }
+            }
+        }
+
+
+        // Do Updates for the keys
+        System.out.println("B========================");
+        for (int t = 0; t < NUMBER_OF_TESTS; t++) {
+            for (int i = 0; i < 4; i++) {
+
+                System.out.println(i);
+
+                String keyB = "b" + i;
+                String valueB = "b" + (i + t);
+
+                IoTString iKeyB = new IoTString(keyB);
+                IoTString iValueB = new IoTString(valueB);
+
+                t1.startTransaction();
+                System.out.println(t1.getSpeculativeAtomic(iKeyB));
+                t1.addKV(iKeyB, iValueB);
+                transStatusList.add(t1.commitTransaction());
+            }
+        }
+        System.out.println();
+
+
+        System.out.println("C========================");
+        for (int t = 0; t < NUMBER_OF_TESTS; t++) {
+            for (int i = 0; i < 4; i++) {
+                System.out.println(i);
+
+                String keyC = "c" + i;
+                String valueC = "c" + (i + t);
+
+                IoTString iKeyC = new IoTString(keyC);
+                IoTString iValueC = new IoTString(valueC);
+
+                t2.startTransaction();
+                System.out.println(t2.getSpeculativeAtomic(iKeyC));
+                t2.addKV(iKeyC, iValueC);
+                transStatusList.add(t2.commitTransaction());
+            }
+        }
+        System.out.println();
+
+
+        for (int t = 0; t < NUMBER_OF_TESTS; t++) {
+            for (int i = 0; i < 4; i++) {
+                String keyA = "a" + i;
+                String keyD = "d" + i;
+                String valueA = "a" + (i + t);
+                String valueD = "d" + (i + t);
+
+                IoTString iKeyA = new IoTString(keyA);
+                IoTString iKeyD = new IoTString(keyD);
+                IoTString iValueA = new IoTString(valueA);
+                IoTString iValueD = new IoTString(valueD);
+
+
+                t1.startTransaction();
+                t1.addKV(iKeyA, iValueA);
+                transStatusList.add(t1.commitTransaction());
+
+
+                t2.startTransaction();
+                t2.addKV(iKeyD, iValueD);
+                transStatusList.add(t2.commitTransaction());
+                System.out.println();
+            }
+        }
+        System.out.println();
+
+        System.out.println("Updating...");
+        System.out.println("t1 -=-=-=-=-=-=-=-");
+        while (t1.update() == false) {}
+        System.out.println("t2 -=-=-=-=-=-=-=-");
+        while (t2.update() == false) {}
+        System.out.println("t1 -=-=-=-=-=-=-=-");
+        while (t1.update() == false) {}
+        System.out.println("t2 -=-=-=-=-=-=-=-");
+        while (t2.update() == false) {}
+
+
+        System.out.println("Checking Key-Values...");
+        for (int i = 0; i < 4; i++) {
+
+            String keyA = "a" + i;
+            String keyB = "b" + i;
+            String keyC = "c" + i;
+            String keyD = "d" + i;
+            String valueA = "a" + (i + NUMBER_OF_TESTS - 1);
+            String valueB = "b" + (i + NUMBER_OF_TESTS - 1);
+            String valueC = "c" + (i + NUMBER_OF_TESTS - 1);
+            String valueD = "d" + (i + NUMBER_OF_TESTS - 1);
+
+            IoTString iKeyA = new IoTString(keyA);
+            IoTString iKeyB = new IoTString(keyB);
+            IoTString iKeyC = new IoTString(keyC);
+            IoTString iKeyD = new IoTString(keyD);
+            IoTString iValueA = new IoTString(valueA);
+            IoTString iValueB = new IoTString(valueB);
+            IoTString iValueC = new IoTString(valueC);
+            IoTString iValueD = new IoTString(valueD);
+
+
+            IoTString testValA1 = t1.getCommitted(iKeyA);
+            IoTString testValB1 = t1.getCommitted(iKeyB);
+            IoTString testValC1 = t1.getCommitted(iKeyC);
+            IoTString testValD1 = t1.getCommitted(iKeyD);
+
+            IoTString testValA2 = t2.getCommitted(iKeyA);
+            IoTString testValB2 = t2.getCommitted(iKeyB);
+            IoTString testValC2 = t2.getCommitted(iKeyC);
+            IoTString testValD2 = t2.getCommitted(iKeyD);
+
+            if ((testValA1 == null) || (testValA1.equals(iValueA) == false)) {
+                System.out.println("Key-Value t1 incorrect: " + keyA + "    " + testValA1);
+                foundError = true;
+            }
+
+            if ((testValB1 == null) || (testValB1.equals(iValueB) == false)) {
+                System.out.println("Key-Value t1 incorrect: " + keyB + "    " + testValB1);
+                foundError = true;
+            }
+
+            if ((testValC1 == null) || (testValC1.equals(iValueC) == false)) {
+                System.out.println("Key-Value t1 incorrect: " + keyC + "    " + testValC1);
+                foundError = true;
+            }
+
+            if ((testValD1 == null) || (testValD1.equals(iValueD) == false)) {
+                System.out.println("Key-Value t1 incorrect: " + keyD + "    " + testValD1);
+                foundError = true;
+            }
+
+            if ((testValA2 == null) || (testValA2.equals(iValueA) == false)) {
+                System.out.println("Key-Value t2 incorrect: " + keyA + "    " + testValA2);
+                foundError = true;
+            }
+
+            if ((testValB2 == null) || (testValB2.equals(iValueB) == false)) {
+                System.out.println("Key-Value t2 incorrect: " + keyB + "    " + testValB2);
+                foundError = true;
+            }
+
+            if ((testValC2 == null) || (testValC2.equals(iValueC) == false)) {
+                System.out.println("Key-Value t2 incorrect: " + keyC + "    " + testValC2);
+                foundError = true;
+            }
+
+            if ((testValD2 == null) || (testValD2.equals(iValueD) == false)) {
+                System.out.println("Key-Value t2 incorrect: " + keyD + "    " + testValD2);
+                foundError = true;
+            }
+        }
+
+        int counter = 0;
+        for (TransactionStatus status : transStatusList) {
+            if (status.getStatus() != TransactionStatus.StatusCommitted) {
+                foundError = true;
+                System.out.println(counter + "    Status: " + status.getStatus());
+            }
+            counter++;
+        }
+
+        if (foundError) {
+            System.out.println("Found Errors...");
+        } else {
+            System.out.println("No Errors Found...");
+        }
+
+        t1.close();
+        t2.close();
+    }
+
+    static void test9() {
+
+        boolean foundError = false;
+        List<TransactionStatus> transStatusList = new ArrayList<TransactionStatus>();
+
+        // Setup the 2 clients
+        Table t1 = new Table("http://127.0.0.1/test.iotcloud/", "reallysecret", 321, 6000);
+
+        System.out.println("Init Table t1s");
+        while (true) {
+            try {
+                t1.initTable();
+                break;
+            } catch (Exception e) { }
+        }
+
+
+        System.out.println("Update Table t2");
+        Table t2 = new Table("http://127.0.0.1/test.iotcloud/", "reallysecret", 351, 6001);
+        while (t2.update() == false) {}
+
+        t1.addLocalCommunication(351, "127.0.0.1", 6001);
+        t2.addLocalCommunication(321, "127.0.0.1", 6000);
+
+        // Make the Keys
+        System.out.println("Setting up keys");
+        for (int i = 0; i < NUMBER_OF_TESTS; i++) {
+            System.out.println(i);
+
+            String a = "a" + i;
+            String b = "b" + i;
+            String c = "c" + i;
+            String d = "d" + i;
+            IoTString ia = new IoTString(a);
+            IoTString ib = new IoTString(b);
+            IoTString ic = new IoTString(c);
+            IoTString id = new IoTString(d);
+
+            while (true) {
+                try {
+                    t1.createNewKey(ia, 321);
+                    break;
+                } catch (Exception e) { }
+            }
+
+            while (true) {
+                try {
+                    t1.createNewKey(ib, 351);
+                    break;
+                } catch (Exception e) { }
+            }
+
+            while (true) {
+                try {
+                    t2.createNewKey(ic, 321);
+                    break;
+                } catch (Exception e) { }
+            }
+
+            while (true) {
+                try {
+                    t2.createNewKey(id, 351);
+                    break;
+                } catch (Exception e) { }
+            }
+        }
+
+        System.out.println("A, D...");
+        for (int i = 0; i < NUMBER_OF_TESTS; i++) {
+            String keyA = "a" + i;
+            String keyD = "d" + i;
+            String valueA = "a" + i;
+            String valueD = "d" + i;
+
+            IoTString iKeyA = new IoTString(keyA);
+            IoTString iKeyD = new IoTString(keyD);
+            IoTString iValueA = new IoTString(valueA);
+            IoTString iValueD = new IoTString(valueD);
+
+            t1.startTransaction();
+            t1.addKV(iKeyA, iValueA);
+            transStatusList.add(t1.commitTransaction());
+
+            t2.startTransaction();
+            t2.addKV(iKeyD, iValueD);
+            transStatusList.add(t2.commitTransaction());
+        }
+
+        while (t1.updateFromLocal(351) == false) {}
+        while (t2.updateFromLocal(321) == false) {}
+
+
+        System.out.println("Updating...");
+        System.out.println("Checking Key-Values...");
+
+        for (int i = 0; i < NUMBER_OF_TESTS; i++) {
+
+            String keyA = "a" + i;
+            String keyD = "d" + i;
+            String valueA = "a" + i;
+            String valueD = "d" + i;
+
+
+            IoTString iKeyA = new IoTString(keyA);
+            IoTString iKeyD = new IoTString(keyD);
+            IoTString iValueA = new IoTString(valueA);
+            IoTString iValueD = new IoTString(valueD);
+
+
+            IoTString testValA1 = t1.getCommitted(iKeyA);
+            IoTString testValD1 = t1.getCommitted(iKeyD);
+            IoTString testValA2 = t2.getCommitted(iKeyA);
+            IoTString testValD2 = t2.getCommitted(iKeyD);
+
+
+            if ((testValA1 == null) || (testValA1.equals(iValueA) == false)) {
+                System.out.println("Key-Value t1 incorrect: " + keyA + "    " + testValA1);
+                foundError = true;
+            }
+
+            if ((testValD1 == null) || (testValD1.equals(iValueD) == false)) {
+                System.out.println("Key-Value t1 incorrect: " + keyD + "    " + testValD1);
+                foundError = true;
+            }
+
+
+            if ((testValA2 == null) || (testValA2.equals(iValueA) == false)) {
+                System.out.println("Key-Value t2 incorrect: " + keyA + "    " + testValA2);
+                foundError = true;
+            }
+
+            if ((testValD2 == null) || (testValD2.equals(iValueD) == false)) {
+                System.out.println("Key-Value t2 incorrect: " + keyD + "    " + testValD2);
+                foundError = true;
+            }
+        }
+
+        for (TransactionStatus status : transStatusList) {
+            if (status.getStatus() != TransactionStatus.StatusCommitted) {
+                foundError = true;
+            }
+        }
+
+        if (foundError) {
+            System.out.println("Found Errors...");
+        } else {
+            System.out.println("No Errors Found...");
+        }
+
+        t1.close();
+        t2.close();
+    }
+
     static void test8() {
 
         boolean foundError = false;
@@ -43,10 +655,9 @@ public class Test {
 
         while (true) {
             try {
-                System.out.println("-==-=-=-=-=-=-=-==-=-");
                 t1.initTable();
                 break;
-            } catch (Exception e) {}
+            } catch (Exception e) { }
         }
 
 
@@ -162,6 +773,7 @@ public class Test {
         while (t1.update() == false) {}
         while (t2.update() == false) {}
         while (t1.update() == false) {}
+        while (t2.update() == false) {}
 
         System.out.println("Checking Key-Values...");
         for (int i = 0; i < NUMBER_OF_TESTS; i++) {