From 7de72012efa37aee3ee871d9b1c4c0f653194cbc Mon Sep 17 00:00:00 2001
From: kaloyane <kaloyane>
Date: Tue, 25 Oct 2011 07:43:05 +0000
Subject: [PATCH] improve test

SVN: 23405
---
 ...stgresPlusFileSystemFreeSpaceProvider.java | 15 ++++++---
 ...esPlusFileSystemFreeSpaceProviderTest.java | 31 +++++++++++++------
 2 files changed, 32 insertions(+), 14 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProvider.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProvider.java
index 9345a681ee5..561a9975a37 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProvider.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProvider.java
@@ -76,14 +76,21 @@ public class PostgresPlusFileSystemFreeSpaceProvider implements IFreeSpaceProvid
 
     private final DataSource dataSource;
 
-    private final IFreeSpaceProvider fileSystemFreeSpaceProvider = new SimpleFreeSpaceProvider();
+    private final IFreeSpaceProvider fileSystemFreeSpaceProvider;
 
     public PostgresPlusFileSystemFreeSpaceProvider(Properties properties)
     {
-        executeVacuum = PropertyUtils.getBoolean(properties, EXECUTE_VACUUM_KEY, false);
-        
+        this(properties, new SimpleFreeSpaceProvider());
+    }
+
+    PostgresPlusFileSystemFreeSpaceProvider(Properties properties,
+            IFreeSpaceProvider fileSystemFreeSpaceProvider)
+    {
+        this.executeVacuum = PropertyUtils.getBoolean(properties, EXECUTE_VACUUM_KEY, false);
+
         String dataSourceName = PropertyUtils.getMandatoryProperty(properties, DATA_SOURCE_KEY);
-        dataSource = ServiceProvider.getDataSourceProvider().getDataSource(dataSourceName);
+        this.dataSource = ServiceProvider.getDataSourceProvider().getDataSource(dataSourceName);
+        this.fileSystemFreeSpaceProvider = fileSystemFreeSpaceProvider;
     }
 
     public long freeSpaceKb(HostAwareFile path) throws IOException
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProviderTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProviderTest.java
index 77c76990b1b..3feb155ffc2 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProviderTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProviderTest.java
@@ -26,7 +26,6 @@ import java.util.Properties;
 
 import javax.sql.DataSource;
 
-import org.apache.commons.io.FileSystemUtils;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.springframework.beans.factory.BeanFactory;
@@ -36,6 +35,7 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.common.filesystem.HostAwareFile;
+import ch.systemsx.cisd.common.filesystem.IFreeSpaceProvider;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IDataSourceProvider;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProviderTestWrapper;
 
@@ -50,6 +50,8 @@ public class PostgresPlusFileSystemFreeSpaceProviderTest extends AssertJUnit
     private PostgresPlusFileSystemFreeSpaceProvider provider;
 
     private Mockery context;
+
+    private IFreeSpaceProvider fsFreeSpaceProvider;
     private Connection connection;
 
     private BeanFactory mockApplicationContext;
@@ -97,18 +99,24 @@ public class PostgresPlusFileSystemFreeSpaceProviderTest extends AssertJUnit
         return props;
     }
 
+    private PostgresPlusFileSystemFreeSpaceProvider createProvider(boolean executeVacuum)
+    {
+        Properties props = createProperties(executeVacuum);
+        fsFreeSpaceProvider = context.mock(IFreeSpaceProvider.class);
+        return new PostgresPlusFileSystemFreeSpaceProvider(props, fsFreeSpaceProvider);
+    }
+
     @Test
     public void testNoVacuum() throws Exception
     {
-        Properties props = createProperties(false);
-        provider = new PostgresPlusFileSystemFreeSpaceProvider(props);
+        provider = createProvider(false);
 
         final long postgresFreeSpace = 1000L;
-        prepareFreeSpaceExpectations(postgresFreeSpace);
+        final long fsFreeSpace = 5001L;
+        prepareFreeSpaceExpectations(postgresFreeSpace, fsFreeSpace);
         
         File workDir = new File(".");
         HostAwareFile file = new HostAwareFile(workDir);
-        long fsFreeSpace = FileSystemUtils.freeSpaceKb(workDir.getAbsolutePath());
         long totalFreeSpace = provider.freeSpaceKb(file);
         
         assertEquals(fsFreeSpace + postgresFreeSpace, totalFreeSpace);
@@ -117,16 +125,15 @@ public class PostgresPlusFileSystemFreeSpaceProviderTest extends AssertJUnit
     @Test
     public void testWithVacuum() throws Exception
     {
-        Properties props = createProperties(true);
-        provider = new PostgresPlusFileSystemFreeSpaceProvider(props);
+        provider = createProvider(true);
 
         final long postgresFreeSpace = 1000L;
+        final long fsFreeSpace = 5001L;
         prepareVacuumExpectations();
-        prepareFreeSpaceExpectations(postgresFreeSpace);
+        prepareFreeSpaceExpectations(postgresFreeSpace, fsFreeSpace);
 
         File workDir = new File(".");
         HostAwareFile file = new HostAwareFile(workDir);
-        long fsFreeSpace = FileSystemUtils.freeSpaceKb(workDir.getAbsolutePath());
         long totalFreeSpace = provider.freeSpaceKb(file);
 
         assertEquals(fsFreeSpace + postgresFreeSpace, totalFreeSpace);
@@ -146,7 +153,8 @@ public class PostgresPlusFileSystemFreeSpaceProviderTest extends AssertJUnit
             });
     }
 
-    private void prepareFreeSpaceExpectations(final long freeSpace) throws Exception
+    private void prepareFreeSpaceExpectations(final long freeSpace, final long fsFreeSpace)
+            throws Exception
     {
         context.checking(new Expectations()
             {
@@ -162,6 +170,9 @@ public class PostgresPlusFileSystemFreeSpaceProviderTest extends AssertJUnit
 
                     one(rs).getLong(1);
                     will(returnValue(freeSpace));
+
+                    one(fsFreeSpaceProvider).freeSpaceKb(with(any(HostAwareFile.class)));
+                    will(returnValue(fsFreeSpace));
                 }
             });
     }
-- 
GitLab