Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / ceph / src / test / osd / TestECBackend.cc
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3 /*
4  * Ceph - scalable distributed file system
5  *
6  * Copyright (C) 2013 Inktank Storage, Inc.
7  *
8  * This is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License version 2.1, as published by the Free Software
11  * Foundation.  See file COPYING.
12  *
13  */
14
15 #include <iostream>
16 #include <sstream>
17 #include <errno.h>
18 #include <signal.h>
19 #include "osd/ECBackend.h"
20 #include "gtest/gtest.h"
21
22 TEST(ECUtil, stripe_info_t)
23 {
24   const uint64_t swidth = 4096;
25   const uint64_t ssize = 4;
26
27   ECUtil::stripe_info_t s(ssize, swidth);
28   ASSERT_EQ(s.get_stripe_width(), swidth);
29
30   ASSERT_EQ(s.logical_to_next_chunk_offset(0), 0u);
31   ASSERT_EQ(s.logical_to_next_chunk_offset(1), s.get_chunk_size());
32   ASSERT_EQ(s.logical_to_next_chunk_offset(swidth - 1),
33             s.get_chunk_size());
34
35   ASSERT_EQ(s.logical_to_prev_chunk_offset(0), 0u);
36   ASSERT_EQ(s.logical_to_prev_chunk_offset(swidth), s.get_chunk_size());
37   ASSERT_EQ(s.logical_to_prev_chunk_offset((swidth * 2) - 1),
38             s.get_chunk_size());
39
40   ASSERT_EQ(s.logical_to_next_stripe_offset(0), 0u);
41   ASSERT_EQ(s.logical_to_next_stripe_offset(swidth - 1),
42             s.get_stripe_width());
43
44   ASSERT_EQ(s.logical_to_prev_stripe_offset(swidth), s.get_stripe_width());
45   ASSERT_EQ(s.logical_to_prev_stripe_offset(swidth), s.get_stripe_width());
46   ASSERT_EQ(s.logical_to_prev_stripe_offset((swidth * 2) - 1),
47             s.get_stripe_width());
48
49   ASSERT_EQ(s.aligned_logical_offset_to_chunk_offset(2*swidth),
50             2*s.get_chunk_size());
51   ASSERT_EQ(s.aligned_chunk_offset_to_logical_offset(2*s.get_chunk_size()),
52             2*s.get_stripe_width());
53
54   ASSERT_EQ(s.aligned_offset_len_to_chunk(make_pair(swidth, 10*swidth)),
55             make_pair(s.get_chunk_size(), 10*s.get_chunk_size()));
56
57   ASSERT_EQ(s.offset_len_to_stripe_bounds(make_pair(swidth-10, (uint64_t)20)),
58             make_pair((uint64_t)0, 2*swidth));
59 }
60