X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Ftest%2Fcommon%2Ftest_lru.cc;fp=src%2Fceph%2Fsrc%2Ftest%2Fcommon%2Ftest_lru.cc;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=5db18314c4bd9789d2d7085c34f290b54c15b9c5;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/src/test/common/test_lru.cc b/src/ceph/src/test/common/test_lru.cc deleted file mode 100644 index 5db1831..0000000 --- a/src/ceph/src/test/common/test_lru.cc +++ /dev/null @@ -1,158 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Cloudwatt - * - * Author: Sahid Orentino Ferdjaoui - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - */ - -#include -#include - -#include "include/lru.h" - - -class Item : public LRUObject { -public: - int id; - Item() : id(0) {} - Item(int i) : id(i) {} - void set(int i) {id = i;} -}; - - -TEST(lru, InsertTop) { - LRU lru; - static const int n = 100; - Item items[n]; - - lru.lru_set_midpoint(.5); // 50% of elements. - for (int i=0; i(lru.lru_expire()))->id); -} - -TEST(lru, InsertMid) { - LRU lru; - static const int n = 102; - Item items[n]; - - lru.lru_set_midpoint(.7); // 70% of elements. - for (int i=0; i(lru.lru_expire()))->id); -} - -TEST(lru, InsertBot) { - LRU lru; - static const int n = 100; - Item items[n]; - - lru.lru_set_midpoint(.7); // 70% of elements. - for (int i=0; i(lru.lru_expire()))->id); -} - -TEST(lru, Adjust) { - LRU lru; - static const int n = 100; - Item items[n]; - - lru.lru_set_midpoint(.6); // 60% of elements. - for (int i=0; i(lru.lru_expire()))->id); - ASSERT_EQ(1U, lru.lru_get_pintail()); - ASSERT_EQ(47U, lru.lru_get_top()); /* 60% of unpinned */ - ASSERT_EQ(51U, lru.lru_get_bot()); - ASSERT_EQ(99U, lru.lru_get_size()); - ASSERT_EQ(2, (static_cast(lru.lru_expire()))->id); - ASSERT_EQ(1U, lru.lru_get_pintail()); - ASSERT_EQ(46U, lru.lru_get_top()); /* 60% of unpinned */ - ASSERT_EQ(51U, lru.lru_get_bot()); - ASSERT_EQ(98U, lru.lru_get_size()); - ASSERT_EQ(3, (static_cast(lru.lru_expire()))->id); - ASSERT_EQ(4, (static_cast(lru.lru_expire()))->id); - ASSERT_EQ(6, (static_cast(lru.lru_expire()))->id); - ASSERT_EQ(2U, lru.lru_get_pintail()); - ASSERT_EQ(45U, lru.lru_get_top()); /* 60% of unpinned */ - ASSERT_EQ(48U, lru.lru_get_bot()); - ASSERT_EQ(95U, lru.lru_get_size()); -} - -TEST(lru, Pinning) { - LRU lru; - - Item ob0(0), ob1(1); - - // test before ob1 are in a LRU - ob1.lru_pin(); - ASSERT_FALSE(ob1.lru_is_expireable()); - - ob1.lru_unpin(); - ASSERT_TRUE(ob1.lru_is_expireable()); - - // test when ob1 are in a LRU - lru.lru_insert_top(&ob0); - lru.lru_insert_top(&ob1); - - ob1.lru_pin(); - ob1.lru_pin(); // Verify that, one incr. - ASSERT_EQ(1U, lru.lru_get_num_pinned()); - ASSERT_FALSE(ob1.lru_is_expireable()); - - ob1.lru_unpin(); - ob1.lru_unpin(); // Verify that, one decr. - ASSERT_EQ(0U, lru.lru_get_num_pinned()); - ASSERT_TRUE(ob1.lru_is_expireable()); - - ASSERT_EQ(0, (static_cast(lru.lru_expire()))->id); - ob0.lru_pin(); - ASSERT_EQ(1, (static_cast(lru.lru_expire()))->id); -} - - -/* - * Local Variables: - * compile-command: "cd ../.. ; make -j4 && - * make unittest_lru && - * valgrind --tool=memcheck --leak-check=full \ - * ./unittest_lru - * " - * End: - */