Increase tests for data-persistence binding 61/19761/1
authorFrederic Marec <frederic.marec@iot.bzh>
Thu, 10 Jan 2019 13:28:14 +0000 (14:28 +0100)
committerFrederic Marec <frederic.marec@iot.bzh>
Fri, 25 Jan 2019 14:44:14 +0000 (15:44 +0100)
Change-Id: I17ebecfe5a1f7ffac2a1f99e1d3195793fdf1aad
Signed-off-by: Frederic Marec <frederic.marec@iot.bzh>
test/CMakeLists.txt
test/etc/aft-persistence-test.json
test/tests/persistence_APITest.lua [new file with mode: 0644]
test/tests/persistence_BasicAPITest.lua

index 71a121a..b876e8d 100644 (file)
@@ -23,5 +23,5 @@ PROJECT_SUBDIRS_ADD(${PROJECT_SRC_DIR_PATTERN})
 
 ADD_TEST(NAME AGL_SERVICE_DATA-PERSISTENCE_TESTS
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-       COMMAND afb-test.sh ${CMAKE_BINARY_DIR}
+       COMMAND afm-test ${CMAKE_BINARY_DIR}/package ${CMAKE_BINARY_DIR}/package-test
 )
\ No newline at end of file
index 9e5839c..35a58ac 100644 (file)
@@ -16,7 +16,7 @@
         "action": "lua://AFT#_launch_test",
         "args": {
             "trace": "persistence",
-            "files": ["persistence_BasicAPITest.lua"]
+            "files": ["persistence_BasicAPITest.lua", "persistence_APITest.lua"]
         }
     }
 }
\ No newline at end of file
diff --git a/test/tests/persistence_APITest.lua b/test/tests/persistence_APITest.lua
new file mode 100644 (file)
index 0000000..8bcd521
--- /dev/null
@@ -0,0 +1,129 @@
+--[[
+   Copyright (C) 2019 "IoT.bzh"
+   Author Frédéric Marec <frederic.marec@iot.bzh>
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   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.
+
+
+   NOTE: strict mode: every global variables should be prefixed by '_'
+--]]
+
+local testPrefix ="persistence_APITest_"
+local key_values0 = {"TESTinsert", "insert", "wrong_value", 3.1415926546, nil}
+local key_values1 = key_values0
+local key_values2 = key_values0
+
+local function formatize (arg)
+  return tostring(arg):gsub("[^a-zA-Z0-9_]", "_")
+end
+
+for _, key_value0 in pairs(key_values0) do
+  for _, key_value1 in pairs(key_values1) do
+
+    local arg1 = "key_"..formatize(key_value0).."_"
+    local arg2 = "value_"..formatize(key_value1)
+
+    -- This tests the 'insert' verb of the persistence API
+    local test_name_insert = testPrefix.."insert_with_verification_"..arg1..arg2
+    _AFT.describe(test_name_insert,function()
+      _AFT.assertVerbStatusSuccess("persistence", "insert", {key= key_value0, value= key_value1})
+      _AFT.assertVerbResponseEquals("persistence","read", {key= key_value0},{value= key_value1})
+      _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value0})
+    end)
+
+    -- This tests the 'delete' verb of the persistence API
+    local test_name_deldete = testPrefix.."delete_with_verification_"..arg1..arg2
+    _AFT.describe(test_name_deldete,function()
+      _AFT.assertVerbStatusSuccess("persistence", "insert", {key= key_value0, value= key_value1})
+      _AFT.assertVerbResponseEquals("persistence","read", {key= key_value0},{value= key_value1})
+      _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value0})
+    end)
+
+    for _, key_value2 in pairs(key_values2) do
+
+      local arg3 = "_updated_value_"..formatize(key_value2)
+
+      -- This tests the 'update' verb of the persistence API
+      local test_name_update = testPrefix.."update_with_verification_"..arg1..arg2..arg3
+      _AFT.describe(test_name_update,function()
+        _AFT.assertVerbStatusSuccess("persistence", "insert", {key= key_value0, value= key_value1})
+        _AFT.assertVerbResponseEquals("persistence","read", {key= key_value0},{value= key_value1})
+        _AFT.assertVerbStatusSuccess("persistence", "update", {key= key_value0, value= key_value2})
+        _AFT.assertVerbResponseEquals("persistence","read", {key= key_value0},{value= key_value2})
+        _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value0})
+        _AFT.assertVerbResponseEqualsError("persistence","read", {key= key_value0},{value= key_value2})
+        _AFT.assertVerbResponseEqualsError("persistence","read", {key= key_value0},{value= key_value1})
+      end)
+
+      -- This tests 'multiple insert' of the persistence API
+      local test_name_multiple_insert = testPrefix.."multiple_insert_with_verification_"..arg1..arg2..arg3
+      _AFT.describe(test_name_multiple_insert,function()
+        
+        if ((key_value0 == key_value2) or (key_value1 == key_value2) or (key_value0 == key_value1)
+          or ((key_value0 == key_value2) and (key_value1 == key_value2) and (key_value0 == key_value1)))
+        then
+          _AFT.assertVerbStatusSuccess("persistence", "update", {key= key_value2, value= key_value2})
+          if (key_value0 == key_value2)
+          then
+            _AFT.assertVerbStatusError("persistence", "insert", {key= key_value0, value= key_value0})
+          else
+            _AFT.assertVerbStatusSuccess("persistence", "insert", {key= key_value0, value= key_value0})
+          end
+
+          if (key_value1 == key_value2) or (key_value0 == key_value1)
+          then
+            _AFT.assertVerbStatusError("persistence", "insert", {key= key_value1, value= key_value1})
+          else
+            _AFT.assertVerbStatusSuccess("persistence", "insert", {key= key_value1, value= key_value1})
+          end
+
+          _AFT.assertVerbStatusError("persistence", "insert", {key= key_value1, value= key_value2})
+          _AFT.assertVerbStatusError("persistence", "insert", {key= key_value2, value= key_value0})
+          _AFT.assertVerbResponseEquals("persistence","read", {key= key_value0},{value= key_value0})
+          _AFT.assertVerbResponseEquals("persistence","read", {key= key_value1},{value= key_value1})
+          _AFT.assertVerbResponseEquals("persistence","read", {key= key_value2},{value= key_value2})
+
+          if (key_value0 == key_value2)
+          then
+            _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value0})
+            _AFT.assertVerbStatusError("persistence", "delete", {key= key_value2})
+          else
+            _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value0})
+            _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value2})
+          end
+
+          if (key_value1 == key_value2) or (key_value0 == key_value1)
+          then
+            _AFT.assertVerbStatusError("persistence", "delete", {key= key_value1})
+          else
+            _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value1})
+          end
+
+        else -- key_values0, key_value1 & key_value2 not equal
+          _AFT.assertVerbStatusSuccess("persistence", "update", {key= key_value2, value= key_value2})
+          _AFT.assertVerbStatusSuccess("persistence", "insert", {key= key_value0, value= key_value0})
+          _AFT.assertVerbStatusSuccess("persistence", "insert", {key= key_value1, value= key_value1})
+          _AFT.assertVerbStatusError("persistence", "insert", {key= key_value1, value= key_value2})
+          _AFT.assertVerbStatusError("persistence", "insert", {key= key_value2, value= key_value0})
+          _AFT.assertVerbResponseEquals("persistence","read", {key= key_value0},{value= key_value0})
+          _AFT.assertVerbResponseEquals("persistence","read", {key= key_value1},{value= key_value1})
+          _AFT.assertVerbResponseEquals("persistence","read", {key= key_value2},{value= key_value2})
+          _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value0})
+          _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value1})
+          _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value2})
+        end
+      end)
+    end
+  end
+end
\ No newline at end of file
index 6672c05..c4c6e50 100644 (file)
@@ -22,56 +22,59 @@ local testPrefix ="persistence_BasicAPITest_"
 
 -- This tests the 'insert' verb of the persistence API
 _AFT.describe(testPrefix.."insert_with_verification",function()
-  _AFT.callVerb("persistence", "insert", {key="TESTinsert", value="insert"})
+  _AFT.assertVerbStatusSuccess("persistence", "insert", {key="TESTinsert", value="insert"})
   _AFT.assertVerbResponseEquals("persistence","read", {key="TESTinsert"},{value="insert"})
-  _AFT.callVerb("persistence", "delete", {key="TESTinsert"})
+  _AFT.assertVerbStatusSuccess("persistence", "delete", {key="TESTinsert"})
+  _AFT.assertVerbResponseEqualsError("persistence","read", {key="TESTinsert"},{value="insert"})
 end)
 
 -- This tests the 'update' verb of the persistence API
 _AFT.describe(testPrefix.."update_with_verification",function()
-  _AFT.callVerb("persistence", "insert", {key="TESTinsert", value="myvalue"})
-  _AFT.assertVerbResponseEquals("persistence","read", {key="TESTinsert"},{value="myvalue"})
-  _AFT.callVerb("persistence", "update", {key="TESTinsert", value="newvalue"})
-  _AFT.assertVerbResponseEquals("persistence","read", {key="TESTinsert"},{value="newvalue"})
-  _AFT.callVerb("persistence", "delete", {key="TESTinsert"})
+  _AFT.assertVerbStatusSuccess("persistence", "insert", {key="TESTupdate", value="myvalue"})
+  _AFT.assertVerbResponseEquals("persistence","read", {key="TESTupdate"},{value="myvalue"})
+  _AFT.assertVerbStatusSuccess("persistence", "update", {key="TESTupdate", value="newvalue"})
+  _AFT.assertVerbResponseEquals("persistence","read", {key="TESTupdate"},{value="newvalue"})
+  _AFT.assertVerbStatusSuccess("persistence", "delete", {key="TESTupdate"})
+  _AFT.assertVerbResponseEqualsError("persistence","read", {key="TESTupdate"},{value="myvalue"})
+  _AFT.assertVerbResponseEqualsError("persistence","read", {key="TESTupdate"},{value="newvalue"})
 end)
 
 -- This tests the 'delete' verb of the persistence API
 _AFT.describe(testPrefix.."delete_with_verification",function()
-  _AFT.callVerb("persistence", "insert", {key="TESTinsert", value="delete"})
-  _AFT.assertVerbResponseEquals("persistence","read", {key="TESTinsert"},{value="delete"})
-  _AFT.callVerb("persistence", "delete", {key="TESTinsert"})
-  _AFT.assertVerbResponseEqualsError("persistence","read", {key="TESTinsert"},{value="delete"})
+  _AFT.assertVerbStatusSuccess("persistence", "insert", {key="TESTdelete", value="delete"})
+  _AFT.assertVerbResponseEquals("persistence","read", {key="TESTdelete"},{value="delete"})
+  _AFT.assertVerbStatusSuccess("persistence", "delete", {key="TESTdelete"})
+  _AFT.assertVerbResponseEqualsError("persistence","read", {key="TESTdelete"},{value="delete"})
 end)
 
 -- This tests the 'insert' verb of the persistence API
 _AFT.testVerbStatusSuccess(testPrefix.."insert","persistence","insert", {key="TESTinsert", value="insert"}, nil,
   function()
-    _AFT.callVerb("persistence", "delete", {key="TESTinsert"})
+    _AFT.assertVerbStatusSuccess("persistence", "delete", {key="TESTinsert"})
   end)
 
 -- This tests the 'delete' verb of the persistence API
 _AFT.testVerbStatusSuccess(testPrefix.."delete","persistence","delete", {key="TESTdelete"},
   function()
-    _AFT.callVerb("persistence", "insert", {key="TESTdelete", value="delete"})
+    _AFT.assertVerbStatusSuccess("persistence", "insert", {key="TESTdelete", value="delete"})
   end, nil)
 
 -- This tests the 'update' verb of the persistence API
 _AFT.testVerbStatusSuccess(testPrefix.."update","persistence","update", {key="TESTupdate", value="testupdate"},
   function()
-    _AFT.callVerb("persistence", "insert", {key="TESTupdate", value="newupdate"})
+    _AFT.assertVerbStatusSuccess("persistence", "insert", {key="TESTupdate", value="newupdate"})
   end,
   function()
-    _AFT.callVerb("persistence", "delete", {key="TESTupdate"})
+    _AFT.assertVerbStatusSuccess("persistence", "delete", {key="TESTupdate"})
   end)
 
 -- This tests the 'read' verb of the persistence API
 _AFT.testVerbStatusSuccess(testPrefix.."read","persistence","read", {key="TESTread"},
   function()
-    _AFT.callVerb("persistence", "insert", {key="TESTread", value="myvalue"})
+    _AFT.assertVerbStatusSuccess("persistence", "insert", {key="TESTread", value="myvalue"})
   end,
   function()
-    _AFT.callVerb("persistence", "delete", {key="TESTread"})
+    _AFT.assertVerbStatusSuccess("persistence", "delete", {key="TESTread"})
   end)
 
 -- This tests the 'read' verb of the persistence API
@@ -80,7 +83,19 @@ _AFT.testVerbStatusError(testPrefix.."read-unknow-value","persistence","read", {
 -- This tests the 'insert' verb of the persistence API
 _AFT.testVerbStatusError(testPrefix.."insert-without-value","persistence","insert", {key="TESTread-unknow-value"}, nil,
   function()
-    _AFT.callVerb("persistence", "delete", {key="TEST"})
+    _AFT.assertVerbStatusError("persistence", "delete", {key="TEST"})
+  end)
+
+-- This tests the 'insert' verb of the persistence API
+_AFT.testVerbStatusError(testPrefix.."insert-with-wrong_key","persistence","insert", {wrong_key="TESTinsert-wrong-key", value="TESTinsert-wrong-key"}, nil,
+  function()
+    _AFT.assertVerbStatusError("persistence", "delete", {key="TESTinsert-wrong-key"})
+  end)
+
+-- This tests the 'insert' verb of the persistence API
+_AFT.testVerbStatusError(testPrefix.."insert-with-wrong_value","persistence","insert", {key="TESTinsert-wrong-value", wrong_value="TESTinsert-wrong-value"}, nil,
+  function()
+    _AFT.assertVerbStatusError("persistence", "delete", {key="TESTinsert-wrong-value"})
   end)
 
 -- This tests the 'delete' verb of the persistence API
@@ -90,6 +105,4 @@ _AFT.testVerbStatusError(testPrefix.."delete-unknow-key","persistence","delete",
 _AFT.testVerbStatusError(testPrefix.."insert-with-anything","persistence","insert", {value="TESTinsert-with-anything"}, nil, nil)
 
 -- This tests the 'update' verb of the persistence API
-_AFT.testVerbStatusError(testPrefix.."update-unkwon-null-value","persistence","update", {key=null}, nil, nil)
-
-_AFT.exitAtEnd()
+_AFT.testVerbStatusError(testPrefix.."update-unkwon-null-value","persistence","update", {key=null}, nil, nil)
\ No newline at end of file