norian: (Default)
[personal profile] norian
Гибридная Графовая База Данных (отвертка с моторчиком для моделирования моделей)

День 9. Доработка тестов и планы на будущее.

Это конечно не полноценные юниттесты с 146% кавереджем, но лучше чтобы основная функциональность постоянно тестировалась, чем не тестировалась и разводила в своих внутренностях регрессии. Помимо вышеупомянутых тестов для некоторых вспомогательных модулей, добавлены тесты для операций с узлами данных (добавление, редактирование, удаление), а также тесты для линков и индексов.

Весь код из локального репозитория закачан на гитхаб (https://github.com/norian-n/nekodb).

Дальнейшие шаги: демо приложение для обкатки двигла на как бы практических задачах, добавление требуемой для этого приложения функциональности и рефакторинг понаписанного. Рефакторинг является необходимым методом для повышения качества софта. Он направлен на уменьшение количества кода и перенос дополнительной функциональности в отдельные плагины, чтобы в основных модулях оставалась только самая необходимая функциональность в самом рациональном виде. Это постоянный итеративный процесс небольших изменений, который заканчивается только с гибелью системы под собственной тяжестью.

Процесс сборки всего и запуска тестов выглядит так:

> ./all_tests.sh 
============ build lib and test apps ============
g++ -fPIC -std=c++20  -c service/egByteArray.cpp -o service/egByteArray.o
g++ -fPIC -std=c++20  -c nodes/egDataNodesType.cpp -o nodes/egDataNodesType.o
g++ -fPIC -std=c++20  -c nodes/egDataNodesLocalFile.cpp -o nodes/egDataNodesLocalFile.o
g++ -fPIC -std=c++20  -c nodes/egDataNodesContainer.cpp -o nodes/egDataNodesContainer.o
g++ -fPIC -std=c++20  -c nodes/egDataNodeBlueprint.cpp -o nodes/egDataNodeBlueprint.o
g++ -fPIC -std=c++20  -c nodes/egDataNode.cpp -o nodes/egDataNode.o
g++ -fPIC -std=c++20  -c indexes/egIndexes.cpp -o indexes/egIndexes.o
g++ -fPIC -std=c++20  -c indexes/egIndexConditions.cpp -o indexes/egIndexConditions.o
g++ -fPIC -std=c++20  -c indexes/egFingers.cpp -o indexes/egFingers.o
g++ -fPIC -std=c++20  -c links/egLinksType.cpp -o links/egLinksType.o
g++ -fPIC -std=c++20  -c links/egFlexLinksType.cpp -o links/egFlexLinksType.o
g++ -fPIC -std=c++20  -c metainfo/egLayersType.cpp -o metainfo/egLayersType.o
g++ -fPIC -std=c++20  -c metainfo/egDatabaseType.cpp -o metainfo/egDatabaseType.o
g++ -shared -o libegdb.so service/egByteArray.o nodes/egDataNodesType.o nodes/egDataNodesLocalFile.o nodes/egDataNodesContainer.o nodes/egDataNodeBlueprint.o nodes/egDataNode.o indexes/egIndexes.o indexes/egIndexConditions.o indexes/egFingers.o links/egLinksType.o links/egFlexLinksType.o metainfo/egLayersType.o metainfo/egDatabaseType.o
=============== Finished compilation of libegdb.so ===============
-rwxrwxr-x  1068760 libegdb.so
=============== clean ===============
rm -f service/egByteArray.o nodes/egDataNodesType.o nodes/egDataNodesLocalFile.o nodes/egDataNodesContainer.o nodes/egDataNodeBlueprint.o nodes/egDataNode.o indexes/egIndexes.o indexes/egIndexConditions.o indexes/egFingers.o links/egLinksType.o links/egFlexLinksType.o metainfo/egLayersType.o metainfo/egDatabaseType.o
g++   -std=c++20  -c tests/testDataNodesLocalFile.cpp -o tests/testDataNodesLocalFile.o
g++  tests/testDataNodesLocalFile.o -L. -legdb -o tests/testDataNodesLocalFile.exe
g++   -std=c++20  -c tests/testFlexLinks.cpp -o tests/testFlexLinks.o
g++  tests/testFlexLinks.o -L. -legdb -o tests/testFlexLinks.exe
g++   -std=c++20  -c tests/testGeneralOps.cpp -o tests/testGeneralOps.o
g++  tests/testGeneralOps.o -L. -legdb -o tests/testGeneralOps.exe
g++   -std=c++20  -c tests/testDataNodesContainer.cpp -o tests/testDataNodesContainer.o
g++  tests/testDataNodesContainer.o -L. -legdb -o tests/testDataNodesContainer.exe
g++   -std=c++20  -c tests/testIndexesUsage.cpp -o tests/testIndexesUsage.o
g++  tests/testIndexesUsage.o -L. -legdb -o tests/testIndexesUsage.exe
g++   -std=c++20  -c tests/testDataNodeBlueprint.cpp -o tests/testDataNodeBlueprint.o
g++  tests/testDataNodeBlueprint.o -L. -legdb -o tests/testDataNodeBlueprint.exe
g++   -std=c++20  -c tests/testFingers.cpp -o tests/testFingers.o
g++  tests/testFingers.o -L. -legdb -o tests/testFingers.exe
g++   -std=c++20  -c tests/testBasicOps.cpp -o tests/testBasicOps.o
g++  tests/testBasicOps.o -L. -legdb -o tests/testBasicOps.exe
g++   -std=c++20  -c tests/testLinks.cpp -o tests/testLinks.o
g++  tests/testLinks.o -L. -legdb -o tests/testLinks.exe
g++   -std=c++20  -c tests/testIndexes.cpp -o tests/testIndexes.o
g++  tests/testIndexes.o -L. -legdb -o tests/testIndexes.exe
g++   -std=c++20  -c tests/testDataFields.cpp -o tests/testDataFields.o
g++  tests/testDataFields.o -L. -legdb -o tests/testDataFields.exe
g++   -std=c++20  -c tests/testLayers.cpp -o tests/testLayers.o
g++  tests/testLayers.o -L. -legdb -o tests/testLayers.exe
tests/testDataNodesLocalFile.exe tests/testFlexLinks.exe tests/testGeneralOps.exe tests/testDataNodesContainer.exe tests/testIndexesUsage.exe tests/testDataNodeBlueprint.exe tests/testFingers.exe tests/testBasicOps.exe tests/testLinks.exe tests/testIndexes.exe tests/testDataFields.exe tests/testLayers.exe
=============== Finished compilation of tests ===============
rm -f tests/testDataNodesLocalFile.o tests/testFlexLinks.o tests/testGeneralOps.o tests/testDataNodesContainer.o tests/testIndexesUsage.o tests/testDataNodeBlueprint.o tests/testFingers.o tests/testBasicOps.o tests/testLinks.o tests/testIndexes.o tests/testDataFields.o tests/testLayers.o
rm -f tests/*.o
rm -f *.o
============ run test apps ============
initDatabase() not found metadata storage, create new: egNodesTypesMetainfo
initDatabase() not found metadata storage, create new: egLinksTypesMetainfo
initDatabase() not found metadata storage, create new: egLayersTypesMetainfo
===== Test basic database ops  =====
PASS
===== Test length convertor ( 123456789 ) =====
byteCountIn: 4 byteCountOut: 4 testLength: 123456789
===== Test hamSlicer =====
PASS
===== Test DataNodeBlueprint (2 errors must appear in negative tests)  =====
ERROR: AddIndex() for DataNodeBlueprint: "testNodes" field name "bad index name" not found
ERROR: Can't add field "try to add field after commit" to DataNodeBlueprint: "testNodes". Call BlueprintInitStart() first
PASS
===== Test NodesContainerType  =====
PASS
===== Test egDataNodeLocalFile =====
PASS
===== Test EgFingers Stage 1 =====
PASS
===== Test EgFingers Stage 2 =====
PASS
===== Test EgFreeLinksType =====
PASS
===== Test general database ops  =====
PASS
===== Test EgIndexes  =====
PASS
===== Test indexes ops  =====
PASS
===== Test EgLayersType =====
PASS
===== Test EgLinksType =====
PASS

PASS total: 13
FAIL total: 0

Profile

norian: (Default)
Murramoto Manulneko

January 2026

S M T W T F S
    1 2 3
456 78 910
11121314 151617
18 19 20 21 22 23 24
25 26 2728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 27th, 2026 05:36 pm
Powered by Dreamwidth Studios