You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by gd...@apache.org on 2004/02/29 14:14:11 UTC

cvs commit: incubator-geronimo/sandbox/webdav/src/test/org/apache/geronimo/datastore/impl/remote RemoteUseCaseTest.java

gdamour     2004/02/29 05:14:11

  Added:       sandbox/webdav/src/test/org/apache/geronimo/datastore/impl/local
                        LocalUseCaseTest.java AbstractUseCaseTest.java
                        LocalGFileDAOTest.java
               sandbox/webdav/src/test/org/apache/geronimo/datastore
                        Util.java
               sandbox/webdav/src/test/org/apache/geronimo/datastore/impl
                        DirtyMarkerImplTest.java
               sandbox/webdav/src/test/org/apache/geronimo/datastore/impl/remote
                        RemoteUseCaseTest.java
  Log:
  Local and remote use-case of a GFileManager.
  
  Revision  Changes    Path
  1.1                  incubator-geronimo/sandbox/webdav/src/test/org/apache/geronimo/datastore/impl/local/LocalUseCaseTest.java
  
  Index: LocalUseCaseTest.java
  ===================================================================
  /**
   *
   * Copyright 2004 The Apache Software Foundation
   *
   *  Licensed under the Apache License, Version 2.0 (the "License");
   *  you may not use this file except in compliance with the License.
   *  You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   *  Unless required by applicable law or agreed to in writing, software
   *  distributed under the License is distributed on an "AS IS" BASIS,
   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *  See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  
  package org.apache.geronimo.datastore.impl.local;
  
  import java.io.File;
  
  import org.apache.geronimo.datastore.Util;
  import org.apache.geronimo.datastore.impl.LockManager;
  import org.apache.geronimo.datastore.impl.local.LocalGFileManager;
  
  /**
   * This is a simple use-case.
   *
   * @version $Revision: 1.1 $ $Date: 2004/02/29 13:14:11 $
   */
  public class LocalUseCaseTest extends AbstractUseCaseTest {
  
      protected void setUp() throws Exception {
          LockManager lockManager = new LockManager();
          File root = new File(System.getProperty("java.io.tmpdir"),
                  "GFileManager");
          Util.recursiveDelete(root);
          root.mkdir();
          
          fileManager = new LocalGFileManager("test", root, lockManager);
      }
      
  }
  
  
  
  1.1                  incubator-geronimo/sandbox/webdav/src/test/org/apache/geronimo/datastore/impl/local/AbstractUseCaseTest.java
  
  Index: AbstractUseCaseTest.java
  ===================================================================
  /**
   *
   * Copyright 2004 The Apache Software Foundation
   *
   *  Licensed under the Apache License, Version 2.0 (the "License");
   *  you may not use this file except in compliance with the License.
   *  You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   *  Unless required by applicable law or agreed to in writing, software
   *  distributed under the License is distributed on an "AS IS" BASIS,
   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *  See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  
  package org.apache.geronimo.datastore.impl.local;
  
  import java.io.ByteArrayInputStream;
  import java.io.InputStream;
  import java.util.Map;
  
  import org.apache.geronimo.datastore.GFile;
  import org.apache.geronimo.datastore.GFileManager;
  
  import junit.framework.TestCase;
  
  /**
   *
   * @version $Revision: 1.1 $ $Date: 2004/02/29 13:14:11 $
   */
  public class AbstractUseCaseTest
      extends TestCase
  {
      
      protected GFileManager fileManager;
      
      public void testUseCase() throws Exception {
  
          byte[] content = "Dummy content".getBytes();
          
          fileManager.start();
          GFile file = fileManager.factoryGFile("test");
          fileManager.persistNew(file);
          file.addProperty("name1", "value1");
          file.addProperty("name2", "value2");
          file.addProperty("name3", "value3");
          file.setContent(new ByteArrayInputStream(content));
          fileManager.end();
          
          fileManager.start();
          InputStream in = file.getInputStream();
          int read;
          int nbRead = 0;
          while ( -1 < (read = in.read()) ) {
              assertEquals("Wrong content", content[nbRead], read);
              nbRead++;
          }
          Map properties = file.getProperties();
          assertEquals("Properties issue", 3, properties.size());
          assertEquals("Properties issue", "value1", properties.get("name1"));
          assertEquals("Properties issue", "value2", properties.get("name2"));
          assertEquals("Properties issue", "value3", properties.get("name3"));
          file.addProperty("name4", "value4");
          file.removeProperty("name3");
          fileManager.persistUpdate(file);
          fileManager.end();
          
          fileManager.start();
          properties = file.getProperties();
          assertEquals("Properties issue", 3, properties.size());
          assertEquals("Properties issue", "value1", properties.get("name1"));
          assertEquals("Properties issue", "value2", properties.get("name2"));
          assertEquals("Properties issue", "value4", properties.get("name4"));
          fileManager.persistDelete(file);
          fileManager.end();
      }
      
  }
  
  
  
  1.1                  incubator-geronimo/sandbox/webdav/src/test/org/apache/geronimo/datastore/impl/local/LocalGFileDAOTest.java
  
  Index: LocalGFileDAOTest.java
  ===================================================================
  /**
   *
   * Copyright 2004 The Apache Software Foundation
   *
   *  Licensed under the Apache License, Version 2.0 (the "License");
   *  you may not use this file except in compliance with the License.
   *  You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   *  Unless required by applicable law or agreed to in writing, software
   *  distributed under the License is distributed on an "AS IS" BASIS,
   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *  See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  
  package org.apache.geronimo.datastore.impl.local;
  
  import java.io.ByteArrayInputStream;
  import java.io.File;
  import java.util.HashMap;
  import java.util.Iterator;
  import java.util.Map;
  
  import org.apache.geronimo.datastore.Util;
  import org.apache.geronimo.datastore.impl.GFileDAO;
  import org.apache.geronimo.datastore.impl.GFileTO;
  import org.apache.geronimo.datastore.impl.LockManager;
  import org.apache.geronimo.datastore.impl.local.LocalGFileDAO;
  
  import junit.framework.TestCase;
  
  /**
   *
   * @version $Revision: 1.1 $ $Date: 2004/02/29 13:14:11 $
   */
  public class LocalGFileDAOTest extends TestCase
  {
  
      private File root;
      
      protected void setUp() throws Exception {
          root = new File(System.getProperty("java.io.tmpdir"), "GFileManager");
          Util.recursiveDelete(root);
          root.mkdir();
          LocalGFileManager fileManager =
              new LocalGFileManager("test", root, new LockManager());
      }
      
      public void testCRUD() throws Exception {
          String path = "TestFile";
          Map props = new HashMap();
          props.put("name1", "value1");
          props.put("name2", "value2");
          byte[] content = "Dummy content".getBytes();
          ByteArrayInputStream in = new ByteArrayInputStream(content);
          GFileTO fileTO = new GFileTO(path, props, in);
          GFileDAO fileDAO = new LocalGFileDAO(root);
  
          // Create.
          fileDAO.create(fileTO);
          
          // Read.
          fileTO = fileDAO.read(path);
          assertEquals("Wrong path", path, fileTO.getPath());
          props = fileTO.getProperties();
          assertEquals("Wrong # of properties", 2, props.size());
          for (Iterator iter = props.entrySet().iterator(); iter.hasNext();) {
              Map.Entry property = (Map.Entry) iter.next();
              String name = (String) property.getKey();
              if ( name.equals("name1") ) {
                  assertEquals("Wrong value", "value1", property.getValue());
              } else if ( name.equals("name2") ) {
                  assertEquals("Wrong value", "value2", property.getValue());
              } else {
                  assertTrue("Wrong property name {" + name + "}", false);
              }
          }
          
          // Update
          props.put("name3", "value3");
          fileDAO.update(fileTO);
          fileTO = fileDAO.read(path);
          props = fileTO.getProperties();
          assertEquals("Wrong # of properties", 3, props.size());
          
          // Delete
          fileDAO.delete(path);
          fileTO = fileDAO.read(path);
          assertFalse("Should not exist.", fileTO.exists());
      }
      
  }
  
  
  
  1.1                  incubator-geronimo/sandbox/webdav/src/test/org/apache/geronimo/datastore/Util.java
  
  Index: Util.java
  ===================================================================
  /**
   *
   * Copyright 2004 The Apache Software Foundation
   *
   *  Licensed under the Apache License, Version 2.0 (the "License");
   *  you may not use this file except in compliance with the License.
   *  You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   *  Unless required by applicable law or agreed to in writing, software
   *  distributed under the License is distributed on an "AS IS" BASIS,
   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *  See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  
  package org.apache.geronimo.datastore;
  
  import java.io.File;
  import java.io.IOException;
  
  /**
   *
   * @version $Revision: 1.1 $ $Date: 2004/02/29 13:14:11 $
   */
  public class Util {
      
      public static void recursiveDelete(File aRoot) throws IOException {
          if ( !aRoot.isDirectory() ) {
              return;
          }
          File[] files = aRoot.listFiles();
          for (int i = 0; i < files.length; i++) {
              File file = files[i];
              if (file.isDirectory()) {
                  recursiveDelete(file);
              } else {
                  file.delete();
              }
          }
          aRoot.delete();
      }
      
  }
  
  
  
  1.1                  incubator-geronimo/sandbox/webdav/src/test/org/apache/geronimo/datastore/impl/DirtyMarkerImplTest.java
  
  Index: DirtyMarkerImplTest.java
  ===================================================================
  /**
   *
   * Copyright 2004 The Apache Software Foundation
   *
   *  Licensed under the Apache License, Version 2.0 (the "License");
   *  you may not use this file except in compliance with the License.
   *  You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   *  Unless required by applicable law or agreed to in writing, software
   *  distributed under the License is distributed on an "AS IS" BASIS,
   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *  See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  
  package org.apache.geronimo.datastore.impl;
  
  import junit.framework.TestCase;
  
  /**
   *
   * @version $Revision: 1.1 $ $Date: 2004/02/29 13:14:11 $
   */
  public class DirtyMarkerImplTest extends TestCase {
  
      public void testNew() {
          DirtyMarkerImpl dirtyMarker = new DirtyMarkerImpl();
          dirtyMarker.setIsNew(true);
  
          Exception ex = null;
          try {
              dirtyMarker.setIsDelete(true);
          } catch (IllegalArgumentException e) {
              ex = e;
          }
          assertNotNull("Transition should ne impossible", ex);
          
          try {
              dirtyMarker.setIsDirty(true);
          } catch (IllegalArgumentException e) {
              ex = e;
          }
          assertNotNull("Transition should ne impossible", ex);
      }
  
      public void testDirty() {
          DirtyMarkerImpl dirtyMarker = new DirtyMarkerImpl();
          dirtyMarker.setIsDirty(true);
  
          Exception ex = null;
          try {
              dirtyMarker.setIsNew(true);
          } catch (IllegalArgumentException e) {
              ex = e;
          }
          assertNotNull("Transition should ne impossible", ex);
          
          try {
              dirtyMarker.setIsDelete(true);
          } catch (IllegalArgumentException e) {
              ex = e;
          }
          assertNotNull("Transition should ne impossible", ex);
      }
      
      public void testDelete() {
          DirtyMarkerImpl dirtyMarker = new DirtyMarkerImpl();
          dirtyMarker.setIsDelete(true);
  
          Exception ex = null;
          try {
              dirtyMarker.setIsNew(true);
          } catch (IllegalArgumentException e) {
              ex = e;
          }
          assertNotNull("Transition should ne impossible", ex);
          
          try {
              dirtyMarker.setIsDirty(true);
          } catch (IllegalArgumentException e) {
              ex = e;
          }
          assertNotNull("Transition should ne impossible", ex);
      }
      
  }
  
  
  
  1.1                  incubator-geronimo/sandbox/webdav/src/test/org/apache/geronimo/datastore/impl/remote/RemoteUseCaseTest.java
  
  Index: RemoteUseCaseTest.java
  ===================================================================
  /**
   *
   * Copyright 2004 The Apache Software Foundation
   *
   *  Licensed under the Apache License, Version 2.0 (the "License");
   *  you may not use this file except in compliance with the License.
   *  You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   *  Unless required by applicable law or agreed to in writing, software
   *  distributed under the License is distributed on an "AS IS" BASIS,
   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *  See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  
  package org.apache.geronimo.datastore.impl.remote;
  
  import java.io.File;
  import java.net.InetAddress;
  import java.util.Collections;
  
  
  import org.apache.geronimo.datastore.GFileManager;
  import org.apache.geronimo.datastore.Util;
  import org.apache.geronimo.datastore.impl.LockManager;
  import org.apache.geronimo.datastore.impl.local.AbstractUseCaseTest;
  import org.apache.geronimo.datastore.impl.local.LocalGFileManager;
  import org.apache.geronimo.datastore.impl.remote.datastore.GFileManagerClient;
  import org.apache.geronimo.datastore.impl.remote.datastore.GFileManagerProxy;
  import org.apache.geronimo.datastore.impl.remote.messaging.ServantNode;
  import org.apache.geronimo.datastore.impl.remote.messaging.ServerNode;
  
  /**
   * This is a remote use-case.
   *
   * @version $Revision: 1.1 $ $Date: 2004/02/29 13:14:11 $
   */
  public class RemoteUseCaseTest extends AbstractUseCaseTest {
  
      protected void setUp() throws Exception {
          LockManager lockManager = new LockManager();
          File root = new File(System.getProperty("java.io.tmpdir"),
                  "GFileManager");
          Util.recursiveDelete(root);
          root.mkdir();
          
          GFileManager delegate;
          delegate = new LocalGFileManager("test", root, lockManager);
          InetAddress address = InetAddress.getLocalHost();
          int port = 8080;
          GFileManagerProxy proxy = new GFileManagerProxy(delegate);
          ServerNode server = new ServerNode("MasterNode",
                  Collections.singleton(proxy), address, port, 2);
          server.doStart();
          proxy.doStart();
  
          fileManager = new GFileManagerClient("test");
          ServantNode servant = new ServantNode(
                  "ChildNode", Collections.singleton(fileManager), address, port, 10);
          servant.doStart();
          ((GFileManagerClient) fileManager).doStart();
      }
      
  }
  
  
  

Re: cvs commit: incubator-geronimo/sandbox/webdav/src/test/org/apache/geronimo/datastore/impl/remote RemoteUseCaseTest.java

Posted by Jacek Laskowski <jl...@apache.org>.
Dain Sundstrom wrote:

>> That rises a very interesting question - where do we put  
>> methods/classes that are common to several modules?
> 
> 
> I'd vote no.  It just leads to a highly coupled system, and our commons  
> module depends on to much other stuff.  If we were to get our commons  
> module stand-alone, then I might change my mind.

I thought similarly, but what do we have instead - copying files between 
modules, just to not tie them up together is not the way to follow, 
isn't it?

Hopefully in that particular case moving the method to common module is 
the solution as it doesn't incur any further dependencies. Other copies 
would be sorted out as they pop up.

> -dain

Jacek

Re: cvs commit: incubator-geronimo/sandbox/webdav/src/test/org/apache/geronimo/datastore/impl/remote RemoteUseCaseTest.java

Posted by Dain Sundstrom <da...@coredevelopers.net>.
On Feb 29, 2004, at 11:14 AM, Jacek Laskowski wrote:

> gdamour@apache.org wrote:
>> gdamour     2004/02/29 05:14:11
> ...
>>   1.1                   
>> incubator-geronimo/sandbox/webdav/src/test/org/apache/geronimo/ 
>> datastore/Util.java
> ...
>>   package org.apache.geronimo.datastore;
>>     import java.io.File;
>>   import java.io.IOException;
>>     /**
>>    *
>>    * @version $Revision: 1.1 $ $Date: 2004/02/29 13:14:11 $
>>    */
>>   public class Util {
>>             public static void recursiveDelete(File aRoot) throws  
>> IOException {
>
> The method already exists in  
> ./modules/deployment/src/java/org/apache/geronimo/deployment/util/ 
> FileUtil.java.
>
> That rises a very interesting question - where do we put  
> methods/classes that are common to several modules?

I'd vote no.  It just leads to a highly coupled system, and our commons  
module depends on to much other stuff.  If we were to get our commons  
module stand-alone, then I might change my mind.

-dain


Re: cvs commit: incubator-geronimo/sandbox/webdav/src/test/org/apache/geronimo/datastore/impl/remote RemoteUseCaseTest.java

Posted by Jacek Laskowski <jl...@apache.org>.
gdamour@apache.org wrote:
> gdamour     2004/02/29 05:14:11
...
>   1.1                  incubator-geronimo/sandbox/webdav/src/test/org/apache/geronimo/datastore/Util.java
...
>   package org.apache.geronimo.datastore;
>   
>   import java.io.File;
>   import java.io.IOException;
>   
>   /**
>    *
>    * @version $Revision: 1.1 $ $Date: 2004/02/29 13:14:11 $
>    */
>   public class Util {
>       
>       public static void recursiveDelete(File aRoot) throws IOException {

The method already exists in 
./modules/deployment/src/java/org/apache/geronimo/deployment/util/FileUtil.java. 


That rises a very interesting question - where do we put methods/classes 
that are common to several modules?

>           Exception ex = null;
>           try {
>               dirtyMarker.setIsDelete(true);
>           } catch (IllegalArgumentException e) {
>               ex = e;
>           }
>           assertNotNull("Transition should ne impossible", ex);

Why do you check whether or not ex is not null that way? Unless I'm 
mistaken, it boils down to the following junit pattern:

  try
  {
    dirtyMarker.setIsDelete(true);
    fail("Transition should not be impossible; IllegalArgumentException 
expected");
  } catch (IllegalArgumentException expected) {
  }

There's also a typo in the message - 'should ne impossible' == 'should 
not be possible'.

Cheers,
Jacek