Author: jreidinger Date: Fri Apr 11 17:16:01 2008 New Revision: 9544 URL: http://svn.opensuse.org/viewcvs/zypp?rev=9544&view=rev Log: test for save/restoring locks and also unlocking Modified: trunk/libzypp/tests/zypp/Locks_test.cc trunk/libzypp/tests/zypp/data/Locks/locks trunk/libzypp/zypp/Locks.cc Modified: trunk/libzypp/tests/zypp/Locks_test.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/tests/zypp/Locks_test.cc?rev=9544&r1=9543&r2=9544&view=diff ============================================================================== --- trunk/libzypp/tests/zypp/Locks_test.cc (original) +++ trunk/libzypp/tests/zypp/Locks_test.cc Fri Apr 11 17:16:01 2008 @@ -79,3 +79,43 @@ BOOST_CHECK(isLocked(*it)); } } + +BOOST_AUTO_TEST_CASE(locks_save_load) +{ + cout << "****save/load****" << endl; + Pathname src(TESTS_SRC_DIR); + src += "zypp/data/Locks/locks"; + Locks::instance().loadLocks(src); + PoolQuery q; + q.addString("zypper"); + for_(it,q.begin(),q.end()) + { + BOOST_CHECK(isLocked(*it)); + } + Locks::instance().unlock(q); + for_(it,q.begin(),q.end()) + { + BOOST_CHECK(!isLocked(*it)); + } +#if 1 + filesystem::TmpFile testfile; + //Pathname testfile(TESTS_SRC_DIR); + // testfile += "/zypp/data/Locks/testlocks"; + Locks::instance().saveLocks(testfile); + Locks::instance().loadLocks(testfile); + //still locked + for_(it,q.begin(),q.end()) + { + BOOST_CHECK(isLocked(*it)); + } + Locks::instance().unlock(q); //need twice because finded from previous test + Locks::instance().saveLocks(testfile); + Locks::instance().loadLocks(testfile); + //now unlocked - first unlock remove indetical lock from previous test + //and next unlock remove lock from lockfile + for_(it,q.begin(),q.end()) + { + BOOST_CHECK(!isLocked(*it)); + } +#endif +} Modified: trunk/libzypp/tests/zypp/data/Locks/locks URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/tests/zypp/data/Locks/locks?rev=9544&r1=9543&r2=9544&view=diff ============================================================================== --- trunk/libzypp/tests/zypp/data/Locks/locks (original) +++ trunk/libzypp/tests/zypp/data/Locks/locks Fri Apr 11 17:16:01 2008 @@ -1,5 +1 @@ -#repo cannot be tested due to possibly missing allias -kind: patch - -string: kde -attribute: pattern +global_string: zypper Modified: trunk/libzypp/zypp/Locks.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/Locks.cc?rev=9544&r1=9543&r2=9544&view=diff ============================================================================== --- trunk/libzypp/zypp/Locks.cc (original) +++ trunk/libzypp/zypp/Locks.cc Fri Apr 11 17:16:01 2008 @@ -20,12 +20,12 @@ #include "zypp/PoolQueryUtil.tcc" #include "zypp/ZYppCallbacks.h" #include "zypp/sat/SolvAttr.h" +#include "zypp/PathInfo.h" #undef ZYPP_BASE_LOGGER_LOGGROUP #define ZYPP_BASE_LOGGER_LOGGROUP "locks" #include "zypp/Locks.h" -#include "zypp/PathInfo.h" using namespace std; using namespace zypp; @@ -100,10 +100,12 @@ _pimpl->toRemove.end(), query); if ( i != _pimpl->toRemove.end() ) { + DBG << "query removed from toRemove" << endl; _pimpl->toRemove.erase(i); } else { + DBG << "query added as new" << endl; _pimpl->toAdd.push_back( query ); } } @@ -131,10 +133,12 @@ _pimpl->toAdd.end(), query); if ( i != _pimpl->toAdd.end() ) { + DBG << "query removed from added" << endl; _pimpl->toAdd.erase(i); } else { + DBG << "needed remove some old lock" << endl; _pimpl->toRemove.push_back( query ); } } @@ -264,8 +268,11 @@ { if (aborted()) return false; - if( q==query ) //identical + if( q==query ) + {//identical + DBG << "identical queries" << endl; return true; + } SavingLocksReport::ConflictState cs; switch( contains(q,solvs) ) @@ -284,10 +291,13 @@ { case SavingLocksReport::ABORT: aborted_ = true; + DBG << "abort merging" << endl; return false; case SavingLocksReport::DELETE: + DBG << "force delete" << endl; return true; case SavingLocksReport::IGNORE: + DBG << "skip lock" << endl; return false; } WAR << "should not reached, some state is missing" << endl; @@ -322,6 +332,7 @@ report->finish(SavingLocksReport::ABORTED); return; } + DBG << "writed "<< _pimpl->locks.size() << "locks" << endl; writePoolQueriesToFile( file, _pimpl->locks.begin(), _pimpl->locks.end() ); report->finish(SavingLocksReport::NO_ERROR); } -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org