Some minor cleanups. Added a few missing operations to console.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3182 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Britt Park
2006-06-22 00:49:10 +00:00
parent 1318a5204b
commit 91e39c8fd6
8 changed files with 77 additions and 33 deletions

View File

@@ -94,6 +94,7 @@ public class AVMInteractiveConsole
while (!done) while (!done)
{ {
String command[] = null; String command[] = null;
System.out.print("> ");
try try
{ {
String line = fIn.readLine(); String line = fIn.readLine();
@@ -113,6 +114,7 @@ public class AVMInteractiveConsole
{ {
continue; continue;
} }
long start = System.currentTimeMillis();
try try
{ {
if (command[0].equals("ls")) if (command[0].equals("ls"))
@@ -131,6 +133,17 @@ public class AVMInteractiveConsole
System.out.println(name + " " + listing.get(name)); System.out.println(name + " " + listing.get(name));
} }
} }
else if (command[0].equals("lsr"))
{
if (command.length != 3)
{
System.err.println("Syntax error.");
continue;
}
AVMNodeDescriptor desc = fService.lookup(Integer.parseInt(command[2]),
command[1]);
recursiveList(desc, 0);
}
else if (command[0].equals("lsrep")) else if (command[0].equals("lsrep"))
{ {
List<String> repos = fService.getRepositoryNames(); List<String> repos = fService.getRepositoryNames();
@@ -179,6 +192,15 @@ public class AVMInteractiveConsole
} }
fService.createDirectory(command[1], command[2]); fService.createDirectory(command[1], command[2]);
} }
else if (command[0].equals("mkbr"))
{
if (command.length != 5)
{
System.err.println("Syntax error.");
continue;
}
fService.createBranch(Integer.parseInt(command[4]), command[1], command[2], command[3]);
}
else if (command[0].equals("mkldir")) else if (command[0].equals("mkldir"))
{ {
if (command.length != 4) if (command.length != 4)
@@ -188,6 +210,24 @@ public class AVMInteractiveConsole
} }
fService.createLayeredDirectory(command[1], command[2], command[3]); fService.createLayeredDirectory(command[1], command[2], command[3]);
} }
else if (command[0].equals("retarget"))
{
if (command.length != 3)
{
System.err.println("Syntax error.");
continue;
}
fService.retargetLayeredDirectory(command[1], command[2]);
}
else if (command[0].equals("mkprimary"))
{
if (command.length != 2)
{
System.err.println("Syntax error.");
continue;
}
fService.makePrimary(command[1]);
}
else if (command[0].equals("mklfile")) else if (command[0].equals("mklfile"))
{ {
if (command.length != 4) if (command.length != 4)
@@ -351,9 +391,28 @@ public class AVMInteractiveConsole
{ {
e.printStackTrace(System.err); e.printStackTrace(System.err);
} }
System.out.println("Time: " + (System.currentTimeMillis() - start));
} }
fReaper.shutDown(); fReaper.shutDown();
} }
private void recursiveList(AVMNodeDescriptor dir, int indent)
{
Map<String, AVMNodeDescriptor> listing = fService.getDirectoryListing(dir);
for (String name : listing.keySet())
{
AVMNodeDescriptor child = listing.get(name);
for (int i = 0; i < indent; i++)
{
System.out.print(' ');
}
System.out.println(name + " " + child);
if (child.isDirectory())
{
recursiveList(child, indent + 2);
}
}
}
} }

View File

@@ -63,7 +63,7 @@ interface AVMNode
* @param lPath The Lookup for this node. * @param lPath The Lookup for this node.
* @return A copy of ourself or null if no copy was necessary. * @return A copy of ourself or null if no copy was necessary.
*/ */
public AVMNode possiblyCopy(Lookup lPath); public AVMNode copy(Lookup lPath);
/** /**
* Set the repository for a node. * Set the repository for a node.

View File

@@ -35,9 +35,11 @@ public class AVMStressTest extends AVMServiceTestBase
{ {
try try
{ {
int nCopies = 1;
int nThreads = 16;
BulkLoader loader = new BulkLoader(fService); BulkLoader loader = new BulkLoader(fService);
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
for (int i = 0; i < 1; i++) for (int i = 0; i < nCopies; i++)
{ {
fService.createDirectory("main:/", "" + i); fService.createDirectory("main:/", "" + i);
loader.recursiveLoad("source", "main:/" + i); loader.recursiveLoad("source", "main:/" + i);
@@ -46,17 +48,17 @@ public class AVMStressTest extends AVMServiceTestBase
System.out.println("Load time: " + (System.currentTimeMillis() - start)); System.out.println("Load time: " + (System.currentTimeMillis() - start));
List<AVMTester> testers = new ArrayList<AVMTester>(); List<AVMTester> testers = new ArrayList<AVMTester>();
List<Thread> threads = new ArrayList<Thread>(); List<Thread> threads = new ArrayList<Thread>();
for (int i = 0; i < 8; i++) for (int i = 0; i < nThreads; i++)
{ {
AVMTester tester AVMTester tester
= new AVMTester(400, // create file. = new AVMTester(800, // create file.
10, // create dir, 20, // create dir,
0, // rename 0, // rename
2, // create layered dir 2, // create layered dir
5, // create layered file 5, // create layered file
10, // remove node 10, // remove node
20, // modify file. 20, // modify file.
3600, // read file 3200, // read file
10, // snapshot 10, // snapshot
10000, // # ops 10000, // # ops
fService, fService,
@@ -74,12 +76,12 @@ public class AVMStressTest extends AVMServiceTestBase
thread.start(); thread.start();
} }
int exited = 0; int exited = 0;
while (exited != 8) while (exited != nThreads)
{ {
try try
{ {
Thread.sleep(2000); Thread.sleep(2000);
for (int i = 0; i < 8; i++) for (int i = 0; i < nThreads; i++)
{ {
if (threads.get(i) == null) if (threads.get(i) == null)
{ {

View File

@@ -226,12 +226,8 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec
* @param lPath * @param lPath
* @return The copy or null. * @return The copy or null.
*/ */
public AVMNodeImpl possiblyCopy(Lookup lPath) public AVMNode copy(Lookup lPath)
{ {
if (!lPath.needsCopying())
{
return null;
}
// Capture the repository. // Capture the repository.
Repository repo = lPath.getRepository(); Repository repo = lPath.getRepository();
// Otherwise we do an actual copy. // Otherwise we do an actual copy.

View File

@@ -66,7 +66,7 @@ class LayeredFileNodeImpl extends FileNodeImpl implements LayeredFileNode
* Copy on write logic. * Copy on write logic.
* @param lPath The path by which this was found. * @param lPath The path by which this was found.
*/ */
public AVMNode possiblyCopy(Lookup lPath) public AVMNode copy(Lookup lPath)
{ {
// LayeredFileNodes are always copied. // LayeredFileNodes are always copied.
Lookup lookup = SuperRepository.GetInstance().lookup(-1, fIndirection); Lookup lookup = SuperRepository.GetInstance().lookup(-1, fIndirection);

View File

@@ -153,20 +153,15 @@ class Lookup
fComponents.add(comp); fComponents.add(comp);
fPosition++; fPosition++;
// If we are in a write context do copy on write. // If we are in a write context do copy on write.
if (write) if (write && fNeedsCopying)
{ {
// Possibly copy. node = node.copy(this);
node = node.possiblyCopy(this);
if (node == null)
{
return;
}
// Node was copied.
fComponents.get(fPosition).setNode(node); fComponents.get(fPosition).setNode(node);
if (fPosition == 0) if (fPosition == 0)
{ {
// Inform the repository of a new root. // Inform the repository of a new root.
fRepository.setNewRoot((DirectoryNode)node); fRepository.setNewRoot((DirectoryNode)node);
SuperRepository.GetInstance().getSession().flush();
return; return;
} }
// Not the root. Check if we are the top layer and insert this into it's parent. // Not the root. Check if we are the top layer and insert this into it's parent.
@@ -175,6 +170,7 @@ class Lookup
fTopLayer = (LayeredDirectoryNode)node; fTopLayer = (LayeredDirectoryNode)node;
} }
((DirectoryNode)fComponents.get(fPosition - 1).getNode()).putChild(name, node); ((DirectoryNode)fComponents.get(fPosition - 1).getNode()).putChild(name, node);
SuperRepository.GetInstance().getSession().flush();
} }
} }

View File

@@ -202,13 +202,8 @@ class PlainDirectoryNodeImpl extends DirectoryNodeImpl implements PlainDirectory
* @param lPath The lookup path. * @param lPath The lookup path.
* @return * @return
*/ */
public AVMNode possiblyCopy(Lookup lPath) public AVMNode copy(Lookup lPath)
{ {
if (!lPath.needsCopying())
{
return null;
}
// Otherwise do an actual copy.
DirectoryNode newMe = null; DirectoryNode newMe = null;
// In a layered context a copy on write creates a new // In a layered context a copy on write creates a new
// layered directory. // layered directory.

View File

@@ -84,12 +84,8 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode
* Copy on write logic. * Copy on write logic.
* @param lPath The lookup path. * @param lPath The lookup path.
*/ */
public AVMNodeImpl possiblyCopy(Lookup lPath) public AVMNode copy(Lookup lPath)
{ {
if (!lPath.needsCopying())
{
return null;
}
PlainFileNodeImpl newMe = new PlainFileNodeImpl(this, lPath.getRepository()); PlainFileNodeImpl newMe = new PlainFileNodeImpl(this, lPath.getRepository());
newMe.setAncestor(this); newMe.setAncestor(this);
return newMe; return newMe;