summaryrefslogtreecommitdiff
path: root/tests/DBFixture.h
blob: 883e96302900390b41f13236f49cb015f6b54c77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#pragma once

#include <test_common.h>
#include <ckm/ckm-type.h>
#include <chrono>

class DBFixture
{
    public:
        DBFixture();

        constexpr static const char* m_default_alias = "alias";
        constexpr static const char* m_default_label = "label";

        // ::::::::::::::::::::::::: helper methods :::::::::::::::::::::::::
        static void generate_alias(unsigned int id, std::string & output);
        static void generate_label(unsigned int id, std::string & output);
        static CKM::DBRow create_default_row(CKM::DBDataType type = CKM::DBDataType::BINARY_DATA);
        static CKM::DBRow create_default_row(const std::string &alias,
                                             const std::string &label,
                                             CKM::DBDataType type = CKM::DBDataType::BINARY_DATA);
        static void compare_row(const CKM::DBRow &lhs, const CKM::DBRow &rhs);

        // ::::::::::::::::::::::::: time measurement :::::::::::::::::::::::::
        void performance_start(const char *operation_name);
        void performance_stop(long num_operations_performed);

        // ::::::::::::::::::::::::: DB :::::::::::::::::::::::::
        void generate_perf_DB(unsigned int num_alias, unsigned int num_label);
        long add_full_access_rights(unsigned int num_alias, unsigned int num_alias_per_label);
        void check_DB_integrity(const CKM::DBRow &rowPattern);
        void insert_row();
        void insert_row(const std::string &alias, const std::string &accessor_label);
        void delete_row(const std::string &alias, const std::string &accessor_label);
        void add_permission(const std::string &alias, const std::string &owner_label, const std::string &accessor_label);
        void read_row_expect_fail(const std::string &alias, const std::string &accessor_label);
        void read_row_expect_success(const std::string &alias, const std::string &accessor_label);

        CKM::DBCrypto    m_db;
    private:
        double  performance_get_time_elapsed_ms();

        constexpr static const char* m_crypto_db_fname = "/tmp/testme.db";
        std::string m_operation;
        std::chrono::high_resolution_clock::time_point m_start_time, m_end_time;
};