Skip to content
This repository has been archived by the owner on Oct 26, 2021. It is now read-only.

The client library for the persistence database

License

Notifications You must be signed in to change notification settings

GENIVI/persistence-client-library

Repository files navigation

Persistence Client Library

Copyright and License

Copyright (C) 2016 Mentor Graphics. This software is licensed under the Mozilla Public License 2.0, see COPYING file for more details.

Project Scope

The persistence client library has been developed as a proof of concept (PoC) for GENIVI. It now serves as a reference implementation.

Dependencies

The client library has the following dependencies

Building the PCL

The Persistence Client Lib component uses automake to build the library. Execute the following steps in order to build the component

  • autoreconf –vi
  • configure, with the following options
    • --enable-tests to enable the build of the tests
    • --enable-tools to enable the build of the tools
    • --enable-pasinterface enable the PAS interface (disabled by default)
    • --enable-appcheck, performs an application check if the using application is a valid/trusted one.
  • make

Testing and Debugging

Introduction:

The test framework “check” has been used to write unit tests which will be run automatically when the test binary is started. At the end a test report will be printed to the console showing first a summary about number of tests that have been executed and how many tests have been passed or failed. After the summary a test report will be generated showing the status of each test. When a bug will be fixed a test will be written to verify the problem has been solved. DTL (Diagnostic, Log and Trace) will be used by the PCL to send status and error. For details about DLT, please refer to the GENIVI DLT p roject page (http://projects.genivi.org/diagnostic-log-trace/).

Persistence Common Object

The Persistence Common Object (libpers_common.so) is the default plugin to read/write persistent data managed by the key-value API.

Attention: The Persistence Common Object must be added to the plugin configuration file with the appropriate path to the library

Example: “default /usr/local/lib/libpers_common.so init sync”

Running tests:

There are unit tests available for the persistency client library component available. The unit tests are used to verify that the component is working correctly and exclude any regressions. Please refer always to the source codeto see the available tests

Preconditions:

Application verification

To check if an application is valid/trusted and allowed to access persistent data an application check functionality can be enabled (configure step --enable-appcheck, see section 6 “How to build”). If an application is not valid/trusted every API call to the key-value or file API returns the error EPERS_SHUTDOWN_NO_TRUSTED will be returned. A trusted/valid application has a corresponding resource configuration table installed by the Persistence Administration Service under /Data/mnt-c or /Data/mnt-wt.

Data location and partitions

Persistence expects its data under the two folders /Data/mnt-c and /Data/mnt-wt. It is requested to have one persistence partition which will be mounted to the two folders stated above (one partition will be mounted to two different mointpoints).

Example: sudo mount -t fsType /dev/sdx /Data/mnt-wt sudo mount -t fsType /dev/sdx /Data/mnt-c

Run tests:

run persistency unit test "./persistence_client_library_test"

Expected test result:

The expected result is to have 0 failures and 0 errors, see example output below:

./persistence_client_library_test Running suite(s): Persistency client library 100%: Checks: 13, Failures: 0, Errors: 0 persistence_client_library_test.c:141:P:GetData:test_GetData:0: Passed persistence_client_library_test.c:357:P:SetData:test_SetData:0: Passed persistence_client_library_test.c:400:P:SetDataNoPRCT:test_SetDataNoPRCT:0: Passed persistence_client_library_test.c:434:P:GetDataSize:test_GetDataSize:0: Passed persistence_client_library_test.c:478:P:DeleteData:test_DeleteData:0: Passed persistence_client_library_test.c:236:P:GetDataHandle:test_GetDataHandle:0: Passed persistence_client_library_test.c:652:P:DataHandle:test_DataHandle:0: Passed persistence_client_library_test.c:727:P:DataHandleOpen:test_DataHandleOpen:0: Passed persistence_client_library_test.c:578:P:DataFile:test_DataFile:0: Passed persistence_client_library_test.c:604:P:DataFileRecovery:test_DataFileRecovery:0: Passed persistence_client_library_test.c:794:P:Cursor:test_Cursor:0: Passed persistence_client_library_test.c:864:P:ReadDefault:test_ReadDefault:0: Passed persistence_client_library_test.c:886:P:ReadConfDefault:test_ReadConfDefault:0: Passed

The output above may vary as the test cases will be adopted or extended.

Project page

Mailing List

Subscribe to the mailing list here: http://lists.genivi.org/mailman/listinfo/genivi-persistence

Bug reporting

View or Report bugs here: http://bugs.genivi.org/buglist.cgi?product=persistence-client-library

Documentation

For details about the Persistence Client Library, please refer to to following documents:

  • Persistence Client Library Architecture Documentation: see docs sufolder: Persistence_ArchitectureManual.pdf

  • Persistence Client Library User Manual: see docs subfolder: Persistence_ClientLibrary_UserGuide.pdf

How to create doxygen documentation

The doxygen package must be installed. Run "doxygen doc/pcl_doxyfile" and the html documentation will be generated in the doc folder.

About

The client library for the persistence database

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages