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