From 5efacf8ea0f442255805c9b9825e25a828d8c2b1 Mon Sep 17 00:00:00 2001 From: Frederic Marec Date: Thu, 10 Jan 2019 14:28:14 +0100 Subject: Increase tests for data-persistence binding Change-Id: I17ebecfe5a1f7ffac2a1f99e1d3195793fdf1aad Signed-off-by: Frederic Marec --- test/CMakeLists.txt | 2 +- test/etc/aft-persistence-test.json | 2 +- test/tests/persistence_APITest.lua | 129 ++++++++++++++++++++++++++++++++ test/tests/persistence_BasicAPITest.lua | 55 ++++++++------ 4 files changed, 165 insertions(+), 23 deletions(-) create mode 100644 test/tests/persistence_APITest.lua diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 71a121a..b876e8d 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -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 diff --git a/test/etc/aft-persistence-test.json b/test/etc/aft-persistence-test.json index 9e5839c..35a58ac 100644 --- a/test/etc/aft-persistence-test.json +++ b/test/etc/aft-persistence-test.json @@ -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 index 0000000..8bcd521 --- /dev/null +++ b/test/tests/persistence_APITest.lua @@ -0,0 +1,129 @@ +--[[ + Copyright (C) 2019 "IoT.bzh" + Author Frédéric Marec + + 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 diff --git a/test/tests/persistence_BasicAPITest.lua b/test/tests/persistence_BasicAPITest.lua index 6672c05..c4c6e50 100644 --- a/test/tests/persistence_BasicAPITest.lua +++ b/test/tests/persistence_BasicAPITest.lua @@ -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 -- cgit 1.2.3-korg