1 // -*- mode:C; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 * Ceph - scalable distributed file system
6 * Copyright (C) 2014 Red Hat
8 * Author: Greg Farnum <greg@inktank.com>
10 * This is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU General Public
12 * License version 2, as published by the Free Software
13 * Foundation. See file COPYING.
17 #include "gtest/gtest.h"
18 #include "mds/mdstypes.h"
19 #include "mds/inode_backtrace.h"
21 TEST(inode_t, compare_equal)
27 compare_r = foo.compare(bar, &divergent);
28 EXPECT_EQ(0, compare_r);
29 EXPECT_FALSE(divergent);
30 compare_r = bar.compare(foo, &divergent);
31 EXPECT_EQ(0, compare_r);
32 EXPECT_FALSE(divergent);
36 foo.ctime.set_from_double(10.0);
44 compare_r = foo.compare(bar, &divergent);
45 EXPECT_EQ(0, compare_r);
46 EXPECT_FALSE(divergent);
47 compare_r = bar.compare(foo, &divergent);
48 EXPECT_EQ(0, compare_r);
49 EXPECT_FALSE(divergent);
52 TEST(inode_t, compare_aged)
58 foo.ctime.set_from_double(10.0);
64 foo.rstat.version = 1;
71 compare_r = foo.compare(bar, &divergent);
72 EXPECT_EQ(1, compare_r);
73 EXPECT_FALSE(divergent);
74 compare_r = bar.compare(foo, &divergent);
75 EXPECT_EQ(-1, compare_r);
76 EXPECT_FALSE(divergent);
79 TEST(inode_t, compare_divergent)
85 foo.ctime.set_from_double(10.0);
91 foo.rstat.version = 1;
95 bar.rstat.version = 2;
99 compare_r = foo.compare(bar, &divergent);
100 EXPECT_EQ(1, compare_r);
101 EXPECT_TRUE(divergent);
102 compare_r = bar.compare(foo, &divergent);
103 EXPECT_EQ(-1, compare_r);
104 EXPECT_TRUE(divergent);
107 TEST(inode_backtrace_t, compare_equal)
109 inode_backtrace_t foo;
110 inode_backtrace_t bar;
114 foo.old_pools.insert(10);
115 foo.old_pools.insert(5);
117 inode_backpointer_t foop;
121 foo.ancestors.push_back(foop);
125 foo.ancestors.push_back(foop);
129 foo.ancestors.push_back(foop);
137 compare_r = foo.compare(bar, &equivalent, &divergent);
138 EXPECT_EQ(0, compare_r);
139 EXPECT_TRUE(equivalent);
140 EXPECT_FALSE(divergent);
143 TEST(inode_backtrace_t, compare_newer)
145 inode_backtrace_t foo;
146 inode_backtrace_t bar;
150 foo.old_pools.insert(10);
151 foo.old_pools.insert(5);
155 bar.old_pools.insert(10);
157 inode_backpointer_t foop;
161 foo.ancestors.push_back(foop);
163 bar.ancestors.push_back(foop);
168 foo.ancestors.push_back(foop);
170 bar.ancestors.push_back(foop);
175 foo.ancestors.push_back(foop);
176 bar.ancestors.push_back(foop);
182 compare_r = foo.compare(bar, &equivalent, &divergent);
183 EXPECT_EQ(1, compare_r);
184 EXPECT_TRUE(equivalent);
185 EXPECT_FALSE(divergent);
187 compare_r = bar.compare(foo, &equivalent, &divergent);
188 EXPECT_EQ(-1, compare_r);
189 EXPECT_TRUE(equivalent);
190 EXPECT_FALSE(divergent);
192 bar.ancestors.back().dirino = 75;
193 bar.ancestors.back().dname = "l1-old";
194 bar.ancestors.back().version = 70;
196 compare_r = foo.compare(bar, &equivalent, &divergent);
197 EXPECT_EQ(1, compare_r);
198 EXPECT_FALSE(equivalent);
199 EXPECT_FALSE(divergent);
201 compare_r = bar.compare(foo, &equivalent, &divergent);
202 EXPECT_EQ(-1, compare_r);
203 EXPECT_FALSE(equivalent);
204 EXPECT_FALSE(divergent);
207 TEST(inode_backtrace_t, compare_divergent)
209 inode_backtrace_t foo;
210 inode_backtrace_t bar;
214 foo.old_pools.insert(10);
215 foo.old_pools.insert(5);
219 bar.old_pools.insert(10);
221 inode_backpointer_t foop;
225 foo.ancestors.push_back(foop);
227 bar.ancestors.push_back(foop);
232 foo.ancestors.push_back(foop);
234 bar.ancestors.push_back(foop);
239 foo.ancestors.push_back(foop);
240 bar.ancestors.push_back(foop);
246 compare_r = foo.compare(bar, &equivalent, &divergent);
247 EXPECT_EQ(1, compare_r);
248 EXPECT_TRUE(divergent);
249 compare_r = bar.compare(foo, &equivalent, &divergent);
250 EXPECT_EQ(-1, compare_r);
251 EXPECT_TRUE(divergent);