summaryrefslogtreecommitdiff
path: root/tests/DBFixture.h
blob: be7e2e026deee3b8bd01649383da58f1e7ee637e (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
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;
};