"Fossies" - the Fresh Open Source Software Archive

Member "icinga2-2.10.5/test/base-utility.cpp" (23 May 2019, 2730 Bytes) of package /linux/misc/icinga2-2.10.5.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. See also the last Fossies "Diffs" side-by-side code changes report for "base-utility.cpp": 2.10.3_vs_2.10.4.

    1 /******************************************************************************
    2  * Icinga 2                                                                   *
    3  * Copyright (C) 2012-2018 Icinga Development Team (https://icinga.com/)      *
    4  *                                                                            *
    5  * This program is free software; you can redistribute it and/or              *
    6  * modify it under the terms of the GNU General Public License                *
    7  * as published by the Free Software Foundation; either version 2             *
    8  * of the License, or (at your option) any later version.                     *
    9  *                                                                            *
   10  * This program is distributed in the hope that it will be useful,            *
   11  * but WITHOUT ANY WARRANTY; without even the implied warranty of             *
   12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the              *
   13  * GNU General Public License for more details.                               *
   14  *                                                                            *
   15  * You should have received a copy of the GNU General Public License          *
   16  * along with this program; if not, write to the Free Software Foundation     *
   17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.             *
   18  ******************************************************************************/
   19 
   20 #include "base/utility.hpp"
   21 #include <chrono>
   22 #include <BoostTestTargetConfig.h>
   23 
   24 using namespace icinga;
   25 
   26 BOOST_AUTO_TEST_SUITE(base_utility)
   27 
   28 BOOST_AUTO_TEST_CASE(comparepasswords_works)
   29 {
   30     BOOST_CHECK(Utility::ComparePasswords("", ""));
   31 
   32     BOOST_CHECK(!Utility::ComparePasswords("x", ""));
   33     BOOST_CHECK(!Utility::ComparePasswords("", "x"));
   34 
   35     BOOST_CHECK(Utility::ComparePasswords("x", "x"));
   36     BOOST_CHECK(!Utility::ComparePasswords("x", "y"));
   37 
   38     BOOST_CHECK(Utility::ComparePasswords("abcd", "abcd"));
   39     BOOST_CHECK(!Utility::ComparePasswords("abc", "abcd"));
   40     BOOST_CHECK(!Utility::ComparePasswords("abcde", "abcd"));
   41 }
   42 
   43 BOOST_AUTO_TEST_CASE(comparepasswords_issafe)
   44 {
   45     using std::chrono::duration_cast;
   46     using std::chrono::microseconds;
   47     using std::chrono::steady_clock;
   48 
   49     String a, b;
   50 
   51     a.Append(200000001, 'a');
   52     b.Append(200000002, 'b');
   53 
   54     auto start1 (steady_clock::now());
   55 
   56     Utility::ComparePasswords(a, a);
   57 
   58     auto duration1 (steady_clock::now() - start1);
   59 
   60     auto start2 (steady_clock::now());
   61 
   62     Utility::ComparePasswords(a, b);
   63 
   64     auto duration2 (steady_clock::now() - start2);
   65 
   66     double diff = (double)duration_cast<microseconds>(duration1).count() / (double)duration_cast<microseconds>(duration2).count();
   67     BOOST_WARN(0.9 <= diff && diff <= 1.1);
   68 }
   69 
   70 BOOST_AUTO_TEST_SUITE_END()