- following behaviour for setPartitions
authorDuncan Mac-Vicar P <dmacvicar@suse.de>
Mon, 27 Aug 2007 21:51:29 +0000 (21:51 +0000)
committerDuncan Mac-Vicar P <dmacvicar@suse.de>
Mon, 27 Aug 2007 21:51:29 +0000 (21:51 +0000)
  - if they are not set, they are detected
  - if they are set, that value is used.
  - if value set or detected is empty, all disk usage
    information is read. Otherwise just values in those
    mount points.
    Should work for installation as long as detectPartitions
    is empty at installation. (#293039)

tests/cache/CacheStore_test.cc
zypp/parser/susetags/PackagesDuFileReader.cc
zypp/zypp_detail/ZYppImpl.cc
zypp/zypp_detail/ZYppImpl.h

index cb090a8..d91046e 100644 (file)
@@ -71,7 +71,13 @@ void check_kdelibs3_package( Package::Ptr p )
   BOOST_CHECK_EQUAL( p->size(), 38850584);
   BOOST_CHECK_EQUAL( p->location().downloadSize(), 16356019);
   
-  BOOST_CHECK_EQUAL( p->diskusage().size(), (unsigned)3);
+  BOOST_CHECK_EQUAL( p->diskusage().size(), (unsigned) 181);
+  for ( DiskUsage::iterator it = p->diskusage().begin();
+        it !=  p->diskusage().end();
+        ++it )
+  {
+    MIL << "disk usage entry " << (*it).path << endl;
+  }
 }
 
 /**
@@ -419,11 +425,12 @@ init_unit_test_suite( int argc, char *argv[] )
                                  (std::string const*)params, params+1));
 
   DiskUsageCounter::MountPointSet mounts;
-  mounts.insert( DiskUsageCounter::MountPoint("/") );
-  mounts.insert( DiskUsageCounter::MountPoint("/etc") );
-  mounts.insert( DiskUsageCounter::MountPoint("/opt/kde3/share/mimelnk/video") );
-  mounts.insert( DiskUsageCounter::MountPoint("/foo") );
-  mounts.insert( DiskUsageCounter::MountPoint("/bar") );
+//   mounts.insert( DiskUsageCounter::MountPoint("/") );
+//   mounts.insert( DiskUsageCounter::MountPoint("/etc") );
+//   mounts.insert( DiskUsageCounter::MountPoint("/opt/kde3/share/mimelnk/video") );
+//   mounts.insert( DiskUsageCounter::MountPoint("/foo") );
+//   mounts.insert( DiskUsageCounter::MountPoint("/bar") );
+  
   getZYpp()->setPartitions(mounts);
 
   test->add(BOOST_PARAM_TEST_CASE(&cache_write_susetags_normal_test,
index e74ff4e..bf6ca76 100644 (file)
@@ -47,10 +47,6 @@ namespace zypp
          {
             _mounts = getZYpp()->getPartitions();
             
-            // try to detect partitions if empty
-            if (_mounts.empty() )
-              _mounts =  DiskUsageCounter::detectMountPoints();
-            
             for ( DiskUsageCounter::MountPointSet::const_iterator it = _mounts.begin();
                   it != _mounts.end();
                   ++ it )
index 30f491b..3c5b423 100644 (file)
@@ -133,7 +133,6 @@ namespace zypp
     , _target(0)
     , _resolver( new Resolver(_pool.accessor()) )
     , _architecture( defaultArchitecture() )
-    , _disk_usage()
     {
       MIL << "libzypp: " << VERSION << " built " << __DATE__ << " " <<  __TIME__ << endl;
       MIL << "defaultTextLocale: '" << _textLocale << "'" << endl;
@@ -180,13 +179,21 @@ namespace zypp
     }
 
     DiskUsageCounter::MountPointSet ZYppImpl::diskUsage()
-    { return _disk_usage.disk_usage(pool()); }
+    { return _disk_usage->disk_usage(pool()); }
 
     void ZYppImpl::setPartitions(const DiskUsageCounter::MountPointSet &mp)
-    { _disk_usage.setMountPoints(mp); }
+    {
+      _disk_usage.reset(new DiskUsageCounter());
+      _disk_usage->setMountPoints(mp);
+    }
 
     DiskUsageCounter::MountPointSet ZYppImpl::getPartitions() const
-    { return _disk_usage.getMountPoints(); }
+    {
+      if (_disk_usage)
+        return _disk_usage->getMountPoints();
+      else
+        return DiskUsageCounter::detectMountPoints();
+    }
 
     //------------------------------------------------------------------------
     // target
index e8fdbd4..5cec314 100644 (file)
@@ -164,7 +164,7 @@ namespace zypp
       /** */
       Pathname _home_path;
       /** defined mount points, used for disk usage counting */
-      DiskUsageCounter _disk_usage;
+      shared_ptr<DiskUsageCounter> _disk_usage;
     };
     ///////////////////////////////////////////////////////////////////