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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
/*
* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
*
* Contact: Kyungwook Tak <k.tak@samsung.com>
*
* 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
*
* @file DBFixture.h
* @author Maciej Karpiuk (m.karpiuk2@samsung.com)
* @version
* @brief
*/
#pragma once
#include <test_common.h>
#include <ckm/ckm-type.h>
#include <protocols.h>
#include <chrono>
class DBFixture {
public:
DBFixture();
DBFixture(const char *db_fname);
constexpr static const char *m_default_name = "name";
constexpr static const char *m_default_owner = "label";
// ::::::::::::::::::::::::: helper methods :::::::::::::::::::::::::
static void generate_name(unsigned int id, CKM::Name &output);
static void generate_owner(unsigned int id, CKM::ClientId &output);
static CKM::DB::Row create_default_row(CKM::DataType type =
CKM::DataType::BINARY_DATA);
static CKM::DB::Row create_default_row(const CKM::Name &name,
const CKM::ClientId &owner,
CKM::DataType type = CKM::DataType::BINARY_DATA);
static void compare_row(const CKM::DB::Row &lhs, const CKM::DB::Row &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_name, unsigned int names_per_owner);
long add_full_access_rights(unsigned int num_name,
unsigned int num_names_per_owner);
void check_DB_integrity(const CKM::DB::Row &rowPattern);
void insert_row();
void insert_row(const CKM::Name &name, const CKM::ClientId &owner);
void delete_row(const CKM::Name &name, const CKM::ClientId &owner);
void add_permission(const CKM::Name &name, const CKM::ClientId &owner,
const CKM::ClientId &accessor);
void read_row_expect_success(const CKM::Name &name,
const CKM::ClientId &owner);
CKM::DB::Crypto m_db;
private:
void init();
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;
};
|