From 73f42e8f271a8bfec130d360f93cf627c432a85a Mon Sep 17 00:00:00 2001 From: "bjoern.kolbeck" Date: Thu, 7 May 2009 07:10:30 +0000 Subject: [PATCH 01/97] removed log_* calls (not available on all distros) git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@584 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- servers/init.d-scripts/xtreemfs-dir | 6 +----- servers/init.d-scripts/xtreemfs-mrc | 5 ----- servers/init.d-scripts/xtreemfs-osd | 5 ----- 3 files changed, 1 insertion(+), 15 deletions(-) diff --git a/servers/init.d-scripts/xtreemfs-dir b/servers/init.d-scripts/xtreemfs-dir index 56c6a64c6..7e111f3f5 100755 --- a/servers/init.d-scripts/xtreemfs-dir +++ b/servers/init.d-scripts/xtreemfs-dir @@ -56,7 +56,6 @@ start() { if [ -f $LOCKFILE ] then echo -n "XtreemFS Directory Service (DIR) already started" - log_failure_msg echo return 0 fi @@ -75,10 +74,8 @@ start() { if [ -e /proc/$PROCPID ] then - log_success_msg echo else - log_failure_msg echo return 1 fi @@ -93,7 +90,6 @@ stop() { then echo -n "stopping XtreemFS Directory Service (DIR)..." killproc -p $PID_DS java - log_success_msg echo fi @@ -139,7 +135,7 @@ case "$1" in ;; *) echo -e "Usage: $0 {start|stop|restart|reload|status}\n" - log_failure_msg + return 1 ;; esac diff --git a/servers/init.d-scripts/xtreemfs-mrc b/servers/init.d-scripts/xtreemfs-mrc index 9f53c6346..9ea038a84 100644 --- a/servers/init.d-scripts/xtreemfs-mrc +++ b/servers/init.d-scripts/xtreemfs-mrc @@ -57,7 +57,6 @@ start() { if [ -f $LOCKFILE ] then echo -n "XtreemFS Metadata and Replica Catalog (MRC) already started" - log_failure_msg echo return 0 fi @@ -76,10 +75,8 @@ start() { if [ -e /proc/$PROCPID ] then - log_success_msg echo else - log_failure_msg echo return 1 fi @@ -94,7 +91,6 @@ stop() { then echo -n "stopping XtreemFS Metadata and Replica Catalog (MRC)..." killproc -p $PID_MRC java - log_success_msg echo fi @@ -140,7 +136,6 @@ case "$1" in ;; *) echo -e "Usage: $0 {start|stop|restart|reload|status}\n" - log_failure_msg exit 1 ;; esac diff --git a/servers/init.d-scripts/xtreemfs-osd b/servers/init.d-scripts/xtreemfs-osd index 588c24273..055b73960 100644 --- a/servers/init.d-scripts/xtreemfs-osd +++ b/servers/init.d-scripts/xtreemfs-osd @@ -57,7 +57,6 @@ start() { if [ -f $LOCKFILE ] then echo -n "XtreemFS Object Storage Device (OSD) already started" - log_failure_msg echo return 0 fi @@ -76,10 +75,8 @@ start() { if [ -e /proc/$PROCPID ] then - log_success_msg echo else - log_failure_msg echo return 1 fi @@ -94,7 +91,6 @@ stop() { then echo -n "stopping XtreemFS Object Storage Device (OSD)..." killproc -p $PID_OSD java - log_success_msg echo fi @@ -140,7 +136,6 @@ case "$1" in ;; *) echo -e "Usage: $0 {start|stop|restart|reload|status}\n" - log_failure_msg exit 1 ;; esac -- GitLab From 7d1934d2d35bc89c9b813df94a430244d7c8b9e6 Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Thu, 7 May 2009 07:35:29 +0000 Subject: [PATCH 02/97] client: xtfs_send: updated against Yield StructuredInputStream changes git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@585 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- client/src/org/xtreemfs/client/xtfs_send.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/client/src/org/xtreemfs/client/xtfs_send.cpp b/client/src/org/xtreemfs/client/xtfs_send.cpp index 6fa724f84..219ca5f8d 100644 --- a/client/src/org/xtreemfs/client/xtfs_send.cpp +++ b/client/src/org/xtreemfs/client/xtfs_send.cpp @@ -47,18 +47,22 @@ namespace org return 0; } - YIELD::Object* readObject( const Declaration& decl, YIELD::Object* s = NULL ) + YIELD::Object* readObject( const Declaration& decl, YIELD::Object* value = NULL, YIELD::Object::GeneralType value_general_type = YIELD::Object::UNKNOWN ) { - if ( s ) + if ( value ) { - switch ( s->get_general_type() ) + if ( value_general_type == YIELD::Object::UNKNOWN ) + value_general_type = value->get_general_type(); + + switch ( value_general_type ) { - case YIELD::Object::STRING: readString( decl, static_cast( *s ) ); break; - case YIELD::Object::STRUCT: s->deserialize( *this ); break; + case YIELD::Object::STRING: readString( decl, static_cast( *value ) ); break; + case YIELD::Object::STRUCT: value->deserialize( *this ); break; + default: DebugBreak(); break; } } - return s; + return value; } void readString( const Declaration& decl, std::string& str ) -- GitLab From bc0904b333a43feb81bc41908d0a6443094094b0 Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Thu, 7 May 2009 07:37:59 +0000 Subject: [PATCH 03/97] client: xtfs_send: Linux fixes git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@586 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- client/src/org/xtreemfs/client/xtfs_send.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/org/xtreemfs/client/xtfs_send.cpp b/client/src/org/xtreemfs/client/xtfs_send.cpp index 219ca5f8d..1909077ce 100644 --- a/client/src/org/xtreemfs/client/xtfs_send.cpp +++ b/client/src/org/xtreemfs/client/xtfs_send.cpp @@ -58,7 +58,7 @@ namespace org { case YIELD::Object::STRING: readString( decl, static_cast( *value ) ); break; case YIELD::Object::STRUCT: value->deserialize( *this ); break; - default: DebugBreak(); break; + default: YIELD::DebugBreak(); break; } } -- GitLab From 60fb86aa13206949197821ff94cc7ff9ead8183b Mon Sep 17 00:00:00 2001 From: "fx.langner" Date: Thu, 7 May 2009 09:11:45 +0000 Subject: [PATCH 04/97] -DefaultDirConfig: is now deprecated. -Cleanup: added some usability enhancements. git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@589 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- servers/man/man1/xtfs_cleanup.1 | 2 + .../org/xtreemfs/utils/DefaultDirConfig.java | 9 +- .../org/xtreemfs/utils/xtfs_cleanup_osd.java | 233 ++++++++++-------- 3 files changed, 139 insertions(+), 105 deletions(-) diff --git a/servers/man/man1/xtfs_cleanup.1 b/servers/man/man1/xtfs_cleanup.1 index 3204981bb..66f7c27e2 100644 --- a/servers/man/man1/xtfs_cleanup.1 +++ b/servers/man/man1/xtfs_cleanup.1 @@ -31,6 +31,8 @@ Cleans up the OSD with the given uuid. \fB-stop\fP suspend the currently running cleanup .TP \fB-p\fP your administrator password, if password-protection is enabled +.TP +\fB-dir\fP the path to the DIR configuration file. .SH "SEE ALSO" .BR xtfs_mount (1), diff --git a/servers/src/org/xtreemfs/utils/DefaultDirConfig.java b/servers/src/org/xtreemfs/utils/DefaultDirConfig.java index 0583a9309..0e86b8b12 100644 --- a/servers/src/org/xtreemfs/utils/DefaultDirConfig.java +++ b/servers/src/org/xtreemfs/utils/DefaultDirConfig.java @@ -24,11 +24,18 @@ package org.xtreemfs.utils; -import org.xtreemfs.common.config.*; import java.io.IOException; import java.net.InetSocketAddress; import java.util.Properties; +import org.xtreemfs.common.config.Config; +import org.xtreemfs.dir.DIRConfig; + +/** + * @deprecated use {@link DIRConfig} instead! + * + */ +@Deprecated public class DefaultDirConfig extends Config { protected InetSocketAddress directoryService; diff --git a/servers/src/org/xtreemfs/utils/xtfs_cleanup_osd.java b/servers/src/org/xtreemfs/utils/xtfs_cleanup_osd.java index 7482f8362..af1fd8ebb 100644 --- a/servers/src/org/xtreemfs/utils/xtfs_cleanup_osd.java +++ b/servers/src/org/xtreemfs/utils/xtfs_cleanup_osd.java @@ -25,19 +25,22 @@ package org.xtreemfs.utils; import java.io.FileInputStream; +import java.io.IOException; import java.net.InetSocketAddress; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import org.xtreemfs.common.TimeSync; +import org.xtreemfs.common.logging.Logging; import org.xtreemfs.common.uuids.ServiceUUID; import org.xtreemfs.common.uuids.UUIDResolver; +import org.xtreemfs.dir.DIRConfig; import org.xtreemfs.dir.client.DIRClient; import org.xtreemfs.foundation.SSLOptions; import org.xtreemfs.foundation.oncrpc.client.RPCNIOSocketClient; import org.xtreemfs.foundation.oncrpc.client.RPCResponse; -import org.xtreemfs.common.logging.Logging; import org.xtreemfs.interfaces.StringSet; import org.xtreemfs.osd.client.OSDClient; import org.xtreemfs.utils.CLIParser.CliOption; @@ -49,13 +52,15 @@ import org.xtreemfs.utils.CLIParser.CliOption; * @author flangner */ public class xtfs_cleanup_osd { - private static final String DEFAULT_DIR_CONFIG = "/etc/xos/xtreemfs/default_dir"; + private static final String DEFAULT_DIR_CONFIG = "config/dirconfig.properties"; private static OSDClient osd; private static DIRClient dir; - private static RPCNIOSocketClient client; + private static RPCNIOSocketClient dirClient; + + private static RPCNIOSocketClient osdClient; private static InetSocketAddress osdAddr; @@ -67,109 +72,128 @@ public class xtfs_cleanup_osd { * @throws Exception */ public static void main(String[] args) throws Exception { - Logging.start(Logging.LEVEL_ERROR); + try { + Logging.start(Logging.LEVEL_ERROR); - // parse the call arguments - Map options = new HashMap(); - List arguments = new ArrayList(1); - options.put("h", new CliOption(CliOption.OPTIONTYPE.SWITCH)); - options.put("r", new CliOption(CliOption.OPTIONTYPE.SWITCH)); - options.put("e", new CliOption(CliOption.OPTIONTYPE.SWITCH)); - options.put("deleteVolumes", new CliOption(CliOption.OPTIONTYPE.SWITCH)); - options.put("i", new CliOption(CliOption.OPTIONTYPE.SWITCH)); - options.put("stop", new CliOption(CliOption.OPTIONTYPE.SWITCH)); - options.put("p", new CliOption(CliOption.OPTIONTYPE.STRING)); - - CLIParser.parseCLI(args, options, arguments); - - if (arguments.size() != 1 || options.get("h").switchValue) { - usage(); - return; - } - - boolean remove = options.get("e").switchValue; - boolean restore = options.get("r").switchValue; - boolean deleteVolumes = options.get("deleteVolumes").switchValue; - boolean interactive = options.get("i").switchValue; - boolean stop = options.get("stop").switchValue; - password = (options.get("p").stringValue != null) ? options.get("p").stringValue : ""; - - // read default settings for the OSD - String osdUUID = null; - if (arguments.get(0).startsWith("uuid:")) { - osdUUID = arguments.get(0).substring("uuid:".length()); - } else { - error("There was no UUID for the OSD given!"); - } - - // load SSL options - DefaultDirConfig cfg = new DefaultDirConfig(DEFAULT_DIR_CONFIG); - cfg.read(); - SSLOptions sslOptions = null; - if (cfg.isSslEnabled()) { - String serviceCredsFile = cfg.getServiceCredsFile(); - String serviceCredsPass = cfg.getServiceCredsPassphrase(); - String trustedCAsFile = cfg.getTrustedCertsFile(); - String trustedCAsPass = cfg.getTrustedCertsPassphrase(); - sslOptions = new SSLOptions(new FileInputStream(serviceCredsFile), serviceCredsPass, - new FileInputStream(trustedCAsFile), trustedCAsPass); - } - - if (remove && restore) error("Zombies cannot be deleted and restored at the same time!"); - - // connect to the OSD - client = new RPCNIOSocketClient(sslOptions, 10000, 5*60*1000); - client.start(); - client.waitForStartup(); - - osd = new OSDClient(client); - dir = new DIRClient(client,cfg.getDirectoryService()); + // parse the call arguments + Map options = new HashMap(); + List arguments = new ArrayList(1); + options.put("h", new CliOption(CliOption.OPTIONTYPE.SWITCH)); + options.put("r", new CliOption(CliOption.OPTIONTYPE.SWITCH)); + options.put("e", new CliOption(CliOption.OPTIONTYPE.SWITCH)); + options.put("deleteVolumes", new CliOption(CliOption.OPTIONTYPE.SWITCH)); + options.put("i", new CliOption(CliOption.OPTIONTYPE.SWITCH)); + options.put("stop", new CliOption(CliOption.OPTIONTYPE.SWITCH)); + options.put("p", new CliOption(CliOption.OPTIONTYPE.STRING)); + options.put("dir", new CliOption(CliOption.OPTIONTYPE.STRING)); + + CLIParser.parseCLI(args, options, arguments); + + if (arguments.size() != 1 || options.get("h").switchValue) { + usage(); + return; + } + + boolean remove = options.get("e").switchValue; + boolean restore = options.get("r").switchValue; + boolean deleteVolumes = options.get("deleteVolumes").switchValue; + boolean interactive = options.get("i").switchValue; + boolean stop = options.get("stop").switchValue; + String dirCfgPath = (options.get("dir").stringValue != null) ? options.get("dir").stringValue : DEFAULT_DIR_CONFIG; + password = (options.get("p").stringValue != null) ? options.get("p").stringValue : ""; + + // read default settings for the OSD + String osdUUID = null; + if (arguments.get(0).startsWith("uuid:")) { + osdUUID = arguments.get(0).substring("uuid:".length()); + } else { + error("There was no UUID for the OSD given!"); + } + + // load SSL options + SSLOptions sslOptions = null; + DIRConfig cfg = null; + try { + cfg = new DIRConfig(dirCfgPath); + cfg.read(); + if (cfg.isUsingSSL()) { + String serviceCredsFile = cfg.getServiceCredsFile(); + String serviceCredsPass = cfg.getServiceCredsPassphrase(); + String trustedCAsFile = cfg.getTrustedCertsFile(); + String trustedCAsPass = cfg.getTrustedCertsPassphrase(); + sslOptions = new SSLOptions(new FileInputStream(serviceCredsFile), serviceCredsPass, + new FileInputStream(trustedCAsFile), trustedCAsPass); + } + } catch (IOException e){ + error("Default DIR configuration not found!"); + } - - if (!UUIDResolver.isRunning()) { - UUIDResolver.start(dir, 1000, 1000); - } - ServiceUUID UUIDService = new ServiceUUID(osdUUID); - UUIDService.resolve(); - osdAddr = UUIDService.getAddress(); - UUIDResolver.shutdown(); - - try { - if (stop) { - if (!isRunningCleanup()) error("No cleanup running on the given OSD."); - stop(); - for (String result : getResult()) { - System.out.println(result); - } - } else if (interactive) { - if (isRunningCleanup()) stop(); - start(remove,deleteVolumes,restore); - - boolean isRunning = true; - while (isRunning) { - System.out.print(getState()+"\r"); - Thread.sleep(3000); - - isRunning = isRunningCleanup(); - } - System.out.println(); - for (String result : getResult()) { - System.out.println(result); - } - } else { - if (isRunningCleanup()) stop(); - - start(remove, deleteVolumes, restore); - System.out.println("Cleanup is running."); - } - } catch (Exception e) { - error("Operation could not be performed because: "+e.getMessage()); - } finally { - client.shutdown(); - client.waitForShutdown(); - } - - System.exit(0); + if (remove && restore) error("Zombies cannot be deleted and restored at the same time!"); + + // connect to the OSD + osdClient = new RPCNIOSocketClient(sslOptions, 10000, 5*60*1000); + osdClient.start(); + osdClient.waitForStartup(); + osd = new OSDClient(osdClient); + + dirClient = new RPCNIOSocketClient(sslOptions, 10000, 5*60*1000); + dirClient.start(); + dirClient.waitForStartup(); + dir = new DIRClient(dirClient,new InetSocketAddress(cfg.getAddress(),cfg.getPort())); + + try{ + TimeSync.getInstance(); + }catch (RuntimeException re){ + TimeSync.initialize(dir, 60*1000, 30*1000); + } + + if (!UUIDResolver.isRunning()) { + UUIDResolver.start(dir, 1000, 1000); + } + ServiceUUID UUIDService = new ServiceUUID(osdUUID); + UUIDService.resolve(); + osdAddr = UUIDService.getAddress(); + UUIDResolver.shutdown(); + + try { + if (stop) { + if (!isRunningCleanup()) error("No cleanup running on the given OSD."); + stop(); + for (String result : getResult()) { + System.out.println(result); + } + System.out.println("Cleanup stopped."); + } else if (interactive) { + if (isRunningCleanup()) stop(); + start(remove,deleteVolumes,restore); + + while (isRunningCleanup()) { + System.out.print(getState()+"\r"); + Thread.sleep(3000); + } + System.out.println(); + for (String result : getResult()) { + System.out.println(result); + } + System.out.println("Cleanup done."); + } else { + if (isRunningCleanup()) stop(); + + start(remove, deleteVolumes, restore); + System.out.println("Cleanup is running."); + } + } catch (Exception e) { + error("Operation could not be performed because: "+e.getMessage()); + } finally { + dirClient.shutdown(); + osdClient.shutdown(); + dirClient.waitForShutdown(); + osdClient.waitForShutdown(); + } + } catch (Exception e){ + error("Error: "+e.getMessage()); + } + System.exit(0); } private static boolean isRunningCleanup() throws Exception{ @@ -250,6 +274,7 @@ public class xtfs_cleanup_osd { System.out.println(" "+"-i interactive mode."); System.out.println(" "+"-stop suspend the currently running cleanup."); System.out.println(" "+"-p set the administrator password."); + System.out.println(" "+"-dir set the path to the DIR configuration file."); System.exit(1); } } -- GitLab From ada329f58511e0163609d1836ba83f47c2dfda1c Mon Sep 17 00:00:00 2001 From: "bjoern.kolbeck" Date: Thu, 7 May 2009 11:30:31 +0000 Subject: [PATCH 05/97] servers: modified scrubber cli options git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@590 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- .../common/clients/simplescrubber/Scrubber.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/servers/src/org/xtreemfs/common/clients/simplescrubber/Scrubber.java b/servers/src/org/xtreemfs/common/clients/simplescrubber/Scrubber.java index 256f6a5bd..61cbb7028 100644 --- a/servers/src/org/xtreemfs/common/clients/simplescrubber/Scrubber.java +++ b/servers/src/org/xtreemfs/common/clients/simplescrubber/Scrubber.java @@ -258,9 +258,9 @@ public class Scrubber implements FileInfo.FileScrubbedListener { options.put("chk", new CliOption(CliOption.OPTIONTYPE.SWITCH)); options.put("thrs", new CliOption(CliOption.OPTIONTYPE.NUMBER)); options.put("c", new CliOption(CliOption.OPTIONTYPE.STRING)); - options.put("cp", new CliOption(CliOption.OPTIONTYPE.STRING)); + options.put("cpass", new CliOption(CliOption.OPTIONTYPE.STRING)); options.put("t", new CliOption(CliOption.OPTIONTYPE.STRING)); - options.put("tp", new CliOption(CliOption.OPTIONTYPE.STRING)); + options.put("tpass", new CliOption(CliOption.OPTIONTYPE.STRING)); options.put("h", new CliOption(CliOption.OPTIONTYPE.SWITCH)); CLIParser.parseCLI(args, options, arguments); @@ -283,9 +283,9 @@ public class Scrubber implements FileInfo.FileScrubbedListener { if (dirURL != null && "oncrpcs".equals(dirURL.getProtocol())) { useSSL = true; serviceCredsFile = options.get("c").stringValue; - serviceCredsPass = options.get("cp").stringValue; + serviceCredsPass = options.get("cpass").stringValue; trustedCAsFile = options.get("t").stringValue; - trustedCAsPass = options.get("tp").stringValue; + trustedCAsPass = options.get("tpass").stringValue; } // read default settings @@ -388,19 +388,19 @@ public class Scrubber implements FileInfo.FileScrubbedListener { private static void usage() { System.out.println("usage: xtfs_scrub [options] | uuid:"); - System.out.println(" -dir uri directory service to use (e.g. 'http://localhost:32638')"); + System.out.println(" -dir uri directory service to use (e.g. 'oncrpc://localhost:32638')"); System.out.println(" If no URI is specified, URI and security settings are taken from '" + DEFAULT_DIR_CONFIG + "'"); System.out - .println(" In case of a secured URI ('https://...'), it is necessary to also specify SSL credentials:"); + .println(" In case of a secured URI ('oncrpcs://...'), it is necessary to also specify SSL credentials:"); System.out .println(" -c a PKCS#12 file containing user credentials"); System.out - .println(" -cp a pass phrase to decrypt the the user credentials file"); + .println(" -cpass a pass phrase to decrypt the the user credentials file"); System.out .println(" -t a PKCS#12 file containing a set of certificates from trusted CAs"); System.out - .println(" -tp a pass phrase to decrypt the trusted CAs file"); + .println(" -tpass a pass phrase to decrypt the trusted CAs file"); System.out .println(" -chk check only (do not update file sizes on the MRC in case of inconsistencies)"); System.out.println(" -thrs n number of concurrent file scrub threads (default=" + DEFAULT_NUM_THREADS + ")"); -- GitLab From c0085de0ca0564c2d2031a846b370bdb6bd00eea Mon Sep 17 00:00:00 2001 From: "bjoern.kolbeck" Date: Thu, 7 May 2009 11:30:47 +0000 Subject: [PATCH 06/97] modified script to use new scrubber git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@591 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- servers/bin/xtfs_scrub | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servers/bin/xtfs_scrub b/servers/bin/xtfs_scrub index 1c34a55c0..940abe54a 100755 --- a/servers/bin/xtfs_scrub +++ b/servers/bin/xtfs_scrub @@ -43,4 +43,4 @@ check_xtreemfs check_java exec $JAVA_HOME/bin/java -ea -cp $XTREEMFS/servers/dist/XtreemFS.jar:$XTREEMFS/servers/lib/*:/usr/share/java/XtreemFS.jar:. \ - org.xtreemfs.common.clients.scrubber.AsyncScrubber $* \ No newline at end of file + org.xtreemfs.common.clients.simplescrubber.Scrubber $* -- GitLab From d049c0db7b28f9d61891a43856753d2e85626fde Mon Sep 17 00:00:00 2001 From: "bjoern.kolbeck" Date: Thu, 7 May 2009 11:36:46 +0000 Subject: [PATCH 07/97] adapted xtfs_scrub man page git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@592 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- servers/man/man1/xtfs_scrub.1 | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/servers/man/man1/xtfs_scrub.1 b/servers/man/man1/xtfs_scrub.1 index d8eadd137..3d97e3eea 100644 --- a/servers/man/man1/xtfs_scrub.1 +++ b/servers/man/man1/xtfs_scrub.1 @@ -25,17 +25,15 @@ In case of a secured URI ('oncrpcs://...'), it is necessary to also specify SSL .TP \fB-c\fP a PKCS#12 file containing user credentials .TP -\fB-cp\fP a pass phrase to decrypt the the user credentials file +\fB-cpass\fP a pass phrase to decrypt the the user credentials file .TP \fB-t\fP a PKCS#12 file containing a set of certificates from trusted CAs .TP -\fB-tp\fP a pass phrase to decrypt the trusted CAs file +\fB-tpass\fP a pass phrase to decrypt the trusted CAs file .TP \fB\-chk\fP check only (do not update file sizes on the MRC in case of inconsistencies) .TP -\fB\-cons\fP n number of connections per OSD (default=10) -.TP -\fB\-files\fP n number of files to fetch at once from MRC (default=100) +\fB\-thrs\fP n number of threads to use for scrubbing (default=10) .SH "SEE ALSO" -- GitLab From 1d45c2d1edc2a8dba54d63c9c8955e5dfe1e11db Mon Sep 17 00:00:00 2001 From: stenjan Date: Thu, 7 May 2009 11:57:51 +0000 Subject: [PATCH 08/97] * general cleanup: - fixed man pages - removed obsolete tools - unified parameters for server tools git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@593 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- client/man/man1/xtfs_lsvol.1 | 1 + client/man/man1/xtfs_mkvol.1 | 1 + client/man/man1/xtfs_mount.1 | 1 + client/man/man1/xtfs_rmvol.1 | 1 + client/man/man1/xtfs_stat.1 | 1 + packaging/client/xtreemfs-client.spec | 1 + servers/bin/xtfs_sp | 41 ------------------- servers/man/man1/xtfs_cleanup.1 | 2 +- servers/man/man1/xtfs_mrcdbtool.1 | 6 +-- servers/man/man1/xtfs_scrub.1 | 2 +- .../org/xtreemfs/utils/xtfs_mrcdbtool.java | 8 ++-- utils/man/man1/xtfs_sp.1 | 1 - 12 files changed, 15 insertions(+), 51 deletions(-) delete mode 100755 servers/bin/xtfs_sp diff --git a/client/man/man1/xtfs_lsvol.1 b/client/man/man1/xtfs_lsvol.1 index 732a1b4c2..0e0f2b37a 100644 --- a/client/man/man1/xtfs_lsvol.1 +++ b/client/man/man1/xtfs_lsvol.1 @@ -46,6 +46,7 @@ print help and exit .SH "SEE ALSO" .BR xtfs_mount (1), .BR xtfs_umount (1), +.BR xtfs_sp (1), .BR xtfs_mkvol (1), .BR xtfs_rmvol (1), .BR xtfs_stat (1), diff --git a/client/man/man1/xtfs_mkvol.1 b/client/man/man1/xtfs_mkvol.1 index 60dfe46a1..a24d14415 100644 --- a/client/man/man1/xtfs_mkvol.1 +++ b/client/man/man1/xtfs_mkvol.1 @@ -62,6 +62,7 @@ print help and exit .SH "SEE ALSO" .BR xtfs_mount (1), .BR xtfs_umount (1), +.BR xtfs_sp (1), .BR xtfs_rmvol (1), .BR xtfs_lsvol (1), .BR xtfs_stat (1), diff --git a/client/man/man1/xtfs_mount.1 b/client/man/man1/xtfs_mount.1 index 379f0426c..cda127314 100644 --- a/client/man/man1/xtfs_mount.1 +++ b/client/man/man1/xtfs_mount.1 @@ -50,6 +50,7 @@ print help and exit .SH "SEE ALSO" .BR fusermount (1), .BR xtfs_umount (1), +.BR xtfs_sp (1), .BR xtfs_mkvol (1), .BR xtfs_rmvol (1), .BR xtfs_lsvol (1), diff --git a/client/man/man1/xtfs_rmvol.1 b/client/man/man1/xtfs_rmvol.1 index fbe22c0bb..d6f784833 100644 --- a/client/man/man1/xtfs_rmvol.1 +++ b/client/man/man1/xtfs_rmvol.1 @@ -44,6 +44,7 @@ print help and exit .SH "SEE ALSO" .BR xtfs_mount (1), .BR xtfs_umount (1), +.BR xtfs_sp (1), .BR xtfs_mkvol (1), .BR xtfs_lsvol (1), .BR xtfs_stat (1), diff --git a/client/man/man1/xtfs_stat.1 b/client/man/man1/xtfs_stat.1 index 52050b8a6..aa5b7f3c8 100644 --- a/client/man/man1/xtfs_stat.1 +++ b/client/man/man1/xtfs_stat.1 @@ -46,6 +46,7 @@ print help and exit .SH "SEE ALSO" .BR xtfs_mount (1), .BR xtfs_umount (1), +.BR xtfs_sp (1), .BR xtfs_mkvol (1), .BR xtfs_rmvol (1), .BR xtfs_lsvol (1), diff --git a/packaging/client/xtreemfs-client.spec b/packaging/client/xtreemfs-client.spec index c6231f669..24fdf244d 100644 --- a/packaging/client/xtreemfs-client.spec +++ b/packaging/client/xtreemfs-client.spec @@ -67,4 +67,5 @@ rm -rf $RPM_BUILD_ROOT %defattr(-,root,root) /usr/bin/xtfs_* /usr/share/man/man1/xtfs_* +/etc/xos/ /etc/xos/xtreemfs/* diff --git a/servers/bin/xtfs_sp b/servers/bin/xtfs_sp deleted file mode 100755 index e96ce2b14..000000000 --- a/servers/bin/xtfs_sp +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# a tool for getting and setting striping policies of XtreemFS directories - -usage() { - echo "Usage: xtfs_sp get|set|del []" - echo "example: xtfs_sp set ./xtreemfs-mount/mydir RAID0,4,2" - exit 1 -} - -check() { - if [ ! -e "`which setfattr`" -o ! -e "`which getfattr`" ]; then - echo "Could not find at least one of the commands 'setfattr' or 'getfattr'." - echo "Please make sure that the 'attr' package is installed, and both commands are in the search path." - exit 1 - elif [ $NUM_ARGS -lt 2 ]; then - echo $# - usage - fi -} - -export NUM_ARGS=$# -check - -if [ "$1" == "set" ]; then - setfattr -n xtreemfs.default_sp -v $3 $2 -elif [ "$1" == "get" ]; then - export SP=`getfattr -m xtreemfs.default_sp --only-values $2` - if [ -e "$2" -a -z "$SP" ]; then - echo "no default striping policy set on '$2'" - else - if [ -e "$2" ]; then - echo $SP - fi - fi -elif [ "$1" == "del" ]; then - setfattr -n xtreemfs.default_sp -v "null" $2 -else - echo "invalid operand: $1" - usage -fi -exit $? diff --git a/servers/man/man1/xtfs_cleanup.1 b/servers/man/man1/xtfs_cleanup.1 index 66f7c27e2..c33ddf36b 100644 --- a/servers/man/man1/xtfs_cleanup.1 +++ b/servers/man/man1/xtfs_cleanup.1 @@ -37,7 +37,7 @@ Cleans up the OSD with the given uuid. .SH "SEE ALSO" .BR xtfs_mount (1), .BR xtfs_umount (1), -.BR xtfs_showmount (1), +.BR xtfs_sp (1), .BR xtfs_mkvol (1), .BR xtfs_rmvol (1), .BR xtfs_lsvol (1), diff --git a/servers/man/man1/xtfs_mrcdbtool.1 b/servers/man/man1/xtfs_mrcdbtool.1 index 5987cab0c..da83ee634 100644 --- a/servers/man/man1/xtfs_mrcdbtool.1 +++ b/servers/man/man1/xtfs_mrcdbtool.1 @@ -29,13 +29,13 @@ The URL the MRC, e.g. oncrpc://localhost:32636. .B \-c \fIcreds_file Path to a PKCS#12 credentials file (private key + certificate) to use for SSL authentication. Must be present when MRC URL starts with oncrpcs://. .TP -.B \-cp \fIcreds_passphrase +.B \-cpass \fIcreds_passphrase An optional passphrase to access the credentials file. .TP .B \-t \fItrusted_CAs Path to a PKCS#12 file containing a set of certificates from trusted certification authorities. These certificates will be used to authenticate the MRC. Must be present when MRC URL starts with oncrpcs://. .TP -.B \-tp \fItrusted_passphrase +.B \-tpass \fItrusted_passphrase An optional passphrase to access the truststore file. .TP .B \-p \fIpassphrase @@ -45,7 +45,7 @@ The administrator password, if password protection is enabled .SH "SEE ALSO" .BR xtfs_mount (1), .BR xtfs_umount (1), -.BR xtfs_showmount (1), +.BR xtfs_sp (1), .BR xtfs_mkvol (1), .BR xtfs_rmvol (1), .BR xtfs_lsvol (1), diff --git a/servers/man/man1/xtfs_scrub.1 b/servers/man/man1/xtfs_scrub.1 index 3d97e3eea..0725210a2 100644 --- a/servers/man/man1/xtfs_scrub.1 +++ b/servers/man/man1/xtfs_scrub.1 @@ -39,7 +39,7 @@ In case of a secured URI ('oncrpcs://...'), it is necessary to also specify SSL .SH "SEE ALSO" .BR xtfs_mount (1), .BR xtfs_umount (1), -.BR xtfs_showmount (1), +.BR xtfs_sp (1), .BR xtfs_mkvol (1), .BR xtfs_rmvol (1), .BR xtfs_lsvol (1), diff --git a/servers/src/org/xtreemfs/utils/xtfs_mrcdbtool.java b/servers/src/org/xtreemfs/utils/xtfs_mrcdbtool.java index 196e88847..43b3abd6f 100644 --- a/servers/src/org/xtreemfs/utils/xtfs_mrcdbtool.java +++ b/servers/src/org/xtreemfs/utils/xtfs_mrcdbtool.java @@ -57,9 +57,9 @@ public class xtfs_mrcdbtool { List arguments = new ArrayList(3); options.put("mrc", new CliOption(CliOption.OPTIONTYPE.URL)); options.put("c", new CliOption(CliOption.OPTIONTYPE.STRING)); - options.put("cp", new CliOption(CliOption.OPTIONTYPE.STRING)); + options.put("cpass", new CliOption(CliOption.OPTIONTYPE.STRING)); options.put("t", new CliOption(CliOption.OPTIONTYPE.STRING)); - options.put("tp", new CliOption(CliOption.OPTIONTYPE.STRING)); + options.put("tpass", new CliOption(CliOption.OPTIONTYPE.STRING)); options.put("p", new CliOption(CliOption.OPTIONTYPE.STRING)); options.put("h", new CliOption(CliOption.OPTIONTYPE.SWITCH)); options.put("adminpass", new CliOption(CliOption.OPTIONTYPE.STRING)); @@ -100,9 +100,9 @@ public class xtfs_mrcdbtool { String dumpFile = arguments.get(1); CliOption c = options.get("c"); - CliOption cp = options.get("cp"); + CliOption cp = options.get("cpass"); CliOption t = options.get("t"); - CliOption tp = options.get("tp"); + CliOption tp = options.get("tpass"); CliOption p = options.get("p"); String host = mrc.urlValue.getHost(); diff --git a/utils/man/man1/xtfs_sp.1 b/utils/man/man1/xtfs_sp.1 index f1e78ece4..0d5918b54 100644 --- a/utils/man/man1/xtfs_sp.1 +++ b/utils/man/man1/xtfs_sp.1 @@ -44,7 +44,6 @@ shows the default striping policy assigned to the directory \fB./xtfs-dir\fP. .SH "SEE ALSO" .BR xtfs_mount (1), .BR xtfs_umount (1), -.BR xtfs_showmount (1), .BR xtfs_mkvol (1), .BR xtfs_rmvol (1), .BR xtfs_lsvol (1), -- GitLab From 58631cd1450ccf3890209435c451f82e5440f4d9 Mon Sep 17 00:00:00 2001 From: "fx.langner" Date: Thu, 7 May 2009 12:23:30 +0000 Subject: [PATCH 09/97] -Cleanup: interface changed. git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@594 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- servers/man/man1/xtfs_cleanup.1 | 27 ++++-- .../org/xtreemfs/utils/xtfs_cleanup_osd.java | 93 ++++++++++++------- 2 files changed, 80 insertions(+), 40 deletions(-) diff --git a/servers/man/man1/xtfs_cleanup.1 b/servers/man/man1/xtfs_cleanup.1 index c33ddf36b..23a295e8b 100644 --- a/servers/man/man1/xtfs_cleanup.1 +++ b/servers/man/man1/xtfs_cleanup.1 @@ -1,4 +1,4 @@ -.TH xtfs_cleanup 1 "April 2009" "The XtreemFS Distributed File System" "XtreemFS server" +.TH xtfs_cleanup 1 "May 2009" "The XtreemFS Distributed File System" "XtreemFS server" .SH NAME xtfs_cleanup \- checks for each file on the OSD, if it has an entry at the Metadata Server (MRC). .SH SYNOPSIS @@ -7,32 +7,41 @@ xtfs_cleanup \- checks for each file on the OSD, if it has an entry at the Metad .SH DESCRIPTION .I xtfs_cleanup -performs a check of each file on the given Object Storage Device (OSD) whether it is registered at a MRC or not. -Returns a list of those files which properly can be deleted. +Performs a check of each file on the given Object Storage Device (OSD) whether it is registered at a MRC or not. .SH EXAMPLE USAGE -.B "xtfs_cleanup [options] uuid:" +.B "xtfs_cleanup uuid:4ef54-kl345-2l35jn-3k4jl" .PP -Cleans up the OSD with the given uuid. +Starts the cleanup process on the OSD identified by UUID '4ef54-kl345-2l35jn-3k4jl'. .SH OPTIONS .TP .TP \fB-h\fP show usage info .TP +\fB-dir\fP directory service to use (e.g. 'oncrpc://localhost:32638') +If no URI is specified, URI and security settings are taken from '/etc/xos/xtreemfs/default_dir' +In case of a secured URI ('oncrpcs://...'), it is necessary to also specify SSL settings (-c, -cp, -t, -tp). +.TP +\fB-c\fP a PKCS#12 file containing user credentials +.TP +\fB-cpass\fP a pass phrase to decrypt the the user credentials file +.TP +\fB-t\fP a PKCS#12 file containing a set of certificates from trusted CAs +.TP +\fB-tpass\fP a pass phrase to decrypt the trusted CAs file +.TP \fB-r\fP restore mode - all files will be restored to directory '/lost+found/' at the volume they are located .TP \fB-e\fP !erase mode - all files will be removed without further request! .TP \fB-deleteVolumes\fP !volume deletion - deletes volumes that might be dead! .TP -\fB-i\fP interactive mode - user is asked for decisions +\fB-i\fP interactive mode .TP \fB-stop\fP suspend the currently running cleanup .TP -\fB-p\fP your administrator password, if password-protection is enabled -.TP -\fB-dir\fP the path to the DIR configuration file. +\fB-p\fP your administrator password.Use it, if password-protection is enabled .SH "SEE ALSO" .BR xtfs_mount (1), diff --git a/servers/src/org/xtreemfs/utils/xtfs_cleanup_osd.java b/servers/src/org/xtreemfs/utils/xtfs_cleanup_osd.java index af1fd8ebb..895a91dd1 100644 --- a/servers/src/org/xtreemfs/utils/xtfs_cleanup_osd.java +++ b/servers/src/org/xtreemfs/utils/xtfs_cleanup_osd.java @@ -34,9 +34,9 @@ import java.util.Map; import org.xtreemfs.common.TimeSync; import org.xtreemfs.common.logging.Logging; +import org.xtreemfs.common.util.ONCRPCServiceURL; import org.xtreemfs.common.uuids.ServiceUUID; import org.xtreemfs.common.uuids.UUIDResolver; -import org.xtreemfs.dir.DIRConfig; import org.xtreemfs.dir.client.DIRClient; import org.xtreemfs.foundation.SSLOptions; import org.xtreemfs.foundation.oncrpc.client.RPCNIOSocketClient; @@ -52,7 +52,7 @@ import org.xtreemfs.utils.CLIParser.CliOption; * @author flangner */ public class xtfs_cleanup_osd { - private static final String DEFAULT_DIR_CONFIG = "config/dirconfig.properties"; + private static final String DEFAULT_DIR_CONFIG = "/etc/xos/xtreemfs/default_dir"; private static OSDClient osd; @@ -71,6 +71,7 @@ public class xtfs_cleanup_osd { * @param args * @throws Exception */ + @SuppressWarnings("deprecation") public static void main(String[] args) throws Exception { try { Logging.start(Logging.LEVEL_ERROR); @@ -85,7 +86,12 @@ public class xtfs_cleanup_osd { options.put("i", new CliOption(CliOption.OPTIONTYPE.SWITCH)); options.put("stop", new CliOption(CliOption.OPTIONTYPE.SWITCH)); options.put("p", new CliOption(CliOption.OPTIONTYPE.STRING)); - options.put("dir", new CliOption(CliOption.OPTIONTYPE.STRING)); + options.put("dir", new CliOption(CliOption.OPTIONTYPE.URL)); + // SSL options + options.put("c", new CliOption(CliOption.OPTIONTYPE.STRING)); + options.put("cpass", new CliOption(CliOption.OPTIONTYPE.STRING)); + options.put("t", new CliOption(CliOption.OPTIONTYPE.STRING)); + options.put("tpass", new CliOption(CliOption.OPTIONTYPE.STRING)); CLIParser.parseCLI(args, options, arguments); @@ -99,9 +105,15 @@ public class xtfs_cleanup_osd { boolean deleteVolumes = options.get("deleteVolumes").switchValue; boolean interactive = options.get("i").switchValue; boolean stop = options.get("stop").switchValue; - String dirCfgPath = (options.get("dir").stringValue != null) ? options.get("dir").stringValue : DEFAULT_DIR_CONFIG; + ONCRPCServiceURL dirURL = options.get("dir").urlValue; password = (options.get("p").stringValue != null) ? options.get("p").stringValue : ""; - + boolean useSSL = false; + String serviceCredsFile = null; + String serviceCredsPass = null; + String trustedCAsFile = null; + String trustedCAsPass = null; + InetSocketAddress dirAddr = null; + // read default settings for the OSD String osdUUID = null; if (arguments.get(0).startsWith("uuid:")) { @@ -110,24 +122,37 @@ public class xtfs_cleanup_osd { error("There was no UUID for the OSD given!"); } - // load SSL options - SSLOptions sslOptions = null; - DIRConfig cfg = null; - try { - cfg = new DIRConfig(dirCfgPath); - cfg.read(); - if (cfg.isUsingSSL()) { - String serviceCredsFile = cfg.getServiceCredsFile(); - String serviceCredsPass = cfg.getServiceCredsPassphrase(); - String trustedCAsFile = cfg.getTrustedCertsFile(); - String trustedCAsPass = cfg.getTrustedCertsPassphrase(); - sslOptions = new SSLOptions(new FileInputStream(serviceCredsFile), serviceCredsPass, - new FileInputStream(trustedCAsFile), trustedCAsPass); - } - } catch (IOException e){ - error("Default DIR configuration not found!"); + // parse security info if protocol is 'https' + if (dirURL != null && "oncrpcs".equals(dirURL.getProtocol())) { + useSSL = true; + serviceCredsFile = options.get("c").stringValue; + serviceCredsPass = options.get("cpass").stringValue; + trustedCAsFile = options.get("t").stringValue; + trustedCAsPass = options.get("tpass").stringValue; } + + // read default settings + if (dirURL == null) { + try { + DefaultDirConfig cfg = new DefaultDirConfig(DEFAULT_DIR_CONFIG); + cfg.read(); + + dirAddr = cfg.getDirectoryService(); + useSSL = cfg.isSslEnabled(); + serviceCredsFile = cfg.getServiceCredsFile(); + serviceCredsPass = cfg.getServiceCredsPassphrase(); + trustedCAsFile = cfg.getTrustedCertsFile(); + trustedCAsPass = cfg.getTrustedCertsPassphrase(); + } catch (IOException e){ + error("No DIR service configuration available. Please use the -dir option."); + } + } else + dirAddr = new InetSocketAddress(dirURL.getHost(), dirURL.getPort()); + SSLOptions sslOptions = useSSL ? new SSLOptions(new FileInputStream(serviceCredsFile), + serviceCredsPass, SSLOptions.PKCS12_CONTAINER, new FileInputStream(trustedCAsFile), + trustedCAsPass, SSLOptions.JKS_CONTAINER, false) : null; + if (remove && restore) error("Zombies cannot be deleted and restored at the same time!"); // connect to the OSD @@ -139,7 +164,7 @@ public class xtfs_cleanup_osd { dirClient = new RPCNIOSocketClient(sslOptions, 10000, 5*60*1000); dirClient.start(); dirClient.waitForStartup(); - dir = new DIRClient(dirClient,new InetSocketAddress(cfg.getAddress(),cfg.getPort())); + dir = new DIRClient(dirClient,dirAddr); try{ TimeSync.getInstance(); @@ -234,7 +259,7 @@ public class xtfs_cleanup_osd { try { return r.get(); } catch (Exception e) { - throw new Exception("Cleanup could not be stopped on the given OSD, because: "+e.getMessage()); + throw new Exception("Cleanup status could not be retrieved, because: "+e.getMessage()); } finally { r.freeBuffers(); } @@ -245,7 +270,7 @@ public class xtfs_cleanup_osd { try { return r.get(); } catch (Exception e) { - throw new Exception("Cleanup could not be stopped on the given OSD, because: "+e.getMessage()); + throw new Exception("Cleanup results could not be retrieved, because: "+e.getMessage()); } finally { r.freeBuffers(); } @@ -267,14 +292,20 @@ public class xtfs_cleanup_osd { System.out.println("xtfs_cleanup [options] uuid:\n"); System.out.println(" "+" the unique identifier of the OSD to clean."); System.out.println(" "+"options:"); - System.out.println(" "+"-h show these usage informations."); - System.out.println(" "+"-r restore zombies found on the OSD."); - System.out.println(" "+"-e erase potential zombies."); + System.out.println(" "+"-dir directory service to use (e.g. 'oncrpc://localhost:32638')"); + System.out.println(" "+" If no URI is specified, URI and security settings are taken from '"+DEFAULT_DIR_CONFIG+"'"); + System.out.println(" "+" In case of a secured URI ('oncrpcs://...'), it is necessary to also specify SSL credentials:"); + System.out.println(" -c a PKCS#12 file containing user credentials"); + System.out.println(" -cpass a pass phrase to decrypt the the user credentials file"); + System.out.println(" -t a PKCS#12 file containing a set of certificates from trusted CAs"); + System.out.println(" -tpass a pass phrase to decrypt the trusted CAs file"); + System.out.println(" "+"-h show these usage informations."); + System.out.println(" "+"-r restore zombies found on the OSD."); + System.out.println(" "+"-e erase potential zombies."); System.out.println(" "+"-deleteVolumes !dangerous! deletes volumes that might be dead."); - System.out.println(" "+"-i interactive mode."); - System.out.println(" "+"-stop suspend the currently running cleanup."); - System.out.println(" "+"-p set the administrator password."); - System.out.println(" "+"-dir set the path to the DIR configuration file."); + System.out.println(" "+"-i interactive mode."); + System.out.println(" "+"-stop suspends the currently running cleanup process."); + System.out.println(" "+"-p the administrator password, authorizing cleanup calls."); System.exit(1); } } -- GitLab From 18945da64e088f5f644559d2a24c9ca38139d4c1 Mon Sep 17 00:00:00 2001 From: stenjan Date: Thu, 7 May 2009 12:32:28 +0000 Subject: [PATCH 10/97] * MRC - replication flags of a replica in an X-Loc list are now persistently stored - Added support for replica selection policies. Such policies can be assigned at volume level and determine how replica lists that are returned to the client are ordered, so that the client can attempt to contact replicas in the natural order of the replica list. The default policy returns replica lists in the same order in which replicas were added. Additional policies can be implemented as built-in policies or used as custom policies with the policy plug-in mechanism. git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@595 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- docs/BabuDBMetadataMapping.txt | 13 +- interfaces/mrc_osd_types.idl | 7 +- .../xtreemfs/common/VersionManagement.java | 39 +-- .../ReplicaSelectionPolicyType.java | 24 ++ .../xtreemfs/mrc/MRCRequestDispatcher.java | 8 +- .../src/org/xtreemfs/mrc/PolicyContainer.java | 310 +++++++++++------- .../xtreemfs/mrc/ac/FileAccessManager.java | 3 - .../xtreemfs/mrc/database/StorageManager.java | 2 +- .../database/babudb/BabuDBStorageManager.java | 4 +- .../mrc/metadata/BufferBackedXLoc.java | 31 +- .../src/org/xtreemfs/mrc/metadata/XLoc.java | 18 +- .../mrc/operations/AddReplicaOperation.java | 2 +- .../mrc/operations/CreateVolumeOperation.java | 15 +- .../mrc/operations/DumpDBOperation.java | 2 + .../mrc/operations/OpenOperation.java | 19 +- .../mrc/operations/RestoreDBOperation.java | 11 +- .../mrc/operations/RestoreFileOperation.java | 2 +- .../mrc/osdselection/OSDStatusManager.java | 38 +-- .../replication/ReplicaSelectionPolicy.java | 52 +++ .../SimpleReplicaSelectionPolicy.java | 28 ++ .../src/org/xtreemfs/mrc/utils/Converter.java | 22 +- .../org/xtreemfs/mrc/utils/DBAdminHelper.java | 14 +- .../src/org/xtreemfs/mrc/utils/MRCHelper.java | 69 ++-- .../metadata/BufferBackedVolumeInfo.java | 26 +- .../mrc/volumes/metadata/VolumeInfo.java | 31 +- .../org/xtreemfs/test/TestEnvironment.java | 2 + .../test/mrc/BufferBackedMetadataTest.java | 36 +- .../test/org/xtreemfs/test/mrc/MRCTest.java | 4 +- 28 files changed, 534 insertions(+), 298 deletions(-) create mode 100644 servers/src/org/xtreemfs/interfaces/ReplicaSelectionPolicyType.java create mode 100644 servers/src/org/xtreemfs/mrc/replication/ReplicaSelectionPolicy.java create mode 100644 servers/src/org/xtreemfs/mrc/replication/SimpleReplicaSelectionPolicy.java diff --git a/docs/BabuDBMetadataMapping.txt b/docs/BabuDBMetadataMapping.txt index 74ba56243..876878f02 100644 --- a/docs/BabuDBMetadataMapping.txt +++ b/docs/BabuDBMetadataMapping.txt @@ -26,11 +26,11 @@ VOL_INDEX (BabuDB index #0) |key | volumeId | | | var | |----------------------------------------------------------------------------| -|value | fileAccessPolicyId osdPolicyId volNameOffset | -| | 2 2 2 | +|value | fileAccessPolicyId osdPolicyId replPolicyId volNameOffset | +| | 2 2 2 4 | | | | | | osdPolArgsOffset volumeId volumeName osdPolicyArgs | -| | 2 var var var | +| | 4 var var var | |----------------------------------------------------------------------------| @@ -228,8 +228,11 @@ xLocList - represents an X-Locations list of a file xLoc - represents a single replica in an X-Locations list |----------------------------------------------------------------------------| -|osdListOffset stripingPolicy numOSDs osd1ofs ... osdnofs osd1 ... osdn | -|2 var 2 2 2 var var | +|osdListOffset replFlags stripingPolicy numOSDs osd1ofs ... osdnofs | +|2 4 var 2 2 2 | +| | +|osd1 ... osdn | +|var var | |----------------------------------------------------------------------------| stripingPolicy - represents a striping policy diff --git a/interfaces/mrc_osd_types.idl b/interfaces/mrc_osd_types.idl index 35485ec25..0260bf582 100644 --- a/interfaces/mrc_osd_types.idl +++ b/interfaces/mrc_osd_types.idl @@ -34,7 +34,12 @@ module org { OSD_SELECTION_POLICY_SIMPLE = 1, OSD_SELECTION_POLICY_PROXIMITY = 2, - OSD_SELECTION_POLICY_DNS = 3 + OSD_SELECTION_POLICY_DNS = 3 + }; + + enum ReplicaSelectionPolicyType + { + REPLICA_SELECTION_POLICY_SIMPLE = 1 }; struct OSDWriteResponse diff --git a/servers/src/org/xtreemfs/common/VersionManagement.java b/servers/src/org/xtreemfs/common/VersionManagement.java index 0b0f8a1c6..c727ba9f0 100644 --- a/servers/src/org/xtreemfs/common/VersionManagement.java +++ b/servers/src/org/xtreemfs/common/VersionManagement.java @@ -25,7 +25,6 @@ package org.xtreemfs.common; -import java.util.List; /** * This class is meant to maintain version numbers for different components used @@ -39,46 +38,10 @@ import java.util.List; */ public class VersionManagement { - private static final long[] supportedProtocolVersions = { 39, 42 }; - - private static final long mrcDataVersion = 4; + private static final long mrcDataVersion = 5; private static final long osdDataVersion = 1; - public static long getMatchingProtVers(List proposedVersions) { - - int i = 0; - int j = 0; - long result = -1; - - // find the largest element contained in both lists - if (proposedVersions.size() > 0) { - - while (i < proposedVersions.size() && j < supportedProtocolVersions.length) { - long diff = proposedVersions.get(i) - supportedProtocolVersions[j]; - - if (diff == 0) { - result = supportedProtocolVersions[j]; - break; - } else if (diff > 0) - i++; - else - j++; - } - } - - return result; - } - - public static String getSupportedProtVersAsString() { - String str = "["; - for (int v = 0; v < supportedProtocolVersions.length; v++) - str += supportedProtocolVersions[v] - + (v == supportedProtocolVersions.length - 1 ? "]" : ", "); - - return str; - } - public static long getMrcDataVersion() { return mrcDataVersion; } diff --git a/servers/src/org/xtreemfs/interfaces/ReplicaSelectionPolicyType.java b/servers/src/org/xtreemfs/interfaces/ReplicaSelectionPolicyType.java new file mode 100644 index 000000000..582aebff0 --- /dev/null +++ b/servers/src/org/xtreemfs/interfaces/ReplicaSelectionPolicyType.java @@ -0,0 +1,24 @@ +package org.xtreemfs.interfaces; + + +public enum ReplicaSelectionPolicyType +{ + REPLICA_SELECTION_POLICY_SIMPLE( 1 ); + + private int __value; + + ReplicaSelectionPolicyType() { this.__value = 0; } + ReplicaSelectionPolicyType( int value ) { this.__value = value; } + public int intValue() { return __value; } + + public static ReplicaSelectionPolicyType parseInt( int value ) + { + ReplicaSelectionPolicyType check_values[] = ReplicaSelectionPolicyType.values(); + for ( int check_value_i = 0; check_value_i < check_values.length; check_value_i++ ) + { + if ( check_values[check_value_i].intValue() == value ) + return check_values[check_value_i]; + } + return null; + } +} diff --git a/servers/src/org/xtreemfs/mrc/MRCRequestDispatcher.java b/servers/src/org/xtreemfs/mrc/MRCRequestDispatcher.java index 893eff6e2..bf4029a56 100644 --- a/servers/src/org/xtreemfs/mrc/MRCRequestDispatcher.java +++ b/servers/src/org/xtreemfs/mrc/MRCRequestDispatcher.java @@ -48,6 +48,7 @@ import org.xtreemfs.common.uuids.ServiceUUID; import org.xtreemfs.common.uuids.UUIDResolver; import org.xtreemfs.common.uuids.UnknownUUIDException; import org.xtreemfs.dir.client.DIRClient; +import org.xtreemfs.foundation.CrashReporter; import org.xtreemfs.foundation.ErrNo; import org.xtreemfs.foundation.LifeCycleListener; import org.xtreemfs.foundation.SSLOptions; @@ -81,7 +82,6 @@ import org.xtreemfs.mrc.volumes.metadata.VolumeInfo; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer; -import org.xtreemfs.foundation.CrashReporter; /** * @@ -467,6 +467,8 @@ public class MRCRequestDispatcher implements RPCServerRequestListener, LifeCycle volTableBuf.append(v.getAcPolicyId()); volTableBuf.append("osd policy"); volTableBuf.append(v.getOsdPolicyId()); + volTableBuf.append("replica policy"); + volTableBuf.append(v.getReplicaPolicyId()); volTableBuf.append(""); } @@ -496,6 +498,10 @@ public class MRCRequestDispatcher implements RPCServerRequestListener, LifeCycle return osdMonitor; } + public PolicyContainer getPolicyContainer() { + return policyContainer; + } + public DIRClient getDirClient() { return dirClient; } diff --git a/servers/src/org/xtreemfs/mrc/PolicyContainer.java b/servers/src/org/xtreemfs/mrc/PolicyContainer.java index d8c00ce95..bad4ad391 100644 --- a/servers/src/org/xtreemfs/mrc/PolicyContainer.java +++ b/servers/src/org/xtreemfs/mrc/PolicyContainer.java @@ -48,7 +48,15 @@ import org.xtreemfs.common.logging.Logging.Category; import org.xtreemfs.common.util.FSUtils; import org.xtreemfs.common.util.OutputUtils; import org.xtreemfs.mrc.ac.FileAccessPolicy; +import org.xtreemfs.mrc.ac.POSIXFileAccessPolicy; +import org.xtreemfs.mrc.ac.VolumeACLFileAccessPolicy; +import org.xtreemfs.mrc.ac.YesToAnyoneFileAccessPolicy; +import org.xtreemfs.mrc.osdselection.DNSSelectionPolicy; import org.xtreemfs.mrc.osdselection.OSDSelectionPolicy; +import org.xtreemfs.mrc.osdselection.ProximitySelectionPolicy; +import org.xtreemfs.mrc.osdselection.RandomSelectionPolicy; +import org.xtreemfs.mrc.replication.ReplicaSelectionPolicy; +import org.xtreemfs.mrc.replication.SimpleReplicaSelectionPolicy; import org.xtreemfs.mrc.volumes.VolumeManager; public class PolicyContainer { @@ -56,7 +64,16 @@ public class PolicyContainer { static class PolicyClassLoader extends ClassLoader { private static final Class[] POLICY_INTERFACES = { FileAccessPolicy.class, - OSDSelectionPolicy.class }; + OSDSelectionPolicy.class, + ReplicaSelectionPolicy.class }; + + private static final Class[] BUILT_IN_POLICIES = { POSIXFileAccessPolicy.class, + VolumeACLFileAccessPolicy.class, + YesToAnyoneFileAccessPolicy.class, + RandomSelectionPolicy.class, + ProximitySelectionPolicy.class, + DNSSelectionPolicy.class, + SimpleReplicaSelectionPolicy.class }; private Map cache; @@ -77,112 +94,117 @@ public class PolicyContainer { public void init() throws IOException { - if ((policyDir == null) || (policyDir.exists())) - return; - - // get all JAR files - jarFiles = policyDir.listFiles(new FileFilter() { - public boolean accept(File pathname) { - return pathname.getAbsolutePath().endsWith(".jar"); - } - }); - - // get all Java files recursively - File[] javaFiles = FSUtils.listRecursively(policyDir, new FileFilter() { - public boolean accept(File pathname) { - return pathname.getAbsolutePath().endsWith(".java"); - } - }); - - // compile all Java files - if (javaFiles.length != 0) { - - String cp = System.getProperty("java.class.path") + ":"; - for (int i = 0; i < jarFiles.length; i++) { - cp += jarFiles[i]; - if (i != jarFiles.length - 1) - cp += ":"; - } + // initialize plug-in policies + if ((policyDir != null) && (policyDir.exists())) { - List options = new ArrayList(1); - options.add("-cp"); - options.add(cp); - - JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); - StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null); + // get all JAR files + jarFiles = policyDir.listFiles(new FileFilter() { + public boolean accept(File pathname) { + return pathname.getAbsolutePath().endsWith(".jar"); + } + }); - Iterable compilationUnits = fileManager - .getJavaFileObjectsFromFiles(Arrays.asList(javaFiles)); - if (!compiler.getTask(null, fileManager, null, options, null, compilationUnits).call()) - Logging.logMessage(Logging.LEVEL_WARN, Category.misc, this, - "some policies in '%s' could not be compiled", policyDir.getAbsolutePath()); + // get all Java files recursively + File[] javaFiles = FSUtils.listRecursively(policyDir, new FileFilter() { + public boolean accept(File pathname) { + return pathname.getAbsolutePath().endsWith(".java"); + } + }); - fileManager.close(); - } - - // retrieve all policies from class files - File[] classFiles = FSUtils.listRecursively(policyDir, new FileFilter() { - public boolean accept(File pathname) { - return pathname.getAbsolutePath().endsWith(".class"); - } - }); - - for (File cls : classFiles) { - try { + // compile all Java files + if (javaFiles.length != 0) { - String className = cls.getAbsolutePath().substring( - policyDir.getAbsolutePath().length() + 1, - cls.getAbsolutePath().length() - ".class".length()).replace('/', '.'); - if (cache.containsKey(className)) - continue; + String cp = System.getProperty("java.class.path") + ":"; + for (int i = 0; i < jarFiles.length; i++) { + cp += jarFiles[i]; + if (i != jarFiles.length - 1) + cp += ":"; + } + + List options = new ArrayList(1); + options.add("-cp"); + options.add(cp); - // load the class - Class clazz = loadFromStream(new FileInputStream(cls)); + JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); + StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null); - // check whether the class refers to a policy; if so, cache - // it - checkClass(clazz); + Iterable compilationUnits = fileManager + .getJavaFileObjectsFromFiles(Arrays.asList(javaFiles)); + if (!compiler.getTask(null, fileManager, null, options, null, compilationUnits).call()) + Logging.logMessage(Logging.LEVEL_WARN, Category.misc, this, + "some policies in '%s' could not be compiled", policyDir.getAbsolutePath()); - } catch (Exception exc) { - Logging.logMessage(Logging.LEVEL_WARN, Category.misc, this, - "an error occurred while trying to load class from file " + cls); - Logging.logMessage(Logging.LEVEL_WARN, Category.misc, this, OutputUtils - .stackTraceToString(exc)); + fileManager.close(); + } + + // retrieve all policies from class files + File[] classFiles = FSUtils.listRecursively(policyDir, new FileFilter() { + public boolean accept(File pathname) { + return pathname.getAbsolutePath().endsWith(".class"); + } + }); + + for (File cls : classFiles) { + try { + + String className = cls.getAbsolutePath().substring( + policyDir.getAbsolutePath().length() + 1, + cls.getAbsolutePath().length() - ".class".length()).replace('/', '.'); + if (cache.containsKey(className)) + continue; + + // load the class + Class clazz = loadFromStream(new FileInputStream(cls)); + + // check whether the class refers to a policy; if so, + // cache + // it + checkClass(clazz); + + } catch (Exception exc) { + Logging.logMessage(Logging.LEVEL_WARN, Category.misc, this, + "an error occurred while trying to load class from file " + cls); + Logging.logMessage(Logging.LEVEL_WARN, Category.misc, this, OutputUtils + .stackTraceToString(exc)); + } } + + // retrieve all policies from JAR files + // for (File jar : jarFiles) { + // + // JarFile arch = new JarFile(jar); + // + // Enumeration entries = arch.entries(); + // while (entries.hasMoreElements()) { + // JarEntry entry = entries.nextElement(); + // if (entry.getName().endsWith(".class")) { + // + // try { + // + // // load the class + // Class clazz = loadFromStream(arch.getInputStream(entry)); + // + // // check whether the class refers to a policy; if + // // so, cache it + // checkClass(clazz); + // + // } catch (IOException exc) { + // Logging.logMessage(Logging.LEVEL_WARN, this, "could not load + // class '" + // + entry.getName() + "' from JAR '" + jar.getAbsolutePath() + + // "'"); + // Logging.logMessage(Logging.LEVEL_WARN, this, exc); + // } catch (LinkageError err) { + // // ignore + // } + // } + // } + // } + } - // retrieve all policies from JAR files - // for (File jar : jarFiles) { - // - // JarFile arch = new JarFile(jar); - // - // Enumeration entries = arch.entries(); - // while (entries.hasMoreElements()) { - // JarEntry entry = entries.nextElement(); - // if (entry.getName().endsWith(".class")) { - // - // try { - // - // // load the class - // Class clazz = loadFromStream(arch.getInputStream(entry)); - // - // // check whether the class refers to a policy; if - // // so, cache it - // checkClass(clazz); - // - // } catch (IOException exc) { - // Logging.logMessage(Logging.LEVEL_WARN, this, "could not load - // class '" - // + entry.getName() + "' from JAR '" + jar.getAbsolutePath() + - // "'"); - // Logging.logMessage(Logging.LEVEL_WARN, this, exc); - // } catch (LinkageError err) { - // // ignore - // } - // } - // } - // } - + // init built-in policies + initBuiltInPolicies(); } public Class loadClass(String name, boolean resolve) throws ClassNotFoundException { @@ -316,6 +338,11 @@ public class PolicyContainer { } } + private void initBuiltInPolicies() { + for (Class polClass : BUILT_IN_POLICIES) + checkClass(polClass); + } + } private final MRCConfig config; @@ -354,37 +381,78 @@ public class PolicyContainer { public FileAccessPolicy getFileAccessPolicy(short id, VolumeManager volMan) throws Exception { - // load the class - Class policyClass = policyClassLoader.loadClass(id, FileAccessPolicy.class); - - // check whether a default constructor exists; if so, invoke the default - // constructor try { - return (FileAccessPolicy) policyClass.newInstance(); - } catch (InstantiationException exc) { - // ignore + // load the class + Class policyClass = policyClassLoader.loadClass(id, FileAccessPolicy.class); + + if (policyClass == null) + throw new MRCException("policy not found"); + + // check whether a default constructor exists; if so, invoke the + // default + // constructor + try { + return (FileAccessPolicy) policyClass.newInstance(); + } catch (InstantiationException exc) { + // ignore + } + + // otherwise, check whether a constructor exists that needs the + // slice + // manager; if so, invoke it + try { + return (FileAccessPolicy) policyClass.getConstructor(new Class[] { VolumeManager.class }) + .newInstance(volMan); + } catch (InstantiationException exc) { + // ignore + } + + // otherwise, throw an exception indicating that no suitable + // constructor + // was found + throw new InstantiationException("policy " + policyClass + + " does not have a suitable constructor"); + + } catch (Exception exc) { + Logging.logMessage(Logging.LEVEL_WARN, Category.misc, this, + "could not load FileAccessPolicy with ID %d", id); + Logging.logMessage(Logging.LEVEL_WARN, Category.misc, this, OutputUtils.stackTraceToString(exc)); + throw exc; } - // otherwise, check whether a constructor exists that needs the slice - // manager; if so, invoke it + } + + public OSDSelectionPolicy getOSDSelectionPolicy(short id) throws Exception { + try { - return (FileAccessPolicy) policyClass.getConstructor(new Class[] { VolumeManager.class }) - .newInstance(volMan); - } catch (InstantiationException exc) { - // ignore + Class policyClass = policyClassLoader.loadClass(id, OSDSelectionPolicy.class); + if (policyClass == null) + throw new MRCException("policy not found"); + return (OSDSelectionPolicy) policyClass.newInstance(); + + } catch (Exception exc) { + Logging.logMessage(Logging.LEVEL_WARN, Category.misc, this, + "could not load OSDSelectionPolicy with ID %d", id); + Logging.logMessage(Logging.LEVEL_WARN, Category.misc, this, OutputUtils.stackTraceToString(exc)); + throw exc; } - - // otherwise, throw an exception indicating that no suitable constructor - // was found - throw new InstantiationException("policy " + policyClass + " does not have a suitable constructor"); - } - public OSDSelectionPolicy getOSDSelectionPolicy(long id) throws Exception { - Class policyClass = policyClassLoader.loadClass(id, OSDSelectionPolicy.class); - if (policyClass == null) - return null; - return (OSDSelectionPolicy) policyClass.newInstance(); + public ReplicaSelectionPolicy getReplicaSelectionPolicy(short id) throws Exception { + + try { + Class policyClass = policyClassLoader.loadClass(id, ReplicaSelectionPolicy.class); + if (policyClass == null) + throw new MRCException("policy not found"); + return (ReplicaSelectionPolicy) policyClass.newInstance(); + + } catch (Exception exc) { + Logging.logMessage(Logging.LEVEL_WARN, Category.misc, this, + "could not load ReplicaSelectionPolicy with ID %d", id); + Logging.logMessage(Logging.LEVEL_WARN, Category.misc, this, OutputUtils.stackTraceToString(exc)); + throw exc; + } + } // public static void main(String[] args) throws Exception { diff --git a/servers/src/org/xtreemfs/mrc/ac/FileAccessManager.java b/servers/src/org/xtreemfs/mrc/ac/FileAccessManager.java index 32bee5d08..3080f4f01 100644 --- a/servers/src/org/xtreemfs/mrc/ac/FileAccessManager.java +++ b/servers/src/org/xtreemfs/mrc/ac/FileAccessManager.java @@ -81,9 +81,6 @@ public class FileAccessManager { this.policyContainer = policyContainer; policies = new HashMap(); - policies.put(POSIXFileAccessPolicy.POLICY_ID, new POSIXFileAccessPolicy()); - policies.put(YesToAnyoneFileAccessPolicy.POLICY_ID, new YesToAnyoneFileAccessPolicy()); - policies.put(VolumeACLFileAccessPolicy.POLICY_ID, new VolumeACLFileAccessPolicy()); } public void checkSearchPermission(StorageManager sMan, PathResolver path, String userId, diff --git a/servers/src/org/xtreemfs/mrc/database/StorageManager.java b/servers/src/org/xtreemfs/mrc/database/StorageManager.java index eeb3f80fa..3c5dfdee3 100644 --- a/servers/src/org/xtreemfs/mrc/database/StorageManager.java +++ b/servers/src/org/xtreemfs/mrc/database/StorageManager.java @@ -69,7 +69,7 @@ public interface StorageManager { public ACLEntry createACLEntry(long fileId, String entity, short rights); - public XLoc createXLoc(StripingPolicy stripingPolicy, String[] osds); + public XLoc createXLoc(StripingPolicy stripingPolicy, String[] osds, int replFlags); public XLocList createXLocList(XLoc[] replicas, String replUpdatePolicy, int version); diff --git a/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageManager.java b/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageManager.java index e39ce7cc3..2d43ac197 100644 --- a/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageManager.java +++ b/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageManager.java @@ -118,9 +118,9 @@ public class BabuDBStorageManager implements StorageManager { } @Override - public XLoc createXLoc(StripingPolicy stripingPolicy, String[] osds) { + public XLoc createXLoc(StripingPolicy stripingPolicy, String[] osds, int replFlags) { assert (stripingPolicy instanceof BufferBackedStripingPolicy); - return new BufferBackedXLoc((BufferBackedStripingPolicy) stripingPolicy, osds); + return new BufferBackedXLoc((BufferBackedStripingPolicy) stripingPolicy, osds, replFlags); } @Override diff --git a/servers/src/org/xtreemfs/mrc/metadata/BufferBackedXLoc.java b/servers/src/org/xtreemfs/mrc/metadata/BufferBackedXLoc.java index 50f6dd2f1..57ea2beab 100644 --- a/servers/src/org/xtreemfs/mrc/metadata/BufferBackedXLoc.java +++ b/servers/src/org/xtreemfs/mrc/metadata/BufferBackedXLoc.java @@ -27,10 +27,10 @@ package org.xtreemfs.mrc.metadata; import java.nio.ByteBuffer; public class BufferBackedXLoc extends BufferBackedMetadata implements XLoc { - - private String[] osdCache; - private StripingPolicy stripingPolicy; + private String[] osdCache; + + private StripingPolicy stripingPolicy; public BufferBackedXLoc(byte[] buffer) { this(buffer, 0, buffer.length); @@ -46,7 +46,7 @@ public class BufferBackedXLoc extends BufferBackedMetadata implements XLoc { osdCache = new String[numOSDs]; } - public BufferBackedXLoc(BufferBackedStripingPolicy stripingPolicy, String[] osds) { + public BufferBackedXLoc(BufferBackedStripingPolicy stripingPolicy, String[] osds, int replFlags) { super(null, 0, 0); @@ -63,15 +63,18 @@ public class BufferBackedXLoc extends BufferBackedMetadata implements XLoc { int spolSize = stripingPolicy.getLength(); assert (spolSize <= Short.MAX_VALUE); - int bufSize = spolSize + osdListSize + 2; + int bufSize = spolSize + osdListSize + 6; // allocate a new buffer len = bufSize; buffer = new byte[len]; ByteBuffer tmp = ByteBuffer.wrap(buffer); - // first 2 bytes: osd list offset - tmp.putShort((short) (spolSize + 2)); + // first 6 bytes: osd list offset + replication flags + tmp.putShort((short) (spolSize + 6)); + + // next 4 bytes: replication flags + tmp.putInt(replFlags); // next bytes: striping policy tmp.put(stripingPolicy.getBuffer(), stripingPolicy.getOffset(), stripingPolicy.getLength()); @@ -121,16 +124,26 @@ public class BufferBackedXLoc extends BufferBackedMetadata implements XLoc { short osdListStart = tmp.getShort(offset); assert (osdListStart >= 0); - if (osdListStart == 2) + if (osdListStart == 6) return null; // create the target object from a view buffer (skip the len bytes) - stripingPolicy = new BufferBackedStripingPolicy(buffer, offset + 2, osdListStart - 2); + stripingPolicy = new BufferBackedStripingPolicy(buffer, offset + 6, osdListStart - 6); } return stripingPolicy; } + public int getReplicationFlags() { + ByteBuffer tmp = ByteBuffer.wrap(buffer, offset, len); + return tmp.getInt(offset + 2); + } + + public void setReplicationFlags(int replFlags) { + ByteBuffer tmp = ByteBuffer.wrap(buffer, offset, len); + tmp.putInt(offset + 2, replFlags); + } + private int getOSDBufferOffset(int osdPosition) { ByteBuffer tmp = ByteBuffer.wrap(buffer, offset, len); diff --git a/servers/src/org/xtreemfs/mrc/metadata/XLoc.java b/servers/src/org/xtreemfs/mrc/metadata/XLoc.java index 78f9ecea3..e1da66d9d 100644 --- a/servers/src/org/xtreemfs/mrc/metadata/XLoc.java +++ b/servers/src/org/xtreemfs/mrc/metadata/XLoc.java @@ -33,7 +33,7 @@ package org.xtreemfs.mrc.metadata; public interface XLoc { /** - * The number of OSDs in the X-Location. + * The number of OSDs in the replica. * * @return the number of OSDs */ @@ -48,9 +48,23 @@ public interface XLoc { public String getOSD(int index); /** - * Returns the striping policy assigned to the X-Location. + * Returns the striping policy assigned to the replica. * * @return the striping policy */ public StripingPolicy getStripingPolicy(); + + /** + * Returns the replication flags assigned to the replica + * + * @return the replication flags + */ + public int getReplicationFlags(); + + /** + * Assigns new replication flags to the replica. + * + * @param replFlags the replication flags + */ + public void setReplicationFlags(int replFlags); } \ No newline at end of file diff --git a/servers/src/org/xtreemfs/mrc/operations/AddReplicaOperation.java b/servers/src/org/xtreemfs/mrc/operations/AddReplicaOperation.java index d9578d5a8..90896041a 100644 --- a/servers/src/org/xtreemfs/mrc/operations/AddReplicaOperation.java +++ b/servers/src/org/xtreemfs/mrc/operations/AddReplicaOperation.java @@ -129,7 +129,7 @@ public class AddReplicaOperation extends MRCOperation { // create a new replica and add it to the client's X-Locations list // (this will automatically increment the X-Locations list version) - XLoc replica = sMan.createXLoc(sPol, osds.toArray(new String[osds.size()])); + XLoc replica = sMan.createXLoc(sPol, osds.toArray(new String[osds.size()]), newRepl.getReplication_flags()); if (xLocList == null) xLocList = sMan.createXLocList(new XLoc[] { replica }, file.isReadOnly() ? Constants.REPL_UPDATE_PC_RONLY : Constants.REPL_UPDATE_PC_NONE, 1); diff --git a/servers/src/org/xtreemfs/mrc/operations/CreateVolumeOperation.java b/servers/src/org/xtreemfs/mrc/operations/CreateVolumeOperation.java index 9f7af5f0c..8db9589ce 100644 --- a/servers/src/org/xtreemfs/mrc/operations/CreateVolumeOperation.java +++ b/servers/src/org/xtreemfs/mrc/operations/CreateVolumeOperation.java @@ -74,15 +74,22 @@ public class CreateVolumeOperation extends MRCOperation { // check whether the given policies are supported - if (master.getOSDStatusManager().getOSDSelectionPolicy( - (short) volData.getOsd_selection_policy().intValue()) == null) + try { + master.getPolicyContainer().getOSDSelectionPolicy( + (short) volData.getOsd_selection_policy().intValue()); + + } catch (Exception exc) { throw new UserException(ErrNo.EINVAL, "invalid OSD selection policy ID: " + volData.getOsd_selection_policy()); + } - if (master.getFileAccessManager().getFileAccessPolicy( - (short) volData.getAccess_control_policy().intValue()) == null) + try { + master.getFileAccessManager().getFileAccessPolicy( + (short) volData.getAccess_control_policy().intValue()); + } catch (Exception exc) { throw new UserException(ErrNo.EINVAL, "invalid file access policy ID: " + volData.getAccess_control_policy()); + } // in order to allow volume creation in a single-threaded // non-blocking manner, it needs to be performed in two steps: diff --git a/servers/src/org/xtreemfs/mrc/operations/DumpDBOperation.java b/servers/src/org/xtreemfs/mrc/operations/DumpDBOperation.java index 469650437..1fe4c734c 100644 --- a/servers/src/org/xtreemfs/mrc/operations/DumpDBOperation.java +++ b/servers/src/org/xtreemfs/mrc/operations/DumpDBOperation.java @@ -74,6 +74,8 @@ public class DumpDBOperation extends MRCOperation { + volume.getName() + "\" acPolicy=\"" + volume.getAcPolicyId() + + "\" replPolicy=\"" + + volume.getReplicaPolicyId() + "\" osdPolicy=\"" + volume.getOsdPolicyId() + (volume.getOsdPolicyArgs() != null ? "\" osdPolicyArgs=\"" diff --git a/servers/src/org/xtreemfs/mrc/operations/OpenOperation.java b/servers/src/org/xtreemfs/mrc/operations/OpenOperation.java index 99d025a71..4394dc902 100644 --- a/servers/src/org/xtreemfs/mrc/operations/OpenOperation.java +++ b/servers/src/org/xtreemfs/mrc/operations/OpenOperation.java @@ -48,6 +48,7 @@ import org.xtreemfs.mrc.database.AtomicDBUpdate; import org.xtreemfs.mrc.database.StorageManager; import org.xtreemfs.mrc.metadata.FileMetadata; import org.xtreemfs.mrc.metadata.XLocList; +import org.xtreemfs.mrc.replication.ReplicaSelectionPolicy; import org.xtreemfs.mrc.utils.Converter; import org.xtreemfs.mrc.utils.MRCHelper; import org.xtreemfs.mrc.utils.Path; @@ -181,9 +182,9 @@ public class OpenOperation extends MRCOperation { // create a replica with the default striping policy together // with a set of feasible OSDs from the OSD status manager - Replica replica = MRCHelper.createReplica(null, sMan, master.getOSDStatusManager(), volume, res - .getParentDirId(), rqArgs.getPath(), ((InetSocketAddress) rq.getRPCRequest() - .getClientIdentity()).getAddress()); + Replica replica = MRCHelper.createReplica(null, sMan, master.getOSDStatusManager(), master + .getPolicyContainer(), volume, res.getParentDirId(), rqArgs.getPath(), + ((InetSocketAddress) rq.getRPCRequest().getClientIdentity()).getAddress()); ReplicaSet replicas = new ReplicaSet(); replicas.add(replica); @@ -206,6 +207,12 @@ public class OpenOperation extends MRCOperation { xLocSet.setRead_only_file_size(file.getSize()); } + // re-order the replica list, based on the replica selection policy + ReplicaSelectionPolicy rsPol = master.getPolicyContainer().getReplicaSelectionPolicy( + volume.getReplicaPolicyId()); + xLocSet.setReplicas(rsPol.getSortedReplicaList(xLocSet.getReplicas(), ((InetSocketAddress) rq + .getRPCRequest().getClientIdentity()).getAddress())); + Capability cap = new Capability(volume.getId() + ":" + file.getId(), rqArgs.getFlags(), TimeSync .getGlobalTime() / 1000 + Capability.DEFAULT_VALIDITY, @@ -213,8 +220,10 @@ public class OpenOperation extends MRCOperation { trEpoch, master.getConfig().getCapabilitySecret()); if (Logging.isDebug()) - Logging.logMessage(Logging.LEVEL_DEBUG, Category.proc, this, - "issued the following capability for %s:%d: %s", volume.getId(), file.getId(), cap.toString()); + Logging + .logMessage(Logging.LEVEL_DEBUG, Category.proc, this, + "issued the following capability for %s:%d: %s", volume.getId(), file.getId(), cap + .toString()); // update POSIX timestamps of file MRCHelper.updateFileTimes(res.getParentsParentId(), file, !master.getConfig().isNoAtime(), true, diff --git a/servers/src/org/xtreemfs/mrc/operations/RestoreDBOperation.java b/servers/src/org/xtreemfs/mrc/operations/RestoreDBOperation.java index fde047b59..4dbf689cf 100644 --- a/servers/src/org/xtreemfs/mrc/operations/RestoreDBOperation.java +++ b/servers/src/org/xtreemfs/mrc/operations/RestoreDBOperation.java @@ -69,7 +69,7 @@ public class RestoreDBOperation extends MRCOperation { final xtreemfs_restore_databaseRequest rqArgs = (xtreemfs_restore_databaseRequest) rq .getRequestArgs(); - + // check password to ensure that user is authorized if (master.getConfig().getAdminPassword() != null && !master.getConfig().getAdminPassword().equals(rq.getDetails().password)) @@ -104,6 +104,8 @@ public class RestoreDBOperation extends MRCOperation { .getIndex("acPolicy"))); final short osdPol = Short.parseShort(attributes.getValue(attributes .getIndex("osdPolicy"))); + final short replPol = attributes.getIndex("replPolicy") == -1 ? 0 : Short + .parseShort(attributes.getValue(attributes.getIndex("replPolicy"))); final String osdPolArgs = attributes.getIndex("osdPolicyArgs") == -1 ? null : attributes.getValue(attributes.getIndex("osdPolicyArgs")); @@ -130,12 +132,19 @@ public class RestoreDBOperation extends MRCOperation { return osdPol; } + public short getReplicaPolicyId() { + return replPol; + } + public void setOsdPolicyArgs(String osdPolicyArgs) { } public void setOsdPolicyId(short osdPolicyId) { } + public void setReplicaPolicyId(short replicaPolicyId) { + } + }; } diff --git a/servers/src/org/xtreemfs/mrc/operations/RestoreFileOperation.java b/servers/src/org/xtreemfs/mrc/operations/RestoreFileOperation.java index 5b57828ff..50ea10727 100644 --- a/servers/src/org/xtreemfs/mrc/operations/RestoreFileOperation.java +++ b/servers/src/org/xtreemfs/mrc/operations/RestoreFileOperation.java @@ -113,7 +113,7 @@ public class RestoreFileOperation extends MRCOperation { // create and assign the new XLocList StripingPolicy sp = sMan.createStripingPolicy("RAID0", size, 1); - XLoc replica = sMan.createXLoc(sp, new String[] { rqArgs.getOsd_uuid() }); + XLoc replica = sMan.createXLoc(sp, new String[] { rqArgs.getOsd_uuid() }, 0); XLocList xLocList = sMan.createXLocList(new XLoc[] { replica }, Constants.REPL_UPDATE_PC_NONE, 0); file.setXLocList(xLocList); diff --git a/servers/src/org/xtreemfs/mrc/osdselection/OSDStatusManager.java b/servers/src/org/xtreemfs/mrc/osdselection/OSDStatusManager.java index b7f182d5e..6eff246f4 100644 --- a/servers/src/org/xtreemfs/mrc/osdselection/OSDStatusManager.java +++ b/servers/src/org/xtreemfs/mrc/osdselection/OSDStatusManager.java @@ -281,8 +281,10 @@ public class OSDStatusManager extends LifeCycleThread implements VolumeChangeLis // of feasible OSDs from the last set of OSDs received from the // Directory Service if (vol.usableOSDs.size() == 0) { - OSDSelectionPolicy policy = getOSDSelectionPolicy(vol.selectionPolicyID); - if (policy != null) { + + try { + OSDSelectionPolicy policy = policyContainer.getOSDSelectionPolicy(vol.selectionPolicyID); + if (knownOSDs != null) vol.usableOSDs = policy.getUsableOSDs(knownOSDs, vol.selectionPolicyArgs); else @@ -294,7 +296,7 @@ public class OSDStatusManager extends LifeCycleThread implements VolumeChangeLis "could not determine set of feasible OSDs for volume '%s': haven't yet received an OSD list from Directory Service!", vol.volID); - } else + } catch (Exception exc) { Logging .logMessage( Logging.LEVEL_WARN, @@ -302,6 +304,7 @@ public class OSDStatusManager extends LifeCycleThread implements VolumeChangeLis this, "could not determine set of feasible OSDs for volume '%s': no assignment policy available!", vol.volID); + } } return vol.usableOSDs; @@ -334,8 +337,10 @@ public class OSDStatusManager extends LifeCycleThread implements VolumeChangeLis } for (VolumeOSDs vol : volumeMap.values()) { - OSDSelectionPolicy policy = getOSDSelectionPolicy(vol.selectionPolicyID); - if (policy != null) { + + try { + + OSDSelectionPolicy policy = policyContainer.getOSDSelectionPolicy(vol.selectionPolicyID); vol.usableOSDs = policy.getUsableOSDs(knownOSDs, vol.selectionPolicyArgs); if (Logging.isDebug()) { @@ -347,7 +352,7 @@ public class OSDStatusManager extends LifeCycleThread implements VolumeChangeLis } } - } else { + } catch (Exception exc) { Logging.logMessage(Logging.LEVEL_WARN, Category.misc, this, "policy ID %d selected for volume ID %s does not exist!", vol.selectionPolicyID, vol.volID); @@ -355,27 +360,6 @@ public class OSDStatusManager extends LifeCycleThread implements VolumeChangeLis } } - public OSDSelectionPolicy getOSDSelectionPolicy(short policyId) { - - OSDSelectionPolicy policy = policies.get(policyId); - - // if the policy is not built-in, try to load it from the plug-in - // directory - if (policy == null) { - try { - policy = policyContainer.getOSDSelectionPolicy(policyId); - policies.put(policyId, policy); - } catch (Exception exc) { - Logging.logMessage(Logging.LEVEL_WARN, Category.misc, this, - "could not load OSDSelectionPolicy with ID %d", policyId); - Logging.logMessage(Logging.LEVEL_WARN, Category.misc, this, OutputUtils - .stackTraceToString(exc)); - } - } - - return policy; - } - /** * Returns the approximate amount of free space in the given volume. * diff --git a/servers/src/org/xtreemfs/mrc/replication/ReplicaSelectionPolicy.java b/servers/src/org/xtreemfs/mrc/replication/ReplicaSelectionPolicy.java new file mode 100644 index 000000000..9c35203a2 --- /dev/null +++ b/servers/src/org/xtreemfs/mrc/replication/ReplicaSelectionPolicy.java @@ -0,0 +1,52 @@ +/* Copyright (c) 2008 Konrad-Zuse-Zentrum fuer Informationstechnik Berlin. + + This file is part of XtreemFS. XtreemFS is part of XtreemOS, a Linux-based + Grid Operating System, see for more details. + The XtreemOS project has been developed with the financial support of the + European Commission's IST program under contract #FP6-033576. + + XtreemFS is free software: you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation, either version 2 of the License, or (at your option) + any later version. + + XtreemFS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with XtreemFS. If not, see . + */ +/* + * AUTHORS: Jan Stender (ZIB) + */ + +package org.xtreemfs.mrc.replication; + +import java.net.InetAddress; + +import org.xtreemfs.interfaces.ReplicaSet; + +/** + * Interface for policies implementing replica selection policies. + * + * @author stender + */ +public interface ReplicaSelectionPolicy { + + /** + * Returns a list containing the same replicas as the input list, sorted by + * the priority of replica selection in descending order, so that the first + * replica in the list has the highest priority, the second the second + * highest, etc. + * + * @param replicas + * the original replica list + * @param clientAddr + * client's IP address/hostname + * @return the re-ordered list + */ + public ReplicaSet getSortedReplicaList(ReplicaSet replicas, InetAddress clientAddr); + +} diff --git a/servers/src/org/xtreemfs/mrc/replication/SimpleReplicaSelectionPolicy.java b/servers/src/org/xtreemfs/mrc/replication/SimpleReplicaSelectionPolicy.java new file mode 100644 index 000000000..9126db0eb --- /dev/null +++ b/servers/src/org/xtreemfs/mrc/replication/SimpleReplicaSelectionPolicy.java @@ -0,0 +1,28 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.xtreemfs.mrc.replication; + +import java.net.InetAddress; + +import org.xtreemfs.interfaces.ReplicaSet; + +/** + * Selects OSDs according to their DNS names matching the client's name. The + * OSDs are sorting according to the number of characters that match in both + * names (starting from the last character). + * + * @author bjko + */ +public class SimpleReplicaSelectionPolicy implements ReplicaSelectionPolicy { + + public static final short POLICY_ID = (short) 1; //(short) ReplicaSelectionPolicyType.REPLICA_SELECTION_POLICY_SIMPLE.intValue(); + + @Override + public ReplicaSet getSortedReplicaList(ReplicaSet replicas, InetAddress clientAddr) { + return replicas; + } + +} diff --git a/servers/src/org/xtreemfs/mrc/utils/Converter.java b/servers/src/org/xtreemfs/mrc/utils/Converter.java index 80017cca8..9916cd9dc 100644 --- a/servers/src/org/xtreemfs/mrc/utils/Converter.java +++ b/servers/src/org/xtreemfs/mrc/utils/Converter.java @@ -174,14 +174,14 @@ public class Converter { return JSONParser.writeJSON(list); } - public static void main(String[] args) { - BufferBackedStripingPolicy sp = new BufferBackedStripingPolicy("RAID0", 256, 2); - BufferBackedXLoc repl1 = new BufferBackedXLoc(sp, new String[] { "osd1", "osd2" }); - BufferBackedXLoc repl2 = new BufferBackedXLoc(sp, new String[] { "osd4" }); - XLocList xLocList = new BufferBackedXLocList(new BufferBackedXLoc[] { repl1, repl2 }, "policy", 3); - - System.out.println(xLocListToString(xLocList)); - } +// public static void main(String[] args) { +// BufferBackedStripingPolicy sp = new BufferBackedStripingPolicy("RAID0", 256, 2); +// BufferBackedXLoc repl1 = new BufferBackedXLoc(sp, new String[] { "osd1", "osd2" }, 0); +// BufferBackedXLoc repl2 = new BufferBackedXLoc(sp, new String[] { "osd4" }, 0); +// XLocList xLocList = new BufferBackedXLocList(new BufferBackedXLoc[] { repl1, repl2 }, "policy", 3); +// +// System.out.println(xLocListToString(xLocList)); +// } /** * Converts an XLocSet to an XLocList @@ -202,7 +202,7 @@ public class Converter { replicas[i] = sMan.createXLoc(sMan.createStripingPolicy(sp.getType().toString(), sp .getStripe_size(), sp.getWidth()), repl.getOsd_uuids().toArray( - new String[repl.getOsd_uuids().size()])); + new String[repl.getOsd_uuids().size()]), repl.getReplication_flags()); } return sMan.createXLocList(replicas, xLocSet.getRepUpdatePolicy(), xLocSet.getVersion()); @@ -238,10 +238,6 @@ public class Converter { replicas.add(repl); } - /* - //only for testing r/o-replication - Collections.shuffle(replicas); - */ XLocSet xLocSet = new XLocSet(); xLocSet.setReplicas(replicas); xLocSet.setRepUpdatePolicy(xLocList.getReplUpdatePolicy()); diff --git a/servers/src/org/xtreemfs/mrc/utils/DBAdminHelper.java b/servers/src/org/xtreemfs/mrc/utils/DBAdminHelper.java index b50ff3277..ebdd6b60c 100644 --- a/servers/src/org/xtreemfs/mrc/utils/DBAdminHelper.java +++ b/servers/src/org/xtreemfs/mrc/utils/DBAdminHelper.java @@ -70,6 +70,8 @@ public class DBAdminHelper { public List currentReplicaList; + public int currentReplFlags; + public List currentOSDList; public Map currentACL; @@ -258,14 +260,16 @@ public class DBAdminHelper { StorageManager sMan = vMan.getStorageManager(state.currentVolume.getId()); - if (openTag) + if (openTag) { state.currentXLocSp = Converter.stringToStripingPolicy(sMan, attrs.getValue(attrs .getIndex("pattern"))); - - else { + state.currentReplFlags = attrs.getIndex("replFlags") == -1 ? 0 : Integer.parseInt(attrs + .getValue(attrs.getIndex("replFlags"))); + + } else { state.currentReplicaList.add(sMan.createXLoc(state.currentXLocSp, state.currentOSDList - .toArray(new String[state.currentOSDList.size()]))); + .toArray(new String[state.currentOSDList.size()]), state.currentReplFlags)); state.currentOSDList.clear(); } } @@ -404,7 +408,7 @@ public class DBAdminHelper { XLoc repl = xloc.getReplica(i); xmlWriter.write("\n"); + + "\" replFlags=\"" + repl.getReplicationFlags() + "\">\n"); for (int j = 0; j < repl.getOSDCount(); j++) xmlWriter.write("\n"); xmlWriter.write("\n"); diff --git a/servers/src/org/xtreemfs/mrc/utils/MRCHelper.java b/servers/src/org/xtreemfs/mrc/utils/MRCHelper.java index 2fcadb0bd..a9e30238f 100644 --- a/servers/src/org/xtreemfs/mrc/utils/MRCHelper.java +++ b/servers/src/org/xtreemfs/mrc/utils/MRCHelper.java @@ -48,6 +48,8 @@ import org.xtreemfs.interfaces.ServiceType; import org.xtreemfs.interfaces.StringSet; import org.xtreemfs.interfaces.StripingPolicyType; import org.xtreemfs.mrc.MRCConfig; +import org.xtreemfs.mrc.MRCException; +import org.xtreemfs.mrc.PolicyContainer; import org.xtreemfs.mrc.MRCRequest; import org.xtreemfs.mrc.UserException; import org.xtreemfs.mrc.database.AtomicDBUpdate; @@ -100,6 +102,7 @@ public class MRCHelper { group, default_sp, ac_policy_id, + repl_policy_id, osdsel_policy_id, osdsel_policy_args, usable_osds, @@ -143,8 +146,8 @@ public class MRCHelper { } public static Replica createReplica(StripingPolicy stripingPolicy, StorageManager sMan, - OSDStatusManager osdMan, VolumeInfo volume, long parentDirId, String path, InetAddress clientAddress) - throws DatabaseException, UserException { + OSDStatusManager osdMan, PolicyContainer policyContainer, VolumeInfo volume, long parentDirId, + String path, InetAddress clientAddress) throws DatabaseException, UserException, MRCException { // if no striping policy is provided, try to retrieve it from the parent // directory @@ -179,9 +182,15 @@ public class MRCHelper { // add the OSDs to the X-Locations list, according to the OSD selection // policy - for (String osd : osdMan.getOSDSelectionPolicy(volume.getOsdPolicyId()).getOSDsForNewFile(osdMaps, - clientAddress, width, volume.getOsdPolicyArgs())) - osds.add(osd); + try { + for (String osd : policyContainer.getOSDSelectionPolicy(volume.getOsdPolicyId()) + .getOSDsForNewFile(osdMaps, clientAddress, width, volume.getOsdPolicyArgs())) + osds.add(osd); + } catch (MRCException exc) { + throw exc; + } catch (Exception exc) { + throw new MRCException(exc); + } return new Replica(sp, 0, osds); } @@ -279,6 +288,8 @@ public class MRCHelper { case osdsel_policy_args: return file.getId() == 1 ? (volume.getOsdPolicyArgs() == null ? "" : volume .getOsdPolicyArgs()) : ""; + case repl_policy_id: + return file.getId() == 1 ? volume.getReplicaPolicyId() + "" : ""; case read_only: if (file.isDirectory()) return ""; @@ -316,35 +327,6 @@ public class MRCHelper { switch (key) { - // case locations: - // - // // explicitly setting X-Locations lists is only permitted for files - // // that haven't yet been assigned an X-Locations list! - // if (file.getXLocList() != null) - // throw new UserException(ErrNo.EPERM, - // "cannot set X-Locations: OSDs have been assigned already"); - // - // try { - // // parse the X-Locations list, ensure that it is correctly - // // formatted and consistent - // - // XLocList newXLoc = Converter.stringToXLocList(sMan, value); - // - // if (!MRCHelper.isConsistent(newXLoc)) - // throw new UserException(ErrNo.EINVAL, - // "inconsistent X-Locations list:" - // + "at least one OSD occurs more than once"); - // - // file.setXLocList(newXLoc); - // sMan.setMetadata(file, FileMetadata.XLOC_METADATA, update); - // - // } catch (MRCException exc) { - // throw new UserException(ErrNo.EINVAL, "invalid X-Locations-List: " + - // value); - // } - // - // break; - case default_sp: if (!file.isDirectory()) @@ -400,6 +382,25 @@ public class MRCHelper { vMan.updateVolume(volume); break; + + case repl_policy_id: + + if (file.getId() != 1) + throw new UserException(ErrNo.EINVAL, + "replica selection policies can only be set and configured on volumes"); + + try { + short newPol = Short.parseShort(value); + + volume.setReplicaPolicyId(newPol); + vMan.updateVolume(volume); + + } catch (NumberFormatException exc) { + throw new UserException(ErrNo.EINVAL, "invalid replica selection policy: " + value); + } + + break; + case add_replica: { try { diff --git a/servers/src/org/xtreemfs/mrc/volumes/metadata/BufferBackedVolumeInfo.java b/servers/src/org/xtreemfs/mrc/volumes/metadata/BufferBackedVolumeInfo.java index f7ccbf1ce..6d4a2bbff 100644 --- a/servers/src/org/xtreemfs/mrc/volumes/metadata/BufferBackedVolumeInfo.java +++ b/servers/src/org/xtreemfs/mrc/volumes/metadata/BufferBackedVolumeInfo.java @@ -48,24 +48,24 @@ public class BufferBackedVolumeInfo implements VolumeInfo { final byte[] osdPolArgsBytes = osdPolicyArgs == null ? new byte[0] : osdPolicyArgs .getBytes(); - byte[] tmp = new byte[8 + idBytes.length + nameBytes.length + osdPolArgsBytes.length]; + byte[] tmp = new byte[10 + idBytes.length + nameBytes.length + osdPolArgsBytes.length]; buf = ByteBuffer.wrap(tmp); - buf.putShort(fileAccessPolicyId).putShort(osdPolicyId).putShort( - (short) (8 + idBytes.length)).putShort((short) (8 + idBytes.length + nameBytes.length)) + buf.putShort(fileAccessPolicyId).putShort(osdPolicyId).putShort((short) 1).putShort( + (short) (10 + idBytes.length)).putShort((short) (10 + idBytes.length + nameBytes.length)) .put(idBytes).put(nameBytes).put(osdPolArgsBytes); } @Override public String getId() { byte[] bytes = buf.array(); - return new String(bytes, 8, buf.getShort(4) - 8); + return new String(bytes, 10, buf.getShort(6) - 10); } @Override public String getName() { byte[] bytes = buf.array(); - short offs = buf.getShort(4); - return new String(bytes, offs, buf.getShort(6) - offs); + short offs = buf.getShort(6); + return new String(bytes, offs, buf.getShort(8) - offs); } @Override @@ -73,10 +73,15 @@ public class BufferBackedVolumeInfo implements VolumeInfo { return buf.getShort(2); } + @Override + public short getReplicaPolicyId() { + return buf.getShort(4); + } + @Override public String getOsdPolicyArgs() { byte[] bytes = buf.array(); - short offs = buf.getShort(6); + short offs = buf.getShort(8); return new String(bytes, offs, buf.limit() - offs); } @@ -90,13 +95,18 @@ public class BufferBackedVolumeInfo implements VolumeInfo { buf.putShort(2, osdPolicyId); } + @Override + public void setReplicaPolicyId(short replicaPolicyId) { + buf.putShort(4, replicaPolicyId); + } + @Override public void setOsdPolicyArgs(String osdPolicyArgs) { byte[] bytes = osdPolicyArgs.getBytes(); // calculate the offset for the arguments - short ofs = buf.getShort(6); + short ofs = buf.getShort(8); // create a new buffer with sufficient space, copy all data but the old // arguments diff --git a/servers/src/org/xtreemfs/mrc/volumes/metadata/VolumeInfo.java b/servers/src/org/xtreemfs/mrc/volumes/metadata/VolumeInfo.java index e0f775a8c..a208a56dd 100644 --- a/servers/src/org/xtreemfs/mrc/volumes/metadata/VolumeInfo.java +++ b/servers/src/org/xtreemfs/mrc/volumes/metadata/VolumeInfo.java @@ -40,42 +40,49 @@ package org.xtreemfs.mrc.volumes.metadata; * */ public interface VolumeInfo { - + /** * Returns the volume's ID * * @return the volume's ID */ public String getId(); - + /** * Returns the volume's name. * * @return the volume's name */ public String getName(); - + /** * Returns the volume's OSD selection policy ID. * * @return the volume's OSD selection policy ID. */ public short getOsdPolicyId(); - + /** * Returns the volume's OSD selection policy arguments. * * @return the volume's OSD selection policy arguments. */ public String getOsdPolicyArgs(); - + + /** + * Returns the volume's replica selection policy ID. + * + * @return the volume's replica selection policy ID. + */ + public short getReplicaPolicyId(); + /** * Returns the volume's access control policy ID. * * @return the volume#s access control policy ID. */ public short getAcPolicyId(); - + /** * Sets the volume's OSD selection policy ID. * @@ -83,7 +90,7 @@ public interface VolumeInfo { * the new OSD selection policy ID for the volume */ public void setOsdPolicyId(short osdPolicyId); - + /** * Sets the volume's OSD selection policy arguments. * @@ -91,5 +98,13 @@ public interface VolumeInfo { * the new OSD selection policy ID for the volume */ public void setOsdPolicyArgs(String osdPolicyArgs); - + + /** + * Sets the volume's replica selection policy ID. + * + * @param replicaPolicyId + * the new replica selection policy ID for the volume + */ + public void setReplicaPolicyId(short replicaPolicyId); + } \ No newline at end of file diff --git a/servers/test/org/xtreemfs/test/TestEnvironment.java b/servers/test/org/xtreemfs/test/TestEnvironment.java index 9d1bfcbe0..192526c2b 100644 --- a/servers/test/org/xtreemfs/test/TestEnvironment.java +++ b/servers/test/org/xtreemfs/test/TestEnvironment.java @@ -153,6 +153,8 @@ public class TestEnvironment { RPCResponse response = dirClient.xtreemfs_service_register(null, reg); response.get(); response.freeBuffers(); + + UUIDResolver.addLocalMapping("mockUpOSD", 11111, false); } if (enabledServs.contains(Services.OSD)) { diff --git a/servers/test/org/xtreemfs/test/mrc/BufferBackedMetadataTest.java b/servers/test/org/xtreemfs/test/mrc/BufferBackedMetadataTest.java index f0b8a4b85..242fefd21 100644 --- a/servers/test/org/xtreemfs/test/mrc/BufferBackedMetadataTest.java +++ b/servers/test/org/xtreemfs/test/mrc/BufferBackedMetadataTest.java @@ -71,6 +71,20 @@ public class BufferBackedMetadataTest extends TestCase { assertEquals(faPol, vol.getAcPolicyId()); assertEquals(osdPol, vol.getOsdPolicyId()); assertEquals(osdPolArgs, vol.getOsdPolicyArgs()); + + final String newArgs = "blubber"; + final short replPol = 4; + final short newOsdPol = 2; + vol.setOsdPolicyArgs(newArgs); + vol.setReplicaPolicyId(replPol); + vol.setOsdPolicyId(newOsdPol); + + assertEquals(id, vol.getId()); + assertEquals(name, vol.getName()); + assertEquals(faPol, vol.getAcPolicyId()); + assertEquals(newOsdPol, vol.getOsdPolicyId()); + assertEquals(newArgs, vol.getOsdPolicyArgs()); + assertEquals(replPol, vol.getReplicaPolicyId()); } public void testBufferBackedACLEntry() throws Exception { @@ -189,17 +203,22 @@ public class BufferBackedMetadataTest extends TestCase { { final String[] osds = { "someOSD", "anotherOSD", "myOSD" }; final BufferBackedStripingPolicy sp = new BufferBackedStripingPolicy("RAID0", 1024, 4); + final int replFlags = 237; // create XLoc - BufferBackedXLoc xloc1 = new BufferBackedXLoc(sp, osds); - checkXLoc(osds, sp, xloc1); + BufferBackedXLoc xloc1 = new BufferBackedXLoc(sp, osds, replFlags); + checkXLoc(osds, sp, replFlags, xloc1); byte[] tmpBuf = new byte[xloc1.getBuffer().length + 10]; System.arraycopy(xloc1.getBuffer(), 0, tmpBuf, 3, xloc1.getBuffer().length); // copy XLoc BufferBackedXLoc xloc2 = new BufferBackedXLoc(tmpBuf, 3, xloc1.getBuffer().length); - checkXLoc(osds, sp, xloc2); + checkXLoc(osds, sp, replFlags, xloc2); + + final int newReplFlags = Integer.MIN_VALUE; + xloc2.setReplicationFlags(newReplFlags); + assertEquals(Integer.MIN_VALUE, xloc2.getReplicationFlags()); } } @@ -212,8 +231,9 @@ public class BufferBackedMetadataTest extends TestCase { new BufferBackedStripingPolicy("asfd", 34, -1)); final List replicas = generateXLocList(new BufferBackedXLoc(sp.get(0), - new String[] { "11111", "22222", "33333" }), new BufferBackedXLoc(sp.get(1), new String[] { - "fdsay", "34", "4" }), new BufferBackedXLoc(sp.get(2), new String[] { "354", ",mn", "asdf" })); + new String[] { "11111", "22222", "33333" }, 43), new BufferBackedXLoc(sp.get(1), + new String[] { "fdsay", "34", "4" }, 99), new BufferBackedXLoc(sp.get(2), new String[] { + "354", ",mn", "asdf" }, 45)); int version = 37; String updatePolicy = "bla"; @@ -316,7 +336,7 @@ public class BufferBackedMetadataTest extends TestCase { assertEquals(owner, xattr.getOwner()); } - private void checkXLoc(String[] osds, StripingPolicy sp, BufferBackedXLoc xloc) { + private void checkXLoc(String[] osds, StripingPolicy sp, int flags, BufferBackedXLoc xloc) { final StripingPolicy xlocSP = xloc.getStripingPolicy(); @@ -328,6 +348,8 @@ public class BufferBackedMetadataTest extends TestCase { assertEquals(osds.length, xloc.getOSDCount()); for (int i = 0; i < osds.length; i++) assertEquals(osds[i], xloc.getOSD(i).toString()); + + assertEquals(flags, xloc.getReplicationFlags()); } private void checkXLocList(List replicas, int version, String updatePolicy, @@ -336,7 +358,7 @@ public class BufferBackedMetadataTest extends TestCase { assertEquals(version, xlocList.getVersion()); assertEquals(updatePolicy, xlocList.getReplUpdatePolicy()); assertEquals(replicas.size(), xlocList.getReplicaCount()); - + for (int i = 0; i < replicas.size(); i++) assertEquals(replicas.get(i).toString(), xlocList.getReplica(i).toString()); } diff --git a/servers/test/org/xtreemfs/test/mrc/MRCTest.java b/servers/test/org/xtreemfs/test/mrc/MRCTest.java index 1e9b98cd9..3c00e918c 100644 --- a/servers/test/org/xtreemfs/test/mrc/MRCTest.java +++ b/servers/test/org/xtreemfs/test/mrc/MRCTest.java @@ -57,6 +57,7 @@ import org.xtreemfs.mrc.ac.POSIXFileAccessPolicy; import org.xtreemfs.mrc.ac.VolumeACLFileAccessPolicy; import org.xtreemfs.mrc.ac.YesToAnyoneFileAccessPolicy; import org.xtreemfs.mrc.client.MRCClient; +import org.xtreemfs.mrc.metadata.BufferBackedStripingPolicy; import org.xtreemfs.mrc.osdselection.RandomSelectionPolicy; import org.xtreemfs.mrc.utils.Converter; import org.xtreemfs.test.SetupUtils; @@ -854,7 +855,8 @@ public class MRCTest extends TestCase { // set the default striping policy of the parent directory via an // extended attribute invokeSync(client.setxattr(mrcAddress, uc, dirName, "xtreemfs.default_sp", Converter - .stripingPolicyToString(sp2), 0)); + .stripingPolicyToJSONString(new BufferBackedStripingPolicy(sp2.getType().name(), sp2 + .getStripe_size(), sp2.getWidth())), 0)); xLoc = invokeSync(client.open(mrcAddress, uc, fileName2, FileAccessManager.O_RDONLY, 0, 0)) .getXlocs(); assertEquals(sp2.toString(), xLoc.getReplicas().get(0).getStriping_policy().toString()); -- GitLab From 44f478848f73435e8257897564c985e7dc347e2d Mon Sep 17 00:00:00 2001 From: stenjan Date: Thu, 7 May 2009 16:12:51 +0000 Subject: [PATCH 11/97] * added xtfs_sp tool to the release pacakge build script git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@598 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- packaging/build_release-packages.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/packaging/build_release-packages.sh b/packaging/build_release-packages.sh index 4f06f6bb9..e909ae753 100755 --- a/packaging/build_release-packages.sh +++ b/packaging/build_release-packages.sh @@ -37,6 +37,7 @@ CLIENT_WHITE_LIST=( "client/bin" "bin" "client/man" "man" "utils/man" "man" + "utils/bin/xtfs_sp" "bin" "servers/config/default_dir" "config/default_dir" "AUTHORS" "" "COPYING" "" -- GitLab From 680f77dd92aea56a127da4ed655b8f8a036511b2 Mon Sep 17 00:00:00 2001 From: stenjan Date: Thu, 7 May 2009 16:13:09 +0000 Subject: [PATCH 12/97] added missing dependencies to rpm and deb build files git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@599 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- packaging/server/debian.control | 9 +++++---- packaging/server/xtreemfs-server.spec | 7 ++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packaging/server/debian.control b/packaging/server/debian.control index 7c9a186a6..1a25b5cf9 100644 --- a/packaging/server/debian.control +++ b/packaging/server/debian.control @@ -7,7 +7,8 @@ Standards-Version: 3.7.2 Package: xtreemfs-server Architecture: all -Depends: ${shlibs:Depends}, ${misc:Depends}, grep -Description: XtreemFS server components - XtreemFS is an object-based file system that is designed for federated IT infrastructures that are connected by wide-area networks. This packages containes the XtreemFS server components (DIR, MRC, OSD). - NOTE: REQUIRES SUN JAVA 6 RUNTIME ENVIREMENT! +Depends: ${shlibs:Depends}, ${misc:Depends}, grep, sudo +Description: XtreemFS is a distributed, object-based file system. More information can be found at www.xtreemfs.org. + +This package contains the XtreemFS server components (DIR, MRC, OSD). +To run the XtreemFS services, a SUN JAVA 6 RUNTIME ENVIROMENT IS REQUIRED! Make sure that Java is installed in /usr/bin, or $JAVA_HOME is set. diff --git a/packaging/server/xtreemfs-server.spec b/packaging/server/xtreemfs-server.spec index f8b5b036d..eb313876f 100644 --- a/packaging/server/xtreemfs-server.spec +++ b/packaging/server/xtreemfs-server.spec @@ -3,16 +3,17 @@ Version: 0.99.0 Release: 1 License: GPL BuildRoot: %{_tmppath}/%{name}-%{version}-build -#BuildRequires: fastjar Group: Networking Summary: XtreemFS server components (DIR, MRC, OSD) Source0: %{name}-%{version}.tar.gz Requires: grep +Requires: sudo %description -XtreemFS is an object-based file system that is designed for federated IT infrastructures that are connected by wide-area networks. This packages containes the XtreemFS server components (DIR, MRC, OSD). +XtreemFS is a distributed, object-based file system. More information can be found at www.xtreemfs.org. -NOTE: REQUIRES SUN JAVA 6 RUNTIME ENVIREMENT! +This package contains the XtreemFS server components (DIR, MRC, OSD). +To run the XtreemFS services, a SUN JAVA 6 RUNTIME ENVIROMENT IS REQUIRED! Make sure that Java is installed in /usr/bin, or $JAVA_HOME is set. %prep %setup -- GitLab From ef94c1be4430d10ccfbd44b4cbccbbc3c11f7ffb Mon Sep 17 00:00:00 2001 From: "bjoern.kolbeck" Date: Fri, 8 May 2009 09:27:54 +0000 Subject: [PATCH 13/97] added more checks for ant,java,g++ and python incl. version checks to the make file git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@602 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- Makefile | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 1c74b13d0..19171aa74 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,17 @@ +ifeq "$(JAVA_HOME)" "" + JAVAC_BIN = /usr/bin/javac +else + JAVAC_BIN = $(JAVA_HOME)/bin/javac +endif + ifeq "$(ANT_HOME)" "" - ANT_HOME = /usr + ANT_BIN = /usr/bin/ant +else + ANT_BIN = $(ANT_HOME)/bin/ant endif +WHICH_GPP = $(shell which g++) + TARGETS = client server .PHONY: clean distclean @@ -16,8 +26,18 @@ clean: check $(patsubst %,%_clean,$(TARGETS)) distclean: check $(patsubst %,%_distclean,$(TARGETS)) check: - @if [ "/usr" = $(ANT_HOME) -a ! -f "/usr/bin/ant" ]; then echo "Apache Ant version 1.6.5 or newer required"; exit 1; fi - @echo using Ant installation at $(ANT_HOME) + @if [ ! -e $(JAVAC_BIN) ]; then echo "javac not found! Make sure a JDK is installed and set JAVA_HOME."; exit 1; fi; + @if [ $(shell $(JAVAC_BIN) -version 2>&1 | head -n1 | cut -d" " -f2 | cut -d. -f2) -lt 6 ]; then echo "java version >= 1.6.0 required!"; exit 1; fi; + @echo "java ok" + + @if [ ! -e $(ANT_BIN) ]; then echo "ant not found! Make sure ant is installed and set ANT_HOME."; exit 1; fi; + @echo "ant ok" + + @if [ ! $(WHICH_GPP) ]; then echo "g++ not found";exit 1; fi; + @echo "g++ ok" + + @if [[ $(shell python -V 2>&1 | head -n1 | cut -d" " -f2 | cut -d. -f2) -lt 5 && $(shell python -V 2>&1 | head -n1 | cut -d" " -f2 | cut -d. -f1) -lt 3 ]]; then echo "python >= 2.5 required!"; exit 1; fi; + @echo "python ok" .PHONY: client client_clean client_distclean client: -- GitLab From 45f23d397a8847aa538f80b1ef6b8065f6d7f0fa Mon Sep 17 00:00:00 2001 From: stenjan Date: Fri, 8 May 2009 10:12:50 +0000 Subject: [PATCH 14/97] * added a post-make message to the makefile git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@603 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- Makefile | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 19171aa74..6c42b4dcb 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ endif WHICH_GPP = $(shell which g++) -TARGETS = client server +TARGETS = client server post_make_message .PHONY: clean distclean # Some toplevel configuration @@ -54,3 +54,33 @@ server_clean: check $(ANT_HOME)/bin/ant -f servers/build.xml clean || exit 1; server_distclean: check $(ANT_HOME)/bin/ant -f servers/build.xml clean || exit 1; + +post_make_message: + @echo "" + @echo "All components have been built successfully." + @echo "The directories contain the following:" + @echo "" + @echo "server:" + @echo " servers/bin - server tools" + @echo " servers/config - default config files" + @echo " servers/init.d-scrpts - init-d scripts to run the servers" + @echo " servers/lib - thirdparty libraries" + @echo " servers/man - man pages for the server tools" + @echo " servers/src - source code" + @echo "" + @echo " *** To run the servers, please make sure that Java 1.6" + @echo " or newer is available. ***" + @echo "client:" + @echo " client/bin - client tools" + @echo " client/include - include headers" + @echo " client/lib - thirdparty libraries" + @echo " client/man - man pages for client tools" + @echo " client/proj - build and project files" + @echo " client/src - source code" + @echo "misc:" + @echo " interfaces - interfaces for client/server and" + @echo " server/server communication" + @echo " tests - test suite for automated testing" + @echo " utils/bin - additional client utilities" + @echo " utils/man - additional client tool man pages" + @echo "" \ No newline at end of file -- GitLab From 44c734c7066a24042ec22236a4fc44de3aaa750d Mon Sep 17 00:00:00 2001 From: "bjoern.kolbeck" Date: Fri, 8 May 2009 10:27:19 +0000 Subject: [PATCH 15/97] fixed the server make git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@604 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- Makefile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 6c42b4dcb..6e873b5a3 100644 --- a/Makefile +++ b/Makefile @@ -49,11 +49,11 @@ client_distclean: .PHONY: server server_clean server_distclean server: check - $(ANT_HOME)/bin/ant -f servers/build.xml jar + $(ANT_BIN) -f servers/build.xml jar server_clean: check - $(ANT_HOME)/bin/ant -f servers/build.xml clean || exit 1; + $(ANT_BIN) -f servers/build.xml clean || exit 1; server_distclean: check - $(ANT_HOME)/bin/ant -f servers/build.xml clean || exit 1; + $(ANT_BIN) -f servers/build.xml clean || exit 1; post_make_message: @echo "" @@ -83,4 +83,3 @@ post_make_message: @echo " tests - test suite for automated testing" @echo " utils/bin - additional client utilities" @echo " utils/man - additional client tool man pages" - @echo "" \ No newline at end of file -- GitLab From 196698bc2f189c6423facbef960248c1853599ea Mon Sep 17 00:00:00 2001 From: stenjan Date: Fri, 8 May 2009 10:52:15 +0000 Subject: [PATCH 16/97] * bugfix in Makefile: made clean/distclean work again git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@605 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Makefile b/Makefile index 6e873b5a3..2fe4d8a7f 100644 --- a/Makefile +++ b/Makefile @@ -83,3 +83,7 @@ post_make_message: @echo " tests - test suite for automated testing" @echo " utils/bin - additional client utilities" @echo " utils/man - additional client tool man pages" + +post_make_message_clean: + +post_make_message_distclean: \ No newline at end of file -- GitLab From 158ad64ec7b250043d5fd66a9b5b17215b787464 Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 11:02:18 +0000 Subject: [PATCH 17/97] test/11_iozone: output stdout, stderr if __name__ == "__main__" git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@606 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- tests/autotest_py/tests/11_iozone.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/tests/autotest_py/tests/11_iozone.py b/tests/autotest_py/tests/11_iozone.py index 840734612..8eebbd974 100644 --- a/tests/autotest_py/tests/11_iozone.py +++ b/tests/autotest_py/tests/11_iozone.py @@ -1,10 +1,16 @@ -import unittest, subprocess +import unittest, subprocess, sys class iozoneDiagnosticTest(unittest.TestCase): def runTest( self ): args = "iozone -a -+d" - p = subprocess.Popen( args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) + if __name__ == "__main__": + stdout = sys.stdout + stderr = sys.stderr + else: + stdout = subprocess.PIPE + stderr = subprocess.STDOUT + p = subprocess.Popen( args, shell=True, stdout=stdout, stderr=stderr ) retcode = p.wait() if retcode != 0: print "Unexpected return code from iozone:", retcode @@ -16,7 +22,13 @@ class iozoneDiagnosticTest(unittest.TestCase): class iozoneThroughputTest(unittest.TestCase): def runTest( self ): args = "iozone -t 1 -r 128k -s 20m" - p = subprocess.Popen( args, shell=True )#, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) + if __name__ == "__main__": + stdout = sys.stdout + stderr = sys.stderr + else: + stdout = subprocess.PIPE + stderr = subprocess.STDOUT + p = subprocess.Popen( args, shell=True )#, stdout=stdout, stderr=stderr ) retcode = p.wait() if retcode == 0: pass # TODO: parse output @@ -28,7 +40,7 @@ class iozoneThroughputTest(unittest.TestCase): suite = unittest.TestSuite() -#suite.addTest( iozoneDiagnosticTest() ) +suite.addTest( iozoneDiagnosticTest() ) suite.addTest( iozoneThroughputTest() ) -- GitLab From da8215a468b4c02c34f896d2d35c69f177085860 Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 12:38:25 +0000 Subject: [PATCH 18/97] tests/autotest_py: split 11_iozone into two separate modules, pass stdout and stderr to tests git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@607 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- tests/autotest_py/autotest.py | 20 +++++--- tests/autotest_py/tests/01_simple_metadata.py | 26 +++++----- tests/autotest_py/tests/02_erichs_ddwrite.py | 21 +++++--- .../tests/03_erichs_data_integrity_test.py | 17 +++++-- tests/autotest_py/tests/05_findgreptar.py | 24 ++++++--- tests/autotest_py/tests/10_bonnie.py | 39 +++++++++------ tests/autotest_py/tests/11_iozone.py | 49 ------------------- .../autotest_py/tests/11_iozone_diagnostic.py | 34 +++++++++++++ .../autotest_py/tests/12_iozone_throughput.py | 34 +++++++++++++ tests/autotest_py/tests/13_dbench.py | 28 +++++++---- tests/autotest_py/tests/15_makextreemfs.py | 40 ++++++++++----- 11 files changed, 208 insertions(+), 124 deletions(-) delete mode 100644 tests/autotest_py/tests/11_iozone.py create mode 100644 tests/autotest_py/tests/11_iozone_diagnostic.py create mode 100644 tests/autotest_py/tests/12_iozone_throughput.py diff --git a/tests/autotest_py/autotest.py b/tests/autotest_py/autotest.py index fba20ec4e..2873cf72e 100644 --- a/tests/autotest_py/autotest.py +++ b/tests/autotest_py/autotest.py @@ -74,7 +74,7 @@ def check_environment(): return True -def execute_tests( num_osds=NUM_OSDS_DEFAULT ): +def execute_tests( num_osds=NUM_OSDS_DEFAULT, verbose=False ): tests_dir_path = os.path.join( MY_DIR_PATH, "tests" ) sys.path.append( tests_dir_path ) test_suites = {} @@ -89,11 +89,16 @@ def execute_tests( num_osds=NUM_OSDS_DEFAULT ): traceback.print_exc() continue - if hasattr( test_module, "suite" ): - suite = getattr( test_module, "suite" ) - test_suites[test_module_name] = suite + if hasattr( test_module, "createTestSuite" ): + createTestSuite = getattr( test_module, "createTestSuite" ) + if verbose: + test_suite = createTestSuite( stdout=sys.stdout, stderr=sys.stderr ) + else: + test_suite = createTestSuite() + if test_suite is not None: + test_suites[test_module_name] = test_suite else: - print "Test module", test_module_name, "does not have a suite global variable" + print "Test module", test_module_name, "does not have a createTestSuite global function" test_module_names = test_suites.keys() test_module_names.sort() @@ -312,11 +317,12 @@ if __name__ == "__main__": option_parser.add_option( "--stop_environment", action="store_true", dest="stop_environment" ) option_parser.add_option( "-s", action="store_true", dest="ssl_enabled", default=SSL_ENABLED_DEFAULT ) option_parser.add_option( "--test", action="store_true", dest="execute_tests" ) + option_parser.add_option( "-v", "--verbose", action="store_true", dest="verbose" ) options, ignore = option_parser.parse_args() if options.execute_tests: - execute_tests() + execute_tests( verbose=options.verboses ) elif options.stop_environment: stop_environment() else: @@ -325,7 +331,7 @@ if __name__ == "__main__": time.sleep( 1.0 ) # Wait for clients and servers to start up if not options.start_environment: # i.e. no options were specified try: - execute_tests( num_osds=options.num_osds ) + execute_tests( num_osds=options.num_osds, verbose=options.verbose ) except KeyboardInterrupt: pass except: diff --git a/tests/autotest_py/tests/01_simple_metadata.py b/tests/autotest_py/tests/01_simple_metadata.py index d85271675..d664765f8 100644 --- a/tests/autotest_py/tests/01_simple_metadata.py +++ b/tests/autotest_py/tests/01_simple_metadata.py @@ -110,19 +110,21 @@ class unlinkTest(SimpleMetadataTestCase): assert not os.path.exists( TEST_FILE_NAME ) -suite = unittest.TestSuite() -suite.addTest( chmodTest() ) -suite.addTest( creatTest() ) -suite.addTest( linkTest() ) -suite.addTest( mkdirTest() ) -suite.addTest( readdirTest() ) -suite.addTest( renamedirTest() ) -suite.addTest( renamefileTest() ) -suite.addTest( rmdirTest() ) -suite.addTest( symlinkTest() ) -suite.addTest( unlinkTest() ) +def createTestSuite( *args, **kwds ): + test_suite = unittest.TestSuite() + test_suite.addTest( chmodTest() ) + test_suite.addTest( creatTest() ) + if hasattr( os, "link" ): test_suite.addTest( linkTest() ) + test_suite.addTest( mkdirTest() ) + test_suite.addTest( readdirTest() ) + test_suite.addTest( renamedirTest() ) + test_suite.addTest( renamefileTest() ) + test_suite.addTest( rmdirTest() ) + if hasattr( os, "symlink" ): test_suite.addTest( symlinkTest() ) + test_suite.addTest( unlinkTest() ) + return test_suite if __name__ == "__main__": - unittest.TextTestRunner( verbosity=2 ).run( suite ) + unittest.TextTestRunner( verbosity=2 ).run( createTestSuite() ) diff --git a/tests/autotest_py/tests/02_erichs_ddwrite.py b/tests/autotest_py/tests/02_erichs_ddwrite.py index d6d75a9b7..6752c35c9 100644 --- a/tests/autotest_py/tests/02_erichs_ddwrite.py +++ b/tests/autotest_py/tests/02_erichs_ddwrite.py @@ -1,8 +1,13 @@ -import unittest, subprocess, time, os +import unittest, subprocess, time, os, sys from glob import glob class ErichsddwriteTest(unittest.TestCase): + def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + unittest.TestCase.__init__( self ) + self.stdout = stdout + self.stderr = stderr + def setUp( self ): self.client_processes = [] @@ -19,7 +24,7 @@ class ErichsddwriteTest(unittest.TestCase): for clients_count in xrange( 2, 4, 2 ): for client_i in xrange( clients_count ): args = "dd if=/dev/zero of=%(class_name)s_%(client_i)u bs=1MB count=10" % locals() - client_process = subprocess.Popen( args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) + client_process = subprocess.Popen( args, shell=True, stdout=self.stdout, stderr=self.stderr ) self.client_processes.append( client_process ) while len( self.client_processes ) > 0: @@ -36,11 +41,15 @@ class ErichsddwriteTest(unittest.TestCase): time.sleep( 0.5 ) - -suite = unittest.TestSuite() -suite.addTest( ErichsddwriteTest() ) + +def createTestSuite( *args, **kwds ): + if not sys.platform.startswith( "win" ): + return unittest.TestSuite( [ErichsddwriteTest( *args, **kwds )] ) if __name__ == "__main__": - unittest.TextTestRunner( verbosity=2 ).run( suite ) + if not sys.platform.startswith( "win" ): + unittest.TextTestRunner( verbosity=2 ).run( createTestSuite() ) + else: + print sys.modules[__name__].__file__.split( os.sep )[-1], "not supported on Windows" diff --git a/tests/autotest_py/tests/03_erichs_data_integrity_test.py b/tests/autotest_py/tests/03_erichs_data_integrity_test.py index 18180ceaf..a700d8b5b 100644 --- a/tests/autotest_py/tests/03_erichs_data_integrity_test.py +++ b/tests/autotest_py/tests/03_erichs_data_integrity_test.py @@ -7,8 +7,13 @@ MARKED_BLOCK_PL_FILE_PATH = os.path.join( MY_DIR_PATH, "marked_block.pl" ) class ErichsDataIntegrityTest(unittest.TestCase): + def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + unittest.TestCase.__init__( self ) + self.stdout = stdout + self.stderr = stderr + def runTest( self ): - p = subprocess.Popen( MARKED_BLOCK_PL_FILE_PATH + " --start=1 --nfiles=20 --size=1 --group=10 --base=.", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) + p = subprocess.Popen( MARKED_BLOCK_PL_FILE_PATH + " --start=1 --nfiles=20 --size=1 --group=10 --base=.", shell=True, stdout=self.stdout, stderr=self.stderr ) retcode = p.wait() if retcode != 0: print "Unexpected return code from marked_block.pl: " + str( retcode ) @@ -17,10 +22,14 @@ class ErichsDataIntegrityTest(unittest.TestCase): self.assertEqual( retcode, 0 ) -suite = unittest.TestSuite() -suite.addTest( ErichsDataIntegrityTest() ) +def createTestSuite( *args, **kwds ): + if not sys.platform.startswith( "win" ): + return unittest.TestSuite( [ErichsDataIntegrityTest( *args, **kwds )] ) if __name__ == "__main__": - unittest.TextTestRunner( verbosity=2 ).run( suite ) + if not sys.platform.startswith( "win" ): + unittest.TextTestRunner( verbosity=2 ).run( createTestSuite() ) + else: + print sys.modules[__name__].__file__.split( os.sep )[-1], "not supported on Windows" diff --git a/tests/autotest_py/tests/05_findgreptar.py b/tests/autotest_py/tests/05_findgreptar.py index cdf5911a2..387acef37 100755 --- a/tests/autotest_py/tests/05_findgreptar.py +++ b/tests/autotest_py/tests/05_findgreptar.py @@ -1,31 +1,39 @@ -import unittest, urllib2, os.path -from subprocess import call, PIPE, STDOUT +import unittest, urllib2, os.path, sys, subprocess TAR_GZ_URL = "ftp://ftp.hpl.hp.com/pub/httperf/httperf-0.9.0.tar.gz" class findgreptarTest(unittest.TestCase): + def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + unittest.TestCase.__init__( self ) + self.stdout = stdout + self.stderr = stderr + def runTest( self ): tar_gz_file_name = TAR_GZ_URL.split( '/' )[-1] if not os.path.exists( tar_gz_file_name ): tar_gz_data = urllib2.urlopen( TAR_GZ_URL ).read() open( tar_gz_file_name, "wb" ).write( tar_gz_data ) - retcode = call( "tar zxf " + tar_gz_file_name, shell=True, stdout=PIPE, stderr=STDOUT ) + retcode = subprocess.call( "tar zxf " + tar_gz_file_name, shell=True, stdout=self.stdout, stderr=self.stderr ) self.assertEqual( retcode, 0 ) - retcode = call( "find . -name '*.cpp'", shell=True, stdout=PIPE, stderr=STDOUT ) + retcode = subprocess.call( "find . -name '*.cpp'", shell=True, stdout=self.stdout, stderr=self.stderr ) self.assertEqual( retcode, 0 ) - retcode = call( "grep -R 'ttest' .", shell=True, stdout=PIPE, stderr=STDOUT ) + retcode = subprocess.call( "grep -R 'ttest' .", shell=True, stdout=self.stdout, stderr=self.stderr ) self.assertEqual( retcode, 0 ) -suite = unittest.TestSuite() -suite.addTest( findgreptarTest() ) +def createTestSuite( *args, **kwds ): + if not sys.platform.startswith( "win" ): + return unittest.TestSuite( [findgreptarTest( *args, **kwds )] ) if __name__ == "__main__": - unittest.TextTestRunner( verbosity=2 ).run( suite ) + if not sys.platform.startswith( "win" ): + unittest.TextTestRunner( verbosity=2 ).run( createTestSuite() ) + else: + print sys.modules[__name__].__file__.split( os.sep )[-1], "not supported on Windows" diff --git a/tests/autotest_py/tests/10_bonnie.py b/tests/autotest_py/tests/10_bonnie.py index 3c421b89a..69c791065 100644 --- a/tests/autotest_py/tests/10_bonnie.py +++ b/tests/autotest_py/tests/10_bonnie.py @@ -1,25 +1,34 @@ -import unittest, subprocess - - -BONNIE_BIN_FILE_PATH = "bonnie" +import unittest, subprocess, sys, os class bonnieTest(unittest.TestCase): + def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + unittest.TestCase.__init__( self ) + self.stdout = stdout + self.stderr = stderr + def runTest( self ): - args = BONNIE_BIN_FILE_PATH + " -d ." # -s 100" - p = subprocess.Popen( args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) - retcode = p.wait() - if retcode != 0: - print "Unexpected return code from Bonnie:", retcode - print "Output:" - print p.stdout.read() - self.fail() + if "nondirect" in os.getcwd(): + pass + else: + args = "bonnie -d ." # -s 100" + p = subprocess.Popen( args, shell=True, stdout=self.stdout, stderr=self.stderr ) + retcode = p.wait() + if retcode != 0: + print >>self.stderr, "Unexpected return code from Bonnie:", retcode + print >>self.stderr, "Output:" + print >>self.stderr, p.stdout.read() + self.fail() -suite = unittest.TestSuite() -suite.addTest( bonnieTest() ) +def createTestSuite( *args, **kwds ): + if not sys.platform.startswith( "win" ): + return unittest.TestSuite( [bonnieTest( *args, **kwds )] ) if __name__ == "__main__": - unittest.TextTestRunner( verbosity=2 ).run( suite ) + if not sys.platform.startswith( "win" ): + unittest.TextTestRunner( verbosity=2 ).run( createTestSuite() ) + else: + print sys.modules[__name__].__file__.split( os.sep )[-1], "not supported on Windows" diff --git a/tests/autotest_py/tests/11_iozone.py b/tests/autotest_py/tests/11_iozone.py deleted file mode 100644 index 8eebbd974..000000000 --- a/tests/autotest_py/tests/11_iozone.py +++ /dev/null @@ -1,49 +0,0 @@ -import unittest, subprocess, sys - - -class iozoneDiagnosticTest(unittest.TestCase): - def runTest( self ): - args = "iozone -a -+d" - if __name__ == "__main__": - stdout = sys.stdout - stderr = sys.stderr - else: - stdout = subprocess.PIPE - stderr = subprocess.STDOUT - p = subprocess.Popen( args, shell=True, stdout=stdout, stderr=stderr ) - retcode = p.wait() - if retcode != 0: - print "Unexpected return code from iozone:", retcode - print "Output:" - print p.stdout.read() - self.fail() - - -class iozoneThroughputTest(unittest.TestCase): - def runTest( self ): - args = "iozone -t 1 -r 128k -s 20m" - if __name__ == "__main__": - stdout = sys.stdout - stderr = sys.stderr - else: - stdout = subprocess.PIPE - stderr = subprocess.STDOUT - p = subprocess.Popen( args, shell=True )#, stdout=stdout, stderr=stderr ) - retcode = p.wait() - if retcode == 0: - pass # TODO: parse output - else: - print "Unexpected return code from iozone:", retcode - print "Output:" - print p.stdout.read() - self.fail() - - -suite = unittest.TestSuite() -suite.addTest( iozoneDiagnosticTest() ) -suite.addTest( iozoneThroughputTest() ) - - -if __name__ == "__main__": - unittest.TextTestRunner( verbosity=2 ).run( suite ) - diff --git a/tests/autotest_py/tests/11_iozone_diagnostic.py b/tests/autotest_py/tests/11_iozone_diagnostic.py new file mode 100644 index 000000000..e41ca6ebc --- /dev/null +++ b/tests/autotest_py/tests/11_iozone_diagnostic.py @@ -0,0 +1,34 @@ +import unittest, subprocess, sys, os + + +class iozoneDiagnosticTest(unittest.TestCase): + def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + unittest.TestCase.__init__( self ) + self.stdout = stdout + self.stderr = stderr + + def runTest( self ): + if "nondirect" in os.getcwd(): + pass + else: + args = "iozone -a -+d" + p = subprocess.Popen( args, shell=True, stdout=self.stdout, stderr=self.stderr ) + retcode = p.wait() + if retcode != 0: + print >>self.stderr, "Unexpected return code from iozone:", retcode + print >>self.stderr, "Output:" + print >>self.stderr, p.stdout.read() + self.fail() + + +def createTestSuite( *args, **kwds ): + if not sys.platform.startswith( "win" ): + return unittest.TestSuite( [iozoneDiagnosticTest( *args, **kwds )] ) + + +if __name__ == "__main__": + if not sys.platform.startswith( "win" ): + unittest.TextTestRunner( verbosity=2 ).run( createTestSuite() ) + else: + print sys.modules[__name__].__file__.split( os.sep )[-1], "not supported on Windows" + diff --git a/tests/autotest_py/tests/12_iozone_throughput.py b/tests/autotest_py/tests/12_iozone_throughput.py new file mode 100644 index 000000000..a462b2221 --- /dev/null +++ b/tests/autotest_py/tests/12_iozone_throughput.py @@ -0,0 +1,34 @@ +import unittest, subprocess, sys, os + + +class iozoneThroughputTest(unittest.TestCase): + def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + unittest.TestCase.__init__( self ) + self.stdout = stdout + self.stderr = stderr + + def runTest( self ): + args = "iozone -t 1 -r 128k -s 20m" + p = subprocess.Popen( args, shell=True, stdout=self.stdout, stderr=self.stderr ) + retcode = p.wait() + if retcode == 0: + pass # TODO: parse output + else: + print >>self.stderr, "Unexpected return code from iozone:", retcode + print >>self.stderr, "Output:" + print >>self.stderr, p.stdout.read() + self.fail() + + + +def createTestSuite( *args, **kwds ): + if not sys.platform.startswith( "win" ): + return unittest.TestSuite( [iozoneThroughputTest( *args, **kwds )] ) + + +if __name__ == "__main__": + if not sys.platform.startswith( "win" ): + unittest.TextTestRunner( verbosity=2 ).run( createTestSuite() ) + else: + print sys.modules[__name__].__file__.split( os.sep )[-1], "not supported on Windows" + diff --git a/tests/autotest_py/tests/13_dbench.py b/tests/autotest_py/tests/13_dbench.py index 1b68b42a8..8289c2778 100644 --- a/tests/autotest_py/tests/13_dbench.py +++ b/tests/autotest_py/tests/13_dbench.py @@ -2,31 +2,39 @@ import unittest, os.path, sys, subprocess, gzip # Constants -DBENCH_BIN_FILE_PATH = "dbench" MY_DIR_PATH = os.path.dirname( os.path.abspath( sys.modules[__name__].__file__ ) ) DBENCH_CLIENT_TXT_GZ_FILE_PATH = os.path.join( MY_DIR_PATH, "dbench-client.txt.gz" ) class dbenchTest(unittest.TestCase): + def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + unittest.TestCase.__init__( self ) + self.stdout = stdout + self.stderr = stderr + def runTest( self ): gzip_client_txt_gz_data = gzip.GzipFile( DBENCH_CLIENT_TXT_GZ_FILE_PATH, mode="rb" ).read() assert len( gzip_client_txt_gz_data ) > 0 open( "dbench-client.txt", "wb" ).write( gzip_client_txt_gz_data ) assert os.stat( "dbench-client.txt" ).st_size > 0 - args = "%(DBENCH_BIN_FILE_PATH)s -c dbench-client.txt -D . 5" % globals() - p = subprocess.Popen( args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) + args = "dbench -c dbench-client.txt -D . 5" + p = subprocess.Popen( args, shell=True, stdout=self.stdout, stderr=self.stderr ) retcode = p.wait() if retcode != 0: - print "Unexpected return code from marked_block.pl: " + str( retcode ) - print "Output:" - print p.stdout.read() + print >>self.stderr, "Unexpected return code from marked_block.pl: " + str( retcode ) + print >>self.stderr, "Output:" + print >>self.stderr, p.stdout.read() self.assertEqual( retcode, 0 ) + +def createTestSuite( *args, **kwds ): + if not sys.platform.startswith( "win" ): + return unittest.TestSuite( [dbenchTest( *args, **kwds )] ) -suite = unittest.TestSuite() -suite.addTest( dbenchTest() ) - if __name__ == "__main__": - unittest.TextTestRunner( verbosity=2 ).run( suite ) + if not sys.platform.startswith( "win" ): + unittest.TextTestRunner( verbosity=2 ).run( createTestSuite() ) + else: + print sys.modules[__name__].__file__.split( os.sep )[-1], "not supported on Windows" diff --git a/tests/autotest_py/tests/15_makextreemfs.py b/tests/autotest_py/tests/15_makextreemfs.py index 0e05c7c8f..382807e64 100644 --- a/tests/autotest_py/tests/15_makextreemfs.py +++ b/tests/autotest_py/tests/15_makextreemfs.py @@ -1,22 +1,36 @@ -import unittest, shutil -from subprocess import call, PIPE, STDOUT +import unittest, shutil, sys, os, subprocess + + +global have_called_createTestSuite +have_called_createTestSuite = False class makextreemfsTest(unittest.TestCase): - def runTest( self ): - try: shutil.rmtree( "xtreemfs" ) - except: pass - retcode = call( "svn co http://xtreemfs.googlecode.com/svn/trunk xtreemfs", shell=True ) #, stdout=PIPE, stderr=STDOUT ) # - self.assertEqual( retcode, 0 ) + def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + unittest.TestCase.__init__( self ) + self.stdout = stdout + self.stderr = stderr + + def runTest( self ): + try: shutil.rmtree( "xtreemfs" ) + except: pass + retcode = subprocess.call( "svn co http://xtreemfs.googlecode.com/svn/trunk xtreemfs", shell=True ) #, stdout=PIPE, stderr=STDOUT ) # + self.assertEqual( retcode, 0 ) - retcode = call( "make -C xtreemfs", shell=True ) #, stdout=PIPE, stderr=STDOUT ) - self.assertEqual( retcode, 0 ) + retcode = subprocess.call( "make -C xtreemfs", shell=True ) #, stdout=PIPE, stderr=STDOUT ) + self.assertEqual( retcode, 0 ) -suite = unittest.TestSuite() -suite.addTest( makextreemfsTest() ) - +def createTestSuite( *args, **kwds ): + if not sys.platform.startswith( "win" ): + if not have_called_createTestSuite: + globals()["have_called_createTestSuite"] = True + return unittest.TestSuite( [makextreemfsTest( *args, **kwds )] ) + if __name__ == "__main__": - unittest.TextTestRunner( verbosity=2 ).run( suite ) + if not sys.platform.startswith( "win" ): + unittest.TextTestRunner( verbosity=2 ).run( createTestSuite() ) + else: + print sys.modules[__name__].__file__.split( os.sep )[-1], "not supported on Windows" -- GitLab From 43bc309a575c6cf325493bdcf2cb846fd1f2aca5 Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 12:46:27 +0000 Subject: [PATCH 19/97] tests/autotest_py: split 11_iozone into two separate modules, pass stdout and stderr to tests git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@608 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- tests/autotest_py/autotest.py | 4 ++-- tests/autotest_py/tests/02_erichs_ddwrite.py | 2 +- tests/autotest_py/tests/03_erichs_data_integrity_test.py | 2 +- tests/autotest_py/tests/05_findgreptar.py | 2 +- tests/autotest_py/tests/10_bonnie.py | 2 +- tests/autotest_py/tests/11_iozone_diagnostic.py | 2 +- tests/autotest_py/tests/12_iozone_throughput.py | 2 +- tests/autotest_py/tests/13_dbench.py | 2 +- tests/autotest_py/tests/15_makextreemfs.py | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/autotest_py/autotest.py b/tests/autotest_py/autotest.py index 2873cf72e..e026b0e3e 100644 --- a/tests/autotest_py/autotest.py +++ b/tests/autotest_py/autotest.py @@ -1,4 +1,4 @@ -import sys, os.path, signal, shutil, time, traceback, unittest +import sys, os.path, signal, shutil, time, traceback, unittest, subprocess from errno import * from optparse import OptionParser from subprocess import Popen, call @@ -94,7 +94,7 @@ def execute_tests( num_osds=NUM_OSDS_DEFAULT, verbose=False ): if verbose: test_suite = createTestSuite( stdout=sys.stdout, stderr=sys.stderr ) else: - test_suite = createTestSuite() + test_suite = createTestSuite( stdout=subprocess.PIPE, stderr=subproces.STDOUT ) if test_suite is not None: test_suites[test_module_name] = test_suite else: diff --git a/tests/autotest_py/tests/02_erichs_ddwrite.py b/tests/autotest_py/tests/02_erichs_ddwrite.py index 6752c35c9..b205533ac 100644 --- a/tests/autotest_py/tests/02_erichs_ddwrite.py +++ b/tests/autotest_py/tests/02_erichs_ddwrite.py @@ -3,7 +3,7 @@ from glob import glob class ErichsddwriteTest(unittest.TestCase): - def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + def __init__( self, stdout=sys.stdout, stderr=sys.stderr ): unittest.TestCase.__init__( self ) self.stdout = stdout self.stderr = stderr diff --git a/tests/autotest_py/tests/03_erichs_data_integrity_test.py b/tests/autotest_py/tests/03_erichs_data_integrity_test.py index a700d8b5b..9f2916b1e 100644 --- a/tests/autotest_py/tests/03_erichs_data_integrity_test.py +++ b/tests/autotest_py/tests/03_erichs_data_integrity_test.py @@ -7,7 +7,7 @@ MARKED_BLOCK_PL_FILE_PATH = os.path.join( MY_DIR_PATH, "marked_block.pl" ) class ErichsDataIntegrityTest(unittest.TestCase): - def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + def __init__( self, stdout=sys.stdout, stderr=sys.stderr ): unittest.TestCase.__init__( self ) self.stdout = stdout self.stderr = stderr diff --git a/tests/autotest_py/tests/05_findgreptar.py b/tests/autotest_py/tests/05_findgreptar.py index 387acef37..af52f5463 100755 --- a/tests/autotest_py/tests/05_findgreptar.py +++ b/tests/autotest_py/tests/05_findgreptar.py @@ -5,7 +5,7 @@ TAR_GZ_URL = "ftp://ftp.hpl.hp.com/pub/httperf/httperf-0.9.0.tar.gz" class findgreptarTest(unittest.TestCase): - def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + def __init__( self, stdout=sys.stdout, stderr=sys.stderr ): unittest.TestCase.__init__( self ) self.stdout = stdout self.stderr = stderr diff --git a/tests/autotest_py/tests/10_bonnie.py b/tests/autotest_py/tests/10_bonnie.py index 69c791065..a2d46cc0d 100644 --- a/tests/autotest_py/tests/10_bonnie.py +++ b/tests/autotest_py/tests/10_bonnie.py @@ -2,7 +2,7 @@ import unittest, subprocess, sys, os class bonnieTest(unittest.TestCase): - def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + def __init__( self, stdout=sys.stdout, stderr=sys.stderr ): unittest.TestCase.__init__( self ) self.stdout = stdout self.stderr = stderr diff --git a/tests/autotest_py/tests/11_iozone_diagnostic.py b/tests/autotest_py/tests/11_iozone_diagnostic.py index e41ca6ebc..683ad6541 100644 --- a/tests/autotest_py/tests/11_iozone_diagnostic.py +++ b/tests/autotest_py/tests/11_iozone_diagnostic.py @@ -2,7 +2,7 @@ import unittest, subprocess, sys, os class iozoneDiagnosticTest(unittest.TestCase): - def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + def __init__( self, stdout=sys.stdout, stderr=sys.stderr ): unittest.TestCase.__init__( self ) self.stdout = stdout self.stderr = stderr diff --git a/tests/autotest_py/tests/12_iozone_throughput.py b/tests/autotest_py/tests/12_iozone_throughput.py index a462b2221..0e91da7a8 100644 --- a/tests/autotest_py/tests/12_iozone_throughput.py +++ b/tests/autotest_py/tests/12_iozone_throughput.py @@ -2,7 +2,7 @@ import unittest, subprocess, sys, os class iozoneThroughputTest(unittest.TestCase): - def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + def __init__( self, stdout=sys.stdout, stderr=sys.stderr ): unittest.TestCase.__init__( self ) self.stdout = stdout self.stderr = stderr diff --git a/tests/autotest_py/tests/13_dbench.py b/tests/autotest_py/tests/13_dbench.py index 8289c2778..87b5940a7 100644 --- a/tests/autotest_py/tests/13_dbench.py +++ b/tests/autotest_py/tests/13_dbench.py @@ -7,7 +7,7 @@ DBENCH_CLIENT_TXT_GZ_FILE_PATH = os.path.join( MY_DIR_PATH, "dbench-client.txt.g class dbenchTest(unittest.TestCase): - def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + def __init__( self, stdout=sys.stdout, stderr=sys.stderr ): unittest.TestCase.__init__( self ) self.stdout = stdout self.stderr = stderr diff --git a/tests/autotest_py/tests/15_makextreemfs.py b/tests/autotest_py/tests/15_makextreemfs.py index 382807e64..d15c1577e 100644 --- a/tests/autotest_py/tests/15_makextreemfs.py +++ b/tests/autotest_py/tests/15_makextreemfs.py @@ -6,7 +6,7 @@ have_called_createTestSuite = False class makextreemfsTest(unittest.TestCase): - def __init__( self, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ): + def __init__( self, stdout=sys.stdout, stderr=sys.stderr ): unittest.TestCase.__init__( self ) self.stdout = stdout self.stderr = stderr -- GitLab From 2bf5846280625dbb2da684b445e55fde19b9828f Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 13:09:59 +0000 Subject: [PATCH 20/97] tests/autotest_py: Linux fixes git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@609 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- tests/autotest_py/autotest.py | 2 +- .../tests/03_erichs_data_integrity_test.py | 6 +---- tests/autotest_py/tests/05_findgreptar.py | 26 +++++++++---------- tests/autotest_py/tests/10_bonnie.py | 20 ++++++-------- .../autotest_py/tests/11_iozone_diagnostic.py | 6 +---- .../autotest_py/tests/12_iozone_throughput.py | 6 +---- tests/autotest_py/tests/13_dbench.py | 6 +---- 7 files changed, 26 insertions(+), 46 deletions(-) diff --git a/tests/autotest_py/autotest.py b/tests/autotest_py/autotest.py index e026b0e3e..a302d1f82 100644 --- a/tests/autotest_py/autotest.py +++ b/tests/autotest_py/autotest.py @@ -263,7 +263,7 @@ def _start_service( service_name, service_num="" ): stderr = stdout = open( log_file_path, "a" ) print "Starting", service_name.upper() + service_num, "service with command line", args, "and redirecting output to", log_file_path p = Popen( args, shell=True, stdout=stdout, stderr=stderr ) - time.sleep( 1.0 ) + time.sleep( 2.0 ) open( os.path.join( "run", service_name + service_num + ".run" ), "w+" ).write( str( p.pid ) ) diff --git a/tests/autotest_py/tests/03_erichs_data_integrity_test.py b/tests/autotest_py/tests/03_erichs_data_integrity_test.py index 9f2916b1e..a5df3fcf9 100644 --- a/tests/autotest_py/tests/03_erichs_data_integrity_test.py +++ b/tests/autotest_py/tests/03_erichs_data_integrity_test.py @@ -15,11 +15,7 @@ class ErichsDataIntegrityTest(unittest.TestCase): def runTest( self ): p = subprocess.Popen( MARKED_BLOCK_PL_FILE_PATH + " --start=1 --nfiles=20 --size=1 --group=10 --base=.", shell=True, stdout=self.stdout, stderr=self.stderr ) retcode = p.wait() - if retcode != 0: - print "Unexpected return code from marked_block.pl: " + str( retcode ) - print "Output:" - print p.stdout.read() - self.assertEqual( retcode, 0 ) + self.assertEqual( retcode, 0 ) def createTestSuite( *args, **kwds ): diff --git a/tests/autotest_py/tests/05_findgreptar.py b/tests/autotest_py/tests/05_findgreptar.py index af52f5463..a2a7772ad 100755 --- a/tests/autotest_py/tests/05_findgreptar.py +++ b/tests/autotest_py/tests/05_findgreptar.py @@ -10,20 +10,20 @@ class findgreptarTest(unittest.TestCase): self.stdout = stdout self.stderr = stderr - def runTest( self ): - tar_gz_file_name = TAR_GZ_URL.split( '/' )[-1] - if not os.path.exists( tar_gz_file_name ): - tar_gz_data = urllib2.urlopen( TAR_GZ_URL ).read() - open( tar_gz_file_name, "wb" ).write( tar_gz_data ) + def runTest( self ): + tar_gz_file_name = TAR_GZ_URL.split( '/' )[-1] + if not os.path.exists( tar_gz_file_name ): + tar_gz_data = urllib2.urlopen( TAR_GZ_URL ).read() + open( tar_gz_file_name, "wb" ).write( tar_gz_data ) + + retcode = subprocess.call( "tar zxf " + tar_gz_file_name, shell=True, stdout=self.stdout, stderr=self.stderr ) + self.assertEqual( retcode, 0 ) + + retcode = subprocess.call( "find . -name '*.cpp'", shell=True, stdout=self.stdout, stderr=self.stderr ) + self.assertEqual( retcode, 0 ) - retcode = subprocess.call( "tar zxf " + tar_gz_file_name, shell=True, stdout=self.stdout, stderr=self.stderr ) - self.assertEqual( retcode, 0 ) - - retcode = subprocess.call( "find . -name '*.cpp'", shell=True, stdout=self.stdout, stderr=self.stderr ) - self.assertEqual( retcode, 0 ) - - retcode = subprocess.call( "grep -R 'ttest' .", shell=True, stdout=self.stdout, stderr=self.stderr ) - self.assertEqual( retcode, 0 ) + retcode = subprocess.call( "grep -R 'ttest' .", shell=True, stdout=self.stdout, stderr=self.stderr ) + self.assertEqual( retcode, 0 ) def createTestSuite( *args, **kwds ): diff --git a/tests/autotest_py/tests/10_bonnie.py b/tests/autotest_py/tests/10_bonnie.py index a2d46cc0d..9faa4e4f9 100644 --- a/tests/autotest_py/tests/10_bonnie.py +++ b/tests/autotest_py/tests/10_bonnie.py @@ -7,18 +7,14 @@ class bonnieTest(unittest.TestCase): self.stdout = stdout self.stderr = stderr - def runTest( self ): - if "nondirect" in os.getcwd(): - pass - else: - args = "bonnie -d ." # -s 100" - p = subprocess.Popen( args, shell=True, stdout=self.stdout, stderr=self.stderr ) - retcode = p.wait() - if retcode != 0: - print >>self.stderr, "Unexpected return code from Bonnie:", retcode - print >>self.stderr, "Output:" - print >>self.stderr, p.stdout.read() - self.fail() + def runTest( self ): + if "nondirect" in os.getcwd(): + pass + else: + args = "bonnie -d ." # -s 100" + p = subprocess.Popen( args, shell=True, stdout=self.stdout, stderr=self.stderr ) + retcode = p.wait() + self.assertEqual( retcode, 0 ) def createTestSuite( *args, **kwds ): diff --git a/tests/autotest_py/tests/11_iozone_diagnostic.py b/tests/autotest_py/tests/11_iozone_diagnostic.py index 683ad6541..4bd1b99bb 100644 --- a/tests/autotest_py/tests/11_iozone_diagnostic.py +++ b/tests/autotest_py/tests/11_iozone_diagnostic.py @@ -14,11 +14,7 @@ class iozoneDiagnosticTest(unittest.TestCase): args = "iozone -a -+d" p = subprocess.Popen( args, shell=True, stdout=self.stdout, stderr=self.stderr ) retcode = p.wait() - if retcode != 0: - print >>self.stderr, "Unexpected return code from iozone:", retcode - print >>self.stderr, "Output:" - print >>self.stderr, p.stdout.read() - self.fail() + self.assertEqual( retcode, 0 ) def createTestSuite( *args, **kwds ): diff --git a/tests/autotest_py/tests/12_iozone_throughput.py b/tests/autotest_py/tests/12_iozone_throughput.py index 0e91da7a8..826dc0739 100644 --- a/tests/autotest_py/tests/12_iozone_throughput.py +++ b/tests/autotest_py/tests/12_iozone_throughput.py @@ -14,13 +14,9 @@ class iozoneThroughputTest(unittest.TestCase): if retcode == 0: pass # TODO: parse output else: - print >>self.stderr, "Unexpected return code from iozone:", retcode - print >>self.stderr, "Output:" - print >>self.stderr, p.stdout.read() - self.fail() + self.assertEqual( retcode, 0 ) - def createTestSuite( *args, **kwds ): if not sys.platform.startswith( "win" ): return unittest.TestSuite( [iozoneThroughputTest( *args, **kwds )] ) diff --git a/tests/autotest_py/tests/13_dbench.py b/tests/autotest_py/tests/13_dbench.py index 87b5940a7..9e56b9bd6 100644 --- a/tests/autotest_py/tests/13_dbench.py +++ b/tests/autotest_py/tests/13_dbench.py @@ -21,11 +21,7 @@ class dbenchTest(unittest.TestCase): args = "dbench -c dbench-client.txt -D . 5" p = subprocess.Popen( args, shell=True, stdout=self.stdout, stderr=self.stderr ) retcode = p.wait() - if retcode != 0: - print >>self.stderr, "Unexpected return code from marked_block.pl: " + str( retcode ) - print >>self.stderr, "Output:" - print >>self.stderr, p.stdout.read() - self.assertEqual( retcode, 0 ) + self.assertEqual( retcode, 0 ) def createTestSuite( *args, **kwds ): -- GitLab From ab2d45d06784e001e3f7c0cf4b474d82de1a23ab Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 13:38:52 +0000 Subject: [PATCH 21/97] /: merging directories git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@610 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- .../generate_xtreemfs_fuzzer_cpp.py | 0 .../bin => bin}/generate_xtreemfs_java.py | 0 {servers/bin => bin}/xtfs_cleanup | 0 {servers/bin => bin}/xtfs_mrcdbtool | 0 {servers/bin => bin}/xtfs_scrub | 0 {utils/bin => bin}/xtfs_sp | 0 {client/bin => bin}/xtfs_umount | 0 {docs => doc}/BabuDBMetadataMapping.txt | 0 {docs => doc}/Interactions.odg | Bin {docs => doc}/MobileDevices-HOWTO.txt | 0 {docs => doc}/XtreemFSProtocol.odt | Bin {docs => doc}/client_staging.odt | Bin {docs => doc}/fileSizeUseCases.odt | Bin {docs => doc}/howto_create_test_certs.txt | 0 {docs => doc}/mrc_issues.txt | 0 {docs => doc}/osd_design.odt | Bin {docs => doc}/traces/20090121-find.txt | 0 {docs => doc}/traces/20090121-ls.txt | 0 .../traces/20090121-read-step-1-mrc.txt | 0 .../traces/20090121-read-step-2-osd.txt | 0 .../traces/20090121-rm-step-1-mrc.txt | 0 .../traces/20090121-rm-step-2-osd.txt | 0 .../traces/20090121-write-step-1-mrc.txt | 0 .../traces/20090121-write-step-2-osd.txt | 0 .../traces/20090121-write-step-3-mrc.txt | 0 {docs => doc}/xos_certs_integration.txt | 0 {servers/man => man}/man1/xtfs_cleanup.1 | 0 {client/man => man}/man1/xtfs_lsvol.1 | 0 {client/man => man}/man1/xtfs_mkvol.1 | 0 {client/man => man}/man1/xtfs_mount.1 | 0 {servers/man => man}/man1/xtfs_mrcdbtool.1 | 0 {client/man => man}/man1/xtfs_rmvol.1 | 0 {servers/man => man}/man1/xtfs_scrub.1 | 0 {utils/man => man}/man1/xtfs_sp.1 | 0 {client/man => man}/man1/xtfs_stat.1 | 0 servers/test/certs/Client.key | 15 - servers/test/certs/Client.p12 | Bin 1746 -> 0 bytes servers/test/certs/Client.pem | 16 - servers/test/certs/Client.req | 12 - servers/test/certs/DIR.key | 15 - servers/test/certs/DIR.p12 | Bin 1724 -> 0 bytes servers/test/certs/DIR.pem | 16 - servers/test/certs/DIR.req | 12 - servers/test/certs/MRC.key | 15 - servers/test/certs/MRC.p12 | Bin 1724 -> 0 bytes servers/test/certs/MRC.pem | 16 - servers/test/certs/MRC.req | 12 - servers/test/certs/OSD.key | 15 - servers/test/certs/OSD.p12 | Bin 1724 -> 0 bytes servers/test/certs/OSD.pem | 16 - servers/test/certs/OSD.req | 12 - servers/test/certs/trusted.jks | Bin 728 -> 0 bytes .../tests => }/01_simple_metadata.py | 0 .../tests => }/02_erichs_ddwrite.py | 0 .../03_erichs_data_integrity_test.py | 0 .../{autotest_py/tests => }/05_findgreptar.py | 0 tests/{autotest_py/tests => }/10_bonnie.py | 0 .../tests => }/11_iozone_diagnostic.py | 0 .../tests => }/12_iozone_throughput.py | 0 tests/{autotest_py/tests => }/13_dbench.py | 0 .../tests => }/15_makextreemfs.py | 0 tests/autotest/auto_test.sh | 128 -------- tests/autotest/binaries.sh | 5 - tests/autotest/execute_tests.sh | 50 ---- tests/autotest/start_environment.sh | 283 ------------------ tests/autotest/stop_environment.sh | 57 ---- tests/autotest/tests/00_utils_sh | 30 -- tests/autotest/tests/01_simple_metadata.sh | 186 ------------ tests/autotest/tests/02_erichs_ddwrite.sh | 31 -- .../tests/03_erichs_data_integrity_test.sh | 30 -- tests/autotest/tests/05_findgreptar_sh | 49 --- tests/autotest/tests/10_bonnie.sh | 30 -- tests/autotest/tests/11_iozone.sh | 43 --- tests/autotest/tests/13_dbench.sh | 22 -- tests/autotest/tests/15_makextreemfs.sh | 63 ---- tests/autotest/tests/16_iozone_tp.sh | 63 ---- tests/autotest/tests/ddwrite_helper.inc | 89 ------ tests/autotest/tests/utilities.inc | 10 - tests/autotest/utils/generate_config.sh | 151 ---------- tests/autotest/utils/service.sh | 79 ----- tests/autotest_py/tests/marked_block.pl | 196 ------------ .../autotest_py/tests/marked_block_helper.pl | 196 ------------ .../tests => }/dbench-client.txt.gz | Bin tests/{autotest/tests => }/marked_block.pl | 0 .../tests => }/marked_block_helper.pl | 0 85 files changed, 1963 deletions(-) rename {client/bin => bin}/generate_xtreemfs_fuzzer_cpp.py (100%) rename {servers/bin => bin}/generate_xtreemfs_java.py (100%) rename {servers/bin => bin}/xtfs_cleanup (100%) rename {servers/bin => bin}/xtfs_mrcdbtool (100%) rename {servers/bin => bin}/xtfs_scrub (100%) rename {utils/bin => bin}/xtfs_sp (100%) rename {client/bin => bin}/xtfs_umount (100%) rename {docs => doc}/BabuDBMetadataMapping.txt (100%) rename {docs => doc}/Interactions.odg (100%) rename {docs => doc}/MobileDevices-HOWTO.txt (100%) rename {docs => doc}/XtreemFSProtocol.odt (100%) rename {docs => doc}/client_staging.odt (100%) rename {docs => doc}/fileSizeUseCases.odt (100%) rename {docs => doc}/howto_create_test_certs.txt (100%) rename {docs => doc}/mrc_issues.txt (100%) rename {docs => doc}/osd_design.odt (100%) rename {docs => doc}/traces/20090121-find.txt (100%) rename {docs => doc}/traces/20090121-ls.txt (100%) rename {docs => doc}/traces/20090121-read-step-1-mrc.txt (100%) rename {docs => doc}/traces/20090121-read-step-2-osd.txt (100%) rename {docs => doc}/traces/20090121-rm-step-1-mrc.txt (100%) rename {docs => doc}/traces/20090121-rm-step-2-osd.txt (100%) rename {docs => doc}/traces/20090121-write-step-1-mrc.txt (100%) rename {docs => doc}/traces/20090121-write-step-2-osd.txt (100%) rename {docs => doc}/traces/20090121-write-step-3-mrc.txt (100%) rename {docs => doc}/xos_certs_integration.txt (100%) rename {servers/man => man}/man1/xtfs_cleanup.1 (100%) rename {client/man => man}/man1/xtfs_lsvol.1 (100%) rename {client/man => man}/man1/xtfs_mkvol.1 (100%) rename {client/man => man}/man1/xtfs_mount.1 (100%) rename {servers/man => man}/man1/xtfs_mrcdbtool.1 (100%) rename {client/man => man}/man1/xtfs_rmvol.1 (100%) rename {servers/man => man}/man1/xtfs_scrub.1 (100%) rename {utils/man => man}/man1/xtfs_sp.1 (100%) rename {client/man => man}/man1/xtfs_stat.1 (100%) delete mode 100644 servers/test/certs/Client.key delete mode 100644 servers/test/certs/Client.p12 delete mode 100644 servers/test/certs/Client.pem delete mode 100644 servers/test/certs/Client.req delete mode 100644 servers/test/certs/DIR.key delete mode 100644 servers/test/certs/DIR.p12 delete mode 100644 servers/test/certs/DIR.pem delete mode 100644 servers/test/certs/DIR.req delete mode 100644 servers/test/certs/MRC.key delete mode 100644 servers/test/certs/MRC.p12 delete mode 100644 servers/test/certs/MRC.pem delete mode 100644 servers/test/certs/MRC.req delete mode 100644 servers/test/certs/OSD.key delete mode 100644 servers/test/certs/OSD.p12 delete mode 100644 servers/test/certs/OSD.pem delete mode 100644 servers/test/certs/OSD.req delete mode 100644 servers/test/certs/trusted.jks rename tests/{autotest_py/tests => }/01_simple_metadata.py (100%) rename tests/{autotest_py/tests => }/02_erichs_ddwrite.py (100%) rename tests/{autotest_py/tests => }/03_erichs_data_integrity_test.py (100%) rename tests/{autotest_py/tests => }/05_findgreptar.py (100%) rename tests/{autotest_py/tests => }/10_bonnie.py (100%) rename tests/{autotest_py/tests => }/11_iozone_diagnostic.py (100%) rename tests/{autotest_py/tests => }/12_iozone_throughput.py (100%) rename tests/{autotest_py/tests => }/13_dbench.py (100%) rename tests/{autotest_py/tests => }/15_makextreemfs.py (100%) delete mode 100755 tests/autotest/auto_test.sh delete mode 100644 tests/autotest/binaries.sh delete mode 100755 tests/autotest/execute_tests.sh delete mode 100755 tests/autotest/start_environment.sh delete mode 100755 tests/autotest/stop_environment.sh delete mode 100755 tests/autotest/tests/00_utils_sh delete mode 100755 tests/autotest/tests/01_simple_metadata.sh delete mode 100755 tests/autotest/tests/02_erichs_ddwrite.sh delete mode 100755 tests/autotest/tests/03_erichs_data_integrity_test.sh delete mode 100755 tests/autotest/tests/05_findgreptar_sh delete mode 100755 tests/autotest/tests/10_bonnie.sh delete mode 100755 tests/autotest/tests/11_iozone.sh delete mode 100755 tests/autotest/tests/13_dbench.sh delete mode 100644 tests/autotest/tests/15_makextreemfs.sh delete mode 100755 tests/autotest/tests/16_iozone_tp.sh delete mode 100755 tests/autotest/tests/ddwrite_helper.inc delete mode 100644 tests/autotest/tests/utilities.inc delete mode 100755 tests/autotest/utils/generate_config.sh delete mode 100755 tests/autotest/utils/service.sh delete mode 100755 tests/autotest_py/tests/marked_block.pl delete mode 100755 tests/autotest_py/tests/marked_block_helper.pl rename tests/{autotest_py/tests => }/dbench-client.txt.gz (100%) rename tests/{autotest/tests => }/marked_block.pl (100%) rename tests/{autotest/tests => }/marked_block_helper.pl (100%) mode change 100644 => 100755 diff --git a/client/bin/generate_xtreemfs_fuzzer_cpp.py b/bin/generate_xtreemfs_fuzzer_cpp.py similarity index 100% rename from client/bin/generate_xtreemfs_fuzzer_cpp.py rename to bin/generate_xtreemfs_fuzzer_cpp.py diff --git a/servers/bin/generate_xtreemfs_java.py b/bin/generate_xtreemfs_java.py similarity index 100% rename from servers/bin/generate_xtreemfs_java.py rename to bin/generate_xtreemfs_java.py diff --git a/servers/bin/xtfs_cleanup b/bin/xtfs_cleanup similarity index 100% rename from servers/bin/xtfs_cleanup rename to bin/xtfs_cleanup diff --git a/servers/bin/xtfs_mrcdbtool b/bin/xtfs_mrcdbtool similarity index 100% rename from servers/bin/xtfs_mrcdbtool rename to bin/xtfs_mrcdbtool diff --git a/servers/bin/xtfs_scrub b/bin/xtfs_scrub similarity index 100% rename from servers/bin/xtfs_scrub rename to bin/xtfs_scrub diff --git a/utils/bin/xtfs_sp b/bin/xtfs_sp similarity index 100% rename from utils/bin/xtfs_sp rename to bin/xtfs_sp diff --git a/client/bin/xtfs_umount b/bin/xtfs_umount similarity index 100% rename from client/bin/xtfs_umount rename to bin/xtfs_umount diff --git a/docs/BabuDBMetadataMapping.txt b/doc/BabuDBMetadataMapping.txt similarity index 100% rename from docs/BabuDBMetadataMapping.txt rename to doc/BabuDBMetadataMapping.txt diff --git a/docs/Interactions.odg b/doc/Interactions.odg similarity index 100% rename from docs/Interactions.odg rename to doc/Interactions.odg diff --git a/docs/MobileDevices-HOWTO.txt b/doc/MobileDevices-HOWTO.txt similarity index 100% rename from docs/MobileDevices-HOWTO.txt rename to doc/MobileDevices-HOWTO.txt diff --git a/docs/XtreemFSProtocol.odt b/doc/XtreemFSProtocol.odt similarity index 100% rename from docs/XtreemFSProtocol.odt rename to doc/XtreemFSProtocol.odt diff --git a/docs/client_staging.odt b/doc/client_staging.odt similarity index 100% rename from docs/client_staging.odt rename to doc/client_staging.odt diff --git a/docs/fileSizeUseCases.odt b/doc/fileSizeUseCases.odt similarity index 100% rename from docs/fileSizeUseCases.odt rename to doc/fileSizeUseCases.odt diff --git a/docs/howto_create_test_certs.txt b/doc/howto_create_test_certs.txt similarity index 100% rename from docs/howto_create_test_certs.txt rename to doc/howto_create_test_certs.txt diff --git a/docs/mrc_issues.txt b/doc/mrc_issues.txt similarity index 100% rename from docs/mrc_issues.txt rename to doc/mrc_issues.txt diff --git a/docs/osd_design.odt b/doc/osd_design.odt similarity index 100% rename from docs/osd_design.odt rename to doc/osd_design.odt diff --git a/docs/traces/20090121-find.txt b/doc/traces/20090121-find.txt similarity index 100% rename from docs/traces/20090121-find.txt rename to doc/traces/20090121-find.txt diff --git a/docs/traces/20090121-ls.txt b/doc/traces/20090121-ls.txt similarity index 100% rename from docs/traces/20090121-ls.txt rename to doc/traces/20090121-ls.txt diff --git a/docs/traces/20090121-read-step-1-mrc.txt b/doc/traces/20090121-read-step-1-mrc.txt similarity index 100% rename from docs/traces/20090121-read-step-1-mrc.txt rename to doc/traces/20090121-read-step-1-mrc.txt diff --git a/docs/traces/20090121-read-step-2-osd.txt b/doc/traces/20090121-read-step-2-osd.txt similarity index 100% rename from docs/traces/20090121-read-step-2-osd.txt rename to doc/traces/20090121-read-step-2-osd.txt diff --git a/docs/traces/20090121-rm-step-1-mrc.txt b/doc/traces/20090121-rm-step-1-mrc.txt similarity index 100% rename from docs/traces/20090121-rm-step-1-mrc.txt rename to doc/traces/20090121-rm-step-1-mrc.txt diff --git a/docs/traces/20090121-rm-step-2-osd.txt b/doc/traces/20090121-rm-step-2-osd.txt similarity index 100% rename from docs/traces/20090121-rm-step-2-osd.txt rename to doc/traces/20090121-rm-step-2-osd.txt diff --git a/docs/traces/20090121-write-step-1-mrc.txt b/doc/traces/20090121-write-step-1-mrc.txt similarity index 100% rename from docs/traces/20090121-write-step-1-mrc.txt rename to doc/traces/20090121-write-step-1-mrc.txt diff --git a/docs/traces/20090121-write-step-2-osd.txt b/doc/traces/20090121-write-step-2-osd.txt similarity index 100% rename from docs/traces/20090121-write-step-2-osd.txt rename to doc/traces/20090121-write-step-2-osd.txt diff --git a/docs/traces/20090121-write-step-3-mrc.txt b/doc/traces/20090121-write-step-3-mrc.txt similarity index 100% rename from docs/traces/20090121-write-step-3-mrc.txt rename to doc/traces/20090121-write-step-3-mrc.txt diff --git a/docs/xos_certs_integration.txt b/doc/xos_certs_integration.txt similarity index 100% rename from docs/xos_certs_integration.txt rename to doc/xos_certs_integration.txt diff --git a/servers/man/man1/xtfs_cleanup.1 b/man/man1/xtfs_cleanup.1 similarity index 100% rename from servers/man/man1/xtfs_cleanup.1 rename to man/man1/xtfs_cleanup.1 diff --git a/client/man/man1/xtfs_lsvol.1 b/man/man1/xtfs_lsvol.1 similarity index 100% rename from client/man/man1/xtfs_lsvol.1 rename to man/man1/xtfs_lsvol.1 diff --git a/client/man/man1/xtfs_mkvol.1 b/man/man1/xtfs_mkvol.1 similarity index 100% rename from client/man/man1/xtfs_mkvol.1 rename to man/man1/xtfs_mkvol.1 diff --git a/client/man/man1/xtfs_mount.1 b/man/man1/xtfs_mount.1 similarity index 100% rename from client/man/man1/xtfs_mount.1 rename to man/man1/xtfs_mount.1 diff --git a/servers/man/man1/xtfs_mrcdbtool.1 b/man/man1/xtfs_mrcdbtool.1 similarity index 100% rename from servers/man/man1/xtfs_mrcdbtool.1 rename to man/man1/xtfs_mrcdbtool.1 diff --git a/client/man/man1/xtfs_rmvol.1 b/man/man1/xtfs_rmvol.1 similarity index 100% rename from client/man/man1/xtfs_rmvol.1 rename to man/man1/xtfs_rmvol.1 diff --git a/servers/man/man1/xtfs_scrub.1 b/man/man1/xtfs_scrub.1 similarity index 100% rename from servers/man/man1/xtfs_scrub.1 rename to man/man1/xtfs_scrub.1 diff --git a/utils/man/man1/xtfs_sp.1 b/man/man1/xtfs_sp.1 similarity index 100% rename from utils/man/man1/xtfs_sp.1 rename to man/man1/xtfs_sp.1 diff --git a/client/man/man1/xtfs_stat.1 b/man/man1/xtfs_stat.1 similarity index 100% rename from client/man/man1/xtfs_stat.1 rename to man/man1/xtfs_stat.1 diff --git a/servers/test/certs/Client.key b/servers/test/certs/Client.key deleted file mode 100644 index 300b0830e..000000000 --- a/servers/test/certs/Client.key +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDCjEmDQzzp4+FtNw31mJM6D85EDW8mhrX1xWBRKd4Tr3fibYjY -VgkoXX03QmIqmtA4Rbbu7cqkq8grOdX7a2LcZ3tNaByS9C1wFc5QVqXd2ZyKj7O7 -bvTEawwDbU2gdgFgFsrt7AGT3fPeT3bqK7W0bS/Rgw0hn8OAm6QL9NqiiQIDAQAB -AoGAeYyQuXQe8Lqxszy8ef9zrMkHRDlogpeTxBQnU05nM8Fjk5J/9zn5ysBuZUIS -dy/2e9ICs1DaVPwGugsOiGDViGqVwzNJUo5Odst0POEEFCc04EdPlLutOdd8vaFC -fgj7toeosynhL6nqvAzQRe1qCp0oDkxa5zwymijYp7hlbEkCQQD4tqWSrizdpHVI -wJS/NbUD67ggoaQ37Pjdp+TkueGFgZaBMrE1XNFX39Go3bl7MK4lhU8ENc+A7s8U -tA4aau8bAkEAyD9mHgC2V8BBE1VuIdq9FwGwu9Khl4a0OjWCRIDLNZyjSaYGNCWU -7R+g6rHU3C9LiJvrsPz8eMZsgcfWO6/7KwJAFtDKh5Yqz3pSuAXSn2fR3zY0genS -Ir8+ZTcNrF3Q7mpg4CFCWF7XZXRGy3LrnP1uPErqYLx++JjvrjqGQK4mmQJAJxUw -ohRzgkb0rIhU+WiO1UmwK8hdX4yb6mx9I0+b2bfbqskrlsvq+CjfKE9TAzJ75IrC -AoYt5IidrurI5ldfhwJBAN0odw6+SW/AiUl4maE38y5iCGwg6vOUNAiW0HinZjCE -rarUI6jSyCc4DeiLp7DTF5n9OLdkXq8qUx8OaX5qcRU= ------END RSA PRIVATE KEY----- diff --git a/servers/test/certs/Client.p12 b/servers/test/certs/Client.p12 deleted file mode 100644 index 9a91e233732ffa29171309f01f77fd6ede8ef507..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1746 zcmXqLVmrsg$ZXKWHieB-tIebBJ1-+UCT3TJ45NVz8yD0B9!53;J{AtSmpRq*4)XRfF>x?7G%-sgpPBZoZ<*lDklEKv z)2h7ouR3GQd*_+>GdlyFZQnl3JG({V0N1sm&gmK{r%EzYPfSe^E0o^7c=nV?+45;I zAH$}3d+~JC8R>JK()$(VeDl)omx2ES*<|N?ooU>g@;c4Y`(L%B`0LZMb=w^OvYq0a z^>eZF>%9}2AJbC6N&TS*k;4amls0clz+A?|=k7e5dm!R{*P$sn6<>Jbq))!KdFU_yqsy&l!xHY}6Ifm^Kd!X* z68{;gLme4OVthACRv$Zh)mhq^bJCk{EiazfsIUISrr-bUd&tGN%L{xov-({c(&n!C zReUx)&TyCHz617g;>*nZe4u+~?a!L{~j{VDy^QT4gfr|<1b zpLM(1^#jY}?_YPPH|JmcE!gqHc1_^ZYX)=I3URGBJed7sMf~9)SMiC9_I-VSzsoMk z?v(nHk6IVnrav^ezCbAa?K)o5#+`egtO-z1TlZ$dmDl2`8QM%MmVK4Cn19M`!Q5Kz zlU8aHyl-CA#J`^=V)$ZiM8qP2m}FD=BPAvs_TFK7B_ChE=O|Z{JIvdAul|{oke6ez zWaEUCFlPIlboE0E?yZ~X8{oaxWskm}$AV5@sidqoGbhAuk`w6O@$tmOsNBB5ttZ!g ztzCO1typMYP1d;Uv)R3-8H+ap_ zp7?v^n)L9O@3}v$U*g^SP`gX_eab$Xkr#a%18^E znAusHn3)ZlnEo3yG5u!ahGi=*My3T#Ov?YrHfB(6d+ny-YtwVm8jC-g1&#+XranfA0R8ETD$!_|3J-xQDt>=w3?t=8jTR-(>dQL<)(-?=Y0 zdEN8k=gp5}c=mGtKdsA$cTb7F$MlnhMU_$H6uZVb<|(JeUT->kJ~V2bbb{-(+g>MT zMqKetI_{mnFs6Q@i?GG-oq;Nj`#R5NY3gqh3r^CyktAAhG1R%(tNk^zWpMuT(!Ofm z;J_!Kb@%4Zx>e7_s{h6x(O*Oy&gZZ()uS8?<6a?u1#;*CfQ<@nE8S` zZqC$}i+i`{$oAhPgg}hc^ea!oHe`1zu+UCpIXOEv* z)Rys7b9wHyz=uaGxw{JWb+H}%9%I`l=J~G Ckrs&n diff --git a/servers/test/certs/Client.pem b/servers/test/certs/Client.pem deleted file mode 100644 index dad562856..000000000 --- a/servers/test/certs/Client.pem +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICmTCCAgICAQYwDQYJKoZIhvcNAQEFBQAwgZAxCzAJBgNVBAYTAkVVMREwDwYD -VQQIEwhYdHJlZW1GUzERMA8GA1UEBxMIWHRyZWVtRlMxETAPBgNVBAoTCFh0cmVl -bUZTMQ0wCwYDVQQLEwR0ZXN0MRkwFwYDVQQDExBYdHJlZW1GUy10ZXN0LUNBMR4w -HAYJKoZIhvcNAQkBFg9DQUB4dHJlZW1mcy5vcmcwHhcNMDkwNDA1MTEzOTMyWhcN -MTAwNDA1MTEzOTMyWjCBmDELMAkGA1UEBhMCRVUxETAPBgNVBAgTCFh0cmVlbUZT -MREwDwYDVQQHEwhYdHJlZW1GUzERMA8GA1UEChMIWHRyZWVtRlMxDTALBgNVBAsT -BHRlc3QxHTAbBgNVBAMTFFh0cmVlbUZTLXRlc3QtQ2xpZW50MSIwIAYJKoZIhvcN -AQkBFhNDbGllbnRAeHRyZWVtZnMub3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB -iQKBgQDCjEmDQzzp4+FtNw31mJM6D85EDW8mhrX1xWBRKd4Tr3fibYjYVgkoXX03 -QmIqmtA4Rbbu7cqkq8grOdX7a2LcZ3tNaByS9C1wFc5QVqXd2ZyKj7O7bvTEawwD -bU2gdgFgFsrt7AGT3fPeT3bqK7W0bS/Rgw0hn8OAm6QL9NqiiQIDAQABMA0GCSqG -SIb3DQEBBQUAA4GBAJzafyIsGcyK/ZRFozgCwteu4DchMuvHmhkEa8vO5hVJwiK/ -mDFmtgCUEf3gtyqQVmYyp99OohFNVTmBndX4j/GCUVqRxfCaojzN89kpsJnHuR/B -FVHbqso+oavB+jOgu8fWMQ6jNsT4Ql0BgIzf5Lc08m/kIodnES92qNHOdixg ------END CERTIFICATE----- diff --git a/servers/test/certs/Client.req b/servers/test/certs/Client.req deleted file mode 100644 index c78fec1d0..000000000 --- a/servers/test/certs/Client.req +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIB2TCCAUICAQAwgZgxCzAJBgNVBAYTAkVVMREwDwYDVQQIEwhYdHJlZW1GUzER -MA8GA1UEBxMIWHRyZWVtRlMxETAPBgNVBAoTCFh0cmVlbUZTMQ0wCwYDVQQLEwR0 -ZXN0MR0wGwYDVQQDExRYdHJlZW1GUy10ZXN0LUNsaWVudDEiMCAGCSqGSIb3DQEJ -ARYTQ2xpZW50QHh0cmVlbWZzLm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC -gYEAwoxJg0M86ePhbTcN9ZiTOg/ORA1vJoa19cVgUSneE6934m2I2FYJKF19N0Ji -KprQOEW27u3KpKvIKznV+2ti3Gd7TWgckvQtcBXOUFal3dmcio+zu270xGsMA21N -oHYBYBbK7ewBk93z3k926iu1tG0v0YMNIZ/DgJukC/TaookCAwEAAaAAMA0GCSqG -SIb3DQEBBQUAA4GBAI0OKEQfcvHa75xEp2VVertu/mD+OaDFMonODVHBlnkXRKup -VglJmSMc9igdWMB4cSpn3FhfHKW8bx4Q6+xS6Wgo7j/Yc5OuhvoX5dlWFH8DJvJw -xHROR0OEJG1VuHzHzyYsK/QD/0uwKJrn4LRq/MpP9NlDP11pJI7VaPHodw1q ------END CERTIFICATE REQUEST----- diff --git a/servers/test/certs/DIR.key b/servers/test/certs/DIR.key deleted file mode 100644 index 7ffb85380..000000000 --- a/servers/test/certs/DIR.key +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDCEgrLdAJ5iehbhXK66De0xaws9fCsRgDoCQOtuZSfL7o51aaV -SHCwxqQckIIEU/nT1HfBRE+DmXHrk+oCEQXeIgvU7waNxNcuh6bW6PLwJBgkLYGs -dkNAG/78eWI3wBwdMGFmK0F2jpO5Yy48+YLnDiBcU8Oufd+P+MVKPsKcMQIDAQAB -AoGAaN3A8YElWTFY2iN5BGA4wbjSuZTH0P8evEMqtrQCCCaNFXVKR35WTl94DGtV -pisOYxV7BHb6FF1U/nv1xdoW9alB+RHK3UpoCbSTgVRr0GE9y/Xr94HQgvRZqrIP -KUSLuIrLNjZ/n8Md2UjpJUwMq6Ss8zJLKmDunro1LB8Ik4UCQQDgOp86Vg83uOxC -3AdV9nB33RKDoSy5nmEyutZavnPYMZrnbsQG3WqnZzPSe+oebq3YX/ZsQBga1Ijt -Wff/RQyDAkEA3ZF9vLMaeKLYR7fsFB3azQq0pJ87jCbg4r29dd91uCd8Gbcjh1IU -oVoa1L1pUnG32ETvZ7P1fZ3okYZa9Rs+OwJBAJtO31TXoOi2lCZnIkmfTR0oqZc0 -frb+hVJO6QOnYLPBAAsGxI4AtMvIhrNmkq2LeawiI5us9UU4KrNDmqtb1yMCQCTo -iH53g1BXKBoCTEQpmPoQ73iAweWd0FZU7wuEltJ/WU/bTwLKrH8YSGHpz3KZWNug -2BR5SMqNFGGxdNNhn2MCQA79BlUxIyo3BCW0y+9nCX2mxpA4kSNFao2h4PbS1R1h -b6ZvcxPN0zzLLOg5WYk90sYvxmJsBK8d6FrHl0wTLlE= ------END RSA PRIVATE KEY----- diff --git a/servers/test/certs/DIR.p12 b/servers/test/certs/DIR.p12 deleted file mode 100644 index b8e210aae7a68d91b13747f9bd71407348b17969..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1724 zcmXqLV%x#Q$ZXKWR>#Jv)#lOmotKfFaX}MXK1&l@wm}nHx#TMv;)|`)A*DFJd^iWmT*H%kODNQc&KeVf4x^IAR@uH4{(T{i3_TJtT zHYdG#>)u35$GQG(??ps^a@qVnCAcsABUh@gz?_abUsUXjnx~W(-4rqQy`1U#_RW~%1?oggDpr~dij#a#I_dsp6(_-lPGaq_0BS;^Xh8P~2X$#z+>YERcaXY(hb zF-Kh57B{j?{=Dy@*>0u}F84Z%D*7i}z1v=`@_E{${><~mpKopH`#hCXulZSjK(fK+ z=GXs%+_g?-+44K=U!C{#mtuIs^0vH=*rgGg{PP%hzvOxF=(EQ;?Pn#o?rl3EaiOOs z=%3@qh^HS}g7>CdAMr+a6`mc~Z8afa9BF1ltm-{D`v%93qaKa?UoG?(4_SN^P{ z&9z@`netTEqib5TZpepm+HRVybYaEnR9AogOI!Kfl9fO8*K6g5PP%OR{^i|8FB)@f zt;#AKZfnoA))2_?KBLOYUN86TOww_M<@ck@)9M_Vo2Mo&(bBHnDCPUU^IGe+<)XUQ zccxZ!2{TXMe2jIAt7mJDiEqN@DP%xp7c2&h?jn-;)EMA9@0>U+ACRQkAH+C*~Pb@$q|Ba%*f2LXU~bFW=X7a;sY8P20`? zvpMo)jW4Bf#@OF2jB22IQYNEv5A6Eh=A6VqRVCZ?YTO-x_exMA6d zi;-zT6Voz-CZV!+%rE|-RH)+nFUwg1_y;_5{eP}(u$ek@P?>PHLwmD71x3)Q#OJ{Fz$V;hTz)5p)3E=HPYe9(L> zE3t2x=YuC62mB1$7Bt>DIYm*MzipSiNRP&GyKDDKWn2EN(0r}RZQ>a9s8Zl-goOyd zMdI1dOG1{Obr2|>`|WxO)9Qjh_a~mc7{|jt_rl((KVK&wkj+Z9V4PO-{k&@5U)!C3 z_Nr+qB)vb9-X68?twJTIrnM;3$MtUlPjf!p@0+koxS{m3UXGoCk<9(-&yB0knm+qB zt5(g?abJE(mF#1gTh+(6N^NKn`XE=Tk#bXfyHl~den|$G-$j1mEoTd+?JD9`-m&qF zy~9RV)9k$74FWeh+k8z-S*I|cbDrRmk^N76ZDjJi&SwHg&wO-nk$(O0bg^O3+2aM< zT$eAN$ZlOU*&s)5jRC)tt&IF`{e+m>zdq)B{yQzK5>?UkT3NI9%Y%=i+HBAFNWAuR zxWaz=@e1~>W-hz?o_vgLn|M8Ci>hLy$|IXa+cK=g5BjLcvuV4C2v2p=KG(T(qN_*x2W6vY7#tg>sY|8+GBn$!AEbh7gPutp3={sU(KF! z^5k;QJJXk}zj5y!@4P8f!&MjM$8B9PDaAgo*Jk2G?V{+7B5AKOuCQsHl0TDK{>L%# zzw8aS^@|URn5_IPqx-sAiK*Vt@?ciRv2#&BIqE;(V%lTGnepP|jK1ZEInz_3?rG?R zpUPZ+G3e@pmrGC1@NM(UU44>6*)2SuVRx>YEW4qNfhasxbBY*p$gwfFFnBTq87L!! zMGeJRL?&2un%a1)N%T3F%Rk@acl+_NpVbD228srpY^>UR%uG_O3@jqt`rP|c_J5u0 d;+2%NAzE|a)`WOl7LF6LIb2FcYmR~vJpdln1YiIF diff --git a/servers/test/certs/DIR.pem b/servers/test/certs/DIR.pem deleted file mode 100644 index b0d8a802c..000000000 --- a/servers/test/certs/DIR.pem +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICkzCCAfwCAQMwDQYJKoZIhvcNAQEFBQAwgZAxCzAJBgNVBAYTAkVVMREwDwYD -VQQIEwhYdHJlZW1GUzERMA8GA1UEBxMIWHRyZWVtRlMxETAPBgNVBAoTCFh0cmVl -bUZTMQ0wCwYDVQQLEwR0ZXN0MRkwFwYDVQQDExBYdHJlZW1GUy10ZXN0LUNBMR4w -HAYJKoZIhvcNAQkBFg9DQUB4dHJlZW1mcy5vcmcwHhcNMDkwNDA1MTEzOTE4WhcN -MTAwNDA1MTEzOTE4WjCBkjELMAkGA1UEBhMCRVUxETAPBgNVBAgTCFh0cmVlbUZT -MREwDwYDVQQHEwhYdHJlZW1GUzERMA8GA1UEChMIWHRyZWVtRlMxDTALBgNVBAsT -BHRlc3QxGjAYBgNVBAMTEVh0cmVlbUZTLXRlc3QtRElSMR8wHQYJKoZIhvcNAQkB -FhBESVJAeHRyZWVtZnMub3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC -EgrLdAJ5iehbhXK66De0xaws9fCsRgDoCQOtuZSfL7o51aaVSHCwxqQckIIEU/nT -1HfBRE+DmXHrk+oCEQXeIgvU7waNxNcuh6bW6PLwJBgkLYGsdkNAG/78eWI3wBwd -MGFmK0F2jpO5Yy48+YLnDiBcU8Oufd+P+MVKPsKcMQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBALFT3LVWtbMwwE8NBewMqWihgspm1JVbkH6JOJHqjQqTNv1aO3c2CHzT -8q3DsKbbbiY5aRzkC5xtUoAE2UhcYpBNJfOR/E8yf1UwK9Z/VRXN77I2TvNGUFpk -lL/dJg/dyfjWwRssw421ebhN9H5cEZa51prvgyuPD7DliqjXycXp ------END CERTIFICATE----- diff --git a/servers/test/certs/DIR.req b/servers/test/certs/DIR.req deleted file mode 100644 index 38f90beb1..000000000 --- a/servers/test/certs/DIR.req +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIB0zCCATwCAQAwgZIxCzAJBgNVBAYTAkVVMREwDwYDVQQIEwhYdHJlZW1GUzER -MA8GA1UEBxMIWHRyZWVtRlMxETAPBgNVBAoTCFh0cmVlbUZTMQ0wCwYDVQQLEwR0 -ZXN0MRowGAYDVQQDExFYdHJlZW1GUy10ZXN0LURJUjEfMB0GCSqGSIb3DQEJARYQ -RElSQHh0cmVlbWZzLm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwhIK -y3QCeYnoW4Vyuug3tMWsLPXwrEYA6AkDrbmUny+6OdWmlUhwsMakHJCCBFP509R3 -wURPg5lx65PqAhEF3iIL1O8GjcTXLoem1ujy8CQYJC2BrHZDQBv+/HliN8AcHTBh -ZitBdo6TuWMuPPmC5w4gXFPDrn3fj/jFSj7CnDECAwEAAaAAMA0GCSqGSIb3DQEB -BQUAA4GBAIf6IXnojri/MV7kjK+6vkGBdPZJMtOTDOQGCZjuuvBZSymWKqpF/elC -xEeT0vCunsu2SGPYCnVB1iv5t74x4GoAehN7nYD0ISh5BJMscFogLxkztdzlE0I/ -bcaW/F7v8BoppTxAMMVl1oIwlhEQcqUGGyoZF4AiT51TeFBVliDR ------END CERTIFICATE REQUEST----- diff --git a/servers/test/certs/MRC.key b/servers/test/certs/MRC.key deleted file mode 100644 index 1a3d6b06c..000000000 --- a/servers/test/certs/MRC.key +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQDbQy524JeUhWINty4KE+cQDs0/eLK6BrYu/10ix9Gz4qayachU -QezOXlnN2JRPP46gYNXRUmhM+0beI/h55JCUwCM4XCgdvZ4UWaW4XWmlbjEIoyzT -EkuWXKNxoUadSxnOlHGLO3CTdd7r5evETJZ+D1F7JYqAW7KwBNMX1LP0XQIDAQAB -AoGACqLAnz2XvLmXnwiysAR1Id9F731AViu7LJ5wex5sOqiU43SkJgoonX4QJx8J -Wqq/lWH9HTE9I/bQYjgmdmsy5B1DJ5U7PckRB4o4kp7U2+IDVQ+xcC7jlnBjeDpM -qVgolO86g/mMVNf4RQjDt94Rj6Wj4Klaoi32tYMomf4OYGECQQD7iq8Odkr6+foX -urqi99xhLmIBzo3BdRXjFu1WG/eBPsUq3cylWBPFh3IxgGpP1Qq+Bbxp7Dl+6tre -XZC9B4SVAkEA3yYJjePUgdScxiL4n1kqqWEa1LSG1u+uTCNgo1qr17Zjif5tpmsW -5aR11i5Ckhn5YZnVV708v47Htm9Qmi42qQJBANJwV7vVoy0M7PnlMjcc/bYfw8aX -M2jht4ngqHYdt5bdGL6gCJFbek8K3bIkKMzZAr+utM443nEbsjfON0StgXECQQDP -ytjMwuHo//X43ynLILoEPcNBXNXPIiOZDLx5gP5SAaoRHtY2SLRqpUmBZ1RgPkWl -6Bzs9e+ypR89t8xDtlL5AkBbcWlztb26kHx5n5wBYFpJuJJZaHzU5fAWtegHRmOc -xTevg1xL7HS4f9d/HKDXk5og4tYMuVdauQEInuiyCM/M ------END RSA PRIVATE KEY----- diff --git a/servers/test/certs/MRC.p12 b/servers/test/certs/MRC.p12 deleted file mode 100644 index a2a0a847b73e78a41d815062062ee722a31485c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1724 zcmXqLV%x#Q$ZXKWR>#Jv)#lOmotKfFaX}MXK1&l@wm}nHxx?7G%<6$Ds!xsy*bVB&)1i6 z4{WZb)i&8|u=te^d53KK)rYW4%IcpL!cl?8{OwnJqUo5+A&~Rj_|U z;*(=6e+s_cFx!&Oa&Z2$#oIzz9NE+lO**lEqYKLnZNH;(O@cjYPK&Nq`Tm{x>#w%> zot-`AY^xGV%>yQ0)h-q8m-0KYdBKB39peWKT^Eh^H(b8TotXHSJ=BZcf9V{q{Wn9h zn;n0wyuC?W^&Ef9)s+uVZl7+FKhd45vO;n;Q_aO!LTlc?cm0=VCO73=_tH#uRR<^U z14gO=>$h@AT@ctMv3Y*&b@%OxWm>1*?#_Pl!0XICj`&puiOeoPyKlOPCoR${ICySO z>9oU5jS_eHpE+llF}`*`H(`R@U3tH^OVgxuZ>c9q+H`u~n3lO^{~xBMb7O)vletbw z&U|$JTEsMYJEmEppR=z$uSztCKcM(-@2=>V%Z|_Hv*tg|_wkc!>`(LA?QA}xS*|Z~ zw{E{S{iFtG<+e$um#YS8e|->P93j`Ay6)Q36-8kazlhbF_7-*cUFst?}eJlX9wpL<@P?X$I4w|8=i9jxll)nhAK9f~d~MN=BR5sQRqpfoXdNhK zeL2f*F;}+a5z$$eVIL$-zxUMf`oyncbG}w*VCkVz!0_v~!UWyp*`@{hhc50AxK;FQ zW}^4TCWBM|uCKc3oh&dZQ+D^P#PeHrU!4DSY0+ZA_8TieQ|dne4RVYs*DP4zAgl_Sy< zC*HZT$KvP4m(j*)2H%}t-e>%Ea@Vvq?;rE))`#~LTI~~kHPcy%`{;vCb7P4Yoi8Ll z2CA%D!!-Lm`y4ih<$ep#t4bc$KcAW``Yc)H$mPju3TpguukW!hv;3GP&ip0M_>1)Z z$v1wUo_va@kR@uzr(WZ&ZGgMj6H5`f3 znq|uKvhw=RimjWEm?SnoJN!ZS?d}^N1E=R@rbe1GU#p(+Wn&)i5+McoIqP{_f=$FV z=5iXEZrJ3{?(OiG@5-Tn{i=)f4{tVX{A%oaKX{+sCKirIPi`-M%D8L|DA5A|5;+Y} diff --git a/servers/test/certs/MRC.pem b/servers/test/certs/MRC.pem deleted file mode 100644 index e66a9d69b..000000000 --- a/servers/test/certs/MRC.pem +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICkzCCAfwCAQQwDQYJKoZIhvcNAQEFBQAwgZAxCzAJBgNVBAYTAkVVMREwDwYD -VQQIEwhYdHJlZW1GUzERMA8GA1UEBxMIWHRyZWVtRlMxETAPBgNVBAoTCFh0cmVl -bUZTMQ0wCwYDVQQLEwR0ZXN0MRkwFwYDVQQDExBYdHJlZW1GUy10ZXN0LUNBMR4w -HAYJKoZIhvcNAQkBFg9DQUB4dHJlZW1mcy5vcmcwHhcNMDkwNDA1MTEzOTIzWhcN -MTAwNDA1MTEzOTIzWjCBkjELMAkGA1UEBhMCRVUxETAPBgNVBAgTCFh0cmVlbUZT -MREwDwYDVQQHEwhYdHJlZW1GUzERMA8GA1UEChMIWHRyZWVtRlMxDTALBgNVBAsT -BHRlc3QxGjAYBgNVBAMTEVh0cmVlbUZTLXRlc3QtTVJDMR8wHQYJKoZIhvcNAQkB -FhBNUkNAeHRyZWVtZnMub3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDb -Qy524JeUhWINty4KE+cQDs0/eLK6BrYu/10ix9Gz4qayachUQezOXlnN2JRPP46g -YNXRUmhM+0beI/h55JCUwCM4XCgdvZ4UWaW4XWmlbjEIoyzTEkuWXKNxoUadSxnO -lHGLO3CTdd7r5evETJZ+D1F7JYqAW7KwBNMX1LP0XQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGhy1sbeG5bquXiB4QYeCTZ3KvnNfvf2aoPx8LwqVdXmBcYr9O+FCXeI -lttO9n1GeEwX5HRfYfP/FO9ncEV36OK/eDv7v8VX8UHMt6GQTP1ZU4IyhtWOWf3j -87UtsQ1jaFhFhT+Qr1PBtmu+J3JCKJg1Oobh4BOQ8z8tpaqeHV1E ------END CERTIFICATE----- diff --git a/servers/test/certs/MRC.req b/servers/test/certs/MRC.req deleted file mode 100644 index 758fd43f9..000000000 --- a/servers/test/certs/MRC.req +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIB0zCCATwCAQAwgZIxCzAJBgNVBAYTAkVVMREwDwYDVQQIEwhYdHJlZW1GUzER -MA8GA1UEBxMIWHRyZWVtRlMxETAPBgNVBAoTCFh0cmVlbUZTMQ0wCwYDVQQLEwR0 -ZXN0MRowGAYDVQQDExFYdHJlZW1GUy10ZXN0LU1SQzEfMB0GCSqGSIb3DQEJARYQ -TVJDQHh0cmVlbWZzLm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA20Mu -duCXlIViDbcuChPnEA7NP3iyuga2Lv9dIsfRs+KmsmnIVEHszl5ZzdiUTz+OoGDV -0VJoTPtG3iP4eeSQlMAjOFwoHb2eFFmluF1ppW4xCKMs0xJLllyjcaFGnUsZzpRx -iztwk3Xe6+XrxEyWfg9ReyWKgFuysATTF9Sz9F0CAwEAAaAAMA0GCSqGSIb3DQEB -BQUAA4GBAC8OPEJdaZQ9OPLYhK9yHH/SYl28eHjjPF6muQeTQLClPymNhujGPzam -uO+hBTTgk1A8AuRTd58+yztPsJ71sbm+yeDkKXWfQqk84BPrCy6yQWU5AtGTheRT -yJnhQX1cg1MW1k29iZNt+OnnRFFPIoJ331K1OUVFyM0VT7tdsN8H ------END CERTIFICATE REQUEST----- diff --git a/servers/test/certs/OSD.key b/servers/test/certs/OSD.key deleted file mode 100644 index a6ef17d0a..000000000 --- a/servers/test/certs/OSD.key +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDLKwRsJwQ/ZOosGxFyuOPAaz22FNFqRq28S/Oo5jI2gyVAsLDg -S0QQMQfFDnltiOGBy5FHkxrGFRvJd1gRQe4OxEbDJIJAFMPkn9wkgsLfsZr8iLJF -k2bZLBGMlBIU2BTdTkDoJcysWuS6APJMAI/EwC0hoEzs+8qKUfTfnFKoiQIDAQAB -AoGAYHLjfpRnJ9E4ege/mL69IDPI8A+h+tni0GkeGyhs3gQUQ0meLlyMy0L7dUkR -zDYXGA8TwO7M3wxWTKYjYM3zvKVlRzuzGYyghZn+Mfq+7M7GNv2LCAFXhxP+o5jS -IR7shjQh9P6SrZIB0o/VYyLL6E6ZKB0USO98sRbAvgCu5iECQQD6cYrHLqGQF5eF -772dkrUx++zPB5sBGq0YW2dwURHWcJrDCPb4SAryJYyaBG3m35hotSAT1M16uQlR -KciJYAszAkEAz6z2RDo7lT6MvCet2UQde9gmzKyHlN5eqzKPlftiUJZUDF6B3Epn -1oz61WMDwG9fzCreJgG3mT8NHqnf1WzdUwJBAI0ORkvJR9YQc5dMYE/PwZ5Vdhtk -/Tix/awqTyhDgPh2k7Ql6HQOn5ui6n4U4JGYfg77dQW2ZcUpUsYT8o7tOWECQFvF -wjoaRbRJJOYM3s1xRVoyBctSvsNxlQIwYLVVlneoRtIEfXx8wPBV8o6Tp9fFH99Y -Xj0LazfkXgbb6NcmuZMCQEJhdpQOA8vSFUF2WBFEVizuvXPIdZTF6lL8reGON5Cd -AsGsYBEVPcbTEikj2sDtjAG78PMb6u0F/zXfp46D2y4= ------END RSA PRIVATE KEY----- diff --git a/servers/test/certs/OSD.p12 b/servers/test/certs/OSD.p12 deleted file mode 100644 index a26acd05ad75d390376e5dc65d6251226a5312ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1724 zcmXqLV%x#Q$ZXKWR>#Jv)#lOmotKfFaX}MXK1&l@wm}nHx` zpXb9Km3F+D_HHwyQ=ipLy%YiA)mxtQy81jn_OUnb<;sJNQaAhKYl?Jx-nG>z7N=;n zt=e_BZ{q$VwVixl8sGO6Z}i*xTeC{RzAy9cj!(1RmE2o3DWUyKUd)}7g?k!gmrABv zxGbBQb!(>ns``JyjxzUh`DJR2CkAO@TXi!jtuvKf86@^+VD9 z)m?rY9x09=)&Jh3$=Eg z2p14^N^JOP@xbf1%YF~(<2xlb|Km@Zz>~A+lalL&FsB@5r%R_KUOac)a(LaPr+ZXx zXn&3~J*WL6dOPQp>uwJ^lEaQI-gxP2;=JxtZzeUa=#+Ke(CBgg;mJVpCXx862IC{4 zPCZGFWJPD`Z)lnGA!BBd$;Ve0m6hdL>@u~uIh+nZ^s`BFEMxCG^yi$dI@6ci7Znyq z-@D&@cCx&qM&`i^@o&i|_99Jlsn3*Qmto)B)GlTF_e1Wc#wey#Lp#>UOg zYgfK}n*RIQclX?7*_Nw}E`0su)3BGD>ad};oMvdGPizu!2m`oGcg(_00N+Mi{|)WzG@TvvU} zZ@D&SkHFt0nD4rtZ-{K4*>FP0QJfnOA!<20l(X z*eWC+yji`{y({ORcKCLNz%^k~;nG4(bL|qZm+@~-wka`HVpF}=IahXSfp=DSv*|s_ z*TPdi9lUpTdZqY%gSvIa+df?PmWfaB{c*LnIOpBV3qKc6$c*-obf5HX&M)ULi=FL8Y%>bdB>Hm9)Ah5PxNf z{%Xm&%(Tn87sDQP@lN?45Sd%BX4S-F+DkWZr1;r)W~v4JzHZI&bNgiO6$?FHb@*<{ zstWlmH;eK2lQxIhakm5cti&fxy|z0@#5KqLoosd7jJYn+>o@P585ua4;p$n<%#RU^ z?EI1zPnNF?KN%Cdwqm!F!10wLvsu3eU6V=v(Vlb7?3aMi#JYVCl|nQpMf#)%7XQDo z{?6C)Qo;UTWto}l%~RDE?2P94pWV9P?cPA{=~wO?35i{jy=cSbKb>73^EWm1d*7D| zJeOjW;<5OHSZ{f~*q>E@&YGRCvHUEOaAoF+8ODF>qqU#3$KfV&R!xY#TW><@c*u-(6h3Tlbq%Q*N}uwbpsAI(zlP48Lt%_Uz8$^O8qz zEx35#P@}O7i|W%GFJ5eK2*1#LzjE(4zB&&6x0>(t&fR!<>Z$P?hTofS=*_fP+IisF zoweGgy4^a*1+6Ssa_Zl`{LQxA@7tkmna5^!@PC#LsJ+V`x9Lafq)j)L8*tkPo-8n% zlqssdA!6CwR9(-6DM!td|CMr7blVhb%>25Yw|Zvn+V?*;=lt%Ttaa%pJ6r8yH{XT_ zI>&a{r3cwu_HT~7vQRqzubm3dntgB2dGTD)+0?hlT3KxRUDg@9_Ro6r!7jq^d9JAp z_vP7UoBs41o6`4}C;s00-OKk`Gqm~lID|^3Ck0d_r*AN{F%X5PYEBVD4mmake}-TN z7XxL4u&ALJi^%%R?|9d8R@w>99$7oK(lLjy$vPBvC;K4vB~G*yatvACI+U4hQ^i##!=$Dh6YI7!RX}1`N-kQ$jZRn*vnwh*vZt` z$gpGI0-m=$9H;UoC34Ty3gN2AnsBi8P|2aKTrt7#gwqQy8K-WsUSgjZe&&{#SlK?S z?YzJ3`!!y#srUKtWV863H(ugrsy3RZ&t187zVm;zUo9oRnP&`sFS2{uHZd}LVpy0! zH>bmeU_VJ zf7L{h0MoacR|LZLs@GZT?_TJ8{_URMan>u-q`Jf2c=E8c@)bU-nbh%X>_sj3NSz6 y`r^y%gFc_HJbrZVlfA(c{h7=gPBN`(+wn$p&Eq>$yL*H)q_l5eShZVidk_G;{_r9I diff --git a/tests/autotest_py/tests/01_simple_metadata.py b/tests/01_simple_metadata.py similarity index 100% rename from tests/autotest_py/tests/01_simple_metadata.py rename to tests/01_simple_metadata.py diff --git a/tests/autotest_py/tests/02_erichs_ddwrite.py b/tests/02_erichs_ddwrite.py similarity index 100% rename from tests/autotest_py/tests/02_erichs_ddwrite.py rename to tests/02_erichs_ddwrite.py diff --git a/tests/autotest_py/tests/03_erichs_data_integrity_test.py b/tests/03_erichs_data_integrity_test.py similarity index 100% rename from tests/autotest_py/tests/03_erichs_data_integrity_test.py rename to tests/03_erichs_data_integrity_test.py diff --git a/tests/autotest_py/tests/05_findgreptar.py b/tests/05_findgreptar.py similarity index 100% rename from tests/autotest_py/tests/05_findgreptar.py rename to tests/05_findgreptar.py diff --git a/tests/autotest_py/tests/10_bonnie.py b/tests/10_bonnie.py similarity index 100% rename from tests/autotest_py/tests/10_bonnie.py rename to tests/10_bonnie.py diff --git a/tests/autotest_py/tests/11_iozone_diagnostic.py b/tests/11_iozone_diagnostic.py similarity index 100% rename from tests/autotest_py/tests/11_iozone_diagnostic.py rename to tests/11_iozone_diagnostic.py diff --git a/tests/autotest_py/tests/12_iozone_throughput.py b/tests/12_iozone_throughput.py similarity index 100% rename from tests/autotest_py/tests/12_iozone_throughput.py rename to tests/12_iozone_throughput.py diff --git a/tests/autotest_py/tests/13_dbench.py b/tests/13_dbench.py similarity index 100% rename from tests/autotest_py/tests/13_dbench.py rename to tests/13_dbench.py diff --git a/tests/autotest_py/tests/15_makextreemfs.py b/tests/15_makextreemfs.py similarity index 100% rename from tests/autotest_py/tests/15_makextreemfs.py rename to tests/15_makextreemfs.py diff --git a/tests/autotest/auto_test.sh b/tests/autotest/auto_test.sh deleted file mode 100755 index ecfe45125..000000000 --- a/tests/autotest/auto_test.sh +++ /dev/null @@ -1,128 +0,0 @@ -#!/bin/bash -export LANG=en_GB.UTF-8 - -sendresult() { - local result=$1 - if [ $result -eq 0 ] - then - subject="SUCCESS: XtreemFS automatic test" - else - subject="FAILED: XtreemFS automatic test" - fi - -cat $TEST_DIR/test_summary > $ATTACHMENT -echo "" >> $ATTACHMENT -cat $TEST_LOG >> $ATTACHMENT - -mailx -a $ATTACHMENT -s "$subject" -r "your friendly XtreemFS test robot " xtreemfs-test@googlegroups.com<< EOF -$subject - -The logfile of this test run is attached to this email. -Logfiles and databases can be found in $WKDIR on $hostname. - -EOF - -rm $ATTACHMENT -} - -export JAVA_HOME=/opt/jdk1.6.0_13 - -rm -rf /scratch/disk1/autotest/* -mkdir -p /scratch/disk1/autotest/ - -XTREEMFS_DIR=`mktemp -d /scratch/disk1/autotest/xtreemfssrc_XXXXXXXXXX` - -TEST_DIR=`mktemp -d /scratch/disk1/autotest/test_XXXXXXXXXX` - -TEST_LOG="$TEST_DIR/testlog.txt" - -ATTACHMENT="$TEST_DIR/summary_and_testlog.txt" - -toScreen=0 -revision="" -usessl="" -optionalFlags="" - -tmp=`readlink -f $0` -TEST_BASEDIR=`dirname $tmp` - - -while getopts “hdsr:f:†OPTION -do - case $OPTION in - h) - echo "-s for ssl, -d for output to screen and -r for revision " - exit 1 - ;; - d) - toScreen=1 - echo "results will be printed to screen!" - ;; - s) - usessl=" -s " - echo "using SSL for all tests!" - ;; - r) - revision=" -r ${OPTARG} " - echo "using revision $revision" - ;; - f) - optionalFlags=$OPTARG - ;; - ?) - usage - exit - ;; - esac -done - - -date >> $TEST_LOG -cd $XTREEMFS_DIR -echo "CHECKOUT SVN SOURCES..." >> $TEST_LOG -svn -q $revision co "http://xtreemfs.googlecode.com/svn/trunk" >> $TEST_LOG 2>&1 -if [ $? -ne 0 ]; then - echo "FAILED: cannot checkout sources!" >> $TEST_LOG - if [ $toScreen = "x" ]; then - cat $TEST_LOG - else - date >> $TEST_LOG - sendresult 1 - fi - exit -fi - -cd trunk - -echo "COMPILING..." >> $TEST_LOG -make >> $TEST_LOG 2>&1 -if [ $? -ne 0 ]; then - echo "FAILED: cannot make sources!" >> $TEST_LOG - if [ $toScreen -ne 0 ]; then - cat $TEST_LOG - else - date >> $TEST_LOG - sendresult 1 - fi - exit -fi - -$TEST_BASEDIR/start_environment.sh $optionalFlags -o 3 $usessl $XTREEMFS_DIR/trunk/ $TEST_DIR >> $TEST_LOG 2>&1 -result=$? 2>&1 - -if [ $result -eq 0 ] -then - $TEST_BASEDIR/execute_tests.sh $TEST_DIR >> $TEST_LOG 2>&1 - result=$? -fi - -$TEST_BASEDIR/stop_environment.sh $TEST_DIR >> $TEST_LOG 2>&1 - - -if [ $toScreen -ne 0 ]; then - cat $TEST_LOG -else - date >> $TEST_LOG - sendresult $result -fi - diff --git a/tests/autotest/binaries.sh b/tests/autotest/binaries.sh deleted file mode 100644 index 8b52c2436..000000000 --- a/tests/autotest/binaries.sh +++ /dev/null @@ -1,5 +0,0 @@ -BONNIE_BIN=/home/bjko/test_utilities/bonnie-64-read-only/Bonnie -IOZONE_BIN=/home/bjko/test_utilities/iozone3_283/src/current/iozone -DBENCH_BIN=/home/bjko/test_utilities/dbench-3.04/dbench -DBENCH_CLIENT=/home/bjko/test_utilities/dbench-3.04/client.txt -FSSTRESS_BIN=/home/bjko/test_utilities/fsstress/fsstress \ No newline at end of file diff --git a/tests/autotest/execute_tests.sh b/tests/autotest/execute_tests.sh deleted file mode 100755 index 6285d4fde..000000000 --- a/tests/autotest/execute_tests.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -usage() { - myname=`basename $1` - echo "$myname " - echo "runs all tests" - echo "" -} - -if [ $# -ne 1 ] -then - usage $0; - exit 1; -fi - -TEST_DIR=$1 - - -#execute_tests - -echo -e "\n\n================== STARTING TESTS ====================\n\n" - -echo -e "started on `date`" - -result=0 - -for testfile in $TEST_BASEDIR/tests/*.sh -do - echo -e "TEST: $testfile\n" - echo -e "start: `date`\n" - - $testfile $TEST_DIR - - if [ $? -ne 0 ]; then - result=1 - echo -e "FAILED: $testfile\n" - fi - - echo -e "\n done: `date`\n" - echo -e "\n-----------------------------------------------------\n" -done - -echo -e "finished on `date`" - -if [ $result -eq 0 ]; then - echo -e "\n\n================== S U C C E S S ====================\n\n" -else - echo -e "\n\n=================== F A I L E D =====================\n\n" -fi -exit $result \ No newline at end of file diff --git a/tests/autotest/start_environment.sh b/tests/autotest/start_environment.sh deleted file mode 100755 index 6311603e0..000000000 --- a/tests/autotest/start_environment.sh +++ /dev/null @@ -1,283 +0,0 @@ -#!/bin/bash - -#set up test environment - -create_config() { - flags="-d $DEBUG " - if [ $SSL_ENABLED -ne 0 ] - then - flags="$flags -s -c $XTREEMFS_DIR/servers/test/certs " - fi - - #create configs - $TEST_BASEDIR/utils/generate_config.sh $flags dir $TEST_DIR - $TEST_BASEDIR/utils/generate_config.sh $flags mrc $TEST_DIR - - for (( i=0 ; i<$NUM_OSDS ; i++ )) ; do - $TEST_BASEDIR/utils/generate_config.sh $flags osd$i $TEST_DIR - done - -} - -startup_services() { - $TEST_BASEDIR/utils/service.sh $XTREEMFS_DIR $TEST_DIR dir start - if [ $? -ne 0 ]; then - echo "FAILED: cannot start dir"; exit 1 - fi - sleep 1 - - $TEST_BASEDIR/utils/service.sh $XTREEMFS_DIR $TEST_DIR mrc start - if [ $? -ne 0 ]; then - echo "FAILED: cannot start mrc"; $TEST_BASEDIR/stop_environment.sh $TEST_DIR; exit 1 - fi - sleep 1 - - for (( i=0 ; i<$NUM_OSDS ; i++ )) ; do - $TEST_BASEDIR/utils/service.sh $XTREEMFS_DIR $TEST_DIR osd$i start - if [ $? -ne 0 ]; then - echo "FAILED: cannot start osd$i"; $TEST_BASEDIR/stop_environment.sh $TEST_DIR; exit 1 - fi - done - -} - - -prepare_test_directory() { - testdir=$1 - mkdir -p $testdir - if [ $? -ne 0 ] - then - echo "ERROR: cannot create test directory $testdir" - exit 1 - fi - mkdir -p $testdir/run - mkdir -p $testdir/data - mkdir -p $testdir/config - mkdir -p $testdir/mnt - mkdir -p $testdir/log -} - -check_java() { - if [ -z "$JAVA_HOME" ]; then - echo "\$JAVA_HOME not set, JDK/JRE 1.6 required" - exit - else - JVERS=`$JAVA_HOME/bin/java -version 2>&1 | grep "java version" | \ - cut -d " " -f 3` - perl -e " exit 1 if ($JVERS < \"1.6.0\");" - if [ $? -eq 1 ]; then - echo "ERROR: java version is $JVERS but required is >= 1.6.0" - exit 1 - fi - fi - echo "java home $JAVA_HOME" -} - -check_xtreemfsdir() { - local XTFSDIR=$1 - if [ ! -e $XTFSDIR/client/bin/xtfs_mount ] - then - echo "ERROR: $XTFSDIR/client/bin/xtfs_mount does not exist" - exit 1 - fi - - if [ ! -x $XTFSDIR/client/bin/xtfs_mount ] - then - echo "ERROR: $XTFSDIR/client/bin/xtfs_mount is not executable" - exit 1 - fi - - if [ ! -e $XTFSDIR/servers/dist/XtreemFS.jar ] - then - echo "ERROR: $XTFSDIR/java/dist/XtreemFS.jar does not exist" - exit 1 - fi - - if [ ! -e $XTFSDIR/servers/lib/BabuDB-0.1.0-RC.jar ] - then - echo "ERROR: $XTFSDIR/java/lib/BabuDB-0.1.0-RC.jar does not exist" - exit 1 - fi -} - -do_mount() { - VOLUMES="" - if [ $SSL_ENABLED -ne 0 ] - then - sslflags="--pkcs12-file-path=$XTREEMFS_DIR/servers/test/certs/Client.p12 --pkcs12-passphrase=passphrase " - schema="oncrpcs://" - else - sslflags="" - schema="oncrpc://" - fi - if [ $NO_MKVOL -eq 0 ] - then - for (( i=1 ; i<=$NUM_OSDS ; i++ )) ; do - echo "creating volume test_$i ..." - - echo "$XTREEMFS_DIR/client/bin/xtfs_mkvol $sslflags -p RAID0 -s $STRIPE_WIDTH -w $i ${schema}localhost/test_$i" - $XTREEMFS_DIR/client/bin/xtfs_mkvol $sslflags -p RAID0 -s $STRIPE_WIDTH -w $i ${schema}localhost/test_$i - if [ $? -ne 0 ]; then - echo "FAILED: cannot create volume test_$i" - $TEST_BASEDIR/stop_environment.sh $TEST_DIR - exit 1 - fi - - VOLUMES="$VOLUMES $TEST_DIR/mnt/$i" - VOLNAMES="$VOLNAMES test_$i" - NONDIRECT_VOLUMES="$NONDIRECT_VOLUMES $TEST_DIR/mnt/nondirect_$i" - done - fi - - export VOLUMES - export VOLNAMES - export NONDIRECT_VOLUMES - - if [ $NO_CLIENT -eq 0 ] - then - for (( i=1 ; i<=$NUM_OSDS ; i++ )) ; do - mkdir $TEST_DIR/mnt/$i - echo "mounting volume test_$i in $i..." - - echo "mounting: $XTREEMFS_DIR/client/bin/xtfs_mount $CLIENT_FLAGS $sslflags -o direct_io ${schema}localhost:32638/test_$i $TEST_DIR/mnt/$i" - $XTREEMFS_DIR/client/bin/xtfs_mount $CLIENT_FLAGS $sslflags -o direct_io ${schema}localhost:32638/test_$i $TEST_DIR/mnt/$i > $TEST_DIR/log/client_$i.log 2>&1 & - - if [ $? -ne 0 ]; then - echo "FAILED: cannot mount volume test_$i to $TEST_DIR/mnt/$i" - $TEST_BASEDIR/stop_environment.sh $TEST_DIR - exit 1 - fi - - done - - for (( i=1 ; i<=$NUM_OSDS ; i++ )) ; do - echo "mounting volume test_$i in nondirect_$i..." - - mkdir $TEST_DIR/mnt/nondirect_$i - echo "mounting: XTREEMFS_DIR/client/bin/xtfs_mount $CLIENT_FLAGS $sslflags ${schema}localhost:32638/test_$i \ - $TEST_DIR/mnt/nondirect_$i" - $XTREEMFS_DIR/client/bin/xtfs_mount $CLIENT_FLAGS $sslflags ${schema}localhost:32638/test_$i \ - $TEST_DIR/mnt/nondirect_$i > $TEST_DIR/log/client_nondirect$i.log 2>&1 & - - if [ $? -ne 0 ]; then - echo "FAILED: cannot mount volume test_$i to $TEST_DIR/mnt/nondirect_$i" - $TEST_BASEDIR/stop_environment.sh $TEST_DIR - exit 1 - fi - - done - fi -} - -check_mount() { - - if [ $NO_CLIENT -eq 0 ] - then - for (( i=1 ; i<=$NUM_OSDS ; i++ )) ; do - - if [ `grep -c "$TEST_DIR/mnt/$i" /proc/mounts` -eq 0 ]; then - echo "FAILED: volume test_$i not mounted in $TEST_DIR/mnt/$i, probably crashed" - $TEST_BASEDIR/stop_environment.sh $TEST_DIR - exit 1 - fi - - if [ `grep -c "$TEST_DIR/mnt/nondirect_$i" /proc/mounts` -eq 0 ]; then - echo "FAILED: volume test_$i (nondirect) not mounted in $TEST_DIR/mnt/nondirect_$i, probably crashed" - $TEST_BASEDIR/stop_environment.sh $TEST_DIR - exit 1 - fi - - done - fi - -} - -usage() { - - myname=`basename $1` - echo "$myname -d -s -o -w " - echo "-d set debug level for servers (deafult is 1)" - echo "-s enables SSL (using certs from trunk/servers/test/certs)" - echo "-o sets the number of OSDs to use" - echo "-w sets the striping with in kB" - echo "-f pass extra arguments to xtfs_mount" - echo "-n do not mount volumes" - echo "-m do not create (mkvol) volumes" - echo "" -} - - -SSL_ENABLED=0 -DEBUG=1 -NUM_OSDS=1 -STRIPE_WIDTH=128 -CLIENT_FLAGS="" -NO_CLIENT=0 -NO_MKVOL=0 - -while getopts ":smnc:d:w:o:f:" Option -# Initial declaration. -# a, b, c, d, e, f, and g are the options (flags) expected. -# The : after option 'e' shows it will have an argument passed with it. -do - case $Option in - s ) SSL_ENABLED=1 - ;; - d ) DEBUG=$OPTARG - ;; - o ) NUM_OSDS=$OPTARG - ;; - w ) STRIPE_WIDTH=$OPTARG - ;; - f ) CLIENT_FLAGS=$OPTARG - ;; - n ) NO_CLIENT=1 - ;; - m ) NO_MKVOL=1 - ;; - esac -done -shift $(($OPTIND - 1)) - -if [ $# -ne 2 ] -then - usage $0; - exit 1; -fi - -tmp=`readlink -f $0` -export TEST_BASEDIR=`dirname $tmp` - -if [ $# -ne 2 ] -then - usage $0; - exit 1; -fi - -XTREEMFS_DIR=$1 -TEST_DIR=$2 -TEST_DIR=${TEST_DIR%/} - -prepare_test_directory $TEST_DIR - -check_java -check_xtreemfsdir $XTREEMFS_DIR - -create_config -startup_services -sleep 5 - - -do_mount -sleep 2 -check_mount - -echo "export NONDIRECT_VOLUMES=\"$NONDIRECT_VOLUMES\"" > $TEST_DIR/globals.sh -echo "export VOLUMES=\"$VOLUMES\"" >> $TEST_DIR/globals.sh -echo "export VOLNAMES=\"$VOLNAMES\"" >> $TEST_DIR/globals.sh -echo "export TEST_BASEDIR=\"$TEST_BASEDIR\"" >> $TEST_DIR/globals.sh -echo "export TEST_SUMMARY=\"$TEST_DIR/test_summary\"" >> $TEST_DIR/globals.sh -echo "export MOUNT_DIR=\"$TEST_DIR/mnt\"" >> $TEST_DIR/globals.sh -echo "export XTREEMFS_DIR=\"$XTREEMFS_DIR\"" >> $TEST_DIR/globals.sh -echo "export SSL_ENABLED=$SSL_ENABLED" >> $TEST_DIR/globals.sh - diff --git a/tests/autotest/stop_environment.sh b/tests/autotest/stop_environment.sh deleted file mode 100755 index 7007a2c19..000000000 --- a/tests/autotest/stop_environment.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash - -usage() { - myname=`basename $1` - echo "$myname " - echo "unmounts all clients and shuts down the servers." - echo "" -} - -shutdown_services() { - $TEST_BASEDIR/utils/service.sh ignoreme $TEST_DIR dir stop - $TEST_BASEDIR/utils/service.sh ignoreme $TEST_DIR mrc stop - for (( i=0 ; i<$NUM_OSDS ; i++ )) ; do - $TEST_BASEDIR/utils/service.sh ignoreme $TEST_DIR osd$i stop - done -} - -do_unmount() { - for (( i=1 ; i<=$NUM_OSDS ; i++ )) ; do - echo "unmounting volume test_$i ..." - - if [ `grep -c "$TEST_DIR/mnt/$i" /proc/mounts` -gt 0 ]; then - echo "Unmounting volume test_$i" - fusermount -u $TEST_DIR/mnt/$i - else - echo "volume test_$i not mounted in $TEST_DIR/mnt/$i, probably crashed" - fi - - if [ `grep -c "$TEST_DIR/mnt/nondirect_$i" /proc/mounts` -gt 0 ]; then - echo "Unmounting volume test_$i (nondirect)" - fusermount -u $TEST_DIR/mnt/nondirect_$i - else - echo "volume test_$i not mounted in $TEST_DIR/mnt/nondirect_$i, probably crashed" - fi - - done -} - -if [ $# -ne 1 ] -then - usage $0; - exit 1; -fi - -tmp=`readlink -f $0` -export TEST_BASEDIR=`dirname $tmp` - -TEST_DIR=$1 -TEST_DIR=${TEST_DIR%/} - -NUM_OSDS=`ls $TEST_DIR/run/osd* | wc -l` - -do_unmount - -shutdown_services - -echo "test environment stopped" diff --git a/tests/autotest/tests/00_utils_sh b/tests/autotest/tests/00_utils_sh deleted file mode 100755 index 15ff2b14c..000000000 --- a/tests/autotest/tests/00_utils_sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -. tests/utilities.inc.sh - -echo "XtreemFS Util-tests" - -for (( i=0 ; i<$NUM_OSDS ; i++ )) ; do - listen_port=(( 32640+i )) - - echo "cleaning osd with UUID OSD-autotest-localhost-$listen_port ..." - $XTREEMFS/bin/xtfs_cleanup -e -v -d http://localhost:32638 uuid:OSD-autotest-localhost-$listen_port - - if [ $? -ne 0 ]; then - print_summary_message "OSD cleanup" "localhost:$listen_port" "FAILED" - exit 1; - fi - - print_summary_message 0 "OSD cleanup" "localhost:$listen_port" "ok" - - - - echo "scrubbing volume test_$i ..." - $XTREEMFS/bin/xtfs_scrub -dir http://localhost:32638 test_$i - - if [ $? -ne 0 ]; then - print_summary_message 1 "scrub" test_$i "FAILED" - exit 1; - fi - - print_summary_message 0 "scrub" test_$i "ok" -done diff --git a/tests/autotest/tests/01_simple_metadata.sh b/tests/autotest/tests/01_simple_metadata.sh deleted file mode 100755 index d32e74a44..000000000 --- a/tests/autotest/tests/01_simple_metadata.sh +++ /dev/null @@ -1,186 +0,0 @@ -#!/bin/bash - -if [ $# -ne 1 ] -then - echo "$0 "; - exit 1; -fi - -TEST_DIR=$1 - -. $TEST_DIR/globals.sh - -. $TEST_BASEDIR/tests/utilities.inc - -cleanup() { - rm -rf $MOUNT_DIR/1/* - print_summary_message $1 'simple_metadata' "mnt_1" - exit $1 -} - -#use first mounted volume for metadata tests -tmp=($VOLUMES) -DIRNAME=${tmp[0]} - -echo "simple metadata only operations test in $DIRNAME" - -echo -n "mkdir..." -mkdir -p $DIRNAME/testdir/subdir/moredir || cleanup 1 ; echo "OK" - -if [ ! -d $DIRNAME/testdir/subdir/moredir ] -then - echo "FAILED. mkdir did not create directory!" - cleanup 1; -fi - -echo -n "rmdir..." -rmdir $DIRNAME/testdir/subdir/moredir || cleanup 1; echo "OK" - -if [ -e $DIRNAME/testdir/subdir/moredir ] -then - echo "FAILED. rmdir did not remove directory!" - cleanup 1; -fi - -echo -n "rename dir..." -mv $DIRNAME/testdir $DIRNAME/renamed || cleanup 1 ; echo "OK" - -if [ -e $DIRNAME/testdir ] -then - echo "FAILED. rename did not remove old entry!" - cleanup 1; -fi - -if [ ! -e $DIRNAME/renamed ] -then - echo "FAILED. rename did not create new entry!" - cleanup 1; -fi - -echo -n "touch file..." -touch $DIRNAME/testfile || cleanup 1 ; echo "OK" - -if [ ! -e $DIRNAME/testfile ] -then - echo "FAILED. touch did not create file!" - cleanup 1; -fi - -echo -n "delete file..." -rm $DIRNAME/testfile || cleanup 1 ; echo "OK" - -if [ -e $DIRNAME/testfile ] -then - echo "FAILED. unlink did not remove file!" - cleanup 1; -fi - -echo -n "touch file..." -touch $DIRNAME/testfile2 || cleanup 1 ; echo "OK" - -if [ ! -e $DIRNAME/testfile2 ] -then - echo "FAILED. touch did not create file!" - cleanup 1; -fi - -echo -n "rename file..." -mv $DIRNAME/testfile2 $DIRNAME/renamedfile || cleanup 1 ; echo "OK" - -if [ -e $DIRNAME/testfile2 ] -then - echo "FAILED. rename did not remove old entry!" - cleanup 1; -fi - -if [ ! -e $DIRNAME/renamedfile ] -then - echo "FAILED. rename did not create new entry!" - cleanup 1; -fi - -echo -n "delete file..." -rm $DIRNAME/renamedfile || cleanup 1 ; echo "OK" - -if [ -e $DIRNAME/renamedfile ] -then - echo "FAILED. unlink did not remove file!" - cleanup 1; -fi - -echo -n "recreate file..." -touch $DIRNAME/testfile2 || cleanup 1 ; echo "OK" - -if [ ! -e $DIRNAME/testfile2 ] -then - echo "FAILED. touch did not create file!" - cleanup 1; -fi - -echo -n "ls..." -ls $DIRNAME > /dev/null || cleanup 1 ; echo "OK" - -echo -n "chmod file..." -chmod a+rw $DIRNAME/testfile2 || cleanup 1; echo "OK" - -echo -n "create softlink..." -ln -s $DIRNAME/testfile2 $DIRNAME/softlink || cleanup 1; echo "OK" - -if [ ! -e $DIRNAME/softlink ] -then - echo "FAILED. symlink did not create new entry!" - cleanup 1; -fi - -target=`readlink $DIRNAME/softlink` -if [ ! $target ] -then - echo "FAILED. softlink has no target: $target!" - ls -l $DIRNAME - cleanup 1; -fi - -mv $DIRNAME/softlink $DIRNAME/softlink2 - -target=`readlink $DIRNAME/softlink2` -if [ ! $target ] -then - echo "FAILED. softlink2 has no target after rename: $target!" - ls -l $DIRNAME - cleanup 1; -fi -target=`basename $target` -if [ $target != "testfile2" ] -then - echo "FAILED. softlink2 has wrong target after rename: $target!" - cleanup 1; -fi - -echo -n "create hardlink..." -ln $DIRNAME/testfile2 $DIRNAME/hardlink || cleanup 1; echo "OK" - -if [ ! -e $DIRNAME/hardlink ] -then - echo "FAILED. hardlink did not create new entry!" - cleanup 1; -fi - -echo -n "delete softlink..." -rm $DIRNAME/softlink2 || cleanup 1; echo "OK" - -if [ -e $DIRNAME/softlink2 ] -then - echo "FAILED. unlink did not remove softlink!" - cleanup 1; -fi - -echo -n "delete hardlink..." -rm $DIRNAME/hardlink || cleanup 1; echo "OK" - -if [ -e $DIRNAME/softlink ] -then - echo "FAILED. unlink did not remove hardlink!" - cleanup 1; -fi - -cleanup 0 diff --git a/tests/autotest/tests/02_erichs_ddwrite.sh b/tests/autotest/tests/02_erichs_ddwrite.sh deleted file mode 100755 index b04e58df5..000000000 --- a/tests/autotest/tests/02_erichs_ddwrite.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -if [ $# -ne 1 ] -then - echo "$0 "; - exit 1; -fi - -TEST_DIR=$1 - -. $TEST_DIR/globals.sh - -. $TEST_BASEDIR/tests/utilities.inc - -echo "erichs ddwrite test..." - -for volume in $VOLUMES -do - echo "writing in volume $volume..." - for (( c=1; c<=16 ; c=c*2 )); do - echo " --- 10MB, $c client(s) ---" - $TEST_BASEDIR/tests/ddwrite_helper.inc 10 $volume/t10MB$c $c - if [ $? -ne 0 ]; then - echo "test failed!" - print_summary_message 1 'dd_write' $volume - rm -rf $volume/* - exit 1; - fi - done - rm -rf $volume/* - print_summary_message 0 'dd_write' $volume -done \ No newline at end of file diff --git a/tests/autotest/tests/03_erichs_data_integrity_test.sh b/tests/autotest/tests/03_erichs_data_integrity_test.sh deleted file mode 100755 index 346c7ad83..000000000 --- a/tests/autotest/tests/03_erichs_data_integrity_test.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -if [ $# -ne 1 ] -then - echo "$0 "; - exit 1; -fi - -TEST_DIR=$1 - -. $TEST_DIR/globals.sh - -. $TEST_BASEDIR/tests/utilities.inc - -echo "erichs data integrity test..." - -for volume in $VOLUMES -do - echo "writing 20x1MB files with marked data in $volume, checking data " - $TEST_BASEDIR/tests/marked_block.pl --start=1 --nfiles=20 --size=1 \ - --group=10 --base=$volume/integritytest - if [ $? -ne 0 ]; then - echo "test failed!" - rm -rf $volume/* - print_summary_message 1 'data_integrity' $volume - exit 1; - fi - rm -rf $volume/* - print_summary_message 0 'data_integrity' $volume -done diff --git a/tests/autotest/tests/05_findgreptar_sh b/tests/autotest/tests/05_findgreptar_sh deleted file mode 100755 index 80c3e4b75..000000000 --- a/tests/autotest/tests/05_findgreptar_sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash -. tests/utilities.inc - -echo "untar, find and grep test..." - -for volume in $NONDIRECT_VOLUMES $VOLUMES -do - echo -n "untarring includes in volume $volume..." - testdir=`pwd` - cd $volume - tar xzf $testdir/httperf-0.8.tar.gz - if [ $? -ne 0 ]; then - echo "cannot untar includes into $volume!" - print_summary_message 1 "tar/find/grep" $volume - exit 1 - fi - echo "OK" - - echo -n "search for *.cpp files..." - find . -name "*.cpp" - if [ $? -ne 0 ]; then - echo "cannot execute find!" - print_summary_message 1 "tar/find/grep" $volume - exit 1 - fi - echo "OK" - - echo -n "grep -R for 'ttest'..." - grep -R 'ttest' . - if [ $? -gt 1 ]; then - echo "cannot execute grep!" - print_summary_message 1 "tar/find/grep" $volume - exit 1 - fi - echo "OK" - - echo -n "cleaning up..." - rm -r $volume/* - if [ $? -ne 0 ]; then - ls -laR $volume/ - echo "cannot cleanup directory!" - print_summary_message 1 "tar/find/grep" $volume - exit 1 - fi - echo "OK" - print_summary_message 0 "tar/find/grep" $volume - - cd $testdir -done \ No newline at end of file diff --git a/tests/autotest/tests/10_bonnie.sh b/tests/autotest/tests/10_bonnie.sh deleted file mode 100755 index c1ad0e506..000000000 --- a/tests/autotest/tests/10_bonnie.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -if [ $# -ne 1 ] -then - echo "$0 "; - exit 1; -fi - -TEST_DIR=$1 - -. $TEST_DIR/globals.sh - -. $TEST_BASEDIR/tests/utilities.inc -. $TEST_BASEDIR/binaries.sh - -echo "running Bonnie64 on all volumes (direct_io and non-direct)..." - -for volume in $VOLUMES $NONDIRECT_VOLUMES -do - echo "bonnie on volume $volume..." - $BONNIE_BIN -d $volume -s 100 - if [ $? -ne 0 ] - then - echo "ERROR: bonnie failed on $volume!" - rm -rf $volume/* - print_summary_message 1 "bonnie64" $volume - exit 1 - fi - rm -rf $volume/* - print_summary_message 0 "bonnie64" $volume -done \ No newline at end of file diff --git a/tests/autotest/tests/11_iozone.sh b/tests/autotest/tests/11_iozone.sh deleted file mode 100755 index 34a23ec28..000000000 --- a/tests/autotest/tests/11_iozone.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -if [ $# -ne 1 ] -then - echo "$0 "; - exit 1; -fi - -TEST_DIR=$1 - -. $TEST_DIR/globals.sh - -. $TEST_BASEDIR/tests/utilities.inc -. $TEST_BASEDIR/binaries.sh - -echo "running iozone in auto and diagnostic mode..." - -for volume in $VOLUMES -do - echo "iozone on volume $volume..." - dir=`pwd` - cd $volume - if [ $? -ne 0 ] - then - cd $dir - echo "ERROR: cannot chdir to $volume! client crashed?" - print_summary_message 1 "IOZone" $volume - exit 1 - fi - - - $IOZONE_BIN -a -+d - if [ $? -ne 0 ] - then - cd $dir - echo "ERROR: IOZone failed on $volume!" - rm -rf $volume/* - print_summary_message 1 "IOZone" $volume - exit 1 - fi - rm -rf $volume/* - print_summary_message 0 "IOZone" $volume - cd $dir -done \ No newline at end of file diff --git a/tests/autotest/tests/13_dbench.sh b/tests/autotest/tests/13_dbench.sh deleted file mode 100755 index bc4a50a21..000000000 --- a/tests/autotest/tests/13_dbench.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -. $TEST_BASEDIR/tests/utilities.inc -. $TEST_BASEDIR/binaries.sh - -echo "running dbench with 5 clients on direct_io volumes ..." - -for volume in $VOLUMES -do - echo "dbench on volume $volume..." - $DBENCH_BIN -c $DBENCH_CLIENT -D $volume 5 - - if [ $? -ne 0 ] - then - echo "ERROR: dbench failed on $volume!" - rm -rf $volume/* - print_summary_message 1 "DBench" $volume - exit 1 - fi - rm -rf $volume/* - print_summary_message 0 "DBench" $volume -done -exit 0 diff --git a/tests/autotest/tests/15_makextreemfs.sh b/tests/autotest/tests/15_makextreemfs.sh deleted file mode 100644 index 466a29c38..000000000 --- a/tests/autotest/tests/15_makextreemfs.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash -if [ $# -ne 1 ] -then - echo "$0 "; - exit 1; -fi - -TEST_DIR=$1 - -. $TEST_DIR/globals.sh - -. $TEST_BASEDIR/tests/utilities.inc - -cleanup() { - rm -rf $MOUNT_DIR/1/* - print_summary_message $1 'makextreemfs' "nondirect_1" - exit $1 -} - -#use first mounted volume for metadata tests -tmp=($NONDIRECT_VOLUMES) -DIRNAME=${tmp[0]} - -currentdir=`pwd` -cd $DIRNAME - -svn co http://xtreemfs.googlecode.com/svn/trunk/client -if [ $? -ne 0 ] -then - echo "ERROR: client checkout failed!" - cleanup 1 -fi - -cd client -if [ $? -ne 0 ] -then - echo "ERROR: cannot cd to client directory!" - cleanup 1 -fi - -python scons.py -if [ $? -ne 0 ] -then - echo "ERROR: client build failed!" - cleanup 1 -fi - -if [ $SSL_ENABLED -eq 0 ] -then - echo "list all volumes on the local MRC..." - bin/xtfs_lsvol localhost -else - echo "list all volumes on the local MRC (with SSL)..." - bin/xtfs_lsvol --pkcs12-file-path=$DIRNAME/servers/test/certs/Client.p12 --pkcs12-passphrase=passphrase localhost -fi - -if [ $? -ne 0 ] -then - echo "ERROR: cannot execute xtfs_lsvol!" - cleanup 1 -fi - -cleanup 0 diff --git a/tests/autotest/tests/16_iozone_tp.sh b/tests/autotest/tests/16_iozone_tp.sh deleted file mode 100755 index 8d0a43c9a..000000000 --- a/tests/autotest/tests/16_iozone_tp.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash -if [ $# -ne 1 ] -then - echo "$0 "; - exit 1; -fi - -TEST_DIR=$1 - -. $TEST_DIR/globals.sh - -. $TEST_BASEDIR/tests/utilities.inc -. $TEST_BASEDIR/binaries.sh - -echo "running iozone throughput test..." - -for volume in $VOLUMES -do - echo "iozone on volume $volume..." - dir=`pwd` - cd $volume - if [ $? -ne 0 ] - then - cd $dir - echo "ERROR: cannot chdir to $volume! client crashed?" - print_summary_message 1 "IOZoneTP" $volume - exit 1 - fi - - - $IOZONE_BIN -t 1 -r 128k -s 20m - if [ $? -ne 0 ] - then - cd $dir - echo "ERROR: IOZone failed on $volume!" - rm -rf $volume/* - print_summary_message 1 "IOZoneTP" $volume - exit 1 - fi - - $IOZONE_BIN -t 5 -r 128k -s 20m - if [ $? -ne 0 ] - then - cd $dir - echo "ERROR: IOZone failed on $volume!" - rm -rf $volume/* - print_summary_message 1 "IOZoneTP" $volume - exit 1 - fi - - $IOZONE_BIN -t 10 -r 128k -s 20m - if [ $? -ne 0 ] - then - cd $dir - echo "ERROR: IOZone failed on $volume!" - rm -rf $volume/* - print_summary_message 1 "IOZoneTP" $volume - exit 1 - fi - rm -rf $volume/* - print_summary_message 0 "IOZoneTP" $volume - cd $dir -done \ No newline at end of file diff --git a/tests/autotest/tests/ddwrite_helper.inc b/tests/autotest/tests/ddwrite_helper.inc deleted file mode 100755 index 51fc7d56e..000000000 --- a/tests/autotest/tests/ddwrite_helper.inc +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash -# -# Issue a set of dd commands in the background to write in parallel into -# different files. The sum of the bandwidth should be a reasonable estimate -# of the peak bandwidth for writing to a filesystem in a very simple -# pattern. -# -# Copyright (c) Erich Focht -# -# $Id$ - -export MEGABYTES=$1 -FILE=$2 -NPROC=$3 - -if [ -z "$FILE" -o -z "$MEGABYTES" -o -z "$NPROC" ]; then - echo "Usage: $0 " - exit 1 -fi - -cleanup() { - for f in $TFILES; do - [ -f $f ] && rm -rf $f - done -} - -check_length() { - local file=$1 - local real target - target=`expr $MEGABYTES \* 1000000` - real=`stat -c "%s" $file` - if [ -z "$real" ]; then - echo "stat $file : execution failed!" - return 1 - fi - if [ $real -ne $target ]; then - echo "WARNING: length of file is $real (should be $target)" - return 1 - fi - return 0 -} - -do_one () { - local ID=$1 - local TEMP=$2 - #sync - [ -e ${FILE}_$ID ] && rm -f ${FILE}_$ID - /usr/bin/time -f "elapsed %e" -o $TEMP -- \ - dd if=/dev/zero of=${FILE}_$ID bs=1MB count=$MEGABYTES >/dev/null 2>&1 - /usr/bin/time -f "elapsed %e" -o $TEMP -a -- sync - check_length ${FILE}_$ID || rm -f $TEMP -} - -trap cleanup SIGINT -trap cleanup SIGHUP -trap cleanup SIGKILL - -TFILES="" -PIDS="" -sync -for ((i=0; i<$NPROC; i++)) { - TEMP=`mktemp` - TFILES="$TFILES $TEMP" - { do_one $i $TEMP > $TEST_SUMMARY - else - printf "%-30s %-15s %5s\n" $2 $volname "FAILED" >> $TEST_SUMMARY - fi -} \ No newline at end of file diff --git a/tests/autotest/utils/generate_config.sh b/tests/autotest/utils/generate_config.sh deleted file mode 100755 index b273392c0..000000000 --- a/tests/autotest/utils/generate_config.sh +++ /dev/null @@ -1,151 +0,0 @@ -#!/bin/bash - -osd_config() { - osdnum=$1 - OUTPUT="$TEST_DIR/config/osd$osdnum.config" - tmp_date=`date` - echo "#generated by XtreemFS auto tests ($tmp_date)" > $OUTPUT - echo "uuid = test-env-OSD$osdnum" >> $OUTPUT - echo "debug_level = $DEBUG" >> $OUTPUT - let tmp=$OSD_START_PORT+$osdnum - echo "listen.port = $tmp" >> $OUTPUT - let tmp=30640+$osdnum - echo "http_port = $tmp" >> $OUTPUT - echo "dir_service.host = localhost" >> $OUTPUT - echo "dir_service.port = $DIR_PORT" >> $OUTPUT - echo "object_dir = $TEST_DIR/data/osd$osdnum/" >> $OUTPUT - echo "local_clock_renewal = 50" >> $OUTPUT - echo "remote_time_sync = 60000" >> $OUTPUT - echo "report_free_space = true" >> $OUTPUT - echo "checksums.enabled = false" >> $OUTPUT - echo "capability_secret = testsecret" >> $OUTPUT - if [ $SSL_ENABLED -eq 0 ] - then - echo "ssl.enabled = false" >> $OUTPUT - else - echo "ssl.enabled = true" >> $OUTPUT - echo "ssl.service_creds = $CERT_DIR/OSD.p12" >> $OUTPUT - echo "ssl.service_creds.pw = passphrase" >> $OUTPUT - echo "ssl.service_creds.container = PKCS12" >> $OUTPUT - echo "ssl.trusted_certs = $CERT_DIR/trusted.jks" >> $OUTPUT - echo "ssl.trusted_certs.pw = passphrase" >> $OUTPUT - echo "ssl.trusted_certs.container = JKS" >> $OUTPUT - fi -} - -mrc_config() { - OUTPUT="$TEST_DIR/config/mrc.config" - tmp_date=`date` - echo "#generated by XtreemFS auto tests ($tmp_date)" > $OUTPUT - echo "uuid = test-env-MRC" >> $OUTPUT - echo "debug_level = $DEBUG" >> $OUTPUT - echo "listen.port = $MRC_PORT" >> $OUTPUT - echo "http_port = 30636" >> $OUTPUT - echo "dir_service.port = $DIR_PORT" >> $OUTPUT - echo "dir_service.host = localhost" >> $OUTPUT - echo "database.log = $TEST_DIR/data/mrc/" >> $OUTPUT - echo "database.dir = $TEST_DIR/data/mrc/" >> $OUTPUT - echo "osd_check_interval = 300" >> $OUTPUT - echo "no_atime = true" >> $OUTPUT - echo "no_fsync = true" >> $OUTPUT - echo "local_clock_renewal = 50" >> $OUTPUT - echo "remote_time_sync = 60000" >> $OUTPUT - echo "database.checkpoint.interval = 1800000" >> $OUTPUT - echo "database.checkpoint.idle_interval = 1000" >> $OUTPUT - echo "database.checkpoint.logfile_size = 16384" >> $OUTPUT - echo "authentication_provider = org.xtreemfs.common.auth.NullAuthProvider" >> $OUTPUT - echo "capability_secret = testsecret" >> $OUTPUT - if [ $SSL_ENABLED -eq 0 ] - then - echo "ssl.enabled = false" >> $OUTPUT - else - echo "ssl.enabled = true" >> $OUTPUT - echo "ssl.service_creds = $CERT_DIR/MRC.p12" >> $OUTPUT - echo "ssl.service_creds.pw = passphrase" >> $OUTPUT - echo "ssl.service_creds.container = PKCS12" >> $OUTPUT - echo "ssl.trusted_certs = $CERT_DIR/trusted.jks" >> $OUTPUT - echo "ssl.trusted_certs.pw = passphrase" >> $OUTPUT - echo "ssl.trusted_certs.container = JKS" >> $OUTPUT - fi -} - - -dir_config() { - OUTPUT="$TEST_DIR/config/dir.config" - tmp_date=`date` - echo "#generated by XtreemFS auto tests ($tmp_date)" > $OUTPUT - echo "uuid = test-env-DIR" > $OUTPUT - echo "debug_level = $DEBUG" >> $OUTPUT - echo "listen.port = $DIR_PORT" >> $OUTPUT - echo "http_port = 30638" >> $OUTPUT - echo "database.dir = $TEST_DIR/data/dir/" >> $OUTPUT - echo "authentication_provider = org.xtreemfs.common.auth.NullAuthProvider" >> $OUTPUT - if [ $SSL_ENABLED -eq 0 ] - then - echo "ssl.enabled = false" >> $OUTPUT - else - echo "ssl.enabled = true" >> $OUTPUT - echo "ssl.service_creds = $CERT_DIR/DIR.p12" >> $OUTPUT - echo "ssl.service_creds.pw = passphrase" >> $OUTPUT - echo "ssl.service_creds.container = PKCS12" >> $OUTPUT - echo "ssl.trusted_certs = $CERT_DIR/trusted.jks" >> $OUTPUT - echo "ssl.trusted_certs.pw = passphrase" >> $OUTPUT - echo "ssl.trusted_certs.container = JKS" >> $OUTPUT - fi -} - -usage() { - echo "$0 -s -c -d {dir|mrc|osd0..9} " - echo "" - exit 1 -} - - - -DIR_PORT=32638 -MRC_PORT=32636 -OSD_START_PORT=32640 - -SSL_ENABLED=0 -CERT_DIR="" -DEBUG=1 - -while getopts ":sc:d:" Option -# Initial declaration. -# a, b, c, d, e, f, and g are the options (flags) expected. -# The : after option 'e' shows it will have an argument passed with it. -do - case $Option in - s ) SSL_ENABLED=1 - ;; - c ) CERT_DIR=$OPTARG - ;; - d ) DEBUG=$OPTARG - ;; - esac -done -shift $(($OPTIND - 1)) - -if [ $# -ne 2 ] -then - usage $0; - exit 1; -fi - -SERVICE=$1 -TEST_DIR=$2 - -if [ $SERVICE == "dir" ] -then - dir_config -elif [ $SERVICE == "mrc" ] -then - mrc_config -elif [ ${SERVICE:0:3} == "osd" ] -then - osd_config ${SERVICE:3:4} -else - echo "unknown service type $SERVICE" - exit 1 -fi - diff --git a/tests/autotest/utils/service.sh b/tests/autotest/utils/service.sh deleted file mode 100755 index d6f7eebc8..000000000 --- a/tests/autotest/utils/service.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash - - -start_service() { - local service=$1 class=$2 - if [ -e $TEST_DIR/run/$service.run ] - then - echo "ERROR: service already running or remove lock file $TEST_DIR/$1.run" - exit 1 - fi - $JAVA_HOME/bin/java -ea -cp $XTREEMFS_DIR/servers/dist/XtreemFS.jar:$XTREEMFS_DIR/servers/lib/BabuDB-0.1.0-RC.jar $class $TEST_DIR/config/$service.config > $TEST_DIR/log/$service.log 2>&1 & - - servicepid=$! - sleep 1 - if [ ! -d /proc/$servicepid ] - then - echo "ERROR: process $servicepid crashed during startup" - tail -n10 $TEST_DIR/log/$service.log - echo "see full log in $TEST_DIR/log/$service.log" - exit 1 - fi - - echo $servicepid > $TEST_DIR/run/$service.run - echo "$service started" - echo "" -} - -stop_service() { - local service=$1 - - if [ ! -e $TEST_DIR/run/$service.run ] - then - echo "ERROR: service $service not running!" - exit 1 - fi - - kill `cat $TEST_DIR/run/$service.run` - rm $TEST_DIR/run/$service.run - echo "$service stopped" - echo "" -} - -if [ $# -ne 4 ] -then - echo "usage: $0 {dir|mrc|osd0..9} {start|stop}" - exit 1 -fi - -export XTREEMFS_DIR=$1 -export TEST_DIR=$2 -SERVICE=$3 -ACTION=$4 - - -#START SERVICE - -if [ $SERVICE == "dir" ] -then - if [ $ACTION == "start" ]; then - start_service "dir" "org.xtreemfs.dir.DIR" - else - stop_service "dir" - fi -elif [ $SERVICE == "mrc" ] -then - if [ $ACTION == "start" ]; then - start_service "mrc" "org.xtreemfs.mrc.MRC" - else - stop_service "mrc" - fi -elif [ ${SERVICE:0:3} == "osd" ] -then - if [ $ACTION == "start" ]; then - start_service $SERVICE "org.xtreemfs.osd.OSD" - else - stop_service $SERVICE - fi -fi - diff --git a/tests/autotest_py/tests/marked_block.pl b/tests/autotest_py/tests/marked_block.pl deleted file mode 100755 index add8356d9..000000000 --- a/tests/autotest_py/tests/marked_block.pl +++ /dev/null @@ -1,196 +0,0 @@ -#!/usr/bin/perl - -# Trying to detect disk write errors... -# Write a bunch of large files with a fixed pattern for each 512 bytes -# block. The block and file name can be recognised from its content. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# Copyright (c) Erich Focht -# All rights reserved - -use strict; -use Digest::MD5 qw(md5_hex); -use Getopt::Long; - -sub usage { - - print <<'EOF'; -Trying to detect disk write errors... -------------------------------------- -Write a bunch of large files with a fixed pattern for each 512 bytes -block. The block and file name can be recognised from its content, -each block contains a repetition of the filename and the block number -filled up to 512 bytes with "x" characters. - -The md5sum of the file is computed on the fly and written to a corresponding -file, such that the integrity of each file can be checked separately. - -The file checking is done in groups, the default group size is 50 files. -The group size should be chosen such that at check time the file is flushed -to disk. Whether this makes sense or not depends on the origin of the error, -of course... - -Usage: - marked_block.pl [--start=] [--nfiles=] \ - [--group=] [--check] [--file ] - - --start=startindex : file number to start with (default = 1) - --nfiles=n : number of files to write (default = 100) - --group=groupsize : invoke md5sum after writing files - (default = 50) - --check : check files instead of writing, compare with - expected content and print deviating blocks. - --file : write/check only one particular file - --base : basename for building the filename - --size : size of testfiles (default: 100MB) - --help : print this help message - -Typical usage: - marked_blocks.pl --start=1 --nfiles=1000 - runs until it finds some checksum discrepancy in a file, - suppose this is file testfile0054. In order to display the - discrepancy to the file on disk: - marked_blocks.pl --start=54 --nfiles=1 --check - or - marked_blocks.pl --file testfile0054 --check - -Written and (c) by Erich Focht @ NEC. Use at your own risk! - -EOF - exit 0; -} - -sub min { - my ($a, $b) = @_; - return $a if ($a <= $b); - return $b; -} - -my $filesize = 100 * 1024 * 1024; -my $nfiles = 100; -my $namebase = "testfile"; -my $nfstart = 1; -my $group = 50; -my $check = 0; -my $file; - -GetOptions( - "help|h" => \&usage, - "start=i" => \$nfstart, - "nfiles|n=i"=> \$nfiles, - "group=i" => \$group, - "check" => \$check, - "file=s" => \$file, - "base=s" => \$namebase, - "size=i" => \$filesize, - ) || &usage(); - -my $nblocks = $filesize * 1024 * 1024 / 512; # 100MB - -if ($file) { - $file =~ /^(\D+)(\d+)$/; - $namebase = $1; - $nfstart = int($2); - $nfiles = 1; -} - -if (!$check) { - print "Writing $nfiles files with prefix $namebase, starting with $nfstart.\n"; -} else { - print "Checking $nfiles files with prefix $namebase, starting with $nfstart.\n"; -} - -my ($string, $block, $slen, $written, $read, $bread); - -my $nfend = $nfstart + $nfiles - 1; - -for (my $fb = $nfstart; $fb <= $nfend; $fb = $fb + $group) { - - for (my $f = $fb; $f <= min($fb + $group - 1, $nfend); $f++) { - my $name = sprintf("%s%04d",$namebase,$f); - my @bad; - - $| = 1; - print "File: $name\n"; - - if (!$check) { - open OUT, "> $name" or die "Could not open file $name: $!"; - } else { - open IN, "$name" or die "Could not open file $name: $!"; - } - - my $md5 = Digest::MD5->new; - - for (my $i = 0; $i < $nblocks; $i++) { - $string = "file $name block $i:"; - $slen = length($string); - $block = $string x int(512/$slen); - $block .= "x" x (512 - length($block)); - - if (!$check) { - $written = syswrite(OUT, $block, 512); - die "written = $written instead of 512!" if ($written != 512); - $md5->add($block); - } else { - $read = sysread(IN, $bread, 512); - die "read = $read instead of 512!" if ($read != 512); - if (substr($bread, 0, 512) ne substr($block, 0, 512)) { - push @bad, $i; - print "Block $i has unexpected content:\n"; - print_hex($bread,512); - print "-" x 70 . "\n"; - $bread =~ s/[:^print:]/./g; - print "$bread\n"; - print "-" x 70 . "\n"; - } - } - } - if (!$check) { - close OUT; - open MD5, "> $name.md5" or die "Could not open $name.md5 : $!"; - print MD5 $md5->hexdigest . " $name\n"; - close MD5; - } else { - if (@bad) { - print "Following 512 byte blocks were bad: " - . join(" ",@bad) . "\n"; - } - close IN; - } - } - if (!$check) { - for (my $f = $fb; $f <= min($fb + $group - 1, $nfend); $f++) { - my $mdfile = sprintf("%s%04d%s",$namebase,$f,".md5"); - !system("md5sum -c $mdfile") or die "md5sum failed!"; - } - } -} - - -exit 0; - -sub print_hex { - my ($data, $len) = @_; - for (my $i = 0; $i < $len; $i += 24) { - printf "%03d: ",$i; - for (my $j = $i; $j < min($i + 24, $len); $j++) { - my $b = unpack "C", substr($data,$j,1); - printf "%02x ", $b; - } - print "\n"; - } -} - diff --git a/tests/autotest_py/tests/marked_block_helper.pl b/tests/autotest_py/tests/marked_block_helper.pl deleted file mode 100755 index add8356d9..000000000 --- a/tests/autotest_py/tests/marked_block_helper.pl +++ /dev/null @@ -1,196 +0,0 @@ -#!/usr/bin/perl - -# Trying to detect disk write errors... -# Write a bunch of large files with a fixed pattern for each 512 bytes -# block. The block and file name can be recognised from its content. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# Copyright (c) Erich Focht -# All rights reserved - -use strict; -use Digest::MD5 qw(md5_hex); -use Getopt::Long; - -sub usage { - - print <<'EOF'; -Trying to detect disk write errors... -------------------------------------- -Write a bunch of large files with a fixed pattern for each 512 bytes -block. The block and file name can be recognised from its content, -each block contains a repetition of the filename and the block number -filled up to 512 bytes with "x" characters. - -The md5sum of the file is computed on the fly and written to a corresponding -file, such that the integrity of each file can be checked separately. - -The file checking is done in groups, the default group size is 50 files. -The group size should be chosen such that at check time the file is flushed -to disk. Whether this makes sense or not depends on the origin of the error, -of course... - -Usage: - marked_block.pl [--start=] [--nfiles=] \ - [--group=] [--check] [--file ] - - --start=startindex : file number to start with (default = 1) - --nfiles=n : number of files to write (default = 100) - --group=groupsize : invoke md5sum after writing files - (default = 50) - --check : check files instead of writing, compare with - expected content and print deviating blocks. - --file : write/check only one particular file - --base : basename for building the filename - --size : size of testfiles (default: 100MB) - --help : print this help message - -Typical usage: - marked_blocks.pl --start=1 --nfiles=1000 - runs until it finds some checksum discrepancy in a file, - suppose this is file testfile0054. In order to display the - discrepancy to the file on disk: - marked_blocks.pl --start=54 --nfiles=1 --check - or - marked_blocks.pl --file testfile0054 --check - -Written and (c) by Erich Focht @ NEC. Use at your own risk! - -EOF - exit 0; -} - -sub min { - my ($a, $b) = @_; - return $a if ($a <= $b); - return $b; -} - -my $filesize = 100 * 1024 * 1024; -my $nfiles = 100; -my $namebase = "testfile"; -my $nfstart = 1; -my $group = 50; -my $check = 0; -my $file; - -GetOptions( - "help|h" => \&usage, - "start=i" => \$nfstart, - "nfiles|n=i"=> \$nfiles, - "group=i" => \$group, - "check" => \$check, - "file=s" => \$file, - "base=s" => \$namebase, - "size=i" => \$filesize, - ) || &usage(); - -my $nblocks = $filesize * 1024 * 1024 / 512; # 100MB - -if ($file) { - $file =~ /^(\D+)(\d+)$/; - $namebase = $1; - $nfstart = int($2); - $nfiles = 1; -} - -if (!$check) { - print "Writing $nfiles files with prefix $namebase, starting with $nfstart.\n"; -} else { - print "Checking $nfiles files with prefix $namebase, starting with $nfstart.\n"; -} - -my ($string, $block, $slen, $written, $read, $bread); - -my $nfend = $nfstart + $nfiles - 1; - -for (my $fb = $nfstart; $fb <= $nfend; $fb = $fb + $group) { - - for (my $f = $fb; $f <= min($fb + $group - 1, $nfend); $f++) { - my $name = sprintf("%s%04d",$namebase,$f); - my @bad; - - $| = 1; - print "File: $name\n"; - - if (!$check) { - open OUT, "> $name" or die "Could not open file $name: $!"; - } else { - open IN, "$name" or die "Could not open file $name: $!"; - } - - my $md5 = Digest::MD5->new; - - for (my $i = 0; $i < $nblocks; $i++) { - $string = "file $name block $i:"; - $slen = length($string); - $block = $string x int(512/$slen); - $block .= "x" x (512 - length($block)); - - if (!$check) { - $written = syswrite(OUT, $block, 512); - die "written = $written instead of 512!" if ($written != 512); - $md5->add($block); - } else { - $read = sysread(IN, $bread, 512); - die "read = $read instead of 512!" if ($read != 512); - if (substr($bread, 0, 512) ne substr($block, 0, 512)) { - push @bad, $i; - print "Block $i has unexpected content:\n"; - print_hex($bread,512); - print "-" x 70 . "\n"; - $bread =~ s/[:^print:]/./g; - print "$bread\n"; - print "-" x 70 . "\n"; - } - } - } - if (!$check) { - close OUT; - open MD5, "> $name.md5" or die "Could not open $name.md5 : $!"; - print MD5 $md5->hexdigest . " $name\n"; - close MD5; - } else { - if (@bad) { - print "Following 512 byte blocks were bad: " - . join(" ",@bad) . "\n"; - } - close IN; - } - } - if (!$check) { - for (my $f = $fb; $f <= min($fb + $group - 1, $nfend); $f++) { - my $mdfile = sprintf("%s%04d%s",$namebase,$f,".md5"); - !system("md5sum -c $mdfile") or die "md5sum failed!"; - } - } -} - - -exit 0; - -sub print_hex { - my ($data, $len) = @_; - for (my $i = 0; $i < $len; $i += 24) { - printf "%03d: ",$i; - for (my $j = $i; $j < min($i + 24, $len); $j++) { - my $b = unpack "C", substr($data,$j,1); - printf "%02x ", $b; - } - print "\n"; - } -} - diff --git a/tests/autotest_py/tests/dbench-client.txt.gz b/tests/dbench-client.txt.gz similarity index 100% rename from tests/autotest_py/tests/dbench-client.txt.gz rename to tests/dbench-client.txt.gz diff --git a/tests/autotest/tests/marked_block.pl b/tests/marked_block.pl similarity index 100% rename from tests/autotest/tests/marked_block.pl rename to tests/marked_block.pl diff --git a/tests/autotest/tests/marked_block_helper.pl b/tests/marked_block_helper.pl old mode 100644 new mode 100755 similarity index 100% rename from tests/autotest/tests/marked_block_helper.pl rename to tests/marked_block_helper.pl -- GitLab From 2098ff8824f67bc004602ec9c0c4bbec15c46c41 Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 13:42:55 +0000 Subject: [PATCH 22/97] /: rearranging directories git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@611 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- {client => src/client}/.cproject | 0 {client => src/client}/.project | 0 {client => src/client}/SConstruct | 0 {client => src/client}/TODO.txt | 0 .../client}/generate_src_and_proj.bat | 0 .../client}/include/org/xtreemfs/client.h | 0 .../include/org/xtreemfs/client/dir_proxy.h | 0 .../include/org/xtreemfs/client/file.h | 0 .../include/org/xtreemfs/client/mrc_proxy.h | 0 .../include/org/xtreemfs/client/osd_proxy.h | 0 .../include/org/xtreemfs/client/path.h | 0 .../include/org/xtreemfs/client/policy.h | 0 .../client/proxy_exception_response.h | 0 .../include/org/xtreemfs/client/volume.h | 0 .../org/xtreemfs/interfaces/constants.h | 0 .../org/xtreemfs/interfaces/dir_interface.h | 0 .../org/xtreemfs/interfaces/exceptions.h | 0 .../org/xtreemfs/interfaces/mrc_interface.h | 0 .../org/xtreemfs/interfaces/mrc_osd_types.h | 0 .../org/xtreemfs/interfaces/osd_interface.h | 0 .../include/org/xtreemfs/interfaces/types.h | 0 .../google-breakpad.SConscript | 0 .../google-breakpad/google-breakpad.vcproj | 0 .../google-breakpad_custom.SConscript | 0 .../google-breakpad_linux.SConscript | 0 .../client/org_xtreemfs_client_test_main.cpp | 0 .../xtreemfs/client/xos_ams_flog.SConscript | 0 .../org/xtreemfs/client/xos_ams_flog.vcproj | 0 .../org/xtreemfs/client/xtfs_fuzz.SConscript | 0 .../proj/org/xtreemfs/client/xtfs_fuzz.vcproj | 0 .../org/xtreemfs/client/xtfs_lsvol.SConscript | 0 .../org/xtreemfs/client/xtfs_lsvol.vcproj | 0 .../org/xtreemfs/client/xtfs_mkvol.SConscript | 0 .../org/xtreemfs/client/xtfs_mkvol.vcproj | 0 .../org/xtreemfs/client/xtfs_mount.SConscript | 0 .../org/xtreemfs/client/xtfs_mount.vcproj | 0 .../org/xtreemfs/client/xtfs_rmvol.SConscript | 0 .../org/xtreemfs/client/xtfs_rmvol.vcproj | 0 .../org/xtreemfs/client/xtfs_send.SConscript | 0 .../proj/org/xtreemfs/client/xtfs_send.vcproj | 0 .../org/xtreemfs/client/xtfs_stat.SConscript | 0 .../proj/org/xtreemfs/client/xtfs_stat.vcproj | 0 .../client/xtreemfs-client-lib.SConscript | 0 .../client/xtreemfs-client-lib.vcproj | 0 .../xtreemfs-client-lib_test.SConscript | 0 .../client/xtreemfs-client-lib_test.vcproj | 0 {client => src/client}/scons.py | 0 .../client}/share/google-breakpad/COPYING | 0 .../client/linux/handler/exception_handler.cc | 0 .../client/linux/handler/exception_handler.h | 0 .../src/client/linux/handler/linux_thread.cc | 0 .../src/client/linux/handler/linux_thread.h | 0 .../linux/handler/minidump_generator.cc | 0 .../client/linux/handler/minidump_generator.h | 0 .../client/mac/crash_generation/Inspector.h | 0 .../client/mac/crash_generation/Inspector.mm | 0 .../mac/crash_generation/InspectorMain.mm | 0 .../client/mac/handler/breakpad_exc_server.c | 0 .../client/mac/handler/breakpad_exc_server.h | 0 .../client/mac/handler/breakpad_nlist_64.cc | 0 .../client/mac/handler/breakpad_nlist_64.h | 0 .../src/client/mac/handler/dynamic_images.cc | 0 .../src/client/mac/handler/dynamic_images.h | 0 .../client/mac/handler/exception_handler.cc | 0 .../client/mac/handler/exception_handler.h | 0 .../client/mac/handler/minidump_generator.cc | 0 .../client/mac/handler/minidump_generator.h | 0 .../mac/handler/protected_memory_allocator.cc | 0 .../mac/handler/protected_memory_allocator.h | 0 .../src/client/minidump_file_writer-inl.h | 0 .../src/client/minidump_file_writer.cc | 0 .../src/client/minidump_file_writer.h | 0 .../solaris/handler/exception_handler.cc | 0 .../solaris/handler/exception_handler.h | 0 .../solaris/handler/minidump_generator.cc | 0 .../solaris/handler/minidump_generator.h | 0 .../src/client/solaris/handler/solaris_lwp.cc | 0 .../src/client/solaris/handler/solaris_lwp.h | 0 .../windows/common/auto_critical_section.h | 0 .../src/client/windows/common/ipc_protocol.h | 0 .../windows/crash_generation/ReadMe.txt | 0 .../windows/crash_generation/client_info.cc | 0 .../windows/crash_generation/client_info.h | 0 .../crash_generation/crash_generation.vcproj | 0 .../crash_generation_client.cc | 0 .../crash_generation_client.h | 0 .../crash_generation_server.cc | 0 .../crash_generation_server.h | 0 .../crash_generation/minidump_generator.cc | 0 .../crash_generation/minidump_generator.h | 0 .../windows/handler/exception_handler.cc | 0 .../windows/handler/exception_handler.h | 0 .../windows/handler/exception_handler.vcproj | 0 .../google-breakpad/src/common/convert_UTF.c | 0 .../google-breakpad/src/common/convert_UTF.h | 0 .../src/common/linux/dump_symbols.cc | 0 .../src/common/linux/dump_symbols.h | 0 .../src/common/linux/file_id.cc | 0 .../src/common/linux/file_id.h | 0 .../src/common/linux/guid_creator.cc | 0 .../src/common/linux/guid_creator.h | 0 .../src/common/mac/GTMDefines.h | 0 .../src/common/mac/GTMGarbageCollection.h | 0 .../src/common/mac/GTMLogger.h | 0 .../src/common/mac/GTMLogger.m | 0 .../google-breakpad/src/common/mac/MachIPC.h | 0 .../google-breakpad/src/common/mac/MachIPC.mm | 0 .../src/common/mac/SimpleStringDictionary.h | 0 .../src/common/mac/SimpleStringDictionary.mm | 0 .../src/common/mac/dump_syms.h | 0 .../src/common/mac/dump_syms.mm | 0 .../src/common/mac/dwarf/bytereader-inl.h | 0 .../src/common/mac/dwarf/bytereader.cc | 0 .../src/common/mac/dwarf/bytereader.h | 0 .../src/common/mac/dwarf/dwarf2enums.h | 0 .../src/common/mac/dwarf/dwarf2reader.cc | 0 .../src/common/mac/dwarf/dwarf2reader.h | 0 .../src/common/mac/dwarf/functioninfo.cc | 0 .../src/common/mac/dwarf/functioninfo.h | 0 .../src/common/mac/dwarf/line_state_machine.h | 0 .../src/common/mac/dwarf/types.h | 0 .../google-breakpad/src/common/mac/file_id.cc | 0 .../google-breakpad/src/common/mac/file_id.h | 0 .../src/common/mac/macho_id.cc | 0 .../google-breakpad/src/common/mac/macho_id.h | 0 .../src/common/mac/macho_utilities.cc | 0 .../src/common/mac/macho_utilities.h | 0 .../src/common/mac/macho_walker.cc | 0 .../src/common/mac/macho_walker.h | 0 .../src/common/mac/string_utilities.cc | 0 .../src/common/mac/string_utilities.h | 0 .../src/common/mac/testing/GTMSenTestCase.h | 0 .../src/common/mac/testing/GTMSenTestCase.m | 0 .../share/google-breakpad/src/common/md5.c | 0 .../share/google-breakpad/src/common/md5.h | 0 .../src/common/solaris/dump_symbols.cc | 0 .../src/common/solaris/dump_symbols.h | 0 .../src/common/solaris/file_id.cc | 0 .../src/common/solaris/file_id.h | 0 .../src/common/solaris/guid_creator.cc | 0 .../src/common/solaris/guid_creator.h | 0 .../src/common/solaris/message_output.h | 0 .../src/common/string_conversion.cc | 0 .../src/common/string_conversion.h | 0 .../src/common/windows/guid_string.cc | 0 .../src/common/windows/guid_string.h | 0 .../src/common/windows/string_utils-inl.h | 0 .../src/common/windows/string_utils.cc | 0 .../google_breakpad/common/breakpad_types.h | 0 .../common/minidump_cpu_amd64.h | 0 .../google_breakpad/common/minidump_cpu_ppc.h | 0 .../common/minidump_cpu_ppc64.h | 0 .../common/minidump_cpu_sparc.h | 0 .../google_breakpad/common/minidump_cpu_x86.h | 0 .../common/minidump_exception_linux.h | 0 .../common/minidump_exception_mac.h | 0 .../common/minidump_exception_solaris.h | 0 .../common/minidump_exception_win32.h | 0 .../google_breakpad/common/minidump_format.h | 0 .../google_breakpad/common/minidump_size.h | 0 .../src/processor/scoped_ptr.h | 0 .../src/org/xtreemfs/client/dir_proxy.cpp | 0 .../client}/src/org/xtreemfs/client/file.cpp | 0 .../src/org/xtreemfs/client/file_test.cpp | 0 .../client}/src/org/xtreemfs/client/main.h | 0 .../src/org/xtreemfs/client/mrc_proxy.cpp | 0 .../src/org/xtreemfs/client/osd_proxy.cpp | 0 .../client}/src/org/xtreemfs/client/path.cpp | 0 .../src/org/xtreemfs/client/path_test.cpp | 0 .../org/xtreemfs/client/policy_container.cpp | 0 .../org/xtreemfs/client/policy_container.h | 0 .../client/proxy_exception_response.cpp | 0 .../src/org/xtreemfs/client/volume.cpp | 0 .../src/org/xtreemfs/client/volume_test.cpp | 0 .../src/org/xtreemfs/client/xos_ams_flog.c | 0 .../src/org/xtreemfs/client/xtfs_fuzz.cpp | 0 .../src/org/xtreemfs/client/xtfs_lsvol.cpp | 0 .../src/org/xtreemfs/client/xtfs_mkvol.cpp | 0 .../src/org/xtreemfs/client/xtfs_mount.cpp | 0 .../src/org/xtreemfs/client/xtfs_rmvol.cpp | 0 .../src/org/xtreemfs/client/xtfs_send.cpp | 0 .../src/org/xtreemfs/client/xtfs_stat.cpp | 0 {client => src/client}/xtreemfs-client.sln | 0 {servers => src/servers}/.classpath | 0 {servers => src/servers}/.project | 0 .../.settings/org.eclipse.jdt.core.prefs | 0 .../.settings/org.eclipse.jdt.ui.prefs | 0 .../org.eclipse.wst.validation.prefs | 0 {servers => src/servers}/build.xml | 0 {servers => src/servers}/config/default_dir | 0 .../servers}/config/dirconfig.properties | 0 .../servers}/config/dirconfig.ssl_test | 0 .../servers}/config/dirconfig.test | 0 .../servers}/config/mrcconfig.properties | 0 .../servers}/config/mrcconfig.ssl_test | 0 .../servers}/config/mrcconfig.test | 0 .../servers}/config/osdconfig.properties | 0 .../servers}/config/osdconfig.ssl_test | 0 .../servers}/config/osdconfig.test | 0 .../servers}/config/osdconfig2.test | 0 .../servers}/init.d-scripts/xtreemfs-dir | 0 .../servers}/init.d-scripts/xtreemfs-mrc | 0 .../servers}/init.d-scripts/xtreemfs-osd | 0 .../servers}/lib/BabuDB-0.1.0-RC.jar | Bin .../servers}/lib/test/commons-codec-1.3.jar | Bin .../test/commons-httpclient-3.0.1-contrib.jar | Bin .../lib/test/commons-httpclient-3.0.1.jar | Bin .../servers}/lib/test/commons-logging-1.1.jar | Bin .../servers}/lib/test/junit-4.3.1.jar | Bin .../servers}/nbproject/build-impl.xml | 0 .../servers}/nbproject/genfiles.properties | 0 .../servers}/nbproject/project.properties | 0 .../servers}/nbproject/project.xml | 0 .../src/org/xtreemfs/common/Capability.java | 0 .../src/org/xtreemfs/common/ClientLease.java | 0 .../src/org/xtreemfs/common/DualQueue.java | 0 .../org/xtreemfs/common/HeartbeatThread.java | 0 .../src/org/xtreemfs/common/LRUCache.java | 0 .../xtreemfs/common/PrioritizableMessage.java | 0 .../src/org/xtreemfs/common/RingBuffer.java | 0 .../src/org/xtreemfs/common/TimeSync.java | 0 .../xtreemfs/common/VersionManagement.java | 0 .../common/auth/AuthenticationException.java | 0 .../common/auth/AuthenticationProvider.java | 0 .../common/auth/NullAuthProvider.java | 0 .../common/auth/SimpleX509AuthProvider.java | 0 .../xtreemfs/common/auth/UserCredentials.java | 0 .../xtreemfs/common/buffer/ASCIIString.java | 0 .../common/buffer/BufferConversionUtils.java | 0 .../xtreemfs/common/buffer/BufferPool.java | 0 .../common/buffer/ReusableBuffer.java | 0 .../common/checksums/ChecksumAlgorithm.java | 0 .../common/checksums/ChecksumFactory.java | 0 .../common/checksums/ChecksumProvider.java | 0 .../checksums/StringChecksumAlgorithm.java | 0 .../common/checksums/algorithms/Adler32.java | 0 .../common/checksums/algorithms/CRC32.java | 0 .../algorithms/JavaChecksumAlgorithm.java | 0 .../common/checksums/algorithms/JavaHash.java | 0 .../JavaMessageDigestAlgorithm.java | 0 .../common/checksums/algorithms/SDBM.java | 0 .../provider/JavaChecksumProvider.java | 0 .../common/clients/io/ByteMapper.java | 0 .../common/clients/io/ByteMapperFactory.java | 0 .../common/clients/io/ByteMapperRAID0.java | 0 .../common/clients/io/ObjectStore.java | 0 .../common/clients/io/RandomAccessFile.java | 0 .../clients/simplescrubber/FileInfo.java | 0 .../clients/simplescrubber/Scrubber.java | 0 .../org/xtreemfs/common/config/Config.java | 0 .../xtreemfs/common/config/ServiceConfig.java | 0 .../org/xtreemfs/common/logging/Logging.java | 0 .../org/xtreemfs/common/logging/Utils.java | 0 .../src/org/xtreemfs/common/trace/Tracer.java | 0 .../src/org/xtreemfs/common/util/FSUtils.java | 0 .../org/xtreemfs/common/util/NetUtils.java | 0 .../common/util/ONCRPCServiceURL.java | 0 .../org/xtreemfs/common/util/OutputUtils.java | 0 .../xtreemfs/common/uuids/ServiceUUID.java | 0 .../xtreemfs/common/uuids/UUIDCacheEntry.java | 0 .../xtreemfs/common/uuids/UUIDResolver.java | 0 .../common/uuids/UnknownUUIDException.java | 0 .../xloc/InvalidXLocationsException.java | 0 .../org/xtreemfs/common/xloc/RAID0Impl.java | 0 .../src/org/xtreemfs/common/xloc/Replica.java | 0 .../common/xloc/StripingPolicyImpl.java | 0 .../org/xtreemfs/common/xloc/XLocations.java | 0 .../servers}/src/org/xtreemfs/dir/DIR.java | 0 .../src/org/xtreemfs/dir/DIRConfig.java | 0 .../src/org/xtreemfs/dir/DIRRequest.java | 0 .../xtreemfs/dir/DIRRequestDispatcher.java | 0 .../src/org/xtreemfs/dir/StatusPage.java | 0 .../org/xtreemfs/dir/client/DIRClient.java | 0 .../org/xtreemfs/dir/client/uuidmappings.java | 0 .../xtreemfs/dir/operations/DIROperation.java | 0 .../DeleteAddressMappingOperation.java | 0 .../DeregisterServiceOperation.java | 0 .../GetAddressMappingOperation.java | 0 .../operations/GetGlobalTimeOperation.java | 0 .../operations/GetServiceByNameOperation.java | 0 .../operations/GetServiceByUuidOperation.java | 0 .../GetServicesByTypeOperation.java | 0 .../operations/RegisterServiceOperation.java | 0 .../operations/ServiceOfflineOperation.java | 0 .../SetAddressMappingOperation.java | 0 .../org/xtreemfs/dir/templates/status.html | 0 .../xtreemfs/foundation/CrashReporter.java | 0 .../src/org/xtreemfs/foundation/ErrNo.java | 0 .../foundation/LifeCycleListener.java | 0 .../xtreemfs/foundation/LifeCycleThread.java | 0 .../org/xtreemfs/foundation/SSLOptions.java | 0 .../foundation/json/JSONCharBufferString.java | 0 .../foundation/json/JSONException.java | 0 .../xtreemfs/foundation/json/JSONInput.java | 0 .../xtreemfs/foundation/json/JSONParser.java | 0 .../xtreemfs/foundation/json/JSONString.java | 0 .../foundation/oncrpc/channels/ChannelIO.java | 0 .../oncrpc/channels/SSLChannelIO.java | 0 .../oncrpc/client/ONCRPCClient.java | 0 .../oncrpc/client/ONCRPCRequest.java | 0 .../oncrpc/client/RPCNIOSocketClient.java | 0 .../foundation/oncrpc/client/RPCResponse.java | 0 .../client/RPCResponseAvailableListener.java | 0 .../oncrpc/client/RPCResponseDecoder.java | 0 .../oncrpc/client/RPCResponseListener.java | 0 .../oncrpc/client/ServerConnection.java | 0 .../oncrpc/server/ClientConnection.java | 0 .../oncrpc/server/ONCRPCRecord.java | 0 .../oncrpc/server/ONCRPCRequest.java | 0 .../oncrpc/server/RPCNIOSocketServer.java | 0 .../server/RPCServerRequestListener.java | 0 .../oncrpc/utils/ONCRPCBufferWriter.java | 0 .../interfaces/AccessControlPolicyType.java | 0 .../xtreemfs/interfaces/AddressMapping.java | 0 .../interfaces/AddressMappingSet.java | 0 .../org/xtreemfs/interfaces/Constants.java | 0 .../interfaces/DIRInterface/DIRInterface.java | 0 .../xtreemfs_address_mappings_getRequest.java | 0 ...xtreemfs_address_mappings_getResponse.java | 0 ...reemfs_address_mappings_removeRequest.java | 0 ...eemfs_address_mappings_removeResponse.java | 0 .../xtreemfs_address_mappings_setRequest.java | 0 ...xtreemfs_address_mappings_setResponse.java | 0 .../xtreemfs_checkpointRequest.java | 0 .../xtreemfs_checkpointResponse.java | 0 .../xtreemfs_global_time_getRequest.java | 0 .../xtreemfs_global_time_getResponse.java | 0 .../xtreemfs_global_time_s_getRequest.java | 0 .../xtreemfs_global_time_s_getResponse.java | 0 .../xtreemfs_service_deregisterRequest.java | 0 .../xtreemfs_service_deregisterResponse.java | 0 .../xtreemfs_service_get_by_nameRequest.java | 0 .../xtreemfs_service_get_by_nameResponse.java | 0 .../xtreemfs_service_get_by_typeRequest.java | 0 .../xtreemfs_service_get_by_typeResponse.java | 0 .../xtreemfs_service_get_by_uuidRequest.java | 0 .../xtreemfs_service_get_by_uuidResponse.java | 0 .../xtreemfs_service_offlineRequest.java | 0 .../xtreemfs_service_offlineResponse.java | 0 .../xtreemfs_service_registerRequest.java | 0 .../xtreemfs_service_registerResponse.java | 0 .../xtreemfs_shutdownRequest.java | 0 .../xtreemfs_shutdownResponse.java | 0 .../xtreemfs/interfaces/DirectoryEntry.java | 0 .../interfaces/DirectoryEntrySet.java | 0 .../ConcurrentModificationException.java | 0 .../interfaces/Exceptions/Exceptions.java | 0 .../Exceptions/InvalidArgumentException.java | 0 .../Exceptions/ProtocolException.java | 0 .../Exceptions/RedirectException.java | 0 .../interfaces/Exceptions/errnoException.java | 0 .../xtreemfs/interfaces/FileCredentials.java | 0 .../interfaces/FileCredentialsSet.java | 0 .../org/xtreemfs/interfaces/InternalGmax.java | 0 .../interfaces/InternalReadLocalResponse.java | 0 .../interfaces/MRCInterface/MRCException.java | 0 .../interfaces/MRCInterface/MRCInterface.java | 0 .../MRCInterface/accessRequest.java | 0 .../MRCInterface/accessResponse.java | 0 .../interfaces/MRCInterface/chmodRequest.java | 0 .../MRCInterface/chmodResponse.java | 0 .../interfaces/MRCInterface/chownRequest.java | 0 .../MRCInterface/chownResponse.java | 0 .../MRCInterface/createRequest.java | 0 .../MRCInterface/createResponse.java | 0 .../MRCInterface/ftruncateRequest.java | 0 .../MRCInterface/ftruncateResponse.java | 0 .../MRCInterface/getattrRequest.java | 0 .../MRCInterface/getattrResponse.java | 0 .../MRCInterface/getxattrRequest.java | 0 .../MRCInterface/getxattrResponse.java | 0 .../interfaces/MRCInterface/linkRequest.java | 0 .../interfaces/MRCInterface/linkResponse.java | 0 .../MRCInterface/listxattrRequest.java | 0 .../MRCInterface/listxattrResponse.java | 0 .../interfaces/MRCInterface/mkdirRequest.java | 0 .../MRCInterface/mkdirResponse.java | 0 .../interfaces/MRCInterface/openRequest.java | 0 .../interfaces/MRCInterface/openResponse.java | 0 .../MRCInterface/readdirRequest.java | 0 .../MRCInterface/readdirResponse.java | 0 .../MRCInterface/removexattrRequest.java | 0 .../MRCInterface/removexattrResponse.java | 0 .../MRCInterface/renameRequest.java | 0 .../MRCInterface/renameResponse.java | 0 .../interfaces/MRCInterface/rmdirRequest.java | 0 .../MRCInterface/rmdirResponse.java | 0 .../MRCInterface/setattrRequest.java | 0 .../MRCInterface/setattrResponse.java | 0 .../MRCInterface/setxattrRequest.java | 0 .../MRCInterface/setxattrResponse.java | 0 .../MRCInterface/statvfsRequest.java | 0 .../MRCInterface/statvfsResponse.java | 0 .../MRCInterface/symlinkRequest.java | 0 .../MRCInterface/symlinkResponse.java | 0 .../MRCInterface/unlinkRequest.java | 0 .../MRCInterface/unlinkResponse.java | 0 .../MRCInterface/utimensRequest.java | 0 .../MRCInterface/utimensResponse.java | 0 .../xtreemfs_check_file_existsRequest.java | 0 .../xtreemfs_check_file_existsResponse.java | 0 .../xtreemfs_checkpointRequest.java | 0 .../xtreemfs_checkpointResponse.java | 0 .../xtreemfs_dump_databaseRequest.java | 0 .../xtreemfs_dump_databaseResponse.java | 0 .../xtreemfs_get_suitable_osdsRequest.java | 0 .../xtreemfs_get_suitable_osdsResponse.java | 0 .../xtreemfs_internal_debugRequest.java | 0 .../xtreemfs_internal_debugResponse.java | 0 .../MRCInterface/xtreemfs_listdirRequest.java | 0 .../xtreemfs_listdirResponse.java | 0 .../MRCInterface/xtreemfs_lsvolRequest.java | 0 .../MRCInterface/xtreemfs_lsvolResponse.java | 0 .../MRCInterface/xtreemfs_mkvolRequest.java | 0 .../MRCInterface/xtreemfs_mkvolResponse.java | 0 .../xtreemfs_renew_capabilityRequest.java | 0 .../xtreemfs_renew_capabilityResponse.java | 0 .../xtreemfs_replica_addRequest.java | 0 .../xtreemfs_replica_addResponse.java | 0 .../xtreemfs_replica_listRequest.java | 0 .../xtreemfs_replica_listResponse.java | 0 .../xtreemfs_replica_removeRequest.java | 0 .../xtreemfs_replica_removeResponse.java | 0 .../xtreemfs_restore_databaseRequest.java | 0 .../xtreemfs_restore_databaseResponse.java | 0 .../xtreemfs_restore_fileRequest.java | 0 .../xtreemfs_restore_fileResponse.java | 0 .../MRCInterface/xtreemfs_rmvolRequest.java | 0 .../MRCInterface/xtreemfs_rmvolResponse.java | 0 .../xtreemfs_shutdownRequest.java | 0 .../xtreemfs_shutdownResponse.java | 0 .../xtreemfs_update_file_sizeRequest.java | 0 .../xtreemfs_update_file_sizeResponse.java | 0 .../org/xtreemfs/interfaces/NewFileSize.java | 0 .../xtreemfs/interfaces/NewFileSizeSet.java | 0 .../interfaces/OSDInterface/OSDException.java | 0 .../interfaces/OSDInterface/OSDInterface.java | 0 .../OSDInterface/keep_file_openRequest.java | 0 .../OSDInterface/keep_file_openResponse.java | 0 .../interfaces/OSDInterface/readRequest.java | 0 .../interfaces/OSDInterface/readResponse.java | 0 .../OSDInterface/truncateRequest.java | 0 .../OSDInterface/truncateResponse.java | 0 .../OSDInterface/unlinkRequest.java | 0 .../OSDInterface/unlinkResponse.java | 0 .../interfaces/OSDInterface/writeRequest.java | 0 .../OSDInterface/writeResponse.java | 0 .../xtreemfs_check_objectRequest.java | 0 .../xtreemfs_check_objectResponse.java | 0 .../xtreemfs_cleanup_get_resultsRequest.java | 0 .../xtreemfs_cleanup_get_resultsResponse.java | 0 .../xtreemfs_cleanup_is_runningRequest.java | 0 .../xtreemfs_cleanup_is_runningResponse.java | 0 .../xtreemfs_cleanup_startRequest.java | 0 .../xtreemfs_cleanup_startResponse.java | 0 .../xtreemfs_cleanup_statusRequest.java | 0 .../xtreemfs_cleanup_statusResponse.java | 0 .../xtreemfs_cleanup_stopRequest.java | 0 .../xtreemfs_cleanup_stopResponse.java | 0 ...treemfs_internal_get_file_sizeRequest.java | 0 ...reemfs_internal_get_file_sizeResponse.java | 0 .../xtreemfs_internal_get_gmaxRequest.java | 0 .../xtreemfs_internal_get_gmaxResponse.java | 0 .../xtreemfs_internal_read_localRequest.java | 0 .../xtreemfs_internal_read_localResponse.java | 0 .../xtreemfs_internal_truncateRequest.java | 0 .../xtreemfs_internal_truncateResponse.java | 0 .../xtreemfs_shutdownRequest.java | 0 .../xtreemfs_shutdownResponse.java | 0 .../interfaces/OSDSelectionPolicyType.java | 0 .../xtreemfs/interfaces/OSDWriteResponse.java | 0 .../org/xtreemfs/interfaces/OSDtoMRCData.java | 0 .../xtreemfs/interfaces/OSDtoMRCDataSet.java | 0 .../org/xtreemfs/interfaces/ObjectData.java | 0 .../src/org/xtreemfs/interfaces/Replica.java | 0 .../ReplicaSelectionPolicyType.java | 0 .../org/xtreemfs/interfaces/ReplicaSet.java | 0 .../src/org/xtreemfs/interfaces/Service.java | 0 .../xtreemfs/interfaces/ServiceDataMap.java | 0 .../org/xtreemfs/interfaces/ServiceSet.java | 0 .../org/xtreemfs/interfaces/ServiceType.java | 0 .../src/org/xtreemfs/interfaces/Stat.java | 0 .../src/org/xtreemfs/interfaces/StatVFS.java | 0 .../org/xtreemfs/interfaces/StringSet.java | 0 .../xtreemfs/interfaces/StripingPolicy.java | 0 .../interfaces/StripingPolicyType.java | 0 .../xtreemfs/interfaces/UserCredentials.java | 0 .../interfaces/VivaldiCoordinates.java | 0 .../src/org/xtreemfs/interfaces/Volume.java | 0 .../org/xtreemfs/interfaces/VolumeSet.java | 0 .../src/org/xtreemfs/interfaces/XCap.java | 0 .../src/org/xtreemfs/interfaces/XLocSet.java | 0 .../interfaces/utils/ONCRPCException.java | 0 .../utils/ONCRPCRecordFragmentHeader.java | 0 .../interfaces/utils/ONCRPCRequestHeader.java | 0 .../utils/ONCRPCResponseHeader.java | 0 .../xtreemfs/interfaces/utils/Request.java | 0 .../xtreemfs/interfaces/utils/Response.java | 0 .../interfaces/utils/Serializable.java | 0 .../xtreemfs/interfaces/utils/XDRUtils.java | 0 .../src/org/xtreemfs/mrc/ErrorRecord.java | 0 .../servers}/src/org/xtreemfs/mrc/MRC.java | 0 .../src/org/xtreemfs/mrc/MRCConfig.java | 0 .../src/org/xtreemfs/mrc/MRCException.java | 0 .../src/org/xtreemfs/mrc/MRCRequest.java | 0 .../xtreemfs/mrc/MRCRequestDispatcher.java | 0 .../src/org/xtreemfs/mrc/PolicyContainer.java | 0 .../src/org/xtreemfs/mrc/RequestDetails.java | 0 .../src/org/xtreemfs/mrc/UserException.java | 0 .../xtreemfs/mrc/ac/FileAccessManager.java | 0 .../org/xtreemfs/mrc/ac/FileAccessPolicy.java | 0 .../mrc/ac/POSIXFileAccessPolicy.java | 0 .../mrc/ac/VolumeACLFileAccessPolicy.java | 0 .../mrc/ac/YesToAnyoneFileAccessPolicy.java | 0 .../org/xtreemfs/mrc/client/MRCClient.java | 0 .../xtreemfs/mrc/database/AtomicDBUpdate.java | 0 .../mrc/database/DBAccessResultAdapter.java | 0 .../mrc/database/DBAccessResultListener.java | 0 .../mrc/database/DatabaseException.java | 0 .../xtreemfs/mrc/database/StorageManager.java | 0 .../database/babudb/AtomicBabuDBUpdate.java | 0 .../babudb/BabuDBRequestListenerWrapper.java | 0 .../database/babudb/BabuDBStorageHelper.java | 0 .../database/babudb/BabuDBStorageManager.java | 0 .../org/xtreemfs/mrc/metadata/ACLEntry.java | 0 .../mrc/metadata/BufferBackedACLEntry.java | 0 .../metadata/BufferBackedFileMetadata.java | 0 .../metadata/BufferBackedIndexMetadata.java | 0 .../mrc/metadata/BufferBackedMetadata.java | 0 .../mrc/metadata/BufferBackedRCMetadata.java | 0 .../metadata/BufferBackedStripingPolicy.java | 0 .../mrc/metadata/BufferBackedXAttr.java | 0 .../mrc/metadata/BufferBackedXLoc.java | 0 .../mrc/metadata/BufferBackedXLocList.java | 0 .../xtreemfs/mrc/metadata/FileMetadata.java | 0 .../xtreemfs/mrc/metadata/StripingPolicy.java | 0 .../src/org/xtreemfs/mrc/metadata/XAttr.java | 0 .../src/org/xtreemfs/mrc/metadata/XLoc.java | 0 .../org/xtreemfs/mrc/metadata/XLocList.java | 0 .../mrc/operations/AddReplicaOperation.java | 0 .../operations/ChangeAccessModeOperation.java | 0 .../mrc/operations/ChangeOwnerOperation.java | 0 .../mrc/operations/CheckAccessOperation.java | 0 .../operations/CheckFileListOperation.java | 0 .../mrc/operations/CheckpointOperation.java | 0 .../mrc/operations/CreateDirOperation.java | 0 .../mrc/operations/CreateFileOperation.java | 0 .../mrc/operations/CreateLinkOperation.java | 0 .../operations/CreateSymLinkOperation.java | 0 .../mrc/operations/CreateVolumeOperation.java | 0 .../mrc/operations/DeleteOperation.java | 0 .../mrc/operations/DeleteVolumeOperation.java | 0 .../mrc/operations/DumpDBOperation.java | 0 .../operations/GetLocalVolumesOperation.java | 0 .../operations/GetSuitableOSDsOperation.java | 0 .../mrc/operations/GetXAttrOperation.java | 0 .../mrc/operations/GetXAttrsOperation.java | 0 .../mrc/operations/GetXLocListOperation.java | 0 .../operations/InternalDebugOperation.java | 0 .../xtreemfs/mrc/operations/MRCOperation.java | 0 .../mrc/operations/MoveOperation.java | 0 .../mrc/operations/OpenOperation.java | 0 .../operations/ReadDirAndStatOperation.java | 0 .../mrc/operations/ReadDirOperation.java | 0 .../operations/RemoveACLEntriesOperation.java | 0 .../operations/RemoveReplicaOperation.java | 0 .../mrc/operations/RemoveXAttrOperation.java | 0 .../mrc/operations/RenewOperation.java | 0 .../mrc/operations/RestoreDBOperation.java | 0 .../mrc/operations/RestoreFileOperation.java | 0 .../operations/SetACLEntriesOperation.java | 0 .../mrc/operations/SetXAttrOperation.java | 0 .../mrc/operations/SetattrOperation.java | 0 .../mrc/operations/ShutdownOperation.java | 0 .../mrc/operations/StatFSOperation.java | 0 .../mrc/operations/StatOperation.java | 0 .../mrc/operations/StatusPageOperation.java | 0 .../mrc/operations/TruncateOperation.java | 0 .../operations/UpdateFileSizeOperation.java | 0 .../mrc/operations/UtimeOperation.java | 0 .../osdselection/AbstractSelectionPolicy.java | 0 .../mrc/osdselection/DNSSelectionPolicy.java | 0 .../mrc/osdselection/OSDSelectionPolicy.java | 0 .../mrc/osdselection/OSDStatusManager.java | 0 .../ProximitySelectionPolicy.java | 0 .../osdselection/RandomSelectionPolicy.java | 0 .../replication/ReplicaSelectionPolicy.java | 0 .../SimpleReplicaSelectionPolicy.java | 0 .../src/org/xtreemfs/mrc/stages/MRCStage.java | 0 .../mrc/stages/MRCStageCallbackInterface.java | 0 .../xtreemfs/mrc/stages/ProcessingStage.java | 0 .../org/xtreemfs/mrc/templates/status.html | 0 .../src/org/xtreemfs/mrc/utils/Converter.java | 0 .../org/xtreemfs/mrc/utils/DBAdminHelper.java | 0 .../src/org/xtreemfs/mrc/utils/MRCHelper.java | 0 .../src/org/xtreemfs/mrc/utils/Path.java | 0 .../org/xtreemfs/mrc/utils/PathResolver.java | 0 .../mrc/volumes/BabuDBVolumeManager.java | 0 .../mrc/volumes/VolumeChangeListener.java | 0 .../xtreemfs/mrc/volumes/VolumeManager.java | 0 .../metadata/BufferBackedVolumeInfo.java | 0 .../mrc/volumes/metadata/VolumeInfo.java | 0 .../src/org/xtreemfs/osd/ErrorCodes.java | 0 .../src/org/xtreemfs/osd/LocationsCache.java | 0 .../servers}/src/org/xtreemfs/osd/OSD.java | 0 .../src/org/xtreemfs/osd/OSDConfig.java | 0 .../src/org/xtreemfs/osd/OSDRequest.java | 0 .../xtreemfs/osd/OSDRequestDispatcher.java | 0 .../src/org/xtreemfs/osd/OpenFileTable.java | 0 .../src/org/xtreemfs/osd/StatusPage.java | 0 .../org/xtreemfs/osd/client/OSDClient.java | 0 .../osd/operations/CheckObjectOperation.java | 0 .../CleanupGetResultsOperation.java | 0 .../operations/CleanupGetStatusOperation.java | 0 .../operations/CleanupIsRunningOperation.java | 0 .../osd/operations/CleanupStartOperation.java | 0 .../osd/operations/CleanupStopOperation.java | 0 .../osd/operations/DeleteOperation.java | 0 .../osd/operations/EventCloseFile.java | 0 .../osd/operations/EventWriteObject.java | 0 .../InternalGetFileSizeOperation.java | 0 .../operations/InternalGetGmaxOperation.java | 0 .../operations/InternalTruncateOperation.java | 0 .../osd/operations/KeepFileOpenOperation.java | 0 .../osd/operations/LocalReadOperation.java | 0 .../xtreemfs/osd/operations/OSDOperation.java | 0 .../osd/operations/ReadOperation.java | 0 .../osd/operations/RequestTimeHelper.java | 0 .../osd/operations/ShutdownOperation.java | 0 .../osd/operations/TruncateOperation.java | 0 .../osd/operations/WriteOperation.java | 0 .../osd/replication/ObjectDissemination.java | 0 .../osd/replication/RandomStrategy.java | 0 .../osd/replication/ServiceAvailability.java | 0 .../osd/replication/SimpleStrategy.java | 0 .../osd/replication/TransferStrategy.java | 0 .../xtreemfs/osd/stages/DeletionStage.java | 0 .../org/xtreemfs/osd/stages/PreprocStage.java | 0 .../xtreemfs/osd/stages/ReplicationStage.java | 0 .../src/org/xtreemfs/osd/stages/Stage.java | 0 .../org/xtreemfs/osd/stages/StorageStage.java | 0 .../org/xtreemfs/osd/stages/VivaldiStage.java | 0 .../xtreemfs/osd/storage/CleanupThread.java | 0 .../org/xtreemfs/osd/storage/CowPolicy.java | 0 .../org/xtreemfs/osd/storage/FileInfo.java | 0 .../osd/storage/HashStorageLayout.java | 0 .../xtreemfs/osd/storage/MetadataCache.java | 0 .../osd/storage/ObjectInformation.java | 0 .../xtreemfs/osd/storage/StorageLayout.java | 0 .../xtreemfs/osd/storage/StorageThread.java | 0 .../xtreemfs/osd/striping/GMAXMessage.java | 0 .../osd/striping/UDPCommunicator.java | 0 .../org/xtreemfs/osd/striping/UDPMessage.java | 0 .../osd/striping/UDPReceiverInterface.java | 0 .../org/xtreemfs/osd/templates/status.html | 0 .../org/xtreemfs/sandbox/DirectIOReader.java | 0 .../xtreemfs/sandbox/DummyONCRPCServer.java | 0 .../org/xtreemfs/sandbox/ThroughputTest.java | 0 .../sandbox/ThroughputTest.properties | 0 .../sandbox/compile-DirectIOReader.txt | 0 .../src/org/xtreemfs/sandbox/mrc_ls.java | 0 .../src/org/xtreemfs/sandbox/mrc_rm.java | 0 .../src/org/xtreemfs/sandbox/mrc_stat.java | 0 .../org_xtreemfs_sandbox_DirectIOReader.c | 0 .../org_xtreemfs_sandbox_DirectIOReader.h | 0 .../src/org/xtreemfs/sandbox/sliceTest.java | 0 .../xtreemfs/sandbox/tests/CreateConfig.java | 0 .../sandbox/tests/MRCPerformance.java | 0 .../xtreemfs/sandbox/tests/MRCStressTest.java | 0 .../xtreemfs/sandbox/tests/OSDTestClient.java | 0 .../sandbox/tests/ReplicationStressTest.java | 0 .../sandbox/tests/TortureXtreemFS.java | 0 .../src/org/xtreemfs/utils/CLIParser.java | 0 .../org/xtreemfs/utils/DefaultDirConfig.java | 0 .../org/xtreemfs/utils/ReplicaManagement.java | 0 .../src/org/xtreemfs/utils/utils.java | 0 .../org/xtreemfs/utils/xtfs_cleanup_osd.java | 0 .../org/xtreemfs/utils/xtfs_mrcdbtool.java | 0 .../ExternalIntegrationTest.java | 0 .../test/org/xtreemfs/test/AllTests.java | 0 .../test/org/xtreemfs/test/SetupUtils.java | 0 .../org/xtreemfs/test/TestEnvironment.java | 0 .../xtreemfs/test/common/CapabilityTest.java | 0 .../xtreemfs/test/common/RingBufferTest.java | 0 .../common/buffer/ReusableBufferTest.java | 0 .../common/checksums/ChecksumFactoryTest.java | 0 .../StringChecksumAlgorithmTest.java | 0 .../common/striping/LocationsCacheTest.java | 0 .../test/common/striping/LocationsTest.java | 0 .../test/common/striping/RAID0Test.java | 0 .../test/common/util/OutputUtilsTest.java | 0 .../test/common/uuid/UUIDResolverTest.java | 0 .../oncrpc/server/SimpleRPCClientTest.java | 0 .../oncrpc/server/SimpleRPCServerTest.java | 0 .../ssl/SSLRPCClientServerTest.java | 0 .../org/xtreemfs/test/io/ByteMapperTest.java | 0 .../test/io/RandomAccessFileTest.java | 0 .../test/mrc/BabuDBStorageManagerTest.java | 0 .../test/mrc/BufferBackedMetadataTest.java | 0 .../test/mrc/DNSSelectionPolicyTest.java | 0 .../test/org/xtreemfs/test/mrc/MRCTest.java | 0 .../test/mrc/SelectionPolicyTest.java | 0 .../org/xtreemfs/test/new_dir/DIRTest.java | 0 .../org/xtreemfs/test/osd/CleanupTest.java | 0 .../xtreemfs/test/osd/ClientLeaseTest.java | 0 .../org/xtreemfs/test/osd/CowPolicyTest.java | 0 .../test/osd/OSDDataIntegrityTest.java | 0 .../org/xtreemfs/test/osd/OSDRangeReads.java | 0 .../xtreemfs/test/osd/OSDTruncateTest.java | 0 .../xtreemfs/test/osd/StorageLayoutTest.java | 0 .../xtreemfs/test/osd/StorageStageTest.java | 0 .../org/xtreemfs/test/osd/StripingTest.java | 0 .../test/osd/replication/ReplicationTest.java | 0 .../replication/ServiceAvailabilityTest.java | 0 .../replication/TransferStrategiesTest.java | 0 .../xtreemfs/test/scrubber/ScrubberTest.java | 0 .../servers}/xtreemos/bcprov-jdk16-139.jar | Bin .../servers}/xtreemos/cdaclient.jar | Bin .../org/xtreemos/XtreemOSAuthProvider.java | 0 tests/autotest_py/.project | 17 - tests/autotest_py/.pydevproject | 7 - tests/autotest_py/autotest.py | 342 ------------------ 722 files changed, 366 deletions(-) rename {client => src/client}/.cproject (100%) rename {client => src/client}/.project (100%) rename {client => src/client}/SConstruct (100%) rename {client => src/client}/TODO.txt (100%) rename {client => src/client}/generate_src_and_proj.bat (100%) rename {client => src/client}/include/org/xtreemfs/client.h (100%) rename {client => src/client}/include/org/xtreemfs/client/dir_proxy.h (100%) rename {client => src/client}/include/org/xtreemfs/client/file.h (100%) rename {client => src/client}/include/org/xtreemfs/client/mrc_proxy.h (100%) rename {client => src/client}/include/org/xtreemfs/client/osd_proxy.h (100%) rename {client => src/client}/include/org/xtreemfs/client/path.h (100%) rename {client => src/client}/include/org/xtreemfs/client/policy.h (100%) rename {client => src/client}/include/org/xtreemfs/client/proxy_exception_response.h (100%) rename {client => src/client}/include/org/xtreemfs/client/volume.h (100%) rename {client => src/client}/include/org/xtreemfs/interfaces/constants.h (100%) rename {client => src/client}/include/org/xtreemfs/interfaces/dir_interface.h (100%) rename {client => src/client}/include/org/xtreemfs/interfaces/exceptions.h (100%) rename {client => src/client}/include/org/xtreemfs/interfaces/mrc_interface.h (100%) rename {client => src/client}/include/org/xtreemfs/interfaces/mrc_osd_types.h (100%) rename {client => src/client}/include/org/xtreemfs/interfaces/osd_interface.h (100%) rename {client => src/client}/include/org/xtreemfs/interfaces/types.h (100%) rename {client => src/client}/proj/google-breakpad/google-breakpad.SConscript (100%) rename {client => src/client}/proj/google-breakpad/google-breakpad.vcproj (100%) rename {client => src/client}/proj/google-breakpad/google-breakpad_custom.SConscript (100%) rename {client => src/client}/proj/google-breakpad/google-breakpad_linux.SConscript (100%) rename {client => src/client}/proj/org/xtreemfs/client/org_xtreemfs_client_test_main.cpp (100%) rename {client => src/client}/proj/org/xtreemfs/client/xos_ams_flog.SConscript (100%) rename {client => src/client}/proj/org/xtreemfs/client/xos_ams_flog.vcproj (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtfs_fuzz.SConscript (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtfs_fuzz.vcproj (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtfs_lsvol.SConscript (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtfs_lsvol.vcproj (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtfs_mkvol.SConscript (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtfs_mkvol.vcproj (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtfs_mount.SConscript (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtfs_mount.vcproj (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtfs_rmvol.SConscript (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtfs_rmvol.vcproj (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtfs_send.SConscript (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtfs_send.vcproj (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtfs_stat.SConscript (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtfs_stat.vcproj (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtreemfs-client-lib.SConscript (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtreemfs-client-lib.vcproj (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtreemfs-client-lib_test.SConscript (100%) rename {client => src/client}/proj/org/xtreemfs/client/xtreemfs-client-lib_test.vcproj (100%) rename {client => src/client}/scons.py (100%) rename {client => src/client}/share/google-breakpad/COPYING (100%) rename {client => src/client}/share/google-breakpad/src/client/linux/handler/exception_handler.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/linux/handler/exception_handler.h (100%) rename {client => src/client}/share/google-breakpad/src/client/linux/handler/linux_thread.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/linux/handler/linux_thread.h (100%) rename {client => src/client}/share/google-breakpad/src/client/linux/handler/minidump_generator.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/linux/handler/minidump_generator.h (100%) rename {client => src/client}/share/google-breakpad/src/client/mac/crash_generation/Inspector.h (100%) rename {client => src/client}/share/google-breakpad/src/client/mac/crash_generation/Inspector.mm (100%) rename {client => src/client}/share/google-breakpad/src/client/mac/crash_generation/InspectorMain.mm (100%) rename {client => src/client}/share/google-breakpad/src/client/mac/handler/breakpad_exc_server.c (100%) rename {client => src/client}/share/google-breakpad/src/client/mac/handler/breakpad_exc_server.h (100%) rename {client => src/client}/share/google-breakpad/src/client/mac/handler/breakpad_nlist_64.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/mac/handler/breakpad_nlist_64.h (100%) rename {client => src/client}/share/google-breakpad/src/client/mac/handler/dynamic_images.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/mac/handler/dynamic_images.h (100%) rename {client => src/client}/share/google-breakpad/src/client/mac/handler/exception_handler.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/mac/handler/exception_handler.h (100%) rename {client => src/client}/share/google-breakpad/src/client/mac/handler/minidump_generator.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/mac/handler/minidump_generator.h (100%) rename {client => src/client}/share/google-breakpad/src/client/mac/handler/protected_memory_allocator.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/mac/handler/protected_memory_allocator.h (100%) rename {client => src/client}/share/google-breakpad/src/client/minidump_file_writer-inl.h (100%) rename {client => src/client}/share/google-breakpad/src/client/minidump_file_writer.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/minidump_file_writer.h (100%) rename {client => src/client}/share/google-breakpad/src/client/solaris/handler/exception_handler.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/solaris/handler/exception_handler.h (100%) rename {client => src/client}/share/google-breakpad/src/client/solaris/handler/minidump_generator.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/solaris/handler/minidump_generator.h (100%) rename {client => src/client}/share/google-breakpad/src/client/solaris/handler/solaris_lwp.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/solaris/handler/solaris_lwp.h (100%) rename {client => src/client}/share/google-breakpad/src/client/windows/common/auto_critical_section.h (100%) rename {client => src/client}/share/google-breakpad/src/client/windows/common/ipc_protocol.h (100%) rename {client => src/client}/share/google-breakpad/src/client/windows/crash_generation/ReadMe.txt (100%) rename {client => src/client}/share/google-breakpad/src/client/windows/crash_generation/client_info.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/windows/crash_generation/client_info.h (100%) rename {client => src/client}/share/google-breakpad/src/client/windows/crash_generation/crash_generation.vcproj (100%) rename {client => src/client}/share/google-breakpad/src/client/windows/crash_generation/crash_generation_client.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/windows/crash_generation/crash_generation_client.h (100%) rename {client => src/client}/share/google-breakpad/src/client/windows/crash_generation/crash_generation_server.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/windows/crash_generation/crash_generation_server.h (100%) rename {client => src/client}/share/google-breakpad/src/client/windows/crash_generation/minidump_generator.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/windows/crash_generation/minidump_generator.h (100%) rename {client => src/client}/share/google-breakpad/src/client/windows/handler/exception_handler.cc (100%) rename {client => src/client}/share/google-breakpad/src/client/windows/handler/exception_handler.h (100%) rename {client => src/client}/share/google-breakpad/src/client/windows/handler/exception_handler.vcproj (100%) rename {client => src/client}/share/google-breakpad/src/common/convert_UTF.c (100%) rename {client => src/client}/share/google-breakpad/src/common/convert_UTF.h (100%) rename {client => src/client}/share/google-breakpad/src/common/linux/dump_symbols.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/linux/dump_symbols.h (100%) rename {client => src/client}/share/google-breakpad/src/common/linux/file_id.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/linux/file_id.h (100%) rename {client => src/client}/share/google-breakpad/src/common/linux/guid_creator.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/linux/guid_creator.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/GTMDefines.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/GTMGarbageCollection.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/GTMLogger.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/GTMLogger.m (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/MachIPC.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/MachIPC.mm (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/SimpleStringDictionary.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/SimpleStringDictionary.mm (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/dump_syms.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/dump_syms.mm (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/dwarf/bytereader-inl.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/dwarf/bytereader.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/dwarf/bytereader.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/dwarf/dwarf2enums.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/dwarf/dwarf2reader.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/dwarf/dwarf2reader.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/dwarf/functioninfo.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/dwarf/functioninfo.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/dwarf/line_state_machine.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/dwarf/types.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/file_id.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/file_id.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/macho_id.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/macho_id.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/macho_utilities.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/macho_utilities.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/macho_walker.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/macho_walker.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/string_utilities.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/string_utilities.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/testing/GTMSenTestCase.h (100%) rename {client => src/client}/share/google-breakpad/src/common/mac/testing/GTMSenTestCase.m (100%) rename {client => src/client}/share/google-breakpad/src/common/md5.c (100%) rename {client => src/client}/share/google-breakpad/src/common/md5.h (100%) rename {client => src/client}/share/google-breakpad/src/common/solaris/dump_symbols.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/solaris/dump_symbols.h (100%) rename {client => src/client}/share/google-breakpad/src/common/solaris/file_id.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/solaris/file_id.h (100%) rename {client => src/client}/share/google-breakpad/src/common/solaris/guid_creator.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/solaris/guid_creator.h (100%) rename {client => src/client}/share/google-breakpad/src/common/solaris/message_output.h (100%) rename {client => src/client}/share/google-breakpad/src/common/string_conversion.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/string_conversion.h (100%) rename {client => src/client}/share/google-breakpad/src/common/windows/guid_string.cc (100%) rename {client => src/client}/share/google-breakpad/src/common/windows/guid_string.h (100%) rename {client => src/client}/share/google-breakpad/src/common/windows/string_utils-inl.h (100%) rename {client => src/client}/share/google-breakpad/src/common/windows/string_utils.cc (100%) rename {client => src/client}/share/google-breakpad/src/google_breakpad/common/breakpad_types.h (100%) rename {client => src/client}/share/google-breakpad/src/google_breakpad/common/minidump_cpu_amd64.h (100%) rename {client => src/client}/share/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc.h (100%) rename {client => src/client}/share/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc64.h (100%) rename {client => src/client}/share/google-breakpad/src/google_breakpad/common/minidump_cpu_sparc.h (100%) rename {client => src/client}/share/google-breakpad/src/google_breakpad/common/minidump_cpu_x86.h (100%) rename {client => src/client}/share/google-breakpad/src/google_breakpad/common/minidump_exception_linux.h (100%) rename {client => src/client}/share/google-breakpad/src/google_breakpad/common/minidump_exception_mac.h (100%) rename {client => src/client}/share/google-breakpad/src/google_breakpad/common/minidump_exception_solaris.h (100%) rename {client => src/client}/share/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h (100%) rename {client => src/client}/share/google-breakpad/src/google_breakpad/common/minidump_format.h (100%) rename {client => src/client}/share/google-breakpad/src/google_breakpad/common/minidump_size.h (100%) rename {client => src/client}/share/google-breakpad/src/processor/scoped_ptr.h (100%) rename {client => src/client}/src/org/xtreemfs/client/dir_proxy.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/file.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/file_test.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/main.h (100%) rename {client => src/client}/src/org/xtreemfs/client/mrc_proxy.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/osd_proxy.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/path.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/path_test.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/policy_container.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/policy_container.h (100%) rename {client => src/client}/src/org/xtreemfs/client/proxy_exception_response.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/volume.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/volume_test.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/xos_ams_flog.c (100%) rename {client => src/client}/src/org/xtreemfs/client/xtfs_fuzz.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/xtfs_lsvol.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/xtfs_mkvol.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/xtfs_mount.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/xtfs_rmvol.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/xtfs_send.cpp (100%) rename {client => src/client}/src/org/xtreemfs/client/xtfs_stat.cpp (100%) rename {client => src/client}/xtreemfs-client.sln (100%) rename {servers => src/servers}/.classpath (100%) rename {servers => src/servers}/.project (100%) rename {servers => src/servers}/.settings/org.eclipse.jdt.core.prefs (100%) rename {servers => src/servers}/.settings/org.eclipse.jdt.ui.prefs (100%) rename {servers => src/servers}/.settings/org.eclipse.wst.validation.prefs (100%) rename {servers => src/servers}/build.xml (100%) rename {servers => src/servers}/config/default_dir (100%) rename {servers => src/servers}/config/dirconfig.properties (100%) rename {servers => src/servers}/config/dirconfig.ssl_test (100%) rename {servers => src/servers}/config/dirconfig.test (100%) rename {servers => src/servers}/config/mrcconfig.properties (100%) rename {servers => src/servers}/config/mrcconfig.ssl_test (100%) rename {servers => src/servers}/config/mrcconfig.test (100%) rename {servers => src/servers}/config/osdconfig.properties (100%) rename {servers => src/servers}/config/osdconfig.ssl_test (100%) rename {servers => src/servers}/config/osdconfig.test (100%) rename {servers => src/servers}/config/osdconfig2.test (100%) rename {servers => src/servers}/init.d-scripts/xtreemfs-dir (100%) rename {servers => src/servers}/init.d-scripts/xtreemfs-mrc (100%) rename {servers => src/servers}/init.d-scripts/xtreemfs-osd (100%) rename {servers => src/servers}/lib/BabuDB-0.1.0-RC.jar (100%) rename {servers => src/servers}/lib/test/commons-codec-1.3.jar (100%) rename {servers => src/servers}/lib/test/commons-httpclient-3.0.1-contrib.jar (100%) rename {servers => src/servers}/lib/test/commons-httpclient-3.0.1.jar (100%) rename {servers => src/servers}/lib/test/commons-logging-1.1.jar (100%) rename {servers => src/servers}/lib/test/junit-4.3.1.jar (100%) rename {servers => src/servers}/nbproject/build-impl.xml (100%) rename {servers => src/servers}/nbproject/genfiles.properties (100%) rename {servers => src/servers}/nbproject/project.properties (100%) rename {servers => src/servers}/nbproject/project.xml (100%) rename {servers => src/servers}/src/org/xtreemfs/common/Capability.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/ClientLease.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/DualQueue.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/HeartbeatThread.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/LRUCache.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/PrioritizableMessage.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/RingBuffer.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/TimeSync.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/VersionManagement.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/auth/AuthenticationException.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/auth/AuthenticationProvider.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/auth/NullAuthProvider.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/auth/SimpleX509AuthProvider.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/auth/UserCredentials.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/buffer/ASCIIString.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/buffer/BufferConversionUtils.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/buffer/BufferPool.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/buffer/ReusableBuffer.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/checksums/ChecksumAlgorithm.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/checksums/ChecksumFactory.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/checksums/ChecksumProvider.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/checksums/StringChecksumAlgorithm.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/checksums/algorithms/Adler32.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/checksums/algorithms/CRC32.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/checksums/algorithms/JavaChecksumAlgorithm.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/checksums/algorithms/JavaHash.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/checksums/algorithms/JavaMessageDigestAlgorithm.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/checksums/algorithms/SDBM.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/checksums/provider/JavaChecksumProvider.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/clients/io/ByteMapper.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/clients/io/ByteMapperFactory.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/clients/io/ByteMapperRAID0.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/clients/io/ObjectStore.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/clients/io/RandomAccessFile.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/clients/simplescrubber/FileInfo.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/clients/simplescrubber/Scrubber.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/config/Config.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/config/ServiceConfig.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/logging/Logging.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/logging/Utils.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/trace/Tracer.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/util/FSUtils.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/util/NetUtils.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/util/ONCRPCServiceURL.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/util/OutputUtils.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/uuids/ServiceUUID.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/uuids/UUIDCacheEntry.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/uuids/UUIDResolver.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/uuids/UnknownUUIDException.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/xloc/InvalidXLocationsException.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/xloc/RAID0Impl.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/xloc/Replica.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/xloc/StripingPolicyImpl.java (100%) rename {servers => src/servers}/src/org/xtreemfs/common/xloc/XLocations.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/DIR.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/DIRConfig.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/DIRRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/DIRRequestDispatcher.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/StatusPage.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/client/DIRClient.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/client/uuidmappings.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/operations/DIROperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/operations/DeleteAddressMappingOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/operations/DeregisterServiceOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/operations/GetAddressMappingOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/operations/GetGlobalTimeOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/operations/GetServiceByNameOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/operations/GetServiceByUuidOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/operations/GetServicesByTypeOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/operations/RegisterServiceOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/operations/ServiceOfflineOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/operations/SetAddressMappingOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/dir/templates/status.html (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/CrashReporter.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/ErrNo.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/LifeCycleListener.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/LifeCycleThread.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/SSLOptions.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/json/JSONCharBufferString.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/json/JSONException.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/json/JSONInput.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/json/JSONParser.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/json/JSONString.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/channels/ChannelIO.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/channels/SSLChannelIO.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/client/ONCRPCClient.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/client/ONCRPCRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/client/RPCNIOSocketClient.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/client/RPCResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/client/RPCResponseAvailableListener.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/client/RPCResponseDecoder.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/client/RPCResponseListener.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/client/ServerConnection.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/server/ClientConnection.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/server/ONCRPCRecord.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/server/ONCRPCRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/server/RPCNIOSocketServer.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/server/RPCServerRequestListener.java (100%) rename {servers => src/servers}/src/org/xtreemfs/foundation/oncrpc/utils/ONCRPCBufferWriter.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/AccessControlPolicyType.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/AddressMapping.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/AddressMappingSet.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/Constants.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/DIRInterface.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_getRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_getResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_removeRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_removeResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_setRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_setResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_checkpointRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_checkpointResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_getRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_getResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_s_getRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_s_getResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_deregisterRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_deregisterResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_nameRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_nameResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_typeRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_typeResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_uuidRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_uuidResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_offlineRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_offlineResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_registerRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_registerResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_shutdownRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_shutdownResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DirectoryEntry.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/DirectoryEntrySet.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/Exceptions/ConcurrentModificationException.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/Exceptions/Exceptions.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/Exceptions/InvalidArgumentException.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/Exceptions/ProtocolException.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/Exceptions/RedirectException.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/Exceptions/errnoException.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/FileCredentials.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/FileCredentialsSet.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/InternalGmax.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/InternalReadLocalResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/MRCException.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/MRCInterface.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/accessRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/accessResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/chmodRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/chmodResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/chownRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/chownResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/createRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/createResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/ftruncateRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/ftruncateResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/getattrRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/getattrResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/getxattrRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/getxattrResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/linkRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/linkResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/listxattrRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/listxattrResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/mkdirRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/mkdirResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/openRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/openResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/readdirRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/readdirResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/removexattrRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/removexattrResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/renameRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/renameResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/rmdirRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/rmdirResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/setattrRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/setattrResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/setxattrRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/setxattrResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/statvfsRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/statvfsResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/symlinkRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/symlinkResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/unlinkRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/unlinkResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/utimensRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/utimensResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_check_file_existsRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_check_file_existsResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_checkpointRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_checkpointResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_dump_databaseRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_dump_databaseResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_get_suitable_osdsRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_get_suitable_osdsResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_internal_debugRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_internal_debugResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_listdirRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_listdirResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_lsvolRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_lsvolResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_mkvolRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_mkvolResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_renew_capabilityRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_renew_capabilityResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_addRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_addResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_listRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_listResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_removeRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_removeResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_databaseRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_databaseResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_fileRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_fileResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_rmvolRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_rmvolResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_shutdownRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_shutdownResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_update_file_sizeRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_update_file_sizeResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/NewFileSize.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/NewFileSizeSet.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/OSDException.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/OSDInterface.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/keep_file_openRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/keep_file_openResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/readRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/readResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/truncateRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/truncateResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/unlinkRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/unlinkResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/writeRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/writeResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_check_objectRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_check_objectResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_get_resultsRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_get_resultsResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_is_runningRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_is_runningResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_startRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_startResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_statusRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_statusResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_stopRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_stopResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_file_sizeRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_file_sizeResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_gmaxRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_gmaxResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_read_localRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_read_localResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_truncateRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_truncateResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_shutdownRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_shutdownResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDSelectionPolicyType.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDWriteResponse.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDtoMRCData.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/OSDtoMRCDataSet.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/ObjectData.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/Replica.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/ReplicaSelectionPolicyType.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/ReplicaSet.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/Service.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/ServiceDataMap.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/ServiceSet.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/ServiceType.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/Stat.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/StatVFS.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/StringSet.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/StripingPolicy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/StripingPolicyType.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/UserCredentials.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/VivaldiCoordinates.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/Volume.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/VolumeSet.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/XCap.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/XLocSet.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/utils/ONCRPCException.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/utils/ONCRPCRecordFragmentHeader.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/utils/ONCRPCRequestHeader.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/utils/ONCRPCResponseHeader.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/utils/Request.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/utils/Response.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/utils/Serializable.java (100%) rename {servers => src/servers}/src/org/xtreemfs/interfaces/utils/XDRUtils.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/ErrorRecord.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/MRC.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/MRCConfig.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/MRCException.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/MRCRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/MRCRequestDispatcher.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/PolicyContainer.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/RequestDetails.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/UserException.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/ac/FileAccessManager.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/ac/FileAccessPolicy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/ac/POSIXFileAccessPolicy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/ac/VolumeACLFileAccessPolicy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/ac/YesToAnyoneFileAccessPolicy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/client/MRCClient.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/database/AtomicDBUpdate.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/database/DBAccessResultAdapter.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/database/DBAccessResultListener.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/database/DatabaseException.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/database/StorageManager.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/database/babudb/AtomicBabuDBUpdate.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/database/babudb/BabuDBRequestListenerWrapper.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageHelper.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageManager.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/metadata/ACLEntry.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/metadata/BufferBackedACLEntry.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/metadata/BufferBackedFileMetadata.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/metadata/BufferBackedIndexMetadata.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/metadata/BufferBackedMetadata.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/metadata/BufferBackedRCMetadata.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/metadata/BufferBackedStripingPolicy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/metadata/BufferBackedXAttr.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/metadata/BufferBackedXLoc.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/metadata/BufferBackedXLocList.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/metadata/FileMetadata.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/metadata/StripingPolicy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/metadata/XAttr.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/metadata/XLoc.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/metadata/XLocList.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/AddReplicaOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/ChangeAccessModeOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/ChangeOwnerOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/CheckAccessOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/CheckFileListOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/CheckpointOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/CreateDirOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/CreateFileOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/CreateLinkOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/CreateSymLinkOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/CreateVolumeOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/DeleteOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/DeleteVolumeOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/DumpDBOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/GetLocalVolumesOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/GetSuitableOSDsOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/GetXAttrOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/GetXAttrsOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/GetXLocListOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/InternalDebugOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/MRCOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/MoveOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/OpenOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/ReadDirAndStatOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/ReadDirOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/RemoveACLEntriesOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/RemoveReplicaOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/RemoveXAttrOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/RenewOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/RestoreDBOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/RestoreFileOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/SetACLEntriesOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/SetXAttrOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/SetattrOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/ShutdownOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/StatFSOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/StatOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/StatusPageOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/TruncateOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/UpdateFileSizeOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/operations/UtimeOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/osdselection/AbstractSelectionPolicy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/osdselection/DNSSelectionPolicy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/osdselection/OSDSelectionPolicy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/osdselection/OSDStatusManager.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/osdselection/ProximitySelectionPolicy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/osdselection/RandomSelectionPolicy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/replication/ReplicaSelectionPolicy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/replication/SimpleReplicaSelectionPolicy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/stages/MRCStage.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/stages/MRCStageCallbackInterface.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/stages/ProcessingStage.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/templates/status.html (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/utils/Converter.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/utils/DBAdminHelper.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/utils/MRCHelper.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/utils/Path.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/utils/PathResolver.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/volumes/BabuDBVolumeManager.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/volumes/VolumeChangeListener.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/volumes/VolumeManager.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/volumes/metadata/BufferBackedVolumeInfo.java (100%) rename {servers => src/servers}/src/org/xtreemfs/mrc/volumes/metadata/VolumeInfo.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/ErrorCodes.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/LocationsCache.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/OSD.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/OSDConfig.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/OSDRequest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/OSDRequestDispatcher.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/OpenFileTable.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/StatusPage.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/client/OSDClient.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/CheckObjectOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/CleanupGetResultsOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/CleanupGetStatusOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/CleanupIsRunningOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/CleanupStartOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/CleanupStopOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/DeleteOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/EventCloseFile.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/EventWriteObject.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/InternalGetFileSizeOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/InternalGetGmaxOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/InternalTruncateOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/KeepFileOpenOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/LocalReadOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/OSDOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/ReadOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/RequestTimeHelper.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/ShutdownOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/TruncateOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/operations/WriteOperation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/replication/ObjectDissemination.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/replication/RandomStrategy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/replication/ServiceAvailability.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/replication/SimpleStrategy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/replication/TransferStrategy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/stages/DeletionStage.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/stages/PreprocStage.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/stages/ReplicationStage.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/stages/Stage.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/stages/StorageStage.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/stages/VivaldiStage.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/storage/CleanupThread.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/storage/CowPolicy.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/storage/FileInfo.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/storage/HashStorageLayout.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/storage/MetadataCache.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/storage/ObjectInformation.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/storage/StorageLayout.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/storage/StorageThread.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/striping/GMAXMessage.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/striping/UDPCommunicator.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/striping/UDPMessage.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/striping/UDPReceiverInterface.java (100%) rename {servers => src/servers}/src/org/xtreemfs/osd/templates/status.html (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/DirectIOReader.java (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/DummyONCRPCServer.java (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/ThroughputTest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/ThroughputTest.properties (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/compile-DirectIOReader.txt (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/mrc_ls.java (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/mrc_rm.java (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/mrc_stat.java (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/org_xtreemfs_sandbox_DirectIOReader.c (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/org_xtreemfs_sandbox_DirectIOReader.h (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/sliceTest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/tests/CreateConfig.java (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/tests/MRCPerformance.java (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/tests/MRCStressTest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/tests/OSDTestClient.java (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/tests/ReplicationStressTest.java (100%) rename {servers => src/servers}/src/org/xtreemfs/sandbox/tests/TortureXtreemFS.java (100%) rename {servers => src/servers}/src/org/xtreemfs/utils/CLIParser.java (100%) rename {servers => src/servers}/src/org/xtreemfs/utils/DefaultDirConfig.java (100%) rename {servers => src/servers}/src/org/xtreemfs/utils/ReplicaManagement.java (100%) rename {servers => src/servers}/src/org/xtreemfs/utils/utils.java (100%) rename {servers => src/servers}/src/org/xtreemfs/utils/xtfs_cleanup_osd.java (100%) rename {servers => src/servers}/src/org/xtreemfs/utils/xtfs_mrcdbtool.java (100%) rename {servers => src/servers}/test/org/xtreemfs/integrationtest/ExternalIntegrationTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/AllTests.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/SetupUtils.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/TestEnvironment.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/common/CapabilityTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/common/RingBufferTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/common/buffer/ReusableBufferTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/common/checksums/ChecksumFactoryTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/common/checksums/StringChecksumAlgorithmTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/common/striping/LocationsCacheTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/common/striping/LocationsTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/common/striping/RAID0Test.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/common/util/OutputUtilsTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/common/uuid/UUIDResolverTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/foundation/oncrpc/server/SimpleRPCClientTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/foundation/oncrpc/server/SimpleRPCServerTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/foundation/ssl/SSLRPCClientServerTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/io/ByteMapperTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/io/RandomAccessFileTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/mrc/BabuDBStorageManagerTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/mrc/BufferBackedMetadataTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/mrc/DNSSelectionPolicyTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/mrc/MRCTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/mrc/SelectionPolicyTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/new_dir/DIRTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/osd/CleanupTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/osd/ClientLeaseTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/osd/CowPolicyTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/osd/OSDDataIntegrityTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/osd/OSDRangeReads.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/osd/OSDTruncateTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/osd/StorageLayoutTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/osd/StorageStageTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/osd/StripingTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/osd/replication/ReplicationTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/osd/replication/ServiceAvailabilityTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/osd/replication/TransferStrategiesTest.java (100%) rename {servers => src/servers}/test/org/xtreemfs/test/scrubber/ScrubberTest.java (100%) rename {servers => src/servers}/xtreemos/bcprov-jdk16-139.jar (100%) rename {servers => src/servers}/xtreemos/cdaclient.jar (100%) rename {servers => src/servers}/xtreemos/org/xtreemos/XtreemOSAuthProvider.java (100%) delete mode 100644 tests/autotest_py/.project delete mode 100644 tests/autotest_py/.pydevproject delete mode 100644 tests/autotest_py/autotest.py diff --git a/client/.cproject b/src/client/.cproject similarity index 100% rename from client/.cproject rename to src/client/.cproject diff --git a/client/.project b/src/client/.project similarity index 100% rename from client/.project rename to src/client/.project diff --git a/client/SConstruct b/src/client/SConstruct similarity index 100% rename from client/SConstruct rename to src/client/SConstruct diff --git a/client/TODO.txt b/src/client/TODO.txt similarity index 100% rename from client/TODO.txt rename to src/client/TODO.txt diff --git a/client/generate_src_and_proj.bat b/src/client/generate_src_and_proj.bat similarity index 100% rename from client/generate_src_and_proj.bat rename to src/client/generate_src_and_proj.bat diff --git a/client/include/org/xtreemfs/client.h b/src/client/include/org/xtreemfs/client.h similarity index 100% rename from client/include/org/xtreemfs/client.h rename to src/client/include/org/xtreemfs/client.h diff --git a/client/include/org/xtreemfs/client/dir_proxy.h b/src/client/include/org/xtreemfs/client/dir_proxy.h similarity index 100% rename from client/include/org/xtreemfs/client/dir_proxy.h rename to src/client/include/org/xtreemfs/client/dir_proxy.h diff --git a/client/include/org/xtreemfs/client/file.h b/src/client/include/org/xtreemfs/client/file.h similarity index 100% rename from client/include/org/xtreemfs/client/file.h rename to src/client/include/org/xtreemfs/client/file.h diff --git a/client/include/org/xtreemfs/client/mrc_proxy.h b/src/client/include/org/xtreemfs/client/mrc_proxy.h similarity index 100% rename from client/include/org/xtreemfs/client/mrc_proxy.h rename to src/client/include/org/xtreemfs/client/mrc_proxy.h diff --git a/client/include/org/xtreemfs/client/osd_proxy.h b/src/client/include/org/xtreemfs/client/osd_proxy.h similarity index 100% rename from client/include/org/xtreemfs/client/osd_proxy.h rename to src/client/include/org/xtreemfs/client/osd_proxy.h diff --git a/client/include/org/xtreemfs/client/path.h b/src/client/include/org/xtreemfs/client/path.h similarity index 100% rename from client/include/org/xtreemfs/client/path.h rename to src/client/include/org/xtreemfs/client/path.h diff --git a/client/include/org/xtreemfs/client/policy.h b/src/client/include/org/xtreemfs/client/policy.h similarity index 100% rename from client/include/org/xtreemfs/client/policy.h rename to src/client/include/org/xtreemfs/client/policy.h diff --git a/client/include/org/xtreemfs/client/proxy_exception_response.h b/src/client/include/org/xtreemfs/client/proxy_exception_response.h similarity index 100% rename from client/include/org/xtreemfs/client/proxy_exception_response.h rename to src/client/include/org/xtreemfs/client/proxy_exception_response.h diff --git a/client/include/org/xtreemfs/client/volume.h b/src/client/include/org/xtreemfs/client/volume.h similarity index 100% rename from client/include/org/xtreemfs/client/volume.h rename to src/client/include/org/xtreemfs/client/volume.h diff --git a/client/include/org/xtreemfs/interfaces/constants.h b/src/client/include/org/xtreemfs/interfaces/constants.h similarity index 100% rename from client/include/org/xtreemfs/interfaces/constants.h rename to src/client/include/org/xtreemfs/interfaces/constants.h diff --git a/client/include/org/xtreemfs/interfaces/dir_interface.h b/src/client/include/org/xtreemfs/interfaces/dir_interface.h similarity index 100% rename from client/include/org/xtreemfs/interfaces/dir_interface.h rename to src/client/include/org/xtreemfs/interfaces/dir_interface.h diff --git a/client/include/org/xtreemfs/interfaces/exceptions.h b/src/client/include/org/xtreemfs/interfaces/exceptions.h similarity index 100% rename from client/include/org/xtreemfs/interfaces/exceptions.h rename to src/client/include/org/xtreemfs/interfaces/exceptions.h diff --git a/client/include/org/xtreemfs/interfaces/mrc_interface.h b/src/client/include/org/xtreemfs/interfaces/mrc_interface.h similarity index 100% rename from client/include/org/xtreemfs/interfaces/mrc_interface.h rename to src/client/include/org/xtreemfs/interfaces/mrc_interface.h diff --git a/client/include/org/xtreemfs/interfaces/mrc_osd_types.h b/src/client/include/org/xtreemfs/interfaces/mrc_osd_types.h similarity index 100% rename from client/include/org/xtreemfs/interfaces/mrc_osd_types.h rename to src/client/include/org/xtreemfs/interfaces/mrc_osd_types.h diff --git a/client/include/org/xtreemfs/interfaces/osd_interface.h b/src/client/include/org/xtreemfs/interfaces/osd_interface.h similarity index 100% rename from client/include/org/xtreemfs/interfaces/osd_interface.h rename to src/client/include/org/xtreemfs/interfaces/osd_interface.h diff --git a/client/include/org/xtreemfs/interfaces/types.h b/src/client/include/org/xtreemfs/interfaces/types.h similarity index 100% rename from client/include/org/xtreemfs/interfaces/types.h rename to src/client/include/org/xtreemfs/interfaces/types.h diff --git a/client/proj/google-breakpad/google-breakpad.SConscript b/src/client/proj/google-breakpad/google-breakpad.SConscript similarity index 100% rename from client/proj/google-breakpad/google-breakpad.SConscript rename to src/client/proj/google-breakpad/google-breakpad.SConscript diff --git a/client/proj/google-breakpad/google-breakpad.vcproj b/src/client/proj/google-breakpad/google-breakpad.vcproj similarity index 100% rename from client/proj/google-breakpad/google-breakpad.vcproj rename to src/client/proj/google-breakpad/google-breakpad.vcproj diff --git a/client/proj/google-breakpad/google-breakpad_custom.SConscript b/src/client/proj/google-breakpad/google-breakpad_custom.SConscript similarity index 100% rename from client/proj/google-breakpad/google-breakpad_custom.SConscript rename to src/client/proj/google-breakpad/google-breakpad_custom.SConscript diff --git a/client/proj/google-breakpad/google-breakpad_linux.SConscript b/src/client/proj/google-breakpad/google-breakpad_linux.SConscript similarity index 100% rename from client/proj/google-breakpad/google-breakpad_linux.SConscript rename to src/client/proj/google-breakpad/google-breakpad_linux.SConscript diff --git a/client/proj/org/xtreemfs/client/org_xtreemfs_client_test_main.cpp b/src/client/proj/org/xtreemfs/client/org_xtreemfs_client_test_main.cpp similarity index 100% rename from client/proj/org/xtreemfs/client/org_xtreemfs_client_test_main.cpp rename to src/client/proj/org/xtreemfs/client/org_xtreemfs_client_test_main.cpp diff --git a/client/proj/org/xtreemfs/client/xos_ams_flog.SConscript b/src/client/proj/org/xtreemfs/client/xos_ams_flog.SConscript similarity index 100% rename from client/proj/org/xtreemfs/client/xos_ams_flog.SConscript rename to src/client/proj/org/xtreemfs/client/xos_ams_flog.SConscript diff --git a/client/proj/org/xtreemfs/client/xos_ams_flog.vcproj b/src/client/proj/org/xtreemfs/client/xos_ams_flog.vcproj similarity index 100% rename from client/proj/org/xtreemfs/client/xos_ams_flog.vcproj rename to src/client/proj/org/xtreemfs/client/xos_ams_flog.vcproj diff --git a/client/proj/org/xtreemfs/client/xtfs_fuzz.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_fuzz.SConscript similarity index 100% rename from client/proj/org/xtreemfs/client/xtfs_fuzz.SConscript rename to src/client/proj/org/xtreemfs/client/xtfs_fuzz.SConscript diff --git a/client/proj/org/xtreemfs/client/xtfs_fuzz.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_fuzz.vcproj similarity index 100% rename from client/proj/org/xtreemfs/client/xtfs_fuzz.vcproj rename to src/client/proj/org/xtreemfs/client/xtfs_fuzz.vcproj diff --git a/client/proj/org/xtreemfs/client/xtfs_lsvol.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_lsvol.SConscript similarity index 100% rename from client/proj/org/xtreemfs/client/xtfs_lsvol.SConscript rename to src/client/proj/org/xtreemfs/client/xtfs_lsvol.SConscript diff --git a/client/proj/org/xtreemfs/client/xtfs_lsvol.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_lsvol.vcproj similarity index 100% rename from client/proj/org/xtreemfs/client/xtfs_lsvol.vcproj rename to src/client/proj/org/xtreemfs/client/xtfs_lsvol.vcproj diff --git a/client/proj/org/xtreemfs/client/xtfs_mkvol.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_mkvol.SConscript similarity index 100% rename from client/proj/org/xtreemfs/client/xtfs_mkvol.SConscript rename to src/client/proj/org/xtreemfs/client/xtfs_mkvol.SConscript diff --git a/client/proj/org/xtreemfs/client/xtfs_mkvol.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_mkvol.vcproj similarity index 100% rename from client/proj/org/xtreemfs/client/xtfs_mkvol.vcproj rename to src/client/proj/org/xtreemfs/client/xtfs_mkvol.vcproj diff --git a/client/proj/org/xtreemfs/client/xtfs_mount.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_mount.SConscript similarity index 100% rename from client/proj/org/xtreemfs/client/xtfs_mount.SConscript rename to src/client/proj/org/xtreemfs/client/xtfs_mount.SConscript diff --git a/client/proj/org/xtreemfs/client/xtfs_mount.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_mount.vcproj similarity index 100% rename from client/proj/org/xtreemfs/client/xtfs_mount.vcproj rename to src/client/proj/org/xtreemfs/client/xtfs_mount.vcproj diff --git a/client/proj/org/xtreemfs/client/xtfs_rmvol.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_rmvol.SConscript similarity index 100% rename from client/proj/org/xtreemfs/client/xtfs_rmvol.SConscript rename to src/client/proj/org/xtreemfs/client/xtfs_rmvol.SConscript diff --git a/client/proj/org/xtreemfs/client/xtfs_rmvol.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_rmvol.vcproj similarity index 100% rename from client/proj/org/xtreemfs/client/xtfs_rmvol.vcproj rename to src/client/proj/org/xtreemfs/client/xtfs_rmvol.vcproj diff --git a/client/proj/org/xtreemfs/client/xtfs_send.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_send.SConscript similarity index 100% rename from client/proj/org/xtreemfs/client/xtfs_send.SConscript rename to src/client/proj/org/xtreemfs/client/xtfs_send.SConscript diff --git a/client/proj/org/xtreemfs/client/xtfs_send.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_send.vcproj similarity index 100% rename from client/proj/org/xtreemfs/client/xtfs_send.vcproj rename to src/client/proj/org/xtreemfs/client/xtfs_send.vcproj diff --git a/client/proj/org/xtreemfs/client/xtfs_stat.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_stat.SConscript similarity index 100% rename from client/proj/org/xtreemfs/client/xtfs_stat.SConscript rename to src/client/proj/org/xtreemfs/client/xtfs_stat.SConscript diff --git a/client/proj/org/xtreemfs/client/xtfs_stat.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_stat.vcproj similarity index 100% rename from client/proj/org/xtreemfs/client/xtfs_stat.vcproj rename to src/client/proj/org/xtreemfs/client/xtfs_stat.vcproj diff --git a/client/proj/org/xtreemfs/client/xtreemfs-client-lib.SConscript b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.SConscript similarity index 100% rename from client/proj/org/xtreemfs/client/xtreemfs-client-lib.SConscript rename to src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.SConscript diff --git a/client/proj/org/xtreemfs/client/xtreemfs-client-lib.vcproj b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.vcproj similarity index 100% rename from client/proj/org/xtreemfs/client/xtreemfs-client-lib.vcproj rename to src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.vcproj diff --git a/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.SConscript b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.SConscript similarity index 100% rename from client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.SConscript rename to src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.SConscript diff --git a/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.vcproj b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.vcproj similarity index 100% rename from client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.vcproj rename to src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.vcproj diff --git a/client/scons.py b/src/client/scons.py similarity index 100% rename from client/scons.py rename to src/client/scons.py diff --git a/client/share/google-breakpad/COPYING b/src/client/share/google-breakpad/COPYING similarity index 100% rename from client/share/google-breakpad/COPYING rename to src/client/share/google-breakpad/COPYING diff --git a/client/share/google-breakpad/src/client/linux/handler/exception_handler.cc b/src/client/share/google-breakpad/src/client/linux/handler/exception_handler.cc similarity index 100% rename from client/share/google-breakpad/src/client/linux/handler/exception_handler.cc rename to src/client/share/google-breakpad/src/client/linux/handler/exception_handler.cc diff --git a/client/share/google-breakpad/src/client/linux/handler/exception_handler.h b/src/client/share/google-breakpad/src/client/linux/handler/exception_handler.h similarity index 100% rename from client/share/google-breakpad/src/client/linux/handler/exception_handler.h rename to src/client/share/google-breakpad/src/client/linux/handler/exception_handler.h diff --git a/client/share/google-breakpad/src/client/linux/handler/linux_thread.cc b/src/client/share/google-breakpad/src/client/linux/handler/linux_thread.cc similarity index 100% rename from client/share/google-breakpad/src/client/linux/handler/linux_thread.cc rename to src/client/share/google-breakpad/src/client/linux/handler/linux_thread.cc diff --git a/client/share/google-breakpad/src/client/linux/handler/linux_thread.h b/src/client/share/google-breakpad/src/client/linux/handler/linux_thread.h similarity index 100% rename from client/share/google-breakpad/src/client/linux/handler/linux_thread.h rename to src/client/share/google-breakpad/src/client/linux/handler/linux_thread.h diff --git a/client/share/google-breakpad/src/client/linux/handler/minidump_generator.cc b/src/client/share/google-breakpad/src/client/linux/handler/minidump_generator.cc similarity index 100% rename from client/share/google-breakpad/src/client/linux/handler/minidump_generator.cc rename to src/client/share/google-breakpad/src/client/linux/handler/minidump_generator.cc diff --git a/client/share/google-breakpad/src/client/linux/handler/minidump_generator.h b/src/client/share/google-breakpad/src/client/linux/handler/minidump_generator.h similarity index 100% rename from client/share/google-breakpad/src/client/linux/handler/minidump_generator.h rename to src/client/share/google-breakpad/src/client/linux/handler/minidump_generator.h diff --git a/client/share/google-breakpad/src/client/mac/crash_generation/Inspector.h b/src/client/share/google-breakpad/src/client/mac/crash_generation/Inspector.h similarity index 100% rename from client/share/google-breakpad/src/client/mac/crash_generation/Inspector.h rename to src/client/share/google-breakpad/src/client/mac/crash_generation/Inspector.h diff --git a/client/share/google-breakpad/src/client/mac/crash_generation/Inspector.mm b/src/client/share/google-breakpad/src/client/mac/crash_generation/Inspector.mm similarity index 100% rename from client/share/google-breakpad/src/client/mac/crash_generation/Inspector.mm rename to src/client/share/google-breakpad/src/client/mac/crash_generation/Inspector.mm diff --git a/client/share/google-breakpad/src/client/mac/crash_generation/InspectorMain.mm b/src/client/share/google-breakpad/src/client/mac/crash_generation/InspectorMain.mm similarity index 100% rename from client/share/google-breakpad/src/client/mac/crash_generation/InspectorMain.mm rename to src/client/share/google-breakpad/src/client/mac/crash_generation/InspectorMain.mm diff --git a/client/share/google-breakpad/src/client/mac/handler/breakpad_exc_server.c b/src/client/share/google-breakpad/src/client/mac/handler/breakpad_exc_server.c similarity index 100% rename from client/share/google-breakpad/src/client/mac/handler/breakpad_exc_server.c rename to src/client/share/google-breakpad/src/client/mac/handler/breakpad_exc_server.c diff --git a/client/share/google-breakpad/src/client/mac/handler/breakpad_exc_server.h b/src/client/share/google-breakpad/src/client/mac/handler/breakpad_exc_server.h similarity index 100% rename from client/share/google-breakpad/src/client/mac/handler/breakpad_exc_server.h rename to src/client/share/google-breakpad/src/client/mac/handler/breakpad_exc_server.h diff --git a/client/share/google-breakpad/src/client/mac/handler/breakpad_nlist_64.cc b/src/client/share/google-breakpad/src/client/mac/handler/breakpad_nlist_64.cc similarity index 100% rename from client/share/google-breakpad/src/client/mac/handler/breakpad_nlist_64.cc rename to src/client/share/google-breakpad/src/client/mac/handler/breakpad_nlist_64.cc diff --git a/client/share/google-breakpad/src/client/mac/handler/breakpad_nlist_64.h b/src/client/share/google-breakpad/src/client/mac/handler/breakpad_nlist_64.h similarity index 100% rename from client/share/google-breakpad/src/client/mac/handler/breakpad_nlist_64.h rename to src/client/share/google-breakpad/src/client/mac/handler/breakpad_nlist_64.h diff --git a/client/share/google-breakpad/src/client/mac/handler/dynamic_images.cc b/src/client/share/google-breakpad/src/client/mac/handler/dynamic_images.cc similarity index 100% rename from client/share/google-breakpad/src/client/mac/handler/dynamic_images.cc rename to src/client/share/google-breakpad/src/client/mac/handler/dynamic_images.cc diff --git a/client/share/google-breakpad/src/client/mac/handler/dynamic_images.h b/src/client/share/google-breakpad/src/client/mac/handler/dynamic_images.h similarity index 100% rename from client/share/google-breakpad/src/client/mac/handler/dynamic_images.h rename to src/client/share/google-breakpad/src/client/mac/handler/dynamic_images.h diff --git a/client/share/google-breakpad/src/client/mac/handler/exception_handler.cc b/src/client/share/google-breakpad/src/client/mac/handler/exception_handler.cc similarity index 100% rename from client/share/google-breakpad/src/client/mac/handler/exception_handler.cc rename to src/client/share/google-breakpad/src/client/mac/handler/exception_handler.cc diff --git a/client/share/google-breakpad/src/client/mac/handler/exception_handler.h b/src/client/share/google-breakpad/src/client/mac/handler/exception_handler.h similarity index 100% rename from client/share/google-breakpad/src/client/mac/handler/exception_handler.h rename to src/client/share/google-breakpad/src/client/mac/handler/exception_handler.h diff --git a/client/share/google-breakpad/src/client/mac/handler/minidump_generator.cc b/src/client/share/google-breakpad/src/client/mac/handler/minidump_generator.cc similarity index 100% rename from client/share/google-breakpad/src/client/mac/handler/minidump_generator.cc rename to src/client/share/google-breakpad/src/client/mac/handler/minidump_generator.cc diff --git a/client/share/google-breakpad/src/client/mac/handler/minidump_generator.h b/src/client/share/google-breakpad/src/client/mac/handler/minidump_generator.h similarity index 100% rename from client/share/google-breakpad/src/client/mac/handler/minidump_generator.h rename to src/client/share/google-breakpad/src/client/mac/handler/minidump_generator.h diff --git a/client/share/google-breakpad/src/client/mac/handler/protected_memory_allocator.cc b/src/client/share/google-breakpad/src/client/mac/handler/protected_memory_allocator.cc similarity index 100% rename from client/share/google-breakpad/src/client/mac/handler/protected_memory_allocator.cc rename to src/client/share/google-breakpad/src/client/mac/handler/protected_memory_allocator.cc diff --git a/client/share/google-breakpad/src/client/mac/handler/protected_memory_allocator.h b/src/client/share/google-breakpad/src/client/mac/handler/protected_memory_allocator.h similarity index 100% rename from client/share/google-breakpad/src/client/mac/handler/protected_memory_allocator.h rename to src/client/share/google-breakpad/src/client/mac/handler/protected_memory_allocator.h diff --git a/client/share/google-breakpad/src/client/minidump_file_writer-inl.h b/src/client/share/google-breakpad/src/client/minidump_file_writer-inl.h similarity index 100% rename from client/share/google-breakpad/src/client/minidump_file_writer-inl.h rename to src/client/share/google-breakpad/src/client/minidump_file_writer-inl.h diff --git a/client/share/google-breakpad/src/client/minidump_file_writer.cc b/src/client/share/google-breakpad/src/client/minidump_file_writer.cc similarity index 100% rename from client/share/google-breakpad/src/client/minidump_file_writer.cc rename to src/client/share/google-breakpad/src/client/minidump_file_writer.cc diff --git a/client/share/google-breakpad/src/client/minidump_file_writer.h b/src/client/share/google-breakpad/src/client/minidump_file_writer.h similarity index 100% rename from client/share/google-breakpad/src/client/minidump_file_writer.h rename to src/client/share/google-breakpad/src/client/minidump_file_writer.h diff --git a/client/share/google-breakpad/src/client/solaris/handler/exception_handler.cc b/src/client/share/google-breakpad/src/client/solaris/handler/exception_handler.cc similarity index 100% rename from client/share/google-breakpad/src/client/solaris/handler/exception_handler.cc rename to src/client/share/google-breakpad/src/client/solaris/handler/exception_handler.cc diff --git a/client/share/google-breakpad/src/client/solaris/handler/exception_handler.h b/src/client/share/google-breakpad/src/client/solaris/handler/exception_handler.h similarity index 100% rename from client/share/google-breakpad/src/client/solaris/handler/exception_handler.h rename to src/client/share/google-breakpad/src/client/solaris/handler/exception_handler.h diff --git a/client/share/google-breakpad/src/client/solaris/handler/minidump_generator.cc b/src/client/share/google-breakpad/src/client/solaris/handler/minidump_generator.cc similarity index 100% rename from client/share/google-breakpad/src/client/solaris/handler/minidump_generator.cc rename to src/client/share/google-breakpad/src/client/solaris/handler/minidump_generator.cc diff --git a/client/share/google-breakpad/src/client/solaris/handler/minidump_generator.h b/src/client/share/google-breakpad/src/client/solaris/handler/minidump_generator.h similarity index 100% rename from client/share/google-breakpad/src/client/solaris/handler/minidump_generator.h rename to src/client/share/google-breakpad/src/client/solaris/handler/minidump_generator.h diff --git a/client/share/google-breakpad/src/client/solaris/handler/solaris_lwp.cc b/src/client/share/google-breakpad/src/client/solaris/handler/solaris_lwp.cc similarity index 100% rename from client/share/google-breakpad/src/client/solaris/handler/solaris_lwp.cc rename to src/client/share/google-breakpad/src/client/solaris/handler/solaris_lwp.cc diff --git a/client/share/google-breakpad/src/client/solaris/handler/solaris_lwp.h b/src/client/share/google-breakpad/src/client/solaris/handler/solaris_lwp.h similarity index 100% rename from client/share/google-breakpad/src/client/solaris/handler/solaris_lwp.h rename to src/client/share/google-breakpad/src/client/solaris/handler/solaris_lwp.h diff --git a/client/share/google-breakpad/src/client/windows/common/auto_critical_section.h b/src/client/share/google-breakpad/src/client/windows/common/auto_critical_section.h similarity index 100% rename from client/share/google-breakpad/src/client/windows/common/auto_critical_section.h rename to src/client/share/google-breakpad/src/client/windows/common/auto_critical_section.h diff --git a/client/share/google-breakpad/src/client/windows/common/ipc_protocol.h b/src/client/share/google-breakpad/src/client/windows/common/ipc_protocol.h similarity index 100% rename from client/share/google-breakpad/src/client/windows/common/ipc_protocol.h rename to src/client/share/google-breakpad/src/client/windows/common/ipc_protocol.h diff --git a/client/share/google-breakpad/src/client/windows/crash_generation/ReadMe.txt b/src/client/share/google-breakpad/src/client/windows/crash_generation/ReadMe.txt similarity index 100% rename from client/share/google-breakpad/src/client/windows/crash_generation/ReadMe.txt rename to src/client/share/google-breakpad/src/client/windows/crash_generation/ReadMe.txt diff --git a/client/share/google-breakpad/src/client/windows/crash_generation/client_info.cc b/src/client/share/google-breakpad/src/client/windows/crash_generation/client_info.cc similarity index 100% rename from client/share/google-breakpad/src/client/windows/crash_generation/client_info.cc rename to src/client/share/google-breakpad/src/client/windows/crash_generation/client_info.cc diff --git a/client/share/google-breakpad/src/client/windows/crash_generation/client_info.h b/src/client/share/google-breakpad/src/client/windows/crash_generation/client_info.h similarity index 100% rename from client/share/google-breakpad/src/client/windows/crash_generation/client_info.h rename to src/client/share/google-breakpad/src/client/windows/crash_generation/client_info.h diff --git a/client/share/google-breakpad/src/client/windows/crash_generation/crash_generation.vcproj b/src/client/share/google-breakpad/src/client/windows/crash_generation/crash_generation.vcproj similarity index 100% rename from client/share/google-breakpad/src/client/windows/crash_generation/crash_generation.vcproj rename to src/client/share/google-breakpad/src/client/windows/crash_generation/crash_generation.vcproj diff --git a/client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_client.cc b/src/client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_client.cc similarity index 100% rename from client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_client.cc rename to src/client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_client.cc diff --git a/client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_client.h b/src/client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_client.h similarity index 100% rename from client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_client.h rename to src/client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_client.h diff --git a/client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_server.cc b/src/client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_server.cc similarity index 100% rename from client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_server.cc rename to src/client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_server.cc diff --git a/client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_server.h b/src/client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_server.h similarity index 100% rename from client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_server.h rename to src/client/share/google-breakpad/src/client/windows/crash_generation/crash_generation_server.h diff --git a/client/share/google-breakpad/src/client/windows/crash_generation/minidump_generator.cc b/src/client/share/google-breakpad/src/client/windows/crash_generation/minidump_generator.cc similarity index 100% rename from client/share/google-breakpad/src/client/windows/crash_generation/minidump_generator.cc rename to src/client/share/google-breakpad/src/client/windows/crash_generation/minidump_generator.cc diff --git a/client/share/google-breakpad/src/client/windows/crash_generation/minidump_generator.h b/src/client/share/google-breakpad/src/client/windows/crash_generation/minidump_generator.h similarity index 100% rename from client/share/google-breakpad/src/client/windows/crash_generation/minidump_generator.h rename to src/client/share/google-breakpad/src/client/windows/crash_generation/minidump_generator.h diff --git a/client/share/google-breakpad/src/client/windows/handler/exception_handler.cc b/src/client/share/google-breakpad/src/client/windows/handler/exception_handler.cc similarity index 100% rename from client/share/google-breakpad/src/client/windows/handler/exception_handler.cc rename to src/client/share/google-breakpad/src/client/windows/handler/exception_handler.cc diff --git a/client/share/google-breakpad/src/client/windows/handler/exception_handler.h b/src/client/share/google-breakpad/src/client/windows/handler/exception_handler.h similarity index 100% rename from client/share/google-breakpad/src/client/windows/handler/exception_handler.h rename to src/client/share/google-breakpad/src/client/windows/handler/exception_handler.h diff --git a/client/share/google-breakpad/src/client/windows/handler/exception_handler.vcproj b/src/client/share/google-breakpad/src/client/windows/handler/exception_handler.vcproj similarity index 100% rename from client/share/google-breakpad/src/client/windows/handler/exception_handler.vcproj rename to src/client/share/google-breakpad/src/client/windows/handler/exception_handler.vcproj diff --git a/client/share/google-breakpad/src/common/convert_UTF.c b/src/client/share/google-breakpad/src/common/convert_UTF.c similarity index 100% rename from client/share/google-breakpad/src/common/convert_UTF.c rename to src/client/share/google-breakpad/src/common/convert_UTF.c diff --git a/client/share/google-breakpad/src/common/convert_UTF.h b/src/client/share/google-breakpad/src/common/convert_UTF.h similarity index 100% rename from client/share/google-breakpad/src/common/convert_UTF.h rename to src/client/share/google-breakpad/src/common/convert_UTF.h diff --git a/client/share/google-breakpad/src/common/linux/dump_symbols.cc b/src/client/share/google-breakpad/src/common/linux/dump_symbols.cc similarity index 100% rename from client/share/google-breakpad/src/common/linux/dump_symbols.cc rename to src/client/share/google-breakpad/src/common/linux/dump_symbols.cc diff --git a/client/share/google-breakpad/src/common/linux/dump_symbols.h b/src/client/share/google-breakpad/src/common/linux/dump_symbols.h similarity index 100% rename from client/share/google-breakpad/src/common/linux/dump_symbols.h rename to src/client/share/google-breakpad/src/common/linux/dump_symbols.h diff --git a/client/share/google-breakpad/src/common/linux/file_id.cc b/src/client/share/google-breakpad/src/common/linux/file_id.cc similarity index 100% rename from client/share/google-breakpad/src/common/linux/file_id.cc rename to src/client/share/google-breakpad/src/common/linux/file_id.cc diff --git a/client/share/google-breakpad/src/common/linux/file_id.h b/src/client/share/google-breakpad/src/common/linux/file_id.h similarity index 100% rename from client/share/google-breakpad/src/common/linux/file_id.h rename to src/client/share/google-breakpad/src/common/linux/file_id.h diff --git a/client/share/google-breakpad/src/common/linux/guid_creator.cc b/src/client/share/google-breakpad/src/common/linux/guid_creator.cc similarity index 100% rename from client/share/google-breakpad/src/common/linux/guid_creator.cc rename to src/client/share/google-breakpad/src/common/linux/guid_creator.cc diff --git a/client/share/google-breakpad/src/common/linux/guid_creator.h b/src/client/share/google-breakpad/src/common/linux/guid_creator.h similarity index 100% rename from client/share/google-breakpad/src/common/linux/guid_creator.h rename to src/client/share/google-breakpad/src/common/linux/guid_creator.h diff --git a/client/share/google-breakpad/src/common/mac/GTMDefines.h b/src/client/share/google-breakpad/src/common/mac/GTMDefines.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/GTMDefines.h rename to src/client/share/google-breakpad/src/common/mac/GTMDefines.h diff --git a/client/share/google-breakpad/src/common/mac/GTMGarbageCollection.h b/src/client/share/google-breakpad/src/common/mac/GTMGarbageCollection.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/GTMGarbageCollection.h rename to src/client/share/google-breakpad/src/common/mac/GTMGarbageCollection.h diff --git a/client/share/google-breakpad/src/common/mac/GTMLogger.h b/src/client/share/google-breakpad/src/common/mac/GTMLogger.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/GTMLogger.h rename to src/client/share/google-breakpad/src/common/mac/GTMLogger.h diff --git a/client/share/google-breakpad/src/common/mac/GTMLogger.m b/src/client/share/google-breakpad/src/common/mac/GTMLogger.m similarity index 100% rename from client/share/google-breakpad/src/common/mac/GTMLogger.m rename to src/client/share/google-breakpad/src/common/mac/GTMLogger.m diff --git a/client/share/google-breakpad/src/common/mac/MachIPC.h b/src/client/share/google-breakpad/src/common/mac/MachIPC.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/MachIPC.h rename to src/client/share/google-breakpad/src/common/mac/MachIPC.h diff --git a/client/share/google-breakpad/src/common/mac/MachIPC.mm b/src/client/share/google-breakpad/src/common/mac/MachIPC.mm similarity index 100% rename from client/share/google-breakpad/src/common/mac/MachIPC.mm rename to src/client/share/google-breakpad/src/common/mac/MachIPC.mm diff --git a/client/share/google-breakpad/src/common/mac/SimpleStringDictionary.h b/src/client/share/google-breakpad/src/common/mac/SimpleStringDictionary.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/SimpleStringDictionary.h rename to src/client/share/google-breakpad/src/common/mac/SimpleStringDictionary.h diff --git a/client/share/google-breakpad/src/common/mac/SimpleStringDictionary.mm b/src/client/share/google-breakpad/src/common/mac/SimpleStringDictionary.mm similarity index 100% rename from client/share/google-breakpad/src/common/mac/SimpleStringDictionary.mm rename to src/client/share/google-breakpad/src/common/mac/SimpleStringDictionary.mm diff --git a/client/share/google-breakpad/src/common/mac/dump_syms.h b/src/client/share/google-breakpad/src/common/mac/dump_syms.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/dump_syms.h rename to src/client/share/google-breakpad/src/common/mac/dump_syms.h diff --git a/client/share/google-breakpad/src/common/mac/dump_syms.mm b/src/client/share/google-breakpad/src/common/mac/dump_syms.mm similarity index 100% rename from client/share/google-breakpad/src/common/mac/dump_syms.mm rename to src/client/share/google-breakpad/src/common/mac/dump_syms.mm diff --git a/client/share/google-breakpad/src/common/mac/dwarf/bytereader-inl.h b/src/client/share/google-breakpad/src/common/mac/dwarf/bytereader-inl.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/dwarf/bytereader-inl.h rename to src/client/share/google-breakpad/src/common/mac/dwarf/bytereader-inl.h diff --git a/client/share/google-breakpad/src/common/mac/dwarf/bytereader.cc b/src/client/share/google-breakpad/src/common/mac/dwarf/bytereader.cc similarity index 100% rename from client/share/google-breakpad/src/common/mac/dwarf/bytereader.cc rename to src/client/share/google-breakpad/src/common/mac/dwarf/bytereader.cc diff --git a/client/share/google-breakpad/src/common/mac/dwarf/bytereader.h b/src/client/share/google-breakpad/src/common/mac/dwarf/bytereader.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/dwarf/bytereader.h rename to src/client/share/google-breakpad/src/common/mac/dwarf/bytereader.h diff --git a/client/share/google-breakpad/src/common/mac/dwarf/dwarf2enums.h b/src/client/share/google-breakpad/src/common/mac/dwarf/dwarf2enums.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/dwarf/dwarf2enums.h rename to src/client/share/google-breakpad/src/common/mac/dwarf/dwarf2enums.h diff --git a/client/share/google-breakpad/src/common/mac/dwarf/dwarf2reader.cc b/src/client/share/google-breakpad/src/common/mac/dwarf/dwarf2reader.cc similarity index 100% rename from client/share/google-breakpad/src/common/mac/dwarf/dwarf2reader.cc rename to src/client/share/google-breakpad/src/common/mac/dwarf/dwarf2reader.cc diff --git a/client/share/google-breakpad/src/common/mac/dwarf/dwarf2reader.h b/src/client/share/google-breakpad/src/common/mac/dwarf/dwarf2reader.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/dwarf/dwarf2reader.h rename to src/client/share/google-breakpad/src/common/mac/dwarf/dwarf2reader.h diff --git a/client/share/google-breakpad/src/common/mac/dwarf/functioninfo.cc b/src/client/share/google-breakpad/src/common/mac/dwarf/functioninfo.cc similarity index 100% rename from client/share/google-breakpad/src/common/mac/dwarf/functioninfo.cc rename to src/client/share/google-breakpad/src/common/mac/dwarf/functioninfo.cc diff --git a/client/share/google-breakpad/src/common/mac/dwarf/functioninfo.h b/src/client/share/google-breakpad/src/common/mac/dwarf/functioninfo.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/dwarf/functioninfo.h rename to src/client/share/google-breakpad/src/common/mac/dwarf/functioninfo.h diff --git a/client/share/google-breakpad/src/common/mac/dwarf/line_state_machine.h b/src/client/share/google-breakpad/src/common/mac/dwarf/line_state_machine.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/dwarf/line_state_machine.h rename to src/client/share/google-breakpad/src/common/mac/dwarf/line_state_machine.h diff --git a/client/share/google-breakpad/src/common/mac/dwarf/types.h b/src/client/share/google-breakpad/src/common/mac/dwarf/types.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/dwarf/types.h rename to src/client/share/google-breakpad/src/common/mac/dwarf/types.h diff --git a/client/share/google-breakpad/src/common/mac/file_id.cc b/src/client/share/google-breakpad/src/common/mac/file_id.cc similarity index 100% rename from client/share/google-breakpad/src/common/mac/file_id.cc rename to src/client/share/google-breakpad/src/common/mac/file_id.cc diff --git a/client/share/google-breakpad/src/common/mac/file_id.h b/src/client/share/google-breakpad/src/common/mac/file_id.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/file_id.h rename to src/client/share/google-breakpad/src/common/mac/file_id.h diff --git a/client/share/google-breakpad/src/common/mac/macho_id.cc b/src/client/share/google-breakpad/src/common/mac/macho_id.cc similarity index 100% rename from client/share/google-breakpad/src/common/mac/macho_id.cc rename to src/client/share/google-breakpad/src/common/mac/macho_id.cc diff --git a/client/share/google-breakpad/src/common/mac/macho_id.h b/src/client/share/google-breakpad/src/common/mac/macho_id.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/macho_id.h rename to src/client/share/google-breakpad/src/common/mac/macho_id.h diff --git a/client/share/google-breakpad/src/common/mac/macho_utilities.cc b/src/client/share/google-breakpad/src/common/mac/macho_utilities.cc similarity index 100% rename from client/share/google-breakpad/src/common/mac/macho_utilities.cc rename to src/client/share/google-breakpad/src/common/mac/macho_utilities.cc diff --git a/client/share/google-breakpad/src/common/mac/macho_utilities.h b/src/client/share/google-breakpad/src/common/mac/macho_utilities.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/macho_utilities.h rename to src/client/share/google-breakpad/src/common/mac/macho_utilities.h diff --git a/client/share/google-breakpad/src/common/mac/macho_walker.cc b/src/client/share/google-breakpad/src/common/mac/macho_walker.cc similarity index 100% rename from client/share/google-breakpad/src/common/mac/macho_walker.cc rename to src/client/share/google-breakpad/src/common/mac/macho_walker.cc diff --git a/client/share/google-breakpad/src/common/mac/macho_walker.h b/src/client/share/google-breakpad/src/common/mac/macho_walker.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/macho_walker.h rename to src/client/share/google-breakpad/src/common/mac/macho_walker.h diff --git a/client/share/google-breakpad/src/common/mac/string_utilities.cc b/src/client/share/google-breakpad/src/common/mac/string_utilities.cc similarity index 100% rename from client/share/google-breakpad/src/common/mac/string_utilities.cc rename to src/client/share/google-breakpad/src/common/mac/string_utilities.cc diff --git a/client/share/google-breakpad/src/common/mac/string_utilities.h b/src/client/share/google-breakpad/src/common/mac/string_utilities.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/string_utilities.h rename to src/client/share/google-breakpad/src/common/mac/string_utilities.h diff --git a/client/share/google-breakpad/src/common/mac/testing/GTMSenTestCase.h b/src/client/share/google-breakpad/src/common/mac/testing/GTMSenTestCase.h similarity index 100% rename from client/share/google-breakpad/src/common/mac/testing/GTMSenTestCase.h rename to src/client/share/google-breakpad/src/common/mac/testing/GTMSenTestCase.h diff --git a/client/share/google-breakpad/src/common/mac/testing/GTMSenTestCase.m b/src/client/share/google-breakpad/src/common/mac/testing/GTMSenTestCase.m similarity index 100% rename from client/share/google-breakpad/src/common/mac/testing/GTMSenTestCase.m rename to src/client/share/google-breakpad/src/common/mac/testing/GTMSenTestCase.m diff --git a/client/share/google-breakpad/src/common/md5.c b/src/client/share/google-breakpad/src/common/md5.c similarity index 100% rename from client/share/google-breakpad/src/common/md5.c rename to src/client/share/google-breakpad/src/common/md5.c diff --git a/client/share/google-breakpad/src/common/md5.h b/src/client/share/google-breakpad/src/common/md5.h similarity index 100% rename from client/share/google-breakpad/src/common/md5.h rename to src/client/share/google-breakpad/src/common/md5.h diff --git a/client/share/google-breakpad/src/common/solaris/dump_symbols.cc b/src/client/share/google-breakpad/src/common/solaris/dump_symbols.cc similarity index 100% rename from client/share/google-breakpad/src/common/solaris/dump_symbols.cc rename to src/client/share/google-breakpad/src/common/solaris/dump_symbols.cc diff --git a/client/share/google-breakpad/src/common/solaris/dump_symbols.h b/src/client/share/google-breakpad/src/common/solaris/dump_symbols.h similarity index 100% rename from client/share/google-breakpad/src/common/solaris/dump_symbols.h rename to src/client/share/google-breakpad/src/common/solaris/dump_symbols.h diff --git a/client/share/google-breakpad/src/common/solaris/file_id.cc b/src/client/share/google-breakpad/src/common/solaris/file_id.cc similarity index 100% rename from client/share/google-breakpad/src/common/solaris/file_id.cc rename to src/client/share/google-breakpad/src/common/solaris/file_id.cc diff --git a/client/share/google-breakpad/src/common/solaris/file_id.h b/src/client/share/google-breakpad/src/common/solaris/file_id.h similarity index 100% rename from client/share/google-breakpad/src/common/solaris/file_id.h rename to src/client/share/google-breakpad/src/common/solaris/file_id.h diff --git a/client/share/google-breakpad/src/common/solaris/guid_creator.cc b/src/client/share/google-breakpad/src/common/solaris/guid_creator.cc similarity index 100% rename from client/share/google-breakpad/src/common/solaris/guid_creator.cc rename to src/client/share/google-breakpad/src/common/solaris/guid_creator.cc diff --git a/client/share/google-breakpad/src/common/solaris/guid_creator.h b/src/client/share/google-breakpad/src/common/solaris/guid_creator.h similarity index 100% rename from client/share/google-breakpad/src/common/solaris/guid_creator.h rename to src/client/share/google-breakpad/src/common/solaris/guid_creator.h diff --git a/client/share/google-breakpad/src/common/solaris/message_output.h b/src/client/share/google-breakpad/src/common/solaris/message_output.h similarity index 100% rename from client/share/google-breakpad/src/common/solaris/message_output.h rename to src/client/share/google-breakpad/src/common/solaris/message_output.h diff --git a/client/share/google-breakpad/src/common/string_conversion.cc b/src/client/share/google-breakpad/src/common/string_conversion.cc similarity index 100% rename from client/share/google-breakpad/src/common/string_conversion.cc rename to src/client/share/google-breakpad/src/common/string_conversion.cc diff --git a/client/share/google-breakpad/src/common/string_conversion.h b/src/client/share/google-breakpad/src/common/string_conversion.h similarity index 100% rename from client/share/google-breakpad/src/common/string_conversion.h rename to src/client/share/google-breakpad/src/common/string_conversion.h diff --git a/client/share/google-breakpad/src/common/windows/guid_string.cc b/src/client/share/google-breakpad/src/common/windows/guid_string.cc similarity index 100% rename from client/share/google-breakpad/src/common/windows/guid_string.cc rename to src/client/share/google-breakpad/src/common/windows/guid_string.cc diff --git a/client/share/google-breakpad/src/common/windows/guid_string.h b/src/client/share/google-breakpad/src/common/windows/guid_string.h similarity index 100% rename from client/share/google-breakpad/src/common/windows/guid_string.h rename to src/client/share/google-breakpad/src/common/windows/guid_string.h diff --git a/client/share/google-breakpad/src/common/windows/string_utils-inl.h b/src/client/share/google-breakpad/src/common/windows/string_utils-inl.h similarity index 100% rename from client/share/google-breakpad/src/common/windows/string_utils-inl.h rename to src/client/share/google-breakpad/src/common/windows/string_utils-inl.h diff --git a/client/share/google-breakpad/src/common/windows/string_utils.cc b/src/client/share/google-breakpad/src/common/windows/string_utils.cc similarity index 100% rename from client/share/google-breakpad/src/common/windows/string_utils.cc rename to src/client/share/google-breakpad/src/common/windows/string_utils.cc diff --git a/client/share/google-breakpad/src/google_breakpad/common/breakpad_types.h b/src/client/share/google-breakpad/src/google_breakpad/common/breakpad_types.h similarity index 100% rename from client/share/google-breakpad/src/google_breakpad/common/breakpad_types.h rename to src/client/share/google-breakpad/src/google_breakpad/common/breakpad_types.h diff --git a/client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_amd64.h b/src/client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_amd64.h similarity index 100% rename from client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_amd64.h rename to src/client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_amd64.h diff --git a/client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc.h b/src/client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc.h similarity index 100% rename from client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc.h rename to src/client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc.h diff --git a/client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc64.h b/src/client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc64.h similarity index 100% rename from client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc64.h rename to src/client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc64.h diff --git a/client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_sparc.h b/src/client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_sparc.h similarity index 100% rename from client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_sparc.h rename to src/client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_sparc.h diff --git a/client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_x86.h b/src/client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_x86.h similarity index 100% rename from client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_x86.h rename to src/client/share/google-breakpad/src/google_breakpad/common/minidump_cpu_x86.h diff --git a/client/share/google-breakpad/src/google_breakpad/common/minidump_exception_linux.h b/src/client/share/google-breakpad/src/google_breakpad/common/minidump_exception_linux.h similarity index 100% rename from client/share/google-breakpad/src/google_breakpad/common/minidump_exception_linux.h rename to src/client/share/google-breakpad/src/google_breakpad/common/minidump_exception_linux.h diff --git a/client/share/google-breakpad/src/google_breakpad/common/minidump_exception_mac.h b/src/client/share/google-breakpad/src/google_breakpad/common/minidump_exception_mac.h similarity index 100% rename from client/share/google-breakpad/src/google_breakpad/common/minidump_exception_mac.h rename to src/client/share/google-breakpad/src/google_breakpad/common/minidump_exception_mac.h diff --git a/client/share/google-breakpad/src/google_breakpad/common/minidump_exception_solaris.h b/src/client/share/google-breakpad/src/google_breakpad/common/minidump_exception_solaris.h similarity index 100% rename from client/share/google-breakpad/src/google_breakpad/common/minidump_exception_solaris.h rename to src/client/share/google-breakpad/src/google_breakpad/common/minidump_exception_solaris.h diff --git a/client/share/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h b/src/client/share/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h similarity index 100% rename from client/share/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h rename to src/client/share/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h diff --git a/client/share/google-breakpad/src/google_breakpad/common/minidump_format.h b/src/client/share/google-breakpad/src/google_breakpad/common/minidump_format.h similarity index 100% rename from client/share/google-breakpad/src/google_breakpad/common/minidump_format.h rename to src/client/share/google-breakpad/src/google_breakpad/common/minidump_format.h diff --git a/client/share/google-breakpad/src/google_breakpad/common/minidump_size.h b/src/client/share/google-breakpad/src/google_breakpad/common/minidump_size.h similarity index 100% rename from client/share/google-breakpad/src/google_breakpad/common/minidump_size.h rename to src/client/share/google-breakpad/src/google_breakpad/common/minidump_size.h diff --git a/client/share/google-breakpad/src/processor/scoped_ptr.h b/src/client/share/google-breakpad/src/processor/scoped_ptr.h similarity index 100% rename from client/share/google-breakpad/src/processor/scoped_ptr.h rename to src/client/share/google-breakpad/src/processor/scoped_ptr.h diff --git a/client/src/org/xtreemfs/client/dir_proxy.cpp b/src/client/src/org/xtreemfs/client/dir_proxy.cpp similarity index 100% rename from client/src/org/xtreemfs/client/dir_proxy.cpp rename to src/client/src/org/xtreemfs/client/dir_proxy.cpp diff --git a/client/src/org/xtreemfs/client/file.cpp b/src/client/src/org/xtreemfs/client/file.cpp similarity index 100% rename from client/src/org/xtreemfs/client/file.cpp rename to src/client/src/org/xtreemfs/client/file.cpp diff --git a/client/src/org/xtreemfs/client/file_test.cpp b/src/client/src/org/xtreemfs/client/file_test.cpp similarity index 100% rename from client/src/org/xtreemfs/client/file_test.cpp rename to src/client/src/org/xtreemfs/client/file_test.cpp diff --git a/client/src/org/xtreemfs/client/main.h b/src/client/src/org/xtreemfs/client/main.h similarity index 100% rename from client/src/org/xtreemfs/client/main.h rename to src/client/src/org/xtreemfs/client/main.h diff --git a/client/src/org/xtreemfs/client/mrc_proxy.cpp b/src/client/src/org/xtreemfs/client/mrc_proxy.cpp similarity index 100% rename from client/src/org/xtreemfs/client/mrc_proxy.cpp rename to src/client/src/org/xtreemfs/client/mrc_proxy.cpp diff --git a/client/src/org/xtreemfs/client/osd_proxy.cpp b/src/client/src/org/xtreemfs/client/osd_proxy.cpp similarity index 100% rename from client/src/org/xtreemfs/client/osd_proxy.cpp rename to src/client/src/org/xtreemfs/client/osd_proxy.cpp diff --git a/client/src/org/xtreemfs/client/path.cpp b/src/client/src/org/xtreemfs/client/path.cpp similarity index 100% rename from client/src/org/xtreemfs/client/path.cpp rename to src/client/src/org/xtreemfs/client/path.cpp diff --git a/client/src/org/xtreemfs/client/path_test.cpp b/src/client/src/org/xtreemfs/client/path_test.cpp similarity index 100% rename from client/src/org/xtreemfs/client/path_test.cpp rename to src/client/src/org/xtreemfs/client/path_test.cpp diff --git a/client/src/org/xtreemfs/client/policy_container.cpp b/src/client/src/org/xtreemfs/client/policy_container.cpp similarity index 100% rename from client/src/org/xtreemfs/client/policy_container.cpp rename to src/client/src/org/xtreemfs/client/policy_container.cpp diff --git a/client/src/org/xtreemfs/client/policy_container.h b/src/client/src/org/xtreemfs/client/policy_container.h similarity index 100% rename from client/src/org/xtreemfs/client/policy_container.h rename to src/client/src/org/xtreemfs/client/policy_container.h diff --git a/client/src/org/xtreemfs/client/proxy_exception_response.cpp b/src/client/src/org/xtreemfs/client/proxy_exception_response.cpp similarity index 100% rename from client/src/org/xtreemfs/client/proxy_exception_response.cpp rename to src/client/src/org/xtreemfs/client/proxy_exception_response.cpp diff --git a/client/src/org/xtreemfs/client/volume.cpp b/src/client/src/org/xtreemfs/client/volume.cpp similarity index 100% rename from client/src/org/xtreemfs/client/volume.cpp rename to src/client/src/org/xtreemfs/client/volume.cpp diff --git a/client/src/org/xtreemfs/client/volume_test.cpp b/src/client/src/org/xtreemfs/client/volume_test.cpp similarity index 100% rename from client/src/org/xtreemfs/client/volume_test.cpp rename to src/client/src/org/xtreemfs/client/volume_test.cpp diff --git a/client/src/org/xtreemfs/client/xos_ams_flog.c b/src/client/src/org/xtreemfs/client/xos_ams_flog.c similarity index 100% rename from client/src/org/xtreemfs/client/xos_ams_flog.c rename to src/client/src/org/xtreemfs/client/xos_ams_flog.c diff --git a/client/src/org/xtreemfs/client/xtfs_fuzz.cpp b/src/client/src/org/xtreemfs/client/xtfs_fuzz.cpp similarity index 100% rename from client/src/org/xtreemfs/client/xtfs_fuzz.cpp rename to src/client/src/org/xtreemfs/client/xtfs_fuzz.cpp diff --git a/client/src/org/xtreemfs/client/xtfs_lsvol.cpp b/src/client/src/org/xtreemfs/client/xtfs_lsvol.cpp similarity index 100% rename from client/src/org/xtreemfs/client/xtfs_lsvol.cpp rename to src/client/src/org/xtreemfs/client/xtfs_lsvol.cpp diff --git a/client/src/org/xtreemfs/client/xtfs_mkvol.cpp b/src/client/src/org/xtreemfs/client/xtfs_mkvol.cpp similarity index 100% rename from client/src/org/xtreemfs/client/xtfs_mkvol.cpp rename to src/client/src/org/xtreemfs/client/xtfs_mkvol.cpp diff --git a/client/src/org/xtreemfs/client/xtfs_mount.cpp b/src/client/src/org/xtreemfs/client/xtfs_mount.cpp similarity index 100% rename from client/src/org/xtreemfs/client/xtfs_mount.cpp rename to src/client/src/org/xtreemfs/client/xtfs_mount.cpp diff --git a/client/src/org/xtreemfs/client/xtfs_rmvol.cpp b/src/client/src/org/xtreemfs/client/xtfs_rmvol.cpp similarity index 100% rename from client/src/org/xtreemfs/client/xtfs_rmvol.cpp rename to src/client/src/org/xtreemfs/client/xtfs_rmvol.cpp diff --git a/client/src/org/xtreemfs/client/xtfs_send.cpp b/src/client/src/org/xtreemfs/client/xtfs_send.cpp similarity index 100% rename from client/src/org/xtreemfs/client/xtfs_send.cpp rename to src/client/src/org/xtreemfs/client/xtfs_send.cpp diff --git a/client/src/org/xtreemfs/client/xtfs_stat.cpp b/src/client/src/org/xtreemfs/client/xtfs_stat.cpp similarity index 100% rename from client/src/org/xtreemfs/client/xtfs_stat.cpp rename to src/client/src/org/xtreemfs/client/xtfs_stat.cpp diff --git a/client/xtreemfs-client.sln b/src/client/xtreemfs-client.sln similarity index 100% rename from client/xtreemfs-client.sln rename to src/client/xtreemfs-client.sln diff --git a/servers/.classpath b/src/servers/.classpath similarity index 100% rename from servers/.classpath rename to src/servers/.classpath diff --git a/servers/.project b/src/servers/.project similarity index 100% rename from servers/.project rename to src/servers/.project diff --git a/servers/.settings/org.eclipse.jdt.core.prefs b/src/servers/.settings/org.eclipse.jdt.core.prefs similarity index 100% rename from servers/.settings/org.eclipse.jdt.core.prefs rename to src/servers/.settings/org.eclipse.jdt.core.prefs diff --git a/servers/.settings/org.eclipse.jdt.ui.prefs b/src/servers/.settings/org.eclipse.jdt.ui.prefs similarity index 100% rename from servers/.settings/org.eclipse.jdt.ui.prefs rename to src/servers/.settings/org.eclipse.jdt.ui.prefs diff --git a/servers/.settings/org.eclipse.wst.validation.prefs b/src/servers/.settings/org.eclipse.wst.validation.prefs similarity index 100% rename from servers/.settings/org.eclipse.wst.validation.prefs rename to src/servers/.settings/org.eclipse.wst.validation.prefs diff --git a/servers/build.xml b/src/servers/build.xml similarity index 100% rename from servers/build.xml rename to src/servers/build.xml diff --git a/servers/config/default_dir b/src/servers/config/default_dir similarity index 100% rename from servers/config/default_dir rename to src/servers/config/default_dir diff --git a/servers/config/dirconfig.properties b/src/servers/config/dirconfig.properties similarity index 100% rename from servers/config/dirconfig.properties rename to src/servers/config/dirconfig.properties diff --git a/servers/config/dirconfig.ssl_test b/src/servers/config/dirconfig.ssl_test similarity index 100% rename from servers/config/dirconfig.ssl_test rename to src/servers/config/dirconfig.ssl_test diff --git a/servers/config/dirconfig.test b/src/servers/config/dirconfig.test similarity index 100% rename from servers/config/dirconfig.test rename to src/servers/config/dirconfig.test diff --git a/servers/config/mrcconfig.properties b/src/servers/config/mrcconfig.properties similarity index 100% rename from servers/config/mrcconfig.properties rename to src/servers/config/mrcconfig.properties diff --git a/servers/config/mrcconfig.ssl_test b/src/servers/config/mrcconfig.ssl_test similarity index 100% rename from servers/config/mrcconfig.ssl_test rename to src/servers/config/mrcconfig.ssl_test diff --git a/servers/config/mrcconfig.test b/src/servers/config/mrcconfig.test similarity index 100% rename from servers/config/mrcconfig.test rename to src/servers/config/mrcconfig.test diff --git a/servers/config/osdconfig.properties b/src/servers/config/osdconfig.properties similarity index 100% rename from servers/config/osdconfig.properties rename to src/servers/config/osdconfig.properties diff --git a/servers/config/osdconfig.ssl_test b/src/servers/config/osdconfig.ssl_test similarity index 100% rename from servers/config/osdconfig.ssl_test rename to src/servers/config/osdconfig.ssl_test diff --git a/servers/config/osdconfig.test b/src/servers/config/osdconfig.test similarity index 100% rename from servers/config/osdconfig.test rename to src/servers/config/osdconfig.test diff --git a/servers/config/osdconfig2.test b/src/servers/config/osdconfig2.test similarity index 100% rename from servers/config/osdconfig2.test rename to src/servers/config/osdconfig2.test diff --git a/servers/init.d-scripts/xtreemfs-dir b/src/servers/init.d-scripts/xtreemfs-dir similarity index 100% rename from servers/init.d-scripts/xtreemfs-dir rename to src/servers/init.d-scripts/xtreemfs-dir diff --git a/servers/init.d-scripts/xtreemfs-mrc b/src/servers/init.d-scripts/xtreemfs-mrc similarity index 100% rename from servers/init.d-scripts/xtreemfs-mrc rename to src/servers/init.d-scripts/xtreemfs-mrc diff --git a/servers/init.d-scripts/xtreemfs-osd b/src/servers/init.d-scripts/xtreemfs-osd similarity index 100% rename from servers/init.d-scripts/xtreemfs-osd rename to src/servers/init.d-scripts/xtreemfs-osd diff --git a/servers/lib/BabuDB-0.1.0-RC.jar b/src/servers/lib/BabuDB-0.1.0-RC.jar similarity index 100% rename from servers/lib/BabuDB-0.1.0-RC.jar rename to src/servers/lib/BabuDB-0.1.0-RC.jar diff --git a/servers/lib/test/commons-codec-1.3.jar b/src/servers/lib/test/commons-codec-1.3.jar similarity index 100% rename from servers/lib/test/commons-codec-1.3.jar rename to src/servers/lib/test/commons-codec-1.3.jar diff --git a/servers/lib/test/commons-httpclient-3.0.1-contrib.jar b/src/servers/lib/test/commons-httpclient-3.0.1-contrib.jar similarity index 100% rename from servers/lib/test/commons-httpclient-3.0.1-contrib.jar rename to src/servers/lib/test/commons-httpclient-3.0.1-contrib.jar diff --git a/servers/lib/test/commons-httpclient-3.0.1.jar b/src/servers/lib/test/commons-httpclient-3.0.1.jar similarity index 100% rename from servers/lib/test/commons-httpclient-3.0.1.jar rename to src/servers/lib/test/commons-httpclient-3.0.1.jar diff --git a/servers/lib/test/commons-logging-1.1.jar b/src/servers/lib/test/commons-logging-1.1.jar similarity index 100% rename from servers/lib/test/commons-logging-1.1.jar rename to src/servers/lib/test/commons-logging-1.1.jar diff --git a/servers/lib/test/junit-4.3.1.jar b/src/servers/lib/test/junit-4.3.1.jar similarity index 100% rename from servers/lib/test/junit-4.3.1.jar rename to src/servers/lib/test/junit-4.3.1.jar diff --git a/servers/nbproject/build-impl.xml b/src/servers/nbproject/build-impl.xml similarity index 100% rename from servers/nbproject/build-impl.xml rename to src/servers/nbproject/build-impl.xml diff --git a/servers/nbproject/genfiles.properties b/src/servers/nbproject/genfiles.properties similarity index 100% rename from servers/nbproject/genfiles.properties rename to src/servers/nbproject/genfiles.properties diff --git a/servers/nbproject/project.properties b/src/servers/nbproject/project.properties similarity index 100% rename from servers/nbproject/project.properties rename to src/servers/nbproject/project.properties diff --git a/servers/nbproject/project.xml b/src/servers/nbproject/project.xml similarity index 100% rename from servers/nbproject/project.xml rename to src/servers/nbproject/project.xml diff --git a/servers/src/org/xtreemfs/common/Capability.java b/src/servers/src/org/xtreemfs/common/Capability.java similarity index 100% rename from servers/src/org/xtreemfs/common/Capability.java rename to src/servers/src/org/xtreemfs/common/Capability.java diff --git a/servers/src/org/xtreemfs/common/ClientLease.java b/src/servers/src/org/xtreemfs/common/ClientLease.java similarity index 100% rename from servers/src/org/xtreemfs/common/ClientLease.java rename to src/servers/src/org/xtreemfs/common/ClientLease.java diff --git a/servers/src/org/xtreemfs/common/DualQueue.java b/src/servers/src/org/xtreemfs/common/DualQueue.java similarity index 100% rename from servers/src/org/xtreemfs/common/DualQueue.java rename to src/servers/src/org/xtreemfs/common/DualQueue.java diff --git a/servers/src/org/xtreemfs/common/HeartbeatThread.java b/src/servers/src/org/xtreemfs/common/HeartbeatThread.java similarity index 100% rename from servers/src/org/xtreemfs/common/HeartbeatThread.java rename to src/servers/src/org/xtreemfs/common/HeartbeatThread.java diff --git a/servers/src/org/xtreemfs/common/LRUCache.java b/src/servers/src/org/xtreemfs/common/LRUCache.java similarity index 100% rename from servers/src/org/xtreemfs/common/LRUCache.java rename to src/servers/src/org/xtreemfs/common/LRUCache.java diff --git a/servers/src/org/xtreemfs/common/PrioritizableMessage.java b/src/servers/src/org/xtreemfs/common/PrioritizableMessage.java similarity index 100% rename from servers/src/org/xtreemfs/common/PrioritizableMessage.java rename to src/servers/src/org/xtreemfs/common/PrioritizableMessage.java diff --git a/servers/src/org/xtreemfs/common/RingBuffer.java b/src/servers/src/org/xtreemfs/common/RingBuffer.java similarity index 100% rename from servers/src/org/xtreemfs/common/RingBuffer.java rename to src/servers/src/org/xtreemfs/common/RingBuffer.java diff --git a/servers/src/org/xtreemfs/common/TimeSync.java b/src/servers/src/org/xtreemfs/common/TimeSync.java similarity index 100% rename from servers/src/org/xtreemfs/common/TimeSync.java rename to src/servers/src/org/xtreemfs/common/TimeSync.java diff --git a/servers/src/org/xtreemfs/common/VersionManagement.java b/src/servers/src/org/xtreemfs/common/VersionManagement.java similarity index 100% rename from servers/src/org/xtreemfs/common/VersionManagement.java rename to src/servers/src/org/xtreemfs/common/VersionManagement.java diff --git a/servers/src/org/xtreemfs/common/auth/AuthenticationException.java b/src/servers/src/org/xtreemfs/common/auth/AuthenticationException.java similarity index 100% rename from servers/src/org/xtreemfs/common/auth/AuthenticationException.java rename to src/servers/src/org/xtreemfs/common/auth/AuthenticationException.java diff --git a/servers/src/org/xtreemfs/common/auth/AuthenticationProvider.java b/src/servers/src/org/xtreemfs/common/auth/AuthenticationProvider.java similarity index 100% rename from servers/src/org/xtreemfs/common/auth/AuthenticationProvider.java rename to src/servers/src/org/xtreemfs/common/auth/AuthenticationProvider.java diff --git a/servers/src/org/xtreemfs/common/auth/NullAuthProvider.java b/src/servers/src/org/xtreemfs/common/auth/NullAuthProvider.java similarity index 100% rename from servers/src/org/xtreemfs/common/auth/NullAuthProvider.java rename to src/servers/src/org/xtreemfs/common/auth/NullAuthProvider.java diff --git a/servers/src/org/xtreemfs/common/auth/SimpleX509AuthProvider.java b/src/servers/src/org/xtreemfs/common/auth/SimpleX509AuthProvider.java similarity index 100% rename from servers/src/org/xtreemfs/common/auth/SimpleX509AuthProvider.java rename to src/servers/src/org/xtreemfs/common/auth/SimpleX509AuthProvider.java diff --git a/servers/src/org/xtreemfs/common/auth/UserCredentials.java b/src/servers/src/org/xtreemfs/common/auth/UserCredentials.java similarity index 100% rename from servers/src/org/xtreemfs/common/auth/UserCredentials.java rename to src/servers/src/org/xtreemfs/common/auth/UserCredentials.java diff --git a/servers/src/org/xtreemfs/common/buffer/ASCIIString.java b/src/servers/src/org/xtreemfs/common/buffer/ASCIIString.java similarity index 100% rename from servers/src/org/xtreemfs/common/buffer/ASCIIString.java rename to src/servers/src/org/xtreemfs/common/buffer/ASCIIString.java diff --git a/servers/src/org/xtreemfs/common/buffer/BufferConversionUtils.java b/src/servers/src/org/xtreemfs/common/buffer/BufferConversionUtils.java similarity index 100% rename from servers/src/org/xtreemfs/common/buffer/BufferConversionUtils.java rename to src/servers/src/org/xtreemfs/common/buffer/BufferConversionUtils.java diff --git a/servers/src/org/xtreemfs/common/buffer/BufferPool.java b/src/servers/src/org/xtreemfs/common/buffer/BufferPool.java similarity index 100% rename from servers/src/org/xtreemfs/common/buffer/BufferPool.java rename to src/servers/src/org/xtreemfs/common/buffer/BufferPool.java diff --git a/servers/src/org/xtreemfs/common/buffer/ReusableBuffer.java b/src/servers/src/org/xtreemfs/common/buffer/ReusableBuffer.java similarity index 100% rename from servers/src/org/xtreemfs/common/buffer/ReusableBuffer.java rename to src/servers/src/org/xtreemfs/common/buffer/ReusableBuffer.java diff --git a/servers/src/org/xtreemfs/common/checksums/ChecksumAlgorithm.java b/src/servers/src/org/xtreemfs/common/checksums/ChecksumAlgorithm.java similarity index 100% rename from servers/src/org/xtreemfs/common/checksums/ChecksumAlgorithm.java rename to src/servers/src/org/xtreemfs/common/checksums/ChecksumAlgorithm.java diff --git a/servers/src/org/xtreemfs/common/checksums/ChecksumFactory.java b/src/servers/src/org/xtreemfs/common/checksums/ChecksumFactory.java similarity index 100% rename from servers/src/org/xtreemfs/common/checksums/ChecksumFactory.java rename to src/servers/src/org/xtreemfs/common/checksums/ChecksumFactory.java diff --git a/servers/src/org/xtreemfs/common/checksums/ChecksumProvider.java b/src/servers/src/org/xtreemfs/common/checksums/ChecksumProvider.java similarity index 100% rename from servers/src/org/xtreemfs/common/checksums/ChecksumProvider.java rename to src/servers/src/org/xtreemfs/common/checksums/ChecksumProvider.java diff --git a/servers/src/org/xtreemfs/common/checksums/StringChecksumAlgorithm.java b/src/servers/src/org/xtreemfs/common/checksums/StringChecksumAlgorithm.java similarity index 100% rename from servers/src/org/xtreemfs/common/checksums/StringChecksumAlgorithm.java rename to src/servers/src/org/xtreemfs/common/checksums/StringChecksumAlgorithm.java diff --git a/servers/src/org/xtreemfs/common/checksums/algorithms/Adler32.java b/src/servers/src/org/xtreemfs/common/checksums/algorithms/Adler32.java similarity index 100% rename from servers/src/org/xtreemfs/common/checksums/algorithms/Adler32.java rename to src/servers/src/org/xtreemfs/common/checksums/algorithms/Adler32.java diff --git a/servers/src/org/xtreemfs/common/checksums/algorithms/CRC32.java b/src/servers/src/org/xtreemfs/common/checksums/algorithms/CRC32.java similarity index 100% rename from servers/src/org/xtreemfs/common/checksums/algorithms/CRC32.java rename to src/servers/src/org/xtreemfs/common/checksums/algorithms/CRC32.java diff --git a/servers/src/org/xtreemfs/common/checksums/algorithms/JavaChecksumAlgorithm.java b/src/servers/src/org/xtreemfs/common/checksums/algorithms/JavaChecksumAlgorithm.java similarity index 100% rename from servers/src/org/xtreemfs/common/checksums/algorithms/JavaChecksumAlgorithm.java rename to src/servers/src/org/xtreemfs/common/checksums/algorithms/JavaChecksumAlgorithm.java diff --git a/servers/src/org/xtreemfs/common/checksums/algorithms/JavaHash.java b/src/servers/src/org/xtreemfs/common/checksums/algorithms/JavaHash.java similarity index 100% rename from servers/src/org/xtreemfs/common/checksums/algorithms/JavaHash.java rename to src/servers/src/org/xtreemfs/common/checksums/algorithms/JavaHash.java diff --git a/servers/src/org/xtreemfs/common/checksums/algorithms/JavaMessageDigestAlgorithm.java b/src/servers/src/org/xtreemfs/common/checksums/algorithms/JavaMessageDigestAlgorithm.java similarity index 100% rename from servers/src/org/xtreemfs/common/checksums/algorithms/JavaMessageDigestAlgorithm.java rename to src/servers/src/org/xtreemfs/common/checksums/algorithms/JavaMessageDigestAlgorithm.java diff --git a/servers/src/org/xtreemfs/common/checksums/algorithms/SDBM.java b/src/servers/src/org/xtreemfs/common/checksums/algorithms/SDBM.java similarity index 100% rename from servers/src/org/xtreemfs/common/checksums/algorithms/SDBM.java rename to src/servers/src/org/xtreemfs/common/checksums/algorithms/SDBM.java diff --git a/servers/src/org/xtreemfs/common/checksums/provider/JavaChecksumProvider.java b/src/servers/src/org/xtreemfs/common/checksums/provider/JavaChecksumProvider.java similarity index 100% rename from servers/src/org/xtreemfs/common/checksums/provider/JavaChecksumProvider.java rename to src/servers/src/org/xtreemfs/common/checksums/provider/JavaChecksumProvider.java diff --git a/servers/src/org/xtreemfs/common/clients/io/ByteMapper.java b/src/servers/src/org/xtreemfs/common/clients/io/ByteMapper.java similarity index 100% rename from servers/src/org/xtreemfs/common/clients/io/ByteMapper.java rename to src/servers/src/org/xtreemfs/common/clients/io/ByteMapper.java diff --git a/servers/src/org/xtreemfs/common/clients/io/ByteMapperFactory.java b/src/servers/src/org/xtreemfs/common/clients/io/ByteMapperFactory.java similarity index 100% rename from servers/src/org/xtreemfs/common/clients/io/ByteMapperFactory.java rename to src/servers/src/org/xtreemfs/common/clients/io/ByteMapperFactory.java diff --git a/servers/src/org/xtreemfs/common/clients/io/ByteMapperRAID0.java b/src/servers/src/org/xtreemfs/common/clients/io/ByteMapperRAID0.java similarity index 100% rename from servers/src/org/xtreemfs/common/clients/io/ByteMapperRAID0.java rename to src/servers/src/org/xtreemfs/common/clients/io/ByteMapperRAID0.java diff --git a/servers/src/org/xtreemfs/common/clients/io/ObjectStore.java b/src/servers/src/org/xtreemfs/common/clients/io/ObjectStore.java similarity index 100% rename from servers/src/org/xtreemfs/common/clients/io/ObjectStore.java rename to src/servers/src/org/xtreemfs/common/clients/io/ObjectStore.java diff --git a/servers/src/org/xtreemfs/common/clients/io/RandomAccessFile.java b/src/servers/src/org/xtreemfs/common/clients/io/RandomAccessFile.java similarity index 100% rename from servers/src/org/xtreemfs/common/clients/io/RandomAccessFile.java rename to src/servers/src/org/xtreemfs/common/clients/io/RandomAccessFile.java diff --git a/servers/src/org/xtreemfs/common/clients/simplescrubber/FileInfo.java b/src/servers/src/org/xtreemfs/common/clients/simplescrubber/FileInfo.java similarity index 100% rename from servers/src/org/xtreemfs/common/clients/simplescrubber/FileInfo.java rename to src/servers/src/org/xtreemfs/common/clients/simplescrubber/FileInfo.java diff --git a/servers/src/org/xtreemfs/common/clients/simplescrubber/Scrubber.java b/src/servers/src/org/xtreemfs/common/clients/simplescrubber/Scrubber.java similarity index 100% rename from servers/src/org/xtreemfs/common/clients/simplescrubber/Scrubber.java rename to src/servers/src/org/xtreemfs/common/clients/simplescrubber/Scrubber.java diff --git a/servers/src/org/xtreemfs/common/config/Config.java b/src/servers/src/org/xtreemfs/common/config/Config.java similarity index 100% rename from servers/src/org/xtreemfs/common/config/Config.java rename to src/servers/src/org/xtreemfs/common/config/Config.java diff --git a/servers/src/org/xtreemfs/common/config/ServiceConfig.java b/src/servers/src/org/xtreemfs/common/config/ServiceConfig.java similarity index 100% rename from servers/src/org/xtreemfs/common/config/ServiceConfig.java rename to src/servers/src/org/xtreemfs/common/config/ServiceConfig.java diff --git a/servers/src/org/xtreemfs/common/logging/Logging.java b/src/servers/src/org/xtreemfs/common/logging/Logging.java similarity index 100% rename from servers/src/org/xtreemfs/common/logging/Logging.java rename to src/servers/src/org/xtreemfs/common/logging/Logging.java diff --git a/servers/src/org/xtreemfs/common/logging/Utils.java b/src/servers/src/org/xtreemfs/common/logging/Utils.java similarity index 100% rename from servers/src/org/xtreemfs/common/logging/Utils.java rename to src/servers/src/org/xtreemfs/common/logging/Utils.java diff --git a/servers/src/org/xtreemfs/common/trace/Tracer.java b/src/servers/src/org/xtreemfs/common/trace/Tracer.java similarity index 100% rename from servers/src/org/xtreemfs/common/trace/Tracer.java rename to src/servers/src/org/xtreemfs/common/trace/Tracer.java diff --git a/servers/src/org/xtreemfs/common/util/FSUtils.java b/src/servers/src/org/xtreemfs/common/util/FSUtils.java similarity index 100% rename from servers/src/org/xtreemfs/common/util/FSUtils.java rename to src/servers/src/org/xtreemfs/common/util/FSUtils.java diff --git a/servers/src/org/xtreemfs/common/util/NetUtils.java b/src/servers/src/org/xtreemfs/common/util/NetUtils.java similarity index 100% rename from servers/src/org/xtreemfs/common/util/NetUtils.java rename to src/servers/src/org/xtreemfs/common/util/NetUtils.java diff --git a/servers/src/org/xtreemfs/common/util/ONCRPCServiceURL.java b/src/servers/src/org/xtreemfs/common/util/ONCRPCServiceURL.java similarity index 100% rename from servers/src/org/xtreemfs/common/util/ONCRPCServiceURL.java rename to src/servers/src/org/xtreemfs/common/util/ONCRPCServiceURL.java diff --git a/servers/src/org/xtreemfs/common/util/OutputUtils.java b/src/servers/src/org/xtreemfs/common/util/OutputUtils.java similarity index 100% rename from servers/src/org/xtreemfs/common/util/OutputUtils.java rename to src/servers/src/org/xtreemfs/common/util/OutputUtils.java diff --git a/servers/src/org/xtreemfs/common/uuids/ServiceUUID.java b/src/servers/src/org/xtreemfs/common/uuids/ServiceUUID.java similarity index 100% rename from servers/src/org/xtreemfs/common/uuids/ServiceUUID.java rename to src/servers/src/org/xtreemfs/common/uuids/ServiceUUID.java diff --git a/servers/src/org/xtreemfs/common/uuids/UUIDCacheEntry.java b/src/servers/src/org/xtreemfs/common/uuids/UUIDCacheEntry.java similarity index 100% rename from servers/src/org/xtreemfs/common/uuids/UUIDCacheEntry.java rename to src/servers/src/org/xtreemfs/common/uuids/UUIDCacheEntry.java diff --git a/servers/src/org/xtreemfs/common/uuids/UUIDResolver.java b/src/servers/src/org/xtreemfs/common/uuids/UUIDResolver.java similarity index 100% rename from servers/src/org/xtreemfs/common/uuids/UUIDResolver.java rename to src/servers/src/org/xtreemfs/common/uuids/UUIDResolver.java diff --git a/servers/src/org/xtreemfs/common/uuids/UnknownUUIDException.java b/src/servers/src/org/xtreemfs/common/uuids/UnknownUUIDException.java similarity index 100% rename from servers/src/org/xtreemfs/common/uuids/UnknownUUIDException.java rename to src/servers/src/org/xtreemfs/common/uuids/UnknownUUIDException.java diff --git a/servers/src/org/xtreemfs/common/xloc/InvalidXLocationsException.java b/src/servers/src/org/xtreemfs/common/xloc/InvalidXLocationsException.java similarity index 100% rename from servers/src/org/xtreemfs/common/xloc/InvalidXLocationsException.java rename to src/servers/src/org/xtreemfs/common/xloc/InvalidXLocationsException.java diff --git a/servers/src/org/xtreemfs/common/xloc/RAID0Impl.java b/src/servers/src/org/xtreemfs/common/xloc/RAID0Impl.java similarity index 100% rename from servers/src/org/xtreemfs/common/xloc/RAID0Impl.java rename to src/servers/src/org/xtreemfs/common/xloc/RAID0Impl.java diff --git a/servers/src/org/xtreemfs/common/xloc/Replica.java b/src/servers/src/org/xtreemfs/common/xloc/Replica.java similarity index 100% rename from servers/src/org/xtreemfs/common/xloc/Replica.java rename to src/servers/src/org/xtreemfs/common/xloc/Replica.java diff --git a/servers/src/org/xtreemfs/common/xloc/StripingPolicyImpl.java b/src/servers/src/org/xtreemfs/common/xloc/StripingPolicyImpl.java similarity index 100% rename from servers/src/org/xtreemfs/common/xloc/StripingPolicyImpl.java rename to src/servers/src/org/xtreemfs/common/xloc/StripingPolicyImpl.java diff --git a/servers/src/org/xtreemfs/common/xloc/XLocations.java b/src/servers/src/org/xtreemfs/common/xloc/XLocations.java similarity index 100% rename from servers/src/org/xtreemfs/common/xloc/XLocations.java rename to src/servers/src/org/xtreemfs/common/xloc/XLocations.java diff --git a/servers/src/org/xtreemfs/dir/DIR.java b/src/servers/src/org/xtreemfs/dir/DIR.java similarity index 100% rename from servers/src/org/xtreemfs/dir/DIR.java rename to src/servers/src/org/xtreemfs/dir/DIR.java diff --git a/servers/src/org/xtreemfs/dir/DIRConfig.java b/src/servers/src/org/xtreemfs/dir/DIRConfig.java similarity index 100% rename from servers/src/org/xtreemfs/dir/DIRConfig.java rename to src/servers/src/org/xtreemfs/dir/DIRConfig.java diff --git a/servers/src/org/xtreemfs/dir/DIRRequest.java b/src/servers/src/org/xtreemfs/dir/DIRRequest.java similarity index 100% rename from servers/src/org/xtreemfs/dir/DIRRequest.java rename to src/servers/src/org/xtreemfs/dir/DIRRequest.java diff --git a/servers/src/org/xtreemfs/dir/DIRRequestDispatcher.java b/src/servers/src/org/xtreemfs/dir/DIRRequestDispatcher.java similarity index 100% rename from servers/src/org/xtreemfs/dir/DIRRequestDispatcher.java rename to src/servers/src/org/xtreemfs/dir/DIRRequestDispatcher.java diff --git a/servers/src/org/xtreemfs/dir/StatusPage.java b/src/servers/src/org/xtreemfs/dir/StatusPage.java similarity index 100% rename from servers/src/org/xtreemfs/dir/StatusPage.java rename to src/servers/src/org/xtreemfs/dir/StatusPage.java diff --git a/servers/src/org/xtreemfs/dir/client/DIRClient.java b/src/servers/src/org/xtreemfs/dir/client/DIRClient.java similarity index 100% rename from servers/src/org/xtreemfs/dir/client/DIRClient.java rename to src/servers/src/org/xtreemfs/dir/client/DIRClient.java diff --git a/servers/src/org/xtreemfs/dir/client/uuidmappings.java b/src/servers/src/org/xtreemfs/dir/client/uuidmappings.java similarity index 100% rename from servers/src/org/xtreemfs/dir/client/uuidmappings.java rename to src/servers/src/org/xtreemfs/dir/client/uuidmappings.java diff --git a/servers/src/org/xtreemfs/dir/operations/DIROperation.java b/src/servers/src/org/xtreemfs/dir/operations/DIROperation.java similarity index 100% rename from servers/src/org/xtreemfs/dir/operations/DIROperation.java rename to src/servers/src/org/xtreemfs/dir/operations/DIROperation.java diff --git a/servers/src/org/xtreemfs/dir/operations/DeleteAddressMappingOperation.java b/src/servers/src/org/xtreemfs/dir/operations/DeleteAddressMappingOperation.java similarity index 100% rename from servers/src/org/xtreemfs/dir/operations/DeleteAddressMappingOperation.java rename to src/servers/src/org/xtreemfs/dir/operations/DeleteAddressMappingOperation.java diff --git a/servers/src/org/xtreemfs/dir/operations/DeregisterServiceOperation.java b/src/servers/src/org/xtreemfs/dir/operations/DeregisterServiceOperation.java similarity index 100% rename from servers/src/org/xtreemfs/dir/operations/DeregisterServiceOperation.java rename to src/servers/src/org/xtreemfs/dir/operations/DeregisterServiceOperation.java diff --git a/servers/src/org/xtreemfs/dir/operations/GetAddressMappingOperation.java b/src/servers/src/org/xtreemfs/dir/operations/GetAddressMappingOperation.java similarity index 100% rename from servers/src/org/xtreemfs/dir/operations/GetAddressMappingOperation.java rename to src/servers/src/org/xtreemfs/dir/operations/GetAddressMappingOperation.java diff --git a/servers/src/org/xtreemfs/dir/operations/GetGlobalTimeOperation.java b/src/servers/src/org/xtreemfs/dir/operations/GetGlobalTimeOperation.java similarity index 100% rename from servers/src/org/xtreemfs/dir/operations/GetGlobalTimeOperation.java rename to src/servers/src/org/xtreemfs/dir/operations/GetGlobalTimeOperation.java diff --git a/servers/src/org/xtreemfs/dir/operations/GetServiceByNameOperation.java b/src/servers/src/org/xtreemfs/dir/operations/GetServiceByNameOperation.java similarity index 100% rename from servers/src/org/xtreemfs/dir/operations/GetServiceByNameOperation.java rename to src/servers/src/org/xtreemfs/dir/operations/GetServiceByNameOperation.java diff --git a/servers/src/org/xtreemfs/dir/operations/GetServiceByUuidOperation.java b/src/servers/src/org/xtreemfs/dir/operations/GetServiceByUuidOperation.java similarity index 100% rename from servers/src/org/xtreemfs/dir/operations/GetServiceByUuidOperation.java rename to src/servers/src/org/xtreemfs/dir/operations/GetServiceByUuidOperation.java diff --git a/servers/src/org/xtreemfs/dir/operations/GetServicesByTypeOperation.java b/src/servers/src/org/xtreemfs/dir/operations/GetServicesByTypeOperation.java similarity index 100% rename from servers/src/org/xtreemfs/dir/operations/GetServicesByTypeOperation.java rename to src/servers/src/org/xtreemfs/dir/operations/GetServicesByTypeOperation.java diff --git a/servers/src/org/xtreemfs/dir/operations/RegisterServiceOperation.java b/src/servers/src/org/xtreemfs/dir/operations/RegisterServiceOperation.java similarity index 100% rename from servers/src/org/xtreemfs/dir/operations/RegisterServiceOperation.java rename to src/servers/src/org/xtreemfs/dir/operations/RegisterServiceOperation.java diff --git a/servers/src/org/xtreemfs/dir/operations/ServiceOfflineOperation.java b/src/servers/src/org/xtreemfs/dir/operations/ServiceOfflineOperation.java similarity index 100% rename from servers/src/org/xtreemfs/dir/operations/ServiceOfflineOperation.java rename to src/servers/src/org/xtreemfs/dir/operations/ServiceOfflineOperation.java diff --git a/servers/src/org/xtreemfs/dir/operations/SetAddressMappingOperation.java b/src/servers/src/org/xtreemfs/dir/operations/SetAddressMappingOperation.java similarity index 100% rename from servers/src/org/xtreemfs/dir/operations/SetAddressMappingOperation.java rename to src/servers/src/org/xtreemfs/dir/operations/SetAddressMappingOperation.java diff --git a/servers/src/org/xtreemfs/dir/templates/status.html b/src/servers/src/org/xtreemfs/dir/templates/status.html similarity index 100% rename from servers/src/org/xtreemfs/dir/templates/status.html rename to src/servers/src/org/xtreemfs/dir/templates/status.html diff --git a/servers/src/org/xtreemfs/foundation/CrashReporter.java b/src/servers/src/org/xtreemfs/foundation/CrashReporter.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/CrashReporter.java rename to src/servers/src/org/xtreemfs/foundation/CrashReporter.java diff --git a/servers/src/org/xtreemfs/foundation/ErrNo.java b/src/servers/src/org/xtreemfs/foundation/ErrNo.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/ErrNo.java rename to src/servers/src/org/xtreemfs/foundation/ErrNo.java diff --git a/servers/src/org/xtreemfs/foundation/LifeCycleListener.java b/src/servers/src/org/xtreemfs/foundation/LifeCycleListener.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/LifeCycleListener.java rename to src/servers/src/org/xtreemfs/foundation/LifeCycleListener.java diff --git a/servers/src/org/xtreemfs/foundation/LifeCycleThread.java b/src/servers/src/org/xtreemfs/foundation/LifeCycleThread.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/LifeCycleThread.java rename to src/servers/src/org/xtreemfs/foundation/LifeCycleThread.java diff --git a/servers/src/org/xtreemfs/foundation/SSLOptions.java b/src/servers/src/org/xtreemfs/foundation/SSLOptions.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/SSLOptions.java rename to src/servers/src/org/xtreemfs/foundation/SSLOptions.java diff --git a/servers/src/org/xtreemfs/foundation/json/JSONCharBufferString.java b/src/servers/src/org/xtreemfs/foundation/json/JSONCharBufferString.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/json/JSONCharBufferString.java rename to src/servers/src/org/xtreemfs/foundation/json/JSONCharBufferString.java diff --git a/servers/src/org/xtreemfs/foundation/json/JSONException.java b/src/servers/src/org/xtreemfs/foundation/json/JSONException.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/json/JSONException.java rename to src/servers/src/org/xtreemfs/foundation/json/JSONException.java diff --git a/servers/src/org/xtreemfs/foundation/json/JSONInput.java b/src/servers/src/org/xtreemfs/foundation/json/JSONInput.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/json/JSONInput.java rename to src/servers/src/org/xtreemfs/foundation/json/JSONInput.java diff --git a/servers/src/org/xtreemfs/foundation/json/JSONParser.java b/src/servers/src/org/xtreemfs/foundation/json/JSONParser.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/json/JSONParser.java rename to src/servers/src/org/xtreemfs/foundation/json/JSONParser.java diff --git a/servers/src/org/xtreemfs/foundation/json/JSONString.java b/src/servers/src/org/xtreemfs/foundation/json/JSONString.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/json/JSONString.java rename to src/servers/src/org/xtreemfs/foundation/json/JSONString.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/channels/ChannelIO.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/channels/ChannelIO.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/channels/ChannelIO.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/channels/ChannelIO.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/channels/SSLChannelIO.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/channels/SSLChannelIO.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/channels/SSLChannelIO.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/channels/SSLChannelIO.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/client/ONCRPCClient.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/client/ONCRPCClient.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/client/ONCRPCClient.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/client/ONCRPCClient.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/client/ONCRPCRequest.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/client/ONCRPCRequest.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/client/ONCRPCRequest.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/client/ONCRPCRequest.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/client/RPCNIOSocketClient.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/client/RPCNIOSocketClient.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/client/RPCNIOSocketClient.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/client/RPCNIOSocketClient.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponse.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponse.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponse.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponse.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponseAvailableListener.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponseAvailableListener.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponseAvailableListener.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponseAvailableListener.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponseDecoder.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponseDecoder.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponseDecoder.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponseDecoder.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponseListener.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponseListener.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponseListener.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/client/RPCResponseListener.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/client/ServerConnection.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/client/ServerConnection.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/client/ServerConnection.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/client/ServerConnection.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/server/ClientConnection.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/server/ClientConnection.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/server/ClientConnection.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/server/ClientConnection.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/server/ONCRPCRecord.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/server/ONCRPCRecord.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/server/ONCRPCRecord.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/server/ONCRPCRecord.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/server/ONCRPCRequest.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/server/ONCRPCRequest.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/server/ONCRPCRequest.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/server/ONCRPCRequest.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/server/RPCNIOSocketServer.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/server/RPCNIOSocketServer.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/server/RPCNIOSocketServer.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/server/RPCNIOSocketServer.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/server/RPCServerRequestListener.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/server/RPCServerRequestListener.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/server/RPCServerRequestListener.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/server/RPCServerRequestListener.java diff --git a/servers/src/org/xtreemfs/foundation/oncrpc/utils/ONCRPCBufferWriter.java b/src/servers/src/org/xtreemfs/foundation/oncrpc/utils/ONCRPCBufferWriter.java similarity index 100% rename from servers/src/org/xtreemfs/foundation/oncrpc/utils/ONCRPCBufferWriter.java rename to src/servers/src/org/xtreemfs/foundation/oncrpc/utils/ONCRPCBufferWriter.java diff --git a/servers/src/org/xtreemfs/interfaces/AccessControlPolicyType.java b/src/servers/src/org/xtreemfs/interfaces/AccessControlPolicyType.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/AccessControlPolicyType.java rename to src/servers/src/org/xtreemfs/interfaces/AccessControlPolicyType.java diff --git a/servers/src/org/xtreemfs/interfaces/AddressMapping.java b/src/servers/src/org/xtreemfs/interfaces/AddressMapping.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/AddressMapping.java rename to src/servers/src/org/xtreemfs/interfaces/AddressMapping.java diff --git a/servers/src/org/xtreemfs/interfaces/AddressMappingSet.java b/src/servers/src/org/xtreemfs/interfaces/AddressMappingSet.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/AddressMappingSet.java rename to src/servers/src/org/xtreemfs/interfaces/AddressMappingSet.java diff --git a/servers/src/org/xtreemfs/interfaces/Constants.java b/src/servers/src/org/xtreemfs/interfaces/Constants.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/Constants.java rename to src/servers/src/org/xtreemfs/interfaces/Constants.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/DIRInterface.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/DIRInterface.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/DIRInterface.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/DIRInterface.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_getRequest.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_getRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_getRequest.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_getRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_getResponse.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_getResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_getResponse.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_getResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_removeRequest.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_removeRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_removeRequest.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_removeRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_removeResponse.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_removeResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_removeResponse.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_removeResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_setRequest.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_setRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_setRequest.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_setRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_setResponse.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_setResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_setResponse.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_address_mappings_setResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_checkpointRequest.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_checkpointRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_checkpointRequest.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_checkpointRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_checkpointResponse.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_checkpointResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_checkpointResponse.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_checkpointResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_getRequest.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_getRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_getRequest.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_getRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_getResponse.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_getResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_getResponse.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_getResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_s_getRequest.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_s_getRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_s_getRequest.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_s_getRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_s_getResponse.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_s_getResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_s_getResponse.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_global_time_s_getResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_deregisterRequest.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_deregisterRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_deregisterRequest.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_deregisterRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_deregisterResponse.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_deregisterResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_deregisterResponse.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_deregisterResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_nameRequest.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_nameRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_nameRequest.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_nameRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_nameResponse.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_nameResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_nameResponse.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_nameResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_typeRequest.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_typeRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_typeRequest.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_typeRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_typeResponse.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_typeResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_typeResponse.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_typeResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_uuidRequest.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_uuidRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_uuidRequest.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_uuidRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_uuidResponse.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_uuidResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_uuidResponse.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_get_by_uuidResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_offlineRequest.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_offlineRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_offlineRequest.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_offlineRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_offlineResponse.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_offlineResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_offlineResponse.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_offlineResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_registerRequest.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_registerRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_registerRequest.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_registerRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_registerResponse.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_registerResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_registerResponse.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_service_registerResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_shutdownRequest.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_shutdownRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_shutdownRequest.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_shutdownRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_shutdownResponse.java b/src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_shutdownResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_shutdownResponse.java rename to src/servers/src/org/xtreemfs/interfaces/DIRInterface/xtreemfs_shutdownResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/DirectoryEntry.java b/src/servers/src/org/xtreemfs/interfaces/DirectoryEntry.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DirectoryEntry.java rename to src/servers/src/org/xtreemfs/interfaces/DirectoryEntry.java diff --git a/servers/src/org/xtreemfs/interfaces/DirectoryEntrySet.java b/src/servers/src/org/xtreemfs/interfaces/DirectoryEntrySet.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/DirectoryEntrySet.java rename to src/servers/src/org/xtreemfs/interfaces/DirectoryEntrySet.java diff --git a/servers/src/org/xtreemfs/interfaces/Exceptions/ConcurrentModificationException.java b/src/servers/src/org/xtreemfs/interfaces/Exceptions/ConcurrentModificationException.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/Exceptions/ConcurrentModificationException.java rename to src/servers/src/org/xtreemfs/interfaces/Exceptions/ConcurrentModificationException.java diff --git a/servers/src/org/xtreemfs/interfaces/Exceptions/Exceptions.java b/src/servers/src/org/xtreemfs/interfaces/Exceptions/Exceptions.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/Exceptions/Exceptions.java rename to src/servers/src/org/xtreemfs/interfaces/Exceptions/Exceptions.java diff --git a/servers/src/org/xtreemfs/interfaces/Exceptions/InvalidArgumentException.java b/src/servers/src/org/xtreemfs/interfaces/Exceptions/InvalidArgumentException.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/Exceptions/InvalidArgumentException.java rename to src/servers/src/org/xtreemfs/interfaces/Exceptions/InvalidArgumentException.java diff --git a/servers/src/org/xtreemfs/interfaces/Exceptions/ProtocolException.java b/src/servers/src/org/xtreemfs/interfaces/Exceptions/ProtocolException.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/Exceptions/ProtocolException.java rename to src/servers/src/org/xtreemfs/interfaces/Exceptions/ProtocolException.java diff --git a/servers/src/org/xtreemfs/interfaces/Exceptions/RedirectException.java b/src/servers/src/org/xtreemfs/interfaces/Exceptions/RedirectException.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/Exceptions/RedirectException.java rename to src/servers/src/org/xtreemfs/interfaces/Exceptions/RedirectException.java diff --git a/servers/src/org/xtreemfs/interfaces/Exceptions/errnoException.java b/src/servers/src/org/xtreemfs/interfaces/Exceptions/errnoException.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/Exceptions/errnoException.java rename to src/servers/src/org/xtreemfs/interfaces/Exceptions/errnoException.java diff --git a/servers/src/org/xtreemfs/interfaces/FileCredentials.java b/src/servers/src/org/xtreemfs/interfaces/FileCredentials.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/FileCredentials.java rename to src/servers/src/org/xtreemfs/interfaces/FileCredentials.java diff --git a/servers/src/org/xtreemfs/interfaces/FileCredentialsSet.java b/src/servers/src/org/xtreemfs/interfaces/FileCredentialsSet.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/FileCredentialsSet.java rename to src/servers/src/org/xtreemfs/interfaces/FileCredentialsSet.java diff --git a/servers/src/org/xtreemfs/interfaces/InternalGmax.java b/src/servers/src/org/xtreemfs/interfaces/InternalGmax.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/InternalGmax.java rename to src/servers/src/org/xtreemfs/interfaces/InternalGmax.java diff --git a/servers/src/org/xtreemfs/interfaces/InternalReadLocalResponse.java b/src/servers/src/org/xtreemfs/interfaces/InternalReadLocalResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/InternalReadLocalResponse.java rename to src/servers/src/org/xtreemfs/interfaces/InternalReadLocalResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/MRCException.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/MRCException.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/MRCException.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/MRCException.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/MRCInterface.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/MRCInterface.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/MRCInterface.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/MRCInterface.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/accessRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/accessRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/accessRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/accessRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/accessResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/accessResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/accessResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/accessResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/chmodRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/chmodRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/chmodRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/chmodRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/chmodResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/chmodResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/chmodResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/chmodResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/chownRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/chownRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/chownRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/chownRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/chownResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/chownResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/chownResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/chownResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/createRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/createRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/createRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/createRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/createResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/createResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/createResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/createResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/ftruncateRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/ftruncateRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/ftruncateRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/ftruncateRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/ftruncateResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/ftruncateResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/ftruncateResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/ftruncateResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/getattrRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/getattrRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/getattrRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/getattrRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/getattrResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/getattrResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/getattrResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/getattrResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/getxattrRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/getxattrRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/getxattrRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/getxattrRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/getxattrResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/getxattrResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/getxattrResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/getxattrResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/linkRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/linkRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/linkRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/linkRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/linkResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/linkResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/linkResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/linkResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/listxattrRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/listxattrRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/listxattrRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/listxattrRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/listxattrResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/listxattrResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/listxattrResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/listxattrResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/mkdirRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/mkdirRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/mkdirRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/mkdirRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/mkdirResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/mkdirResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/mkdirResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/mkdirResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/openRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/openRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/openRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/openRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/openResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/openResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/openResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/openResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/readdirRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/readdirRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/readdirRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/readdirRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/readdirResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/readdirResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/readdirResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/readdirResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/removexattrRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/removexattrRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/removexattrRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/removexattrRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/removexattrResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/removexattrResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/removexattrResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/removexattrResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/renameRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/renameRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/renameRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/renameRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/renameResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/renameResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/renameResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/renameResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/rmdirRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/rmdirRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/rmdirRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/rmdirRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/rmdirResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/rmdirResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/rmdirResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/rmdirResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/setattrRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/setattrRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/setattrRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/setattrRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/setattrResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/setattrResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/setattrResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/setattrResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/setxattrRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/setxattrRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/setxattrRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/setxattrRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/setxattrResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/setxattrResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/setxattrResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/setxattrResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/statvfsRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/statvfsRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/statvfsRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/statvfsRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/statvfsResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/statvfsResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/statvfsResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/statvfsResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/symlinkRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/symlinkRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/symlinkRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/symlinkRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/symlinkResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/symlinkResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/symlinkResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/symlinkResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/unlinkRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/unlinkRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/unlinkRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/unlinkRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/unlinkResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/unlinkResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/unlinkResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/unlinkResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/utimensRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/utimensRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/utimensRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/utimensRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/utimensResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/utimensResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/utimensResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/utimensResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_check_file_existsRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_check_file_existsRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_check_file_existsRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_check_file_existsRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_check_file_existsResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_check_file_existsResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_check_file_existsResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_check_file_existsResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_checkpointRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_checkpointRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_checkpointRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_checkpointRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_checkpointResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_checkpointResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_checkpointResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_checkpointResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_dump_databaseRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_dump_databaseRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_dump_databaseRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_dump_databaseRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_dump_databaseResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_dump_databaseResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_dump_databaseResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_dump_databaseResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_get_suitable_osdsRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_get_suitable_osdsRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_get_suitable_osdsRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_get_suitable_osdsRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_get_suitable_osdsResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_get_suitable_osdsResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_get_suitable_osdsResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_get_suitable_osdsResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_internal_debugRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_internal_debugRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_internal_debugRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_internal_debugRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_internal_debugResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_internal_debugResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_internal_debugResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_internal_debugResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_listdirRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_listdirRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_listdirRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_listdirRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_listdirResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_listdirResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_listdirResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_listdirResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_lsvolRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_lsvolRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_lsvolRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_lsvolRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_lsvolResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_lsvolResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_lsvolResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_lsvolResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_mkvolRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_mkvolRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_mkvolRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_mkvolRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_mkvolResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_mkvolResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_mkvolResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_mkvolResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_renew_capabilityRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_renew_capabilityRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_renew_capabilityRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_renew_capabilityRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_renew_capabilityResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_renew_capabilityResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_renew_capabilityResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_renew_capabilityResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_addRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_addRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_addRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_addRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_addResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_addResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_addResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_addResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_listRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_listRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_listRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_listRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_listResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_listResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_listResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_listResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_removeRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_removeRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_removeRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_removeRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_removeResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_removeResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_removeResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_replica_removeResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_databaseRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_databaseRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_databaseRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_databaseRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_databaseResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_databaseResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_databaseResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_databaseResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_fileRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_fileRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_fileRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_fileRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_fileResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_fileResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_fileResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_restore_fileResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_rmvolRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_rmvolRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_rmvolRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_rmvolRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_rmvolResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_rmvolResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_rmvolResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_rmvolResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_shutdownRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_shutdownRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_shutdownRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_shutdownRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_shutdownResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_shutdownResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_shutdownResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_shutdownResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_update_file_sizeRequest.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_update_file_sizeRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_update_file_sizeRequest.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_update_file_sizeRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_update_file_sizeResponse.java b/src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_update_file_sizeResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_update_file_sizeResponse.java rename to src/servers/src/org/xtreemfs/interfaces/MRCInterface/xtreemfs_update_file_sizeResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/NewFileSize.java b/src/servers/src/org/xtreemfs/interfaces/NewFileSize.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/NewFileSize.java rename to src/servers/src/org/xtreemfs/interfaces/NewFileSize.java diff --git a/servers/src/org/xtreemfs/interfaces/NewFileSizeSet.java b/src/servers/src/org/xtreemfs/interfaces/NewFileSizeSet.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/NewFileSizeSet.java rename to src/servers/src/org/xtreemfs/interfaces/NewFileSizeSet.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/OSDException.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/OSDException.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/OSDException.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/OSDException.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/OSDInterface.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/OSDInterface.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/OSDInterface.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/OSDInterface.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/keep_file_openRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/keep_file_openRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/keep_file_openRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/keep_file_openRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/keep_file_openResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/keep_file_openResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/keep_file_openResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/keep_file_openResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/readRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/readRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/readRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/readRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/readResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/readResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/readResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/readResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/truncateRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/truncateRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/truncateRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/truncateRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/truncateResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/truncateResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/truncateResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/truncateResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/unlinkRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/unlinkRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/unlinkRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/unlinkRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/unlinkResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/unlinkResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/unlinkResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/unlinkResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/writeRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/writeRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/writeRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/writeRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/writeResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/writeResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/writeResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/writeResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_check_objectRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_check_objectRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_check_objectRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_check_objectRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_check_objectResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_check_objectResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_check_objectResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_check_objectResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_get_resultsRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_get_resultsRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_get_resultsRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_get_resultsRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_get_resultsResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_get_resultsResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_get_resultsResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_get_resultsResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_is_runningRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_is_runningRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_is_runningRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_is_runningRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_is_runningResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_is_runningResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_is_runningResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_is_runningResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_startRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_startRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_startRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_startRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_startResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_startResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_startResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_startResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_statusRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_statusRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_statusRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_statusRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_statusResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_statusResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_statusResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_statusResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_stopRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_stopRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_stopRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_stopRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_stopResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_stopResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_stopResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_cleanup_stopResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_file_sizeRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_file_sizeRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_file_sizeRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_file_sizeRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_file_sizeResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_file_sizeResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_file_sizeResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_file_sizeResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_gmaxRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_gmaxRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_gmaxRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_gmaxRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_gmaxResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_gmaxResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_gmaxResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_get_gmaxResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_read_localRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_read_localRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_read_localRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_read_localRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_read_localResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_read_localResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_read_localResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_read_localResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_truncateRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_truncateRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_truncateRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_truncateRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_truncateResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_truncateResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_truncateResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_internal_truncateResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_shutdownRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_shutdownRequest.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_shutdownRequest.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_shutdownRequest.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_shutdownResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_shutdownResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_shutdownResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_shutdownResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDSelectionPolicyType.java b/src/servers/src/org/xtreemfs/interfaces/OSDSelectionPolicyType.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDSelectionPolicyType.java rename to src/servers/src/org/xtreemfs/interfaces/OSDSelectionPolicyType.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDWriteResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDWriteResponse.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDWriteResponse.java rename to src/servers/src/org/xtreemfs/interfaces/OSDWriteResponse.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDtoMRCData.java b/src/servers/src/org/xtreemfs/interfaces/OSDtoMRCData.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDtoMRCData.java rename to src/servers/src/org/xtreemfs/interfaces/OSDtoMRCData.java diff --git a/servers/src/org/xtreemfs/interfaces/OSDtoMRCDataSet.java b/src/servers/src/org/xtreemfs/interfaces/OSDtoMRCDataSet.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/OSDtoMRCDataSet.java rename to src/servers/src/org/xtreemfs/interfaces/OSDtoMRCDataSet.java diff --git a/servers/src/org/xtreemfs/interfaces/ObjectData.java b/src/servers/src/org/xtreemfs/interfaces/ObjectData.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/ObjectData.java rename to src/servers/src/org/xtreemfs/interfaces/ObjectData.java diff --git a/servers/src/org/xtreemfs/interfaces/Replica.java b/src/servers/src/org/xtreemfs/interfaces/Replica.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/Replica.java rename to src/servers/src/org/xtreemfs/interfaces/Replica.java diff --git a/servers/src/org/xtreemfs/interfaces/ReplicaSelectionPolicyType.java b/src/servers/src/org/xtreemfs/interfaces/ReplicaSelectionPolicyType.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/ReplicaSelectionPolicyType.java rename to src/servers/src/org/xtreemfs/interfaces/ReplicaSelectionPolicyType.java diff --git a/servers/src/org/xtreemfs/interfaces/ReplicaSet.java b/src/servers/src/org/xtreemfs/interfaces/ReplicaSet.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/ReplicaSet.java rename to src/servers/src/org/xtreemfs/interfaces/ReplicaSet.java diff --git a/servers/src/org/xtreemfs/interfaces/Service.java b/src/servers/src/org/xtreemfs/interfaces/Service.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/Service.java rename to src/servers/src/org/xtreemfs/interfaces/Service.java diff --git a/servers/src/org/xtreemfs/interfaces/ServiceDataMap.java b/src/servers/src/org/xtreemfs/interfaces/ServiceDataMap.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/ServiceDataMap.java rename to src/servers/src/org/xtreemfs/interfaces/ServiceDataMap.java diff --git a/servers/src/org/xtreemfs/interfaces/ServiceSet.java b/src/servers/src/org/xtreemfs/interfaces/ServiceSet.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/ServiceSet.java rename to src/servers/src/org/xtreemfs/interfaces/ServiceSet.java diff --git a/servers/src/org/xtreemfs/interfaces/ServiceType.java b/src/servers/src/org/xtreemfs/interfaces/ServiceType.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/ServiceType.java rename to src/servers/src/org/xtreemfs/interfaces/ServiceType.java diff --git a/servers/src/org/xtreemfs/interfaces/Stat.java b/src/servers/src/org/xtreemfs/interfaces/Stat.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/Stat.java rename to src/servers/src/org/xtreemfs/interfaces/Stat.java diff --git a/servers/src/org/xtreemfs/interfaces/StatVFS.java b/src/servers/src/org/xtreemfs/interfaces/StatVFS.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/StatVFS.java rename to src/servers/src/org/xtreemfs/interfaces/StatVFS.java diff --git a/servers/src/org/xtreemfs/interfaces/StringSet.java b/src/servers/src/org/xtreemfs/interfaces/StringSet.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/StringSet.java rename to src/servers/src/org/xtreemfs/interfaces/StringSet.java diff --git a/servers/src/org/xtreemfs/interfaces/StripingPolicy.java b/src/servers/src/org/xtreemfs/interfaces/StripingPolicy.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/StripingPolicy.java rename to src/servers/src/org/xtreemfs/interfaces/StripingPolicy.java diff --git a/servers/src/org/xtreemfs/interfaces/StripingPolicyType.java b/src/servers/src/org/xtreemfs/interfaces/StripingPolicyType.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/StripingPolicyType.java rename to src/servers/src/org/xtreemfs/interfaces/StripingPolicyType.java diff --git a/servers/src/org/xtreemfs/interfaces/UserCredentials.java b/src/servers/src/org/xtreemfs/interfaces/UserCredentials.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/UserCredentials.java rename to src/servers/src/org/xtreemfs/interfaces/UserCredentials.java diff --git a/servers/src/org/xtreemfs/interfaces/VivaldiCoordinates.java b/src/servers/src/org/xtreemfs/interfaces/VivaldiCoordinates.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/VivaldiCoordinates.java rename to src/servers/src/org/xtreemfs/interfaces/VivaldiCoordinates.java diff --git a/servers/src/org/xtreemfs/interfaces/Volume.java b/src/servers/src/org/xtreemfs/interfaces/Volume.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/Volume.java rename to src/servers/src/org/xtreemfs/interfaces/Volume.java diff --git a/servers/src/org/xtreemfs/interfaces/VolumeSet.java b/src/servers/src/org/xtreemfs/interfaces/VolumeSet.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/VolumeSet.java rename to src/servers/src/org/xtreemfs/interfaces/VolumeSet.java diff --git a/servers/src/org/xtreemfs/interfaces/XCap.java b/src/servers/src/org/xtreemfs/interfaces/XCap.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/XCap.java rename to src/servers/src/org/xtreemfs/interfaces/XCap.java diff --git a/servers/src/org/xtreemfs/interfaces/XLocSet.java b/src/servers/src/org/xtreemfs/interfaces/XLocSet.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/XLocSet.java rename to src/servers/src/org/xtreemfs/interfaces/XLocSet.java diff --git a/servers/src/org/xtreemfs/interfaces/utils/ONCRPCException.java b/src/servers/src/org/xtreemfs/interfaces/utils/ONCRPCException.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/utils/ONCRPCException.java rename to src/servers/src/org/xtreemfs/interfaces/utils/ONCRPCException.java diff --git a/servers/src/org/xtreemfs/interfaces/utils/ONCRPCRecordFragmentHeader.java b/src/servers/src/org/xtreemfs/interfaces/utils/ONCRPCRecordFragmentHeader.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/utils/ONCRPCRecordFragmentHeader.java rename to src/servers/src/org/xtreemfs/interfaces/utils/ONCRPCRecordFragmentHeader.java diff --git a/servers/src/org/xtreemfs/interfaces/utils/ONCRPCRequestHeader.java b/src/servers/src/org/xtreemfs/interfaces/utils/ONCRPCRequestHeader.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/utils/ONCRPCRequestHeader.java rename to src/servers/src/org/xtreemfs/interfaces/utils/ONCRPCRequestHeader.java diff --git a/servers/src/org/xtreemfs/interfaces/utils/ONCRPCResponseHeader.java b/src/servers/src/org/xtreemfs/interfaces/utils/ONCRPCResponseHeader.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/utils/ONCRPCResponseHeader.java rename to src/servers/src/org/xtreemfs/interfaces/utils/ONCRPCResponseHeader.java diff --git a/servers/src/org/xtreemfs/interfaces/utils/Request.java b/src/servers/src/org/xtreemfs/interfaces/utils/Request.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/utils/Request.java rename to src/servers/src/org/xtreemfs/interfaces/utils/Request.java diff --git a/servers/src/org/xtreemfs/interfaces/utils/Response.java b/src/servers/src/org/xtreemfs/interfaces/utils/Response.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/utils/Response.java rename to src/servers/src/org/xtreemfs/interfaces/utils/Response.java diff --git a/servers/src/org/xtreemfs/interfaces/utils/Serializable.java b/src/servers/src/org/xtreemfs/interfaces/utils/Serializable.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/utils/Serializable.java rename to src/servers/src/org/xtreemfs/interfaces/utils/Serializable.java diff --git a/servers/src/org/xtreemfs/interfaces/utils/XDRUtils.java b/src/servers/src/org/xtreemfs/interfaces/utils/XDRUtils.java similarity index 100% rename from servers/src/org/xtreemfs/interfaces/utils/XDRUtils.java rename to src/servers/src/org/xtreemfs/interfaces/utils/XDRUtils.java diff --git a/servers/src/org/xtreemfs/mrc/ErrorRecord.java b/src/servers/src/org/xtreemfs/mrc/ErrorRecord.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/ErrorRecord.java rename to src/servers/src/org/xtreemfs/mrc/ErrorRecord.java diff --git a/servers/src/org/xtreemfs/mrc/MRC.java b/src/servers/src/org/xtreemfs/mrc/MRC.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/MRC.java rename to src/servers/src/org/xtreemfs/mrc/MRC.java diff --git a/servers/src/org/xtreemfs/mrc/MRCConfig.java b/src/servers/src/org/xtreemfs/mrc/MRCConfig.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/MRCConfig.java rename to src/servers/src/org/xtreemfs/mrc/MRCConfig.java diff --git a/servers/src/org/xtreemfs/mrc/MRCException.java b/src/servers/src/org/xtreemfs/mrc/MRCException.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/MRCException.java rename to src/servers/src/org/xtreemfs/mrc/MRCException.java diff --git a/servers/src/org/xtreemfs/mrc/MRCRequest.java b/src/servers/src/org/xtreemfs/mrc/MRCRequest.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/MRCRequest.java rename to src/servers/src/org/xtreemfs/mrc/MRCRequest.java diff --git a/servers/src/org/xtreemfs/mrc/MRCRequestDispatcher.java b/src/servers/src/org/xtreemfs/mrc/MRCRequestDispatcher.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/MRCRequestDispatcher.java rename to src/servers/src/org/xtreemfs/mrc/MRCRequestDispatcher.java diff --git a/servers/src/org/xtreemfs/mrc/PolicyContainer.java b/src/servers/src/org/xtreemfs/mrc/PolicyContainer.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/PolicyContainer.java rename to src/servers/src/org/xtreemfs/mrc/PolicyContainer.java diff --git a/servers/src/org/xtreemfs/mrc/RequestDetails.java b/src/servers/src/org/xtreemfs/mrc/RequestDetails.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/RequestDetails.java rename to src/servers/src/org/xtreemfs/mrc/RequestDetails.java diff --git a/servers/src/org/xtreemfs/mrc/UserException.java b/src/servers/src/org/xtreemfs/mrc/UserException.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/UserException.java rename to src/servers/src/org/xtreemfs/mrc/UserException.java diff --git a/servers/src/org/xtreemfs/mrc/ac/FileAccessManager.java b/src/servers/src/org/xtreemfs/mrc/ac/FileAccessManager.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/ac/FileAccessManager.java rename to src/servers/src/org/xtreemfs/mrc/ac/FileAccessManager.java diff --git a/servers/src/org/xtreemfs/mrc/ac/FileAccessPolicy.java b/src/servers/src/org/xtreemfs/mrc/ac/FileAccessPolicy.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/ac/FileAccessPolicy.java rename to src/servers/src/org/xtreemfs/mrc/ac/FileAccessPolicy.java diff --git a/servers/src/org/xtreemfs/mrc/ac/POSIXFileAccessPolicy.java b/src/servers/src/org/xtreemfs/mrc/ac/POSIXFileAccessPolicy.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/ac/POSIXFileAccessPolicy.java rename to src/servers/src/org/xtreemfs/mrc/ac/POSIXFileAccessPolicy.java diff --git a/servers/src/org/xtreemfs/mrc/ac/VolumeACLFileAccessPolicy.java b/src/servers/src/org/xtreemfs/mrc/ac/VolumeACLFileAccessPolicy.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/ac/VolumeACLFileAccessPolicy.java rename to src/servers/src/org/xtreemfs/mrc/ac/VolumeACLFileAccessPolicy.java diff --git a/servers/src/org/xtreemfs/mrc/ac/YesToAnyoneFileAccessPolicy.java b/src/servers/src/org/xtreemfs/mrc/ac/YesToAnyoneFileAccessPolicy.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/ac/YesToAnyoneFileAccessPolicy.java rename to src/servers/src/org/xtreemfs/mrc/ac/YesToAnyoneFileAccessPolicy.java diff --git a/servers/src/org/xtreemfs/mrc/client/MRCClient.java b/src/servers/src/org/xtreemfs/mrc/client/MRCClient.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/client/MRCClient.java rename to src/servers/src/org/xtreemfs/mrc/client/MRCClient.java diff --git a/servers/src/org/xtreemfs/mrc/database/AtomicDBUpdate.java b/src/servers/src/org/xtreemfs/mrc/database/AtomicDBUpdate.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/database/AtomicDBUpdate.java rename to src/servers/src/org/xtreemfs/mrc/database/AtomicDBUpdate.java diff --git a/servers/src/org/xtreemfs/mrc/database/DBAccessResultAdapter.java b/src/servers/src/org/xtreemfs/mrc/database/DBAccessResultAdapter.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/database/DBAccessResultAdapter.java rename to src/servers/src/org/xtreemfs/mrc/database/DBAccessResultAdapter.java diff --git a/servers/src/org/xtreemfs/mrc/database/DBAccessResultListener.java b/src/servers/src/org/xtreemfs/mrc/database/DBAccessResultListener.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/database/DBAccessResultListener.java rename to src/servers/src/org/xtreemfs/mrc/database/DBAccessResultListener.java diff --git a/servers/src/org/xtreemfs/mrc/database/DatabaseException.java b/src/servers/src/org/xtreemfs/mrc/database/DatabaseException.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/database/DatabaseException.java rename to src/servers/src/org/xtreemfs/mrc/database/DatabaseException.java diff --git a/servers/src/org/xtreemfs/mrc/database/StorageManager.java b/src/servers/src/org/xtreemfs/mrc/database/StorageManager.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/database/StorageManager.java rename to src/servers/src/org/xtreemfs/mrc/database/StorageManager.java diff --git a/servers/src/org/xtreemfs/mrc/database/babudb/AtomicBabuDBUpdate.java b/src/servers/src/org/xtreemfs/mrc/database/babudb/AtomicBabuDBUpdate.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/database/babudb/AtomicBabuDBUpdate.java rename to src/servers/src/org/xtreemfs/mrc/database/babudb/AtomicBabuDBUpdate.java diff --git a/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBRequestListenerWrapper.java b/src/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBRequestListenerWrapper.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/database/babudb/BabuDBRequestListenerWrapper.java rename to src/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBRequestListenerWrapper.java diff --git a/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageHelper.java b/src/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageHelper.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageHelper.java rename to src/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageHelper.java diff --git a/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageManager.java b/src/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageManager.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageManager.java rename to src/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageManager.java diff --git a/servers/src/org/xtreemfs/mrc/metadata/ACLEntry.java b/src/servers/src/org/xtreemfs/mrc/metadata/ACLEntry.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/metadata/ACLEntry.java rename to src/servers/src/org/xtreemfs/mrc/metadata/ACLEntry.java diff --git a/servers/src/org/xtreemfs/mrc/metadata/BufferBackedACLEntry.java b/src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedACLEntry.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/metadata/BufferBackedACLEntry.java rename to src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedACLEntry.java diff --git a/servers/src/org/xtreemfs/mrc/metadata/BufferBackedFileMetadata.java b/src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedFileMetadata.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/metadata/BufferBackedFileMetadata.java rename to src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedFileMetadata.java diff --git a/servers/src/org/xtreemfs/mrc/metadata/BufferBackedIndexMetadata.java b/src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedIndexMetadata.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/metadata/BufferBackedIndexMetadata.java rename to src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedIndexMetadata.java diff --git a/servers/src/org/xtreemfs/mrc/metadata/BufferBackedMetadata.java b/src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedMetadata.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/metadata/BufferBackedMetadata.java rename to src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedMetadata.java diff --git a/servers/src/org/xtreemfs/mrc/metadata/BufferBackedRCMetadata.java b/src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedRCMetadata.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/metadata/BufferBackedRCMetadata.java rename to src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedRCMetadata.java diff --git a/servers/src/org/xtreemfs/mrc/metadata/BufferBackedStripingPolicy.java b/src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedStripingPolicy.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/metadata/BufferBackedStripingPolicy.java rename to src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedStripingPolicy.java diff --git a/servers/src/org/xtreemfs/mrc/metadata/BufferBackedXAttr.java b/src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedXAttr.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/metadata/BufferBackedXAttr.java rename to src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedXAttr.java diff --git a/servers/src/org/xtreemfs/mrc/metadata/BufferBackedXLoc.java b/src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedXLoc.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/metadata/BufferBackedXLoc.java rename to src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedXLoc.java diff --git a/servers/src/org/xtreemfs/mrc/metadata/BufferBackedXLocList.java b/src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedXLocList.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/metadata/BufferBackedXLocList.java rename to src/servers/src/org/xtreemfs/mrc/metadata/BufferBackedXLocList.java diff --git a/servers/src/org/xtreemfs/mrc/metadata/FileMetadata.java b/src/servers/src/org/xtreemfs/mrc/metadata/FileMetadata.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/metadata/FileMetadata.java rename to src/servers/src/org/xtreemfs/mrc/metadata/FileMetadata.java diff --git a/servers/src/org/xtreemfs/mrc/metadata/StripingPolicy.java b/src/servers/src/org/xtreemfs/mrc/metadata/StripingPolicy.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/metadata/StripingPolicy.java rename to src/servers/src/org/xtreemfs/mrc/metadata/StripingPolicy.java diff --git a/servers/src/org/xtreemfs/mrc/metadata/XAttr.java b/src/servers/src/org/xtreemfs/mrc/metadata/XAttr.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/metadata/XAttr.java rename to src/servers/src/org/xtreemfs/mrc/metadata/XAttr.java diff --git a/servers/src/org/xtreemfs/mrc/metadata/XLoc.java b/src/servers/src/org/xtreemfs/mrc/metadata/XLoc.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/metadata/XLoc.java rename to src/servers/src/org/xtreemfs/mrc/metadata/XLoc.java diff --git a/servers/src/org/xtreemfs/mrc/metadata/XLocList.java b/src/servers/src/org/xtreemfs/mrc/metadata/XLocList.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/metadata/XLocList.java rename to src/servers/src/org/xtreemfs/mrc/metadata/XLocList.java diff --git a/servers/src/org/xtreemfs/mrc/operations/AddReplicaOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/AddReplicaOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/AddReplicaOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/AddReplicaOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/ChangeAccessModeOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/ChangeAccessModeOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/ChangeAccessModeOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/ChangeAccessModeOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/ChangeOwnerOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/ChangeOwnerOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/ChangeOwnerOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/ChangeOwnerOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/CheckAccessOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/CheckAccessOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/CheckAccessOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/CheckAccessOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/CheckFileListOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/CheckFileListOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/CheckFileListOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/CheckFileListOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/CheckpointOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/CheckpointOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/CheckpointOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/CheckpointOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/CreateDirOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/CreateDirOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/CreateDirOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/CreateDirOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/CreateFileOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/CreateFileOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/CreateFileOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/CreateFileOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/CreateLinkOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/CreateLinkOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/CreateLinkOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/CreateLinkOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/CreateSymLinkOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/CreateSymLinkOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/CreateSymLinkOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/CreateSymLinkOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/CreateVolumeOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/CreateVolumeOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/CreateVolumeOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/CreateVolumeOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/DeleteOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/DeleteOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/DeleteOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/DeleteOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/DeleteVolumeOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/DeleteVolumeOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/DeleteVolumeOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/DeleteVolumeOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/DumpDBOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/DumpDBOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/DumpDBOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/DumpDBOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/GetLocalVolumesOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/GetLocalVolumesOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/GetLocalVolumesOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/GetLocalVolumesOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/GetSuitableOSDsOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/GetSuitableOSDsOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/GetSuitableOSDsOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/GetSuitableOSDsOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/GetXAttrOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/GetXAttrOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/GetXAttrOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/GetXAttrOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/GetXAttrsOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/GetXAttrsOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/GetXAttrsOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/GetXAttrsOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/GetXLocListOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/GetXLocListOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/GetXLocListOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/GetXLocListOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/InternalDebugOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/InternalDebugOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/InternalDebugOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/InternalDebugOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/MRCOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/MRCOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/MRCOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/MRCOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/MoveOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/MoveOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/MoveOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/MoveOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/OpenOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/OpenOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/OpenOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/OpenOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/ReadDirAndStatOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/ReadDirAndStatOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/ReadDirAndStatOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/ReadDirAndStatOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/ReadDirOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/ReadDirOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/ReadDirOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/ReadDirOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/RemoveACLEntriesOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/RemoveACLEntriesOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/RemoveACLEntriesOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/RemoveACLEntriesOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/RemoveReplicaOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/RemoveReplicaOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/RemoveReplicaOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/RemoveReplicaOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/RemoveXAttrOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/RemoveXAttrOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/RemoveXAttrOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/RemoveXAttrOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/RenewOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/RenewOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/RenewOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/RenewOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/RestoreDBOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/RestoreDBOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/RestoreDBOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/RestoreDBOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/RestoreFileOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/RestoreFileOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/RestoreFileOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/RestoreFileOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/SetACLEntriesOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/SetACLEntriesOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/SetACLEntriesOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/SetACLEntriesOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/SetXAttrOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/SetXAttrOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/SetXAttrOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/SetXAttrOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/SetattrOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/SetattrOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/SetattrOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/SetattrOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/ShutdownOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/ShutdownOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/ShutdownOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/ShutdownOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/StatFSOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/StatFSOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/StatFSOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/StatFSOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/StatOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/StatOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/StatOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/StatOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/StatusPageOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/StatusPageOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/StatusPageOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/StatusPageOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/TruncateOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/TruncateOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/TruncateOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/TruncateOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/UpdateFileSizeOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/UpdateFileSizeOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/UpdateFileSizeOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/UpdateFileSizeOperation.java diff --git a/servers/src/org/xtreemfs/mrc/operations/UtimeOperation.java b/src/servers/src/org/xtreemfs/mrc/operations/UtimeOperation.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/operations/UtimeOperation.java rename to src/servers/src/org/xtreemfs/mrc/operations/UtimeOperation.java diff --git a/servers/src/org/xtreemfs/mrc/osdselection/AbstractSelectionPolicy.java b/src/servers/src/org/xtreemfs/mrc/osdselection/AbstractSelectionPolicy.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/osdselection/AbstractSelectionPolicy.java rename to src/servers/src/org/xtreemfs/mrc/osdselection/AbstractSelectionPolicy.java diff --git a/servers/src/org/xtreemfs/mrc/osdselection/DNSSelectionPolicy.java b/src/servers/src/org/xtreemfs/mrc/osdselection/DNSSelectionPolicy.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/osdselection/DNSSelectionPolicy.java rename to src/servers/src/org/xtreemfs/mrc/osdselection/DNSSelectionPolicy.java diff --git a/servers/src/org/xtreemfs/mrc/osdselection/OSDSelectionPolicy.java b/src/servers/src/org/xtreemfs/mrc/osdselection/OSDSelectionPolicy.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/osdselection/OSDSelectionPolicy.java rename to src/servers/src/org/xtreemfs/mrc/osdselection/OSDSelectionPolicy.java diff --git a/servers/src/org/xtreemfs/mrc/osdselection/OSDStatusManager.java b/src/servers/src/org/xtreemfs/mrc/osdselection/OSDStatusManager.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/osdselection/OSDStatusManager.java rename to src/servers/src/org/xtreemfs/mrc/osdselection/OSDStatusManager.java diff --git a/servers/src/org/xtreemfs/mrc/osdselection/ProximitySelectionPolicy.java b/src/servers/src/org/xtreemfs/mrc/osdselection/ProximitySelectionPolicy.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/osdselection/ProximitySelectionPolicy.java rename to src/servers/src/org/xtreemfs/mrc/osdselection/ProximitySelectionPolicy.java diff --git a/servers/src/org/xtreemfs/mrc/osdselection/RandomSelectionPolicy.java b/src/servers/src/org/xtreemfs/mrc/osdselection/RandomSelectionPolicy.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/osdselection/RandomSelectionPolicy.java rename to src/servers/src/org/xtreemfs/mrc/osdselection/RandomSelectionPolicy.java diff --git a/servers/src/org/xtreemfs/mrc/replication/ReplicaSelectionPolicy.java b/src/servers/src/org/xtreemfs/mrc/replication/ReplicaSelectionPolicy.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/replication/ReplicaSelectionPolicy.java rename to src/servers/src/org/xtreemfs/mrc/replication/ReplicaSelectionPolicy.java diff --git a/servers/src/org/xtreemfs/mrc/replication/SimpleReplicaSelectionPolicy.java b/src/servers/src/org/xtreemfs/mrc/replication/SimpleReplicaSelectionPolicy.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/replication/SimpleReplicaSelectionPolicy.java rename to src/servers/src/org/xtreemfs/mrc/replication/SimpleReplicaSelectionPolicy.java diff --git a/servers/src/org/xtreemfs/mrc/stages/MRCStage.java b/src/servers/src/org/xtreemfs/mrc/stages/MRCStage.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/stages/MRCStage.java rename to src/servers/src/org/xtreemfs/mrc/stages/MRCStage.java diff --git a/servers/src/org/xtreemfs/mrc/stages/MRCStageCallbackInterface.java b/src/servers/src/org/xtreemfs/mrc/stages/MRCStageCallbackInterface.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/stages/MRCStageCallbackInterface.java rename to src/servers/src/org/xtreemfs/mrc/stages/MRCStageCallbackInterface.java diff --git a/servers/src/org/xtreemfs/mrc/stages/ProcessingStage.java b/src/servers/src/org/xtreemfs/mrc/stages/ProcessingStage.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/stages/ProcessingStage.java rename to src/servers/src/org/xtreemfs/mrc/stages/ProcessingStage.java diff --git a/servers/src/org/xtreemfs/mrc/templates/status.html b/src/servers/src/org/xtreemfs/mrc/templates/status.html similarity index 100% rename from servers/src/org/xtreemfs/mrc/templates/status.html rename to src/servers/src/org/xtreemfs/mrc/templates/status.html diff --git a/servers/src/org/xtreemfs/mrc/utils/Converter.java b/src/servers/src/org/xtreemfs/mrc/utils/Converter.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/utils/Converter.java rename to src/servers/src/org/xtreemfs/mrc/utils/Converter.java diff --git a/servers/src/org/xtreemfs/mrc/utils/DBAdminHelper.java b/src/servers/src/org/xtreemfs/mrc/utils/DBAdminHelper.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/utils/DBAdminHelper.java rename to src/servers/src/org/xtreemfs/mrc/utils/DBAdminHelper.java diff --git a/servers/src/org/xtreemfs/mrc/utils/MRCHelper.java b/src/servers/src/org/xtreemfs/mrc/utils/MRCHelper.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/utils/MRCHelper.java rename to src/servers/src/org/xtreemfs/mrc/utils/MRCHelper.java diff --git a/servers/src/org/xtreemfs/mrc/utils/Path.java b/src/servers/src/org/xtreemfs/mrc/utils/Path.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/utils/Path.java rename to src/servers/src/org/xtreemfs/mrc/utils/Path.java diff --git a/servers/src/org/xtreemfs/mrc/utils/PathResolver.java b/src/servers/src/org/xtreemfs/mrc/utils/PathResolver.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/utils/PathResolver.java rename to src/servers/src/org/xtreemfs/mrc/utils/PathResolver.java diff --git a/servers/src/org/xtreemfs/mrc/volumes/BabuDBVolumeManager.java b/src/servers/src/org/xtreemfs/mrc/volumes/BabuDBVolumeManager.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/volumes/BabuDBVolumeManager.java rename to src/servers/src/org/xtreemfs/mrc/volumes/BabuDBVolumeManager.java diff --git a/servers/src/org/xtreemfs/mrc/volumes/VolumeChangeListener.java b/src/servers/src/org/xtreemfs/mrc/volumes/VolumeChangeListener.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/volumes/VolumeChangeListener.java rename to src/servers/src/org/xtreemfs/mrc/volumes/VolumeChangeListener.java diff --git a/servers/src/org/xtreemfs/mrc/volumes/VolumeManager.java b/src/servers/src/org/xtreemfs/mrc/volumes/VolumeManager.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/volumes/VolumeManager.java rename to src/servers/src/org/xtreemfs/mrc/volumes/VolumeManager.java diff --git a/servers/src/org/xtreemfs/mrc/volumes/metadata/BufferBackedVolumeInfo.java b/src/servers/src/org/xtreemfs/mrc/volumes/metadata/BufferBackedVolumeInfo.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/volumes/metadata/BufferBackedVolumeInfo.java rename to src/servers/src/org/xtreemfs/mrc/volumes/metadata/BufferBackedVolumeInfo.java diff --git a/servers/src/org/xtreemfs/mrc/volumes/metadata/VolumeInfo.java b/src/servers/src/org/xtreemfs/mrc/volumes/metadata/VolumeInfo.java similarity index 100% rename from servers/src/org/xtreemfs/mrc/volumes/metadata/VolumeInfo.java rename to src/servers/src/org/xtreemfs/mrc/volumes/metadata/VolumeInfo.java diff --git a/servers/src/org/xtreemfs/osd/ErrorCodes.java b/src/servers/src/org/xtreemfs/osd/ErrorCodes.java similarity index 100% rename from servers/src/org/xtreemfs/osd/ErrorCodes.java rename to src/servers/src/org/xtreemfs/osd/ErrorCodes.java diff --git a/servers/src/org/xtreemfs/osd/LocationsCache.java b/src/servers/src/org/xtreemfs/osd/LocationsCache.java similarity index 100% rename from servers/src/org/xtreemfs/osd/LocationsCache.java rename to src/servers/src/org/xtreemfs/osd/LocationsCache.java diff --git a/servers/src/org/xtreemfs/osd/OSD.java b/src/servers/src/org/xtreemfs/osd/OSD.java similarity index 100% rename from servers/src/org/xtreemfs/osd/OSD.java rename to src/servers/src/org/xtreemfs/osd/OSD.java diff --git a/servers/src/org/xtreemfs/osd/OSDConfig.java b/src/servers/src/org/xtreemfs/osd/OSDConfig.java similarity index 100% rename from servers/src/org/xtreemfs/osd/OSDConfig.java rename to src/servers/src/org/xtreemfs/osd/OSDConfig.java diff --git a/servers/src/org/xtreemfs/osd/OSDRequest.java b/src/servers/src/org/xtreemfs/osd/OSDRequest.java similarity index 100% rename from servers/src/org/xtreemfs/osd/OSDRequest.java rename to src/servers/src/org/xtreemfs/osd/OSDRequest.java diff --git a/servers/src/org/xtreemfs/osd/OSDRequestDispatcher.java b/src/servers/src/org/xtreemfs/osd/OSDRequestDispatcher.java similarity index 100% rename from servers/src/org/xtreemfs/osd/OSDRequestDispatcher.java rename to src/servers/src/org/xtreemfs/osd/OSDRequestDispatcher.java diff --git a/servers/src/org/xtreemfs/osd/OpenFileTable.java b/src/servers/src/org/xtreemfs/osd/OpenFileTable.java similarity index 100% rename from servers/src/org/xtreemfs/osd/OpenFileTable.java rename to src/servers/src/org/xtreemfs/osd/OpenFileTable.java diff --git a/servers/src/org/xtreemfs/osd/StatusPage.java b/src/servers/src/org/xtreemfs/osd/StatusPage.java similarity index 100% rename from servers/src/org/xtreemfs/osd/StatusPage.java rename to src/servers/src/org/xtreemfs/osd/StatusPage.java diff --git a/servers/src/org/xtreemfs/osd/client/OSDClient.java b/src/servers/src/org/xtreemfs/osd/client/OSDClient.java similarity index 100% rename from servers/src/org/xtreemfs/osd/client/OSDClient.java rename to src/servers/src/org/xtreemfs/osd/client/OSDClient.java diff --git a/servers/src/org/xtreemfs/osd/operations/CheckObjectOperation.java b/src/servers/src/org/xtreemfs/osd/operations/CheckObjectOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/CheckObjectOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/CheckObjectOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/CleanupGetResultsOperation.java b/src/servers/src/org/xtreemfs/osd/operations/CleanupGetResultsOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/CleanupGetResultsOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/CleanupGetResultsOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/CleanupGetStatusOperation.java b/src/servers/src/org/xtreemfs/osd/operations/CleanupGetStatusOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/CleanupGetStatusOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/CleanupGetStatusOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/CleanupIsRunningOperation.java b/src/servers/src/org/xtreemfs/osd/operations/CleanupIsRunningOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/CleanupIsRunningOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/CleanupIsRunningOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/CleanupStartOperation.java b/src/servers/src/org/xtreemfs/osd/operations/CleanupStartOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/CleanupStartOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/CleanupStartOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/CleanupStopOperation.java b/src/servers/src/org/xtreemfs/osd/operations/CleanupStopOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/CleanupStopOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/CleanupStopOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/DeleteOperation.java b/src/servers/src/org/xtreemfs/osd/operations/DeleteOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/DeleteOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/DeleteOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/EventCloseFile.java b/src/servers/src/org/xtreemfs/osd/operations/EventCloseFile.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/EventCloseFile.java rename to src/servers/src/org/xtreemfs/osd/operations/EventCloseFile.java diff --git a/servers/src/org/xtreemfs/osd/operations/EventWriteObject.java b/src/servers/src/org/xtreemfs/osd/operations/EventWriteObject.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/EventWriteObject.java rename to src/servers/src/org/xtreemfs/osd/operations/EventWriteObject.java diff --git a/servers/src/org/xtreemfs/osd/operations/InternalGetFileSizeOperation.java b/src/servers/src/org/xtreemfs/osd/operations/InternalGetFileSizeOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/InternalGetFileSizeOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/InternalGetFileSizeOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/InternalGetGmaxOperation.java b/src/servers/src/org/xtreemfs/osd/operations/InternalGetGmaxOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/InternalGetGmaxOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/InternalGetGmaxOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/InternalTruncateOperation.java b/src/servers/src/org/xtreemfs/osd/operations/InternalTruncateOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/InternalTruncateOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/InternalTruncateOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/KeepFileOpenOperation.java b/src/servers/src/org/xtreemfs/osd/operations/KeepFileOpenOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/KeepFileOpenOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/KeepFileOpenOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/LocalReadOperation.java b/src/servers/src/org/xtreemfs/osd/operations/LocalReadOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/LocalReadOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/LocalReadOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/OSDOperation.java b/src/servers/src/org/xtreemfs/osd/operations/OSDOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/OSDOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/OSDOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/ReadOperation.java b/src/servers/src/org/xtreemfs/osd/operations/ReadOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/ReadOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/ReadOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/RequestTimeHelper.java b/src/servers/src/org/xtreemfs/osd/operations/RequestTimeHelper.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/RequestTimeHelper.java rename to src/servers/src/org/xtreemfs/osd/operations/RequestTimeHelper.java diff --git a/servers/src/org/xtreemfs/osd/operations/ShutdownOperation.java b/src/servers/src/org/xtreemfs/osd/operations/ShutdownOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/ShutdownOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/ShutdownOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/TruncateOperation.java b/src/servers/src/org/xtreemfs/osd/operations/TruncateOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/TruncateOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/TruncateOperation.java diff --git a/servers/src/org/xtreemfs/osd/operations/WriteOperation.java b/src/servers/src/org/xtreemfs/osd/operations/WriteOperation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/operations/WriteOperation.java rename to src/servers/src/org/xtreemfs/osd/operations/WriteOperation.java diff --git a/servers/src/org/xtreemfs/osd/replication/ObjectDissemination.java b/src/servers/src/org/xtreemfs/osd/replication/ObjectDissemination.java similarity index 100% rename from servers/src/org/xtreemfs/osd/replication/ObjectDissemination.java rename to src/servers/src/org/xtreemfs/osd/replication/ObjectDissemination.java diff --git a/servers/src/org/xtreemfs/osd/replication/RandomStrategy.java b/src/servers/src/org/xtreemfs/osd/replication/RandomStrategy.java similarity index 100% rename from servers/src/org/xtreemfs/osd/replication/RandomStrategy.java rename to src/servers/src/org/xtreemfs/osd/replication/RandomStrategy.java diff --git a/servers/src/org/xtreemfs/osd/replication/ServiceAvailability.java b/src/servers/src/org/xtreemfs/osd/replication/ServiceAvailability.java similarity index 100% rename from servers/src/org/xtreemfs/osd/replication/ServiceAvailability.java rename to src/servers/src/org/xtreemfs/osd/replication/ServiceAvailability.java diff --git a/servers/src/org/xtreemfs/osd/replication/SimpleStrategy.java b/src/servers/src/org/xtreemfs/osd/replication/SimpleStrategy.java similarity index 100% rename from servers/src/org/xtreemfs/osd/replication/SimpleStrategy.java rename to src/servers/src/org/xtreemfs/osd/replication/SimpleStrategy.java diff --git a/servers/src/org/xtreemfs/osd/replication/TransferStrategy.java b/src/servers/src/org/xtreemfs/osd/replication/TransferStrategy.java similarity index 100% rename from servers/src/org/xtreemfs/osd/replication/TransferStrategy.java rename to src/servers/src/org/xtreemfs/osd/replication/TransferStrategy.java diff --git a/servers/src/org/xtreemfs/osd/stages/DeletionStage.java b/src/servers/src/org/xtreemfs/osd/stages/DeletionStage.java similarity index 100% rename from servers/src/org/xtreemfs/osd/stages/DeletionStage.java rename to src/servers/src/org/xtreemfs/osd/stages/DeletionStage.java diff --git a/servers/src/org/xtreemfs/osd/stages/PreprocStage.java b/src/servers/src/org/xtreemfs/osd/stages/PreprocStage.java similarity index 100% rename from servers/src/org/xtreemfs/osd/stages/PreprocStage.java rename to src/servers/src/org/xtreemfs/osd/stages/PreprocStage.java diff --git a/servers/src/org/xtreemfs/osd/stages/ReplicationStage.java b/src/servers/src/org/xtreemfs/osd/stages/ReplicationStage.java similarity index 100% rename from servers/src/org/xtreemfs/osd/stages/ReplicationStage.java rename to src/servers/src/org/xtreemfs/osd/stages/ReplicationStage.java diff --git a/servers/src/org/xtreemfs/osd/stages/Stage.java b/src/servers/src/org/xtreemfs/osd/stages/Stage.java similarity index 100% rename from servers/src/org/xtreemfs/osd/stages/Stage.java rename to src/servers/src/org/xtreemfs/osd/stages/Stage.java diff --git a/servers/src/org/xtreemfs/osd/stages/StorageStage.java b/src/servers/src/org/xtreemfs/osd/stages/StorageStage.java similarity index 100% rename from servers/src/org/xtreemfs/osd/stages/StorageStage.java rename to src/servers/src/org/xtreemfs/osd/stages/StorageStage.java diff --git a/servers/src/org/xtreemfs/osd/stages/VivaldiStage.java b/src/servers/src/org/xtreemfs/osd/stages/VivaldiStage.java similarity index 100% rename from servers/src/org/xtreemfs/osd/stages/VivaldiStage.java rename to src/servers/src/org/xtreemfs/osd/stages/VivaldiStage.java diff --git a/servers/src/org/xtreemfs/osd/storage/CleanupThread.java b/src/servers/src/org/xtreemfs/osd/storage/CleanupThread.java similarity index 100% rename from servers/src/org/xtreemfs/osd/storage/CleanupThread.java rename to src/servers/src/org/xtreemfs/osd/storage/CleanupThread.java diff --git a/servers/src/org/xtreemfs/osd/storage/CowPolicy.java b/src/servers/src/org/xtreemfs/osd/storage/CowPolicy.java similarity index 100% rename from servers/src/org/xtreemfs/osd/storage/CowPolicy.java rename to src/servers/src/org/xtreemfs/osd/storage/CowPolicy.java diff --git a/servers/src/org/xtreemfs/osd/storage/FileInfo.java b/src/servers/src/org/xtreemfs/osd/storage/FileInfo.java similarity index 100% rename from servers/src/org/xtreemfs/osd/storage/FileInfo.java rename to src/servers/src/org/xtreemfs/osd/storage/FileInfo.java diff --git a/servers/src/org/xtreemfs/osd/storage/HashStorageLayout.java b/src/servers/src/org/xtreemfs/osd/storage/HashStorageLayout.java similarity index 100% rename from servers/src/org/xtreemfs/osd/storage/HashStorageLayout.java rename to src/servers/src/org/xtreemfs/osd/storage/HashStorageLayout.java diff --git a/servers/src/org/xtreemfs/osd/storage/MetadataCache.java b/src/servers/src/org/xtreemfs/osd/storage/MetadataCache.java similarity index 100% rename from servers/src/org/xtreemfs/osd/storage/MetadataCache.java rename to src/servers/src/org/xtreemfs/osd/storage/MetadataCache.java diff --git a/servers/src/org/xtreemfs/osd/storage/ObjectInformation.java b/src/servers/src/org/xtreemfs/osd/storage/ObjectInformation.java similarity index 100% rename from servers/src/org/xtreemfs/osd/storage/ObjectInformation.java rename to src/servers/src/org/xtreemfs/osd/storage/ObjectInformation.java diff --git a/servers/src/org/xtreemfs/osd/storage/StorageLayout.java b/src/servers/src/org/xtreemfs/osd/storage/StorageLayout.java similarity index 100% rename from servers/src/org/xtreemfs/osd/storage/StorageLayout.java rename to src/servers/src/org/xtreemfs/osd/storage/StorageLayout.java diff --git a/servers/src/org/xtreemfs/osd/storage/StorageThread.java b/src/servers/src/org/xtreemfs/osd/storage/StorageThread.java similarity index 100% rename from servers/src/org/xtreemfs/osd/storage/StorageThread.java rename to src/servers/src/org/xtreemfs/osd/storage/StorageThread.java diff --git a/servers/src/org/xtreemfs/osd/striping/GMAXMessage.java b/src/servers/src/org/xtreemfs/osd/striping/GMAXMessage.java similarity index 100% rename from servers/src/org/xtreemfs/osd/striping/GMAXMessage.java rename to src/servers/src/org/xtreemfs/osd/striping/GMAXMessage.java diff --git a/servers/src/org/xtreemfs/osd/striping/UDPCommunicator.java b/src/servers/src/org/xtreemfs/osd/striping/UDPCommunicator.java similarity index 100% rename from servers/src/org/xtreemfs/osd/striping/UDPCommunicator.java rename to src/servers/src/org/xtreemfs/osd/striping/UDPCommunicator.java diff --git a/servers/src/org/xtreemfs/osd/striping/UDPMessage.java b/src/servers/src/org/xtreemfs/osd/striping/UDPMessage.java similarity index 100% rename from servers/src/org/xtreemfs/osd/striping/UDPMessage.java rename to src/servers/src/org/xtreemfs/osd/striping/UDPMessage.java diff --git a/servers/src/org/xtreemfs/osd/striping/UDPReceiverInterface.java b/src/servers/src/org/xtreemfs/osd/striping/UDPReceiverInterface.java similarity index 100% rename from servers/src/org/xtreemfs/osd/striping/UDPReceiverInterface.java rename to src/servers/src/org/xtreemfs/osd/striping/UDPReceiverInterface.java diff --git a/servers/src/org/xtreemfs/osd/templates/status.html b/src/servers/src/org/xtreemfs/osd/templates/status.html similarity index 100% rename from servers/src/org/xtreemfs/osd/templates/status.html rename to src/servers/src/org/xtreemfs/osd/templates/status.html diff --git a/servers/src/org/xtreemfs/sandbox/DirectIOReader.java b/src/servers/src/org/xtreemfs/sandbox/DirectIOReader.java similarity index 100% rename from servers/src/org/xtreemfs/sandbox/DirectIOReader.java rename to src/servers/src/org/xtreemfs/sandbox/DirectIOReader.java diff --git a/servers/src/org/xtreemfs/sandbox/DummyONCRPCServer.java b/src/servers/src/org/xtreemfs/sandbox/DummyONCRPCServer.java similarity index 100% rename from servers/src/org/xtreemfs/sandbox/DummyONCRPCServer.java rename to src/servers/src/org/xtreemfs/sandbox/DummyONCRPCServer.java diff --git a/servers/src/org/xtreemfs/sandbox/ThroughputTest.java b/src/servers/src/org/xtreemfs/sandbox/ThroughputTest.java similarity index 100% rename from servers/src/org/xtreemfs/sandbox/ThroughputTest.java rename to src/servers/src/org/xtreemfs/sandbox/ThroughputTest.java diff --git a/servers/src/org/xtreemfs/sandbox/ThroughputTest.properties b/src/servers/src/org/xtreemfs/sandbox/ThroughputTest.properties similarity index 100% rename from servers/src/org/xtreemfs/sandbox/ThroughputTest.properties rename to src/servers/src/org/xtreemfs/sandbox/ThroughputTest.properties diff --git a/servers/src/org/xtreemfs/sandbox/compile-DirectIOReader.txt b/src/servers/src/org/xtreemfs/sandbox/compile-DirectIOReader.txt similarity index 100% rename from servers/src/org/xtreemfs/sandbox/compile-DirectIOReader.txt rename to src/servers/src/org/xtreemfs/sandbox/compile-DirectIOReader.txt diff --git a/servers/src/org/xtreemfs/sandbox/mrc_ls.java b/src/servers/src/org/xtreemfs/sandbox/mrc_ls.java similarity index 100% rename from servers/src/org/xtreemfs/sandbox/mrc_ls.java rename to src/servers/src/org/xtreemfs/sandbox/mrc_ls.java diff --git a/servers/src/org/xtreemfs/sandbox/mrc_rm.java b/src/servers/src/org/xtreemfs/sandbox/mrc_rm.java similarity index 100% rename from servers/src/org/xtreemfs/sandbox/mrc_rm.java rename to src/servers/src/org/xtreemfs/sandbox/mrc_rm.java diff --git a/servers/src/org/xtreemfs/sandbox/mrc_stat.java b/src/servers/src/org/xtreemfs/sandbox/mrc_stat.java similarity index 100% rename from servers/src/org/xtreemfs/sandbox/mrc_stat.java rename to src/servers/src/org/xtreemfs/sandbox/mrc_stat.java diff --git a/servers/src/org/xtreemfs/sandbox/org_xtreemfs_sandbox_DirectIOReader.c b/src/servers/src/org/xtreemfs/sandbox/org_xtreemfs_sandbox_DirectIOReader.c similarity index 100% rename from servers/src/org/xtreemfs/sandbox/org_xtreemfs_sandbox_DirectIOReader.c rename to src/servers/src/org/xtreemfs/sandbox/org_xtreemfs_sandbox_DirectIOReader.c diff --git a/servers/src/org/xtreemfs/sandbox/org_xtreemfs_sandbox_DirectIOReader.h b/src/servers/src/org/xtreemfs/sandbox/org_xtreemfs_sandbox_DirectIOReader.h similarity index 100% rename from servers/src/org/xtreemfs/sandbox/org_xtreemfs_sandbox_DirectIOReader.h rename to src/servers/src/org/xtreemfs/sandbox/org_xtreemfs_sandbox_DirectIOReader.h diff --git a/servers/src/org/xtreemfs/sandbox/sliceTest.java b/src/servers/src/org/xtreemfs/sandbox/sliceTest.java similarity index 100% rename from servers/src/org/xtreemfs/sandbox/sliceTest.java rename to src/servers/src/org/xtreemfs/sandbox/sliceTest.java diff --git a/servers/src/org/xtreemfs/sandbox/tests/CreateConfig.java b/src/servers/src/org/xtreemfs/sandbox/tests/CreateConfig.java similarity index 100% rename from servers/src/org/xtreemfs/sandbox/tests/CreateConfig.java rename to src/servers/src/org/xtreemfs/sandbox/tests/CreateConfig.java diff --git a/servers/src/org/xtreemfs/sandbox/tests/MRCPerformance.java b/src/servers/src/org/xtreemfs/sandbox/tests/MRCPerformance.java similarity index 100% rename from servers/src/org/xtreemfs/sandbox/tests/MRCPerformance.java rename to src/servers/src/org/xtreemfs/sandbox/tests/MRCPerformance.java diff --git a/servers/src/org/xtreemfs/sandbox/tests/MRCStressTest.java b/src/servers/src/org/xtreemfs/sandbox/tests/MRCStressTest.java similarity index 100% rename from servers/src/org/xtreemfs/sandbox/tests/MRCStressTest.java rename to src/servers/src/org/xtreemfs/sandbox/tests/MRCStressTest.java diff --git a/servers/src/org/xtreemfs/sandbox/tests/OSDTestClient.java b/src/servers/src/org/xtreemfs/sandbox/tests/OSDTestClient.java similarity index 100% rename from servers/src/org/xtreemfs/sandbox/tests/OSDTestClient.java rename to src/servers/src/org/xtreemfs/sandbox/tests/OSDTestClient.java diff --git a/servers/src/org/xtreemfs/sandbox/tests/ReplicationStressTest.java b/src/servers/src/org/xtreemfs/sandbox/tests/ReplicationStressTest.java similarity index 100% rename from servers/src/org/xtreemfs/sandbox/tests/ReplicationStressTest.java rename to src/servers/src/org/xtreemfs/sandbox/tests/ReplicationStressTest.java diff --git a/servers/src/org/xtreemfs/sandbox/tests/TortureXtreemFS.java b/src/servers/src/org/xtreemfs/sandbox/tests/TortureXtreemFS.java similarity index 100% rename from servers/src/org/xtreemfs/sandbox/tests/TortureXtreemFS.java rename to src/servers/src/org/xtreemfs/sandbox/tests/TortureXtreemFS.java diff --git a/servers/src/org/xtreemfs/utils/CLIParser.java b/src/servers/src/org/xtreemfs/utils/CLIParser.java similarity index 100% rename from servers/src/org/xtreemfs/utils/CLIParser.java rename to src/servers/src/org/xtreemfs/utils/CLIParser.java diff --git a/servers/src/org/xtreemfs/utils/DefaultDirConfig.java b/src/servers/src/org/xtreemfs/utils/DefaultDirConfig.java similarity index 100% rename from servers/src/org/xtreemfs/utils/DefaultDirConfig.java rename to src/servers/src/org/xtreemfs/utils/DefaultDirConfig.java diff --git a/servers/src/org/xtreemfs/utils/ReplicaManagement.java b/src/servers/src/org/xtreemfs/utils/ReplicaManagement.java similarity index 100% rename from servers/src/org/xtreemfs/utils/ReplicaManagement.java rename to src/servers/src/org/xtreemfs/utils/ReplicaManagement.java diff --git a/servers/src/org/xtreemfs/utils/utils.java b/src/servers/src/org/xtreemfs/utils/utils.java similarity index 100% rename from servers/src/org/xtreemfs/utils/utils.java rename to src/servers/src/org/xtreemfs/utils/utils.java diff --git a/servers/src/org/xtreemfs/utils/xtfs_cleanup_osd.java b/src/servers/src/org/xtreemfs/utils/xtfs_cleanup_osd.java similarity index 100% rename from servers/src/org/xtreemfs/utils/xtfs_cleanup_osd.java rename to src/servers/src/org/xtreemfs/utils/xtfs_cleanup_osd.java diff --git a/servers/src/org/xtreemfs/utils/xtfs_mrcdbtool.java b/src/servers/src/org/xtreemfs/utils/xtfs_mrcdbtool.java similarity index 100% rename from servers/src/org/xtreemfs/utils/xtfs_mrcdbtool.java rename to src/servers/src/org/xtreemfs/utils/xtfs_mrcdbtool.java diff --git a/servers/test/org/xtreemfs/integrationtest/ExternalIntegrationTest.java b/src/servers/test/org/xtreemfs/integrationtest/ExternalIntegrationTest.java similarity index 100% rename from servers/test/org/xtreemfs/integrationtest/ExternalIntegrationTest.java rename to src/servers/test/org/xtreemfs/integrationtest/ExternalIntegrationTest.java diff --git a/servers/test/org/xtreemfs/test/AllTests.java b/src/servers/test/org/xtreemfs/test/AllTests.java similarity index 100% rename from servers/test/org/xtreemfs/test/AllTests.java rename to src/servers/test/org/xtreemfs/test/AllTests.java diff --git a/servers/test/org/xtreemfs/test/SetupUtils.java b/src/servers/test/org/xtreemfs/test/SetupUtils.java similarity index 100% rename from servers/test/org/xtreemfs/test/SetupUtils.java rename to src/servers/test/org/xtreemfs/test/SetupUtils.java diff --git a/servers/test/org/xtreemfs/test/TestEnvironment.java b/src/servers/test/org/xtreemfs/test/TestEnvironment.java similarity index 100% rename from servers/test/org/xtreemfs/test/TestEnvironment.java rename to src/servers/test/org/xtreemfs/test/TestEnvironment.java diff --git a/servers/test/org/xtreemfs/test/common/CapabilityTest.java b/src/servers/test/org/xtreemfs/test/common/CapabilityTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/common/CapabilityTest.java rename to src/servers/test/org/xtreemfs/test/common/CapabilityTest.java diff --git a/servers/test/org/xtreemfs/test/common/RingBufferTest.java b/src/servers/test/org/xtreemfs/test/common/RingBufferTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/common/RingBufferTest.java rename to src/servers/test/org/xtreemfs/test/common/RingBufferTest.java diff --git a/servers/test/org/xtreemfs/test/common/buffer/ReusableBufferTest.java b/src/servers/test/org/xtreemfs/test/common/buffer/ReusableBufferTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/common/buffer/ReusableBufferTest.java rename to src/servers/test/org/xtreemfs/test/common/buffer/ReusableBufferTest.java diff --git a/servers/test/org/xtreemfs/test/common/checksums/ChecksumFactoryTest.java b/src/servers/test/org/xtreemfs/test/common/checksums/ChecksumFactoryTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/common/checksums/ChecksumFactoryTest.java rename to src/servers/test/org/xtreemfs/test/common/checksums/ChecksumFactoryTest.java diff --git a/servers/test/org/xtreemfs/test/common/checksums/StringChecksumAlgorithmTest.java b/src/servers/test/org/xtreemfs/test/common/checksums/StringChecksumAlgorithmTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/common/checksums/StringChecksumAlgorithmTest.java rename to src/servers/test/org/xtreemfs/test/common/checksums/StringChecksumAlgorithmTest.java diff --git a/servers/test/org/xtreemfs/test/common/striping/LocationsCacheTest.java b/src/servers/test/org/xtreemfs/test/common/striping/LocationsCacheTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/common/striping/LocationsCacheTest.java rename to src/servers/test/org/xtreemfs/test/common/striping/LocationsCacheTest.java diff --git a/servers/test/org/xtreemfs/test/common/striping/LocationsTest.java b/src/servers/test/org/xtreemfs/test/common/striping/LocationsTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/common/striping/LocationsTest.java rename to src/servers/test/org/xtreemfs/test/common/striping/LocationsTest.java diff --git a/servers/test/org/xtreemfs/test/common/striping/RAID0Test.java b/src/servers/test/org/xtreemfs/test/common/striping/RAID0Test.java similarity index 100% rename from servers/test/org/xtreemfs/test/common/striping/RAID0Test.java rename to src/servers/test/org/xtreemfs/test/common/striping/RAID0Test.java diff --git a/servers/test/org/xtreemfs/test/common/util/OutputUtilsTest.java b/src/servers/test/org/xtreemfs/test/common/util/OutputUtilsTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/common/util/OutputUtilsTest.java rename to src/servers/test/org/xtreemfs/test/common/util/OutputUtilsTest.java diff --git a/servers/test/org/xtreemfs/test/common/uuid/UUIDResolverTest.java b/src/servers/test/org/xtreemfs/test/common/uuid/UUIDResolverTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/common/uuid/UUIDResolverTest.java rename to src/servers/test/org/xtreemfs/test/common/uuid/UUIDResolverTest.java diff --git a/servers/test/org/xtreemfs/test/foundation/oncrpc/server/SimpleRPCClientTest.java b/src/servers/test/org/xtreemfs/test/foundation/oncrpc/server/SimpleRPCClientTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/foundation/oncrpc/server/SimpleRPCClientTest.java rename to src/servers/test/org/xtreemfs/test/foundation/oncrpc/server/SimpleRPCClientTest.java diff --git a/servers/test/org/xtreemfs/test/foundation/oncrpc/server/SimpleRPCServerTest.java b/src/servers/test/org/xtreemfs/test/foundation/oncrpc/server/SimpleRPCServerTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/foundation/oncrpc/server/SimpleRPCServerTest.java rename to src/servers/test/org/xtreemfs/test/foundation/oncrpc/server/SimpleRPCServerTest.java diff --git a/servers/test/org/xtreemfs/test/foundation/ssl/SSLRPCClientServerTest.java b/src/servers/test/org/xtreemfs/test/foundation/ssl/SSLRPCClientServerTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/foundation/ssl/SSLRPCClientServerTest.java rename to src/servers/test/org/xtreemfs/test/foundation/ssl/SSLRPCClientServerTest.java diff --git a/servers/test/org/xtreemfs/test/io/ByteMapperTest.java b/src/servers/test/org/xtreemfs/test/io/ByteMapperTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/io/ByteMapperTest.java rename to src/servers/test/org/xtreemfs/test/io/ByteMapperTest.java diff --git a/servers/test/org/xtreemfs/test/io/RandomAccessFileTest.java b/src/servers/test/org/xtreemfs/test/io/RandomAccessFileTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/io/RandomAccessFileTest.java rename to src/servers/test/org/xtreemfs/test/io/RandomAccessFileTest.java diff --git a/servers/test/org/xtreemfs/test/mrc/BabuDBStorageManagerTest.java b/src/servers/test/org/xtreemfs/test/mrc/BabuDBStorageManagerTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/mrc/BabuDBStorageManagerTest.java rename to src/servers/test/org/xtreemfs/test/mrc/BabuDBStorageManagerTest.java diff --git a/servers/test/org/xtreemfs/test/mrc/BufferBackedMetadataTest.java b/src/servers/test/org/xtreemfs/test/mrc/BufferBackedMetadataTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/mrc/BufferBackedMetadataTest.java rename to src/servers/test/org/xtreemfs/test/mrc/BufferBackedMetadataTest.java diff --git a/servers/test/org/xtreemfs/test/mrc/DNSSelectionPolicyTest.java b/src/servers/test/org/xtreemfs/test/mrc/DNSSelectionPolicyTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/mrc/DNSSelectionPolicyTest.java rename to src/servers/test/org/xtreemfs/test/mrc/DNSSelectionPolicyTest.java diff --git a/servers/test/org/xtreemfs/test/mrc/MRCTest.java b/src/servers/test/org/xtreemfs/test/mrc/MRCTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/mrc/MRCTest.java rename to src/servers/test/org/xtreemfs/test/mrc/MRCTest.java diff --git a/servers/test/org/xtreemfs/test/mrc/SelectionPolicyTest.java b/src/servers/test/org/xtreemfs/test/mrc/SelectionPolicyTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/mrc/SelectionPolicyTest.java rename to src/servers/test/org/xtreemfs/test/mrc/SelectionPolicyTest.java diff --git a/servers/test/org/xtreemfs/test/new_dir/DIRTest.java b/src/servers/test/org/xtreemfs/test/new_dir/DIRTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/new_dir/DIRTest.java rename to src/servers/test/org/xtreemfs/test/new_dir/DIRTest.java diff --git a/servers/test/org/xtreemfs/test/osd/CleanupTest.java b/src/servers/test/org/xtreemfs/test/osd/CleanupTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/osd/CleanupTest.java rename to src/servers/test/org/xtreemfs/test/osd/CleanupTest.java diff --git a/servers/test/org/xtreemfs/test/osd/ClientLeaseTest.java b/src/servers/test/org/xtreemfs/test/osd/ClientLeaseTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/osd/ClientLeaseTest.java rename to src/servers/test/org/xtreemfs/test/osd/ClientLeaseTest.java diff --git a/servers/test/org/xtreemfs/test/osd/CowPolicyTest.java b/src/servers/test/org/xtreemfs/test/osd/CowPolicyTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/osd/CowPolicyTest.java rename to src/servers/test/org/xtreemfs/test/osd/CowPolicyTest.java diff --git a/servers/test/org/xtreemfs/test/osd/OSDDataIntegrityTest.java b/src/servers/test/org/xtreemfs/test/osd/OSDDataIntegrityTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/osd/OSDDataIntegrityTest.java rename to src/servers/test/org/xtreemfs/test/osd/OSDDataIntegrityTest.java diff --git a/servers/test/org/xtreemfs/test/osd/OSDRangeReads.java b/src/servers/test/org/xtreemfs/test/osd/OSDRangeReads.java similarity index 100% rename from servers/test/org/xtreemfs/test/osd/OSDRangeReads.java rename to src/servers/test/org/xtreemfs/test/osd/OSDRangeReads.java diff --git a/servers/test/org/xtreemfs/test/osd/OSDTruncateTest.java b/src/servers/test/org/xtreemfs/test/osd/OSDTruncateTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/osd/OSDTruncateTest.java rename to src/servers/test/org/xtreemfs/test/osd/OSDTruncateTest.java diff --git a/servers/test/org/xtreemfs/test/osd/StorageLayoutTest.java b/src/servers/test/org/xtreemfs/test/osd/StorageLayoutTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/osd/StorageLayoutTest.java rename to src/servers/test/org/xtreemfs/test/osd/StorageLayoutTest.java diff --git a/servers/test/org/xtreemfs/test/osd/StorageStageTest.java b/src/servers/test/org/xtreemfs/test/osd/StorageStageTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/osd/StorageStageTest.java rename to src/servers/test/org/xtreemfs/test/osd/StorageStageTest.java diff --git a/servers/test/org/xtreemfs/test/osd/StripingTest.java b/src/servers/test/org/xtreemfs/test/osd/StripingTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/osd/StripingTest.java rename to src/servers/test/org/xtreemfs/test/osd/StripingTest.java diff --git a/servers/test/org/xtreemfs/test/osd/replication/ReplicationTest.java b/src/servers/test/org/xtreemfs/test/osd/replication/ReplicationTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/osd/replication/ReplicationTest.java rename to src/servers/test/org/xtreemfs/test/osd/replication/ReplicationTest.java diff --git a/servers/test/org/xtreemfs/test/osd/replication/ServiceAvailabilityTest.java b/src/servers/test/org/xtreemfs/test/osd/replication/ServiceAvailabilityTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/osd/replication/ServiceAvailabilityTest.java rename to src/servers/test/org/xtreemfs/test/osd/replication/ServiceAvailabilityTest.java diff --git a/servers/test/org/xtreemfs/test/osd/replication/TransferStrategiesTest.java b/src/servers/test/org/xtreemfs/test/osd/replication/TransferStrategiesTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/osd/replication/TransferStrategiesTest.java rename to src/servers/test/org/xtreemfs/test/osd/replication/TransferStrategiesTest.java diff --git a/servers/test/org/xtreemfs/test/scrubber/ScrubberTest.java b/src/servers/test/org/xtreemfs/test/scrubber/ScrubberTest.java similarity index 100% rename from servers/test/org/xtreemfs/test/scrubber/ScrubberTest.java rename to src/servers/test/org/xtreemfs/test/scrubber/ScrubberTest.java diff --git a/servers/xtreemos/bcprov-jdk16-139.jar b/src/servers/xtreemos/bcprov-jdk16-139.jar similarity index 100% rename from servers/xtreemos/bcprov-jdk16-139.jar rename to src/servers/xtreemos/bcprov-jdk16-139.jar diff --git a/servers/xtreemos/cdaclient.jar b/src/servers/xtreemos/cdaclient.jar similarity index 100% rename from servers/xtreemos/cdaclient.jar rename to src/servers/xtreemos/cdaclient.jar diff --git a/servers/xtreemos/org/xtreemos/XtreemOSAuthProvider.java b/src/servers/xtreemos/org/xtreemos/XtreemOSAuthProvider.java similarity index 100% rename from servers/xtreemos/org/xtreemos/XtreemOSAuthProvider.java rename to src/servers/xtreemos/org/xtreemos/XtreemOSAuthProvider.java diff --git a/tests/autotest_py/.project b/tests/autotest_py/.project deleted file mode 100644 index 19b0608c6..000000000 --- a/tests/autotest_py/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - xtreemfs-autotest - - - - - - org.python.pydev.PyDevBuilder - - - - - - org.python.pydev.pythonNature - - diff --git a/tests/autotest_py/.pydevproject b/tests/autotest_py/.pydevproject deleted file mode 100644 index f47ecb159..000000000 --- a/tests/autotest_py/.pydevproject +++ /dev/null @@ -1,7 +0,0 @@ - - - - -python 2.6 -Default - diff --git a/tests/autotest_py/autotest.py b/tests/autotest_py/autotest.py deleted file mode 100644 index a302d1f82..000000000 --- a/tests/autotest_py/autotest.py +++ /dev/null @@ -1,342 +0,0 @@ -import sys, os.path, signal, shutil, time, traceback, unittest, subprocess -from errno import * -from optparse import OptionParser -from subprocess import Popen, call - - -# Constants -# Private key passphrases -CLIENT_PKCS12_PASSPHRASE = "passphrase" -DIR_PKCS12_PASSPHRASE = "passphrase" -MRC_PKCS12_PASSPHRASE = "passphrase" -OSD_PKCS12_PASSPHRASE = "passphrase" -TRUSTED_CERTS_JKS_PASSPHRASE = "passphrase" - -# Paths -MY_DIR_PATH = os.path.dirname( os.path.abspath( sys.modules[__name__].__file__ ) ) -XTREEMFS_DIR_PATH = os.path.abspath( os.path.join( MY_DIR_PATH, "..", ".." ) ) - -CERT_DIR_PATH = os.path.abspath( os.path.join( MY_DIR_PATH, "..", "certs" ) ) -CLIENT_PKCS12_FILE_PATH = os.path.join( CERT_DIR_PATH, "Client.p12" ) -DIR_PKCS12_FILE_PATH = os.path.join( CERT_DIR_PATH, "DIR.p12" ) -MRC_PKCS12_FILE_PATH = os.path.join( CERT_DIR_PATH, "MRC.p12" ) -OSD_PKCS12_FILE_PATH = os.path.join( CERT_DIR_PATH, "OSD.p12" ) -TRUSTED_CERTS_JKS_FILE_PATH = os.path.join( CERT_DIR_PATH, "trusted.jks" ) - -CLASSPATH = ( os.path.join( XTREEMFS_DIR_PATH, "servers", "dist", "XtreemFS.jar" ), - os.path.join( XTREEMFS_DIR_PATH, "servers", "lib", "BabuDB-0.1.0-RC.jar" ) ) - -XTFS_MKVOL_FILE_PATH = os.path.join( XTREEMFS_DIR_PATH, "client", "bin", "xtfs_mkvol" + ( sys.platform.startswith( "win" ) and ".exe" or "" ) ) -XTFS_MOUNT_FILE_PATH = os.path.join( XTREEMFS_DIR_PATH, "client", "bin", "xtfs_mount" + ( sys.platform.startswith( "win" ) and ".exe" or "" ) ) - - -# Ports -DIR_HTTP_PORT = 30638 -DIR_ONCRPC_PORT = 32638 -MRC_HTTP_PORT = 30636 -MRC_ONCRPC_PORT = 32636 -OSD_HTTP_PORT = 30640 -OSD_ONCRPC_PORT = 32640 - -# Option defaults -DEBUG_LEVEL_DEFAULT = 0 -NUM_OSDS_DEFAULT = 1 -SSL_ENABLED_DEFAULT = False -STRIPE_SIZE_DEFAULT = 128 -STRIPING_POLICY_TYPE_DEFAULT = "RAID0" - - -# Singletons -original_cwd = os.getcwd() - - -def check_environment(): - if os.environ.has_key( "JAVA_HOME" ): -# JVERS=`$JAVA_HOME/bin/java -version 2>&1 | grep "java version" | \ -# cut -d " " -f 3` -# perl -e " exit 1 if ($JVERS < \"1.6.0\");" -# if [ $? -eq 1 ]; then -# echo "ERROR: java version is $JVERS but required is >= 1.6.0" -# exit 1 -# fi -# fi -# echo "java home $JAVA_HOME" - pass - else: - print "$JAVA_HOME not set, JDK/JRE 1.6 required" - return False - - for file_path in ( XTFS_MOUNT_FILE_PATH, ) + CLASSPATH: - if not os.path.exists( file_path ): - print "ERROR: %(file_path)s does not exist." % locals() - return False - - return True - - -def execute_tests( num_osds=NUM_OSDS_DEFAULT, verbose=False ): - tests_dir_path = os.path.join( MY_DIR_PATH, "tests" ) - sys.path.append( tests_dir_path ) - test_suites = {} - for file_name in os.listdir( tests_dir_path ): - if file_name.endswith( ".py" ): - test_module_name = os.path.splitext( file_name )[0] - print "Trying to import test", test_module_name - try: - test_module = __import__( test_module_name ) - except ImportError: - print "Could not import", test_module_name, "from tests" - traceback.print_exc() - continue - - if hasattr( test_module, "createTestSuite" ): - createTestSuite = getattr( test_module, "createTestSuite" ) - if verbose: - test_suite = createTestSuite( stdout=sys.stdout, stderr=sys.stderr ) - else: - test_suite = createTestSuite( stdout=subprocess.PIPE, stderr=subproces.STDOUT ) - if test_suite is not None: - test_suites[test_module_name] = test_suite - else: - print "Test module", test_module_name, "does not have a createTestSuite global function" - - test_module_names = test_suites.keys() - test_module_names.sort() - for test_module_name in test_module_names: - test_suite = test_suites[test_module_name] - for mount_point_dir_name in os.listdir( os.path.join( MY_DIR_PATH, "mnt" ) ): - mount_point_dir_path = os.path.join( MY_DIR_PATH, "mnt", mount_point_dir_name ) - print "Running", test_module_name, "in", mount_point_dir_path - test_run_dir_path = os.path.join( mount_point_dir_path, test_module_name ) - try: os.mkdir( test_run_dir_path ) - except: pass - os.chdir( test_run_dir_path ) - unittest.TextTestRunner().run( test_suite ) - os.chdir( mount_point_dir_path ) - shutil.rmtree( test_run_dir_path ) - - os.chdir( original_cwd ) - - -def generate_dir_config( debug_level=DEBUG_LEVEL_DEFAULT, ssl_enabled=SSL_ENABLED_DEFAULT ): - locals().update( globals() ) - database_dir = os.path.join( "data", "dir" ) - open( os.path.join( "config", "dir.config" ), "w+" ).write( """\ -uuid = test-env-DIR -debug_level = %(debug_level)s -listen.port = %(DIR_ONCRPC_PORT)u -http_port = %(DIR_HTTP_PORT)u -database.dir = %(database_dir)s -authentication_provider = org.xtreemfs.common.auth.NullAuthProvider -""" % locals() + _generate_ssl_config( ssl_enabled, DIR_PKCS12_FILE_PATH, DIR_PKCS12_PASSPHRASE ) ) - -def generate_mrc_config( debug_level=DEBUG_LEVEL_DEFAULT, ssl_enabled=SSL_ENABLED_DEFAULT ): - locals().update( globals() ) - database_log = os.path.join( "data", "mrc" ) - database_dir = os.path.join( "data", "mrc" ) - open( os.path.join( "config", "mrc.config" ), "w+" ).write( """\ -uuid = test-env-MRC -debug_level = %(debug_level)s -listen.port = %(MRC_ONCRPC_PORT)u -http_port = %(MRC_HTTP_PORT)u -dir_service.port = %(DIR_ONCRPC_PORT)u -dir_service.host = localhost -database.log = %(database_log)s -database.dir = %(database_dir)s -osd_check_interval = 300 -no_atime = true -no_fsync = true -local_clock_renewal = 50 -remote_time_sync = 60000 -database.checkpoint.interval = 1800000 -database.checkpoint.idle_interval = 1000 -database.checkpoint.logfile_size = 16384 -authentication_provider = org.xtreemfs.common.auth.NullAuthProvider -capability_secret = testsecret -""" % locals() + _generate_ssl_config( ssl_enabled, MRC_PKCS12_FILE_PATH, MRC_PKCS12_PASSPHRASE ) ) - -def generate_osd_config( debug_level=DEBUG_LEVEL_DEFAULT, ssl_enabled=SSL_ENABLED_DEFAULT, osdnum=1 ): - locals().update( globals() ) - listen_port = OSD_ONCRPC_PORT + int( osdnum ) - http_port = OSD_HTTP_PORT + int( osdnum ) - object_dir = os.path.join( "data", "osd" + str( osdnum ) ) - open( os.path.join( "config", "osd" + str( osdnum ) + ".config" ), "w+" ).write( """\ -uuid = test-env-OSD%(osdnum)s -debug_level = %(debug_level)s -listen.port = %(listen_port)u -http_port = %(http_port)u -dir_service.host = localhost -dir_service.port = %(DIR_ONCRPC_PORT)u -object_dir=%(object_dir)s -local_clock_renewal = 50 -remote_time_sync = 60000 -report_free_space = true -checksums.enabled = false -capability_secret = testsecret -""" % locals() + _generate_ssl_config( ssl_enabled, OSD_PKCS12_FILE_PATH, OSD_PKCS12_PASSPHRASE ) ) - -def _generate_ssl_config( ssl_enabled, pkcs12_file_path, pkcs12_passphrase ): - locals().update( globals() ) - if ssl_enabled: - return """\ -ssl.enabled = true -ssl.service_creds = %(pkcs12_file_path)s -ssl.service_creds.pw = %(pks12_passphrase)s -ssl.service_creds.container = PKCS12 -ssl.trusted_certs = %(TRUSTED_CERTS_JKS_FILE_PATH)s -ssl.trusted_certs.pw = %(TRUSTED_CERTS_JCS_PASSPHRASE)s -ssl.trusted_certs.container = JKS -""" % locals() - else: - return """\ -ssl.enabled = false -""" - - -def start_environment( debug_level=DEBUG_LEVEL_DEFAULT, num_osds=NUM_OSDS_DEFAULT, ssl_enabled=SSL_ENABLED_DEFAULT, create_volumes=True, mount_volumes=True ): - # prepare_test_directory - for subdir_name in ( "config", "data", "log", "mnt", "run" ): - if not os.path.exists( subdir_name ): - os.mkdir( subdir_name ) - - generate_dir_config( debug_level, ssl_enabled ) - generate_mrc_config( debug_level, ssl_enabled ) - for osdnum in xrange( num_osds ): - generate_osd_config( debug_level, ssl_enabled, osdnum ) - - _start_service( "dir" ) - _start_service( "mrc" ) - for osdnum in xrange( num_osds ): - _start_service( "osd", str( osdnum ) ) - - time.sleep( 1.0 ) # Wait for the servers to start - - if ssl_enabled: - client_ssl_args = ( "--pkcs12-file-path=%(CLIENT_PKCS12_FILE_PATH)s", "--pkcs12-passphrase=%(CLIENT_PKCS12_PASSPHRASE)s" ) - - if create_volumes: - for osdnum in xrange( num_osds ): - xtfs_mkvol_args = [XTFS_MKVOL_FILE_PATH] - xtfs_mkvol_args.extend( ( "-d", str( debug_level ) ) ) - if ssl_enabled: xtfs_mkvol_args.extend( client_ssl_args ) - xtfs_mkvol_args.extend( ( "-p", str( STRIPING_POLICY_TYPE_DEFAULT ) ) ) - xtfs_mkvol_args.extend( ( "-s", str( STRIPE_SIZE_DEFAULT ) ) ) - xtfs_mkvol_args.extend( ( "-w", str( osdnum + 1 ) ) ) # Stripe width - xtfs_mkvol_args.append( "localhost/test_%(osdnum)u" % locals() ) - xtfs_mkvol_args = " ".join( xtfs_mkvol_args ) - print "Creating volume test_%(osdnum)s with command line" % locals(), xtfs_mkvol_args - retcode = call( xtfs_mkvol_args, shell=True ) - if retcode != 0 and retcode != EEXIST: - print "FAILED: cannot create volume test_%(osdnum)u" % locals() - stop_environment( num_osds ) - sys.exit( 1 ) - - if mount_volumes: - for osdnum in xrange( num_osds ): - for direct_io in ( False, True ): - mount_dir_name = str( osdnum ) + ( not direct_io and "_nondirect" or "" ) - mount_dir_path = os.path.join( "mnt", mount_dir_name ) - xtfs_mount_args = [XTFS_MOUNT_FILE_PATH] - xtfs_mount_args.extend( ( "-d", str( debug_level ) ) ) - xtfs_mount_args.append( "-f" ) # So we can redirect stdout and stderr - if ssl_enabled: xtfs_mount_args.extend( client_ssl_args ) - if direct_io: xtfs_mount_args.extend( ( "-o", "direct_io" ) ) - DIR_ONCRPC_PORT = globals()["DIR_ONCRPC_PORT"] - xtfs_mount_args.append( "localhost:%(DIR_ONCRPC_PORT)s/test_%(osdnum)u" % locals() ) - xtfs_mount_args.append( mount_dir_path ) - xtfs_mount_args = " ".join( xtfs_mount_args ) - print "Mounting volume test_%(osdnum)s with command line" % locals(), xtfs_mount_args - if not os.path.exists( mount_dir_path ): os.mkdir( mount_dir_path ) - log_file_path = os.path.join( "log", "client" + mount_dir_name + ".log" ) - stderr = stdout = open( log_file_path, "a" ) - xtfs_mount_process = Popen( xtfs_mount_args, shell=True, stdout=stdout, stderr=stderr ) - - -def _start_service( service_name, service_num="" ): - args = [os.path.join( os.environ["JAVA_HOME"], "bin", "java" )] - args.append( "-ea" ) # Enable assertions - args.extend( ( "-cp", "" + ( sys.platform.startswith( "win" ) and ";".join( CLASSPATH ) or ":".join( CLASSPATH ) ) + "", ) ) - args.append( "org.xtreemfs." + service_name + "." + service_name.upper() ) # Class name - args.append( os.path.join( "config", service_name + service_num + ".config" ) ) # Configuration file - args = " ".join( args ) - log_file_path = os.path.join( "log", service_name + service_num + ".log" ) - stderr = stdout = open( log_file_path, "a" ) - print "Starting", service_name.upper() + service_num, "service with command line", args, "and redirecting output to", log_file_path - p = Popen( args, shell=True, stdout=stdout, stderr=stderr ) - time.sleep( 2.0 ) - open( os.path.join( "run", service_name + service_num + ".run" ), "w+" ).write( str( p.pid ) ) - - -def stop_environment( num_osds=NUM_OSDS_DEFAULT ): - for osdnum in xrange( num_osds ): - _stop_service( "osd", str( osdnum ) ) - _stop_service( "mrc" ) - _stop_service( "dir" ) # Stop the DIR last so the other services can deregister - - mnt_dir_path = os.path.abspath( "mnt" ) - for mounts_line in open( "/proc/mounts" ).readlines(): - mounts_line_parts = mounts_line.split() - device = mounts_line_parts[0] - mount_point_dir_path = mounts_line_parts[1] - if device == "/dev/fuse" and mount_point_dir_path.startswith( mnt_dir_path ): - fusermount_args = " ".join( ["fusermount", "-u", mount_point_dir_path] ) - print "Unmounting volume with", fusermount_args - call( fusermount_args, shell=True ) - -def _stop_service( service_name, service_num="" ): - run_file_path = os.path.join( "run", service_name + service_num + ".run" ) - if os.path.exists( run_file_path ): - service_pid = int( open( run_file_path ).read().strip() ) - print "Stopping", service_name.upper() + service_num, "service with PID", service_pid - if sys.platform.startswith( "win" ): - call( "TASKKILL /PID %(service_pid)u /F /T" % locals() ) - else: - try: - os.kill( service_pid, signal.SIGTERM ) - except: - traceback.print_exc() - os.unlink( run_file_path ) - else: - print "ERROR:", run_file_path, "does not exist,", service_name.upper(), "service is not running." - - -if __name__ == "__main__": - if not check_environment(): - sys.exit( 1 ) - - - option_parser = OptionParser() - option_parser.add_option( "-d", action="store", dest="debug_level", default=DEBUG_LEVEL_DEFAULT ) - option_parser.add_option( "--execute_tests", action="store_true", dest="execute_tests" ) - option_parser.add_option( "-m", action="store_true", dest="disable_create_volumes" ) - option_parser.add_option( "-n", action="store_true", dest="disable_mount_volumes" ) - option_parser.add_option( "-o", action="store", dest="num_osds", type="int", default=NUM_OSDS_DEFAULT ) - option_parser.add_option( "--start", action="store_true", dest="start_environment" ) - option_parser.add_option( "--start_environment", action="store_true", dest="start_environment" ) - option_parser.add_option( "--stop", action="store_true", dest="stop_environment" ) - option_parser.add_option( "--stop_environment", action="store_true", dest="stop_environment" ) - option_parser.add_option( "-s", action="store_true", dest="ssl_enabled", default=SSL_ENABLED_DEFAULT ) - option_parser.add_option( "--test", action="store_true", dest="execute_tests" ) - option_parser.add_option( "-v", "--verbose", action="store_true", dest="verbose" ) - options, ignore = option_parser.parse_args() - - - if options.execute_tests: - execute_tests( verbose=options.verboses ) - elif options.stop_environment: - stop_environment() - else: - stop_environment() - start_environment( debug_level=options.debug_level, ssl_enabled=options.ssl_enabled, num_osds=options.num_osds, create_volumes=not options.disable_create_volumes, mount_volumes=not options.disable_mount_volumes ) - time.sleep( 1.0 ) # Wait for clients and servers to start up - if not options.start_environment: # i.e. no options were specified - try: - execute_tests( num_osds=options.num_osds, verbose=options.verbose ) - except KeyboardInterrupt: - pass - except: - traceback.print_exc() - os.chdir( original_cwd ) - stop_environment() - - -- GitLab From 2f23d75d068551e86e1668708ed0457336a25e0f Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 13:45:21 +0000 Subject: [PATCH 23/97] /: rearranging directories git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@612 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- {interfaces => src/interfaces}/constants.idl | 0 {interfaces => src/interfaces}/dir_interface.idl | 0 {interfaces => src/interfaces}/exceptions.idl | 0 {interfaces => src/interfaces}/mrc_interface.idl | 0 {interfaces => src/interfaces}/mrc_osd_types.idl | 0 {interfaces => src/interfaces}/osd_interface.idl | 0 {interfaces => src/interfaces}/types.idl | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename {interfaces => src/interfaces}/constants.idl (100%) rename {interfaces => src/interfaces}/dir_interface.idl (100%) rename {interfaces => src/interfaces}/exceptions.idl (100%) rename {interfaces => src/interfaces}/mrc_interface.idl (100%) rename {interfaces => src/interfaces}/mrc_osd_types.idl (100%) rename {interfaces => src/interfaces}/osd_interface.idl (100%) rename {interfaces => src/interfaces}/types.idl (100%) diff --git a/interfaces/constants.idl b/src/interfaces/constants.idl similarity index 100% rename from interfaces/constants.idl rename to src/interfaces/constants.idl diff --git a/interfaces/dir_interface.idl b/src/interfaces/dir_interface.idl similarity index 100% rename from interfaces/dir_interface.idl rename to src/interfaces/dir_interface.idl diff --git a/interfaces/exceptions.idl b/src/interfaces/exceptions.idl similarity index 100% rename from interfaces/exceptions.idl rename to src/interfaces/exceptions.idl diff --git a/interfaces/mrc_interface.idl b/src/interfaces/mrc_interface.idl similarity index 100% rename from interfaces/mrc_interface.idl rename to src/interfaces/mrc_interface.idl diff --git a/interfaces/mrc_osd_types.idl b/src/interfaces/mrc_osd_types.idl similarity index 100% rename from interfaces/mrc_osd_types.idl rename to src/interfaces/mrc_osd_types.idl diff --git a/interfaces/osd_interface.idl b/src/interfaces/osd_interface.idl similarity index 100% rename from interfaces/osd_interface.idl rename to src/interfaces/osd_interface.idl diff --git a/interfaces/types.idl b/src/interfaces/types.idl similarity index 100% rename from interfaces/types.idl rename to src/interfaces/types.idl -- GitLab From 5a48c2e3f48ecffc085cb66df89798ee8ae585f5 Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 13:47:35 +0000 Subject: [PATCH 24/97] interfaces: moving everything into subdirectories to reflect namespaces git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@613 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- src/interfaces/{ => org/xtreemfs/interfaces}/constants.idl | 0 src/interfaces/{ => org/xtreemfs/interfaces}/dir_interface.idl | 0 src/interfaces/{ => org/xtreemfs/interfaces}/exceptions.idl | 0 src/interfaces/{ => org/xtreemfs/interfaces}/mrc_interface.idl | 0 src/interfaces/{ => org/xtreemfs/interfaces}/mrc_osd_types.idl | 0 src/interfaces/{ => org/xtreemfs/interfaces}/osd_interface.idl | 0 src/interfaces/{ => org/xtreemfs/interfaces}/types.idl | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename src/interfaces/{ => org/xtreemfs/interfaces}/constants.idl (100%) rename src/interfaces/{ => org/xtreemfs/interfaces}/dir_interface.idl (100%) rename src/interfaces/{ => org/xtreemfs/interfaces}/exceptions.idl (100%) rename src/interfaces/{ => org/xtreemfs/interfaces}/mrc_interface.idl (100%) rename src/interfaces/{ => org/xtreemfs/interfaces}/mrc_osd_types.idl (100%) rename src/interfaces/{ => org/xtreemfs/interfaces}/osd_interface.idl (100%) rename src/interfaces/{ => org/xtreemfs/interfaces}/types.idl (100%) diff --git a/src/interfaces/constants.idl b/src/interfaces/org/xtreemfs/interfaces/constants.idl similarity index 100% rename from src/interfaces/constants.idl rename to src/interfaces/org/xtreemfs/interfaces/constants.idl diff --git a/src/interfaces/dir_interface.idl b/src/interfaces/org/xtreemfs/interfaces/dir_interface.idl similarity index 100% rename from src/interfaces/dir_interface.idl rename to src/interfaces/org/xtreemfs/interfaces/dir_interface.idl diff --git a/src/interfaces/exceptions.idl b/src/interfaces/org/xtreemfs/interfaces/exceptions.idl similarity index 100% rename from src/interfaces/exceptions.idl rename to src/interfaces/org/xtreemfs/interfaces/exceptions.idl diff --git a/src/interfaces/mrc_interface.idl b/src/interfaces/org/xtreemfs/interfaces/mrc_interface.idl similarity index 100% rename from src/interfaces/mrc_interface.idl rename to src/interfaces/org/xtreemfs/interfaces/mrc_interface.idl diff --git a/src/interfaces/mrc_osd_types.idl b/src/interfaces/org/xtreemfs/interfaces/mrc_osd_types.idl similarity index 100% rename from src/interfaces/mrc_osd_types.idl rename to src/interfaces/org/xtreemfs/interfaces/mrc_osd_types.idl diff --git a/src/interfaces/osd_interface.idl b/src/interfaces/org/xtreemfs/interfaces/osd_interface.idl similarity index 100% rename from src/interfaces/osd_interface.idl rename to src/interfaces/org/xtreemfs/interfaces/osd_interface.idl diff --git a/src/interfaces/types.idl b/src/interfaces/org/xtreemfs/interfaces/types.idl similarity index 100% rename from src/interfaces/types.idl rename to src/interfaces/org/xtreemfs/interfaces/types.idl -- GitLab From 8e5adb5fd9ea2881c5569f8a59fa1f2f21d81261 Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 13:50:52 +0000 Subject: [PATCH 25/97] servers: deleting empty directories, moving init.d scripts down to etc/ git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@614 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- {src/servers/init.d-scripts => etc/init.d}/xtreemfs-dir | 0 {src/servers/init.d-scripts => etc/init.d}/xtreemfs-mrc | 0 {src/servers/init.d-scripts => etc/init.d}/xtreemfs-osd | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename {src/servers/init.d-scripts => etc/init.d}/xtreemfs-dir (100%) rename {src/servers/init.d-scripts => etc/init.d}/xtreemfs-mrc (100%) rename {src/servers/init.d-scripts => etc/init.d}/xtreemfs-osd (100%) diff --git a/src/servers/init.d-scripts/xtreemfs-dir b/etc/init.d/xtreemfs-dir similarity index 100% rename from src/servers/init.d-scripts/xtreemfs-dir rename to etc/init.d/xtreemfs-dir diff --git a/src/servers/init.d-scripts/xtreemfs-mrc b/etc/init.d/xtreemfs-mrc similarity index 100% rename from src/servers/init.d-scripts/xtreemfs-mrc rename to etc/init.d/xtreemfs-mrc diff --git a/src/servers/init.d-scripts/xtreemfs-osd b/etc/init.d/xtreemfs-osd similarity index 100% rename from src/servers/init.d-scripts/xtreemfs-osd rename to etc/init.d/xtreemfs-osd -- GitLab From 0f1950ab9fae27f833777d34e778313bda8155c7 Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 13:52:25 +0000 Subject: [PATCH 26/97] servers: deleting empty init.d-scripts directory git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@615 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 -- GitLab From 3859358bcec222f3e60c3fbac277c26cfbeb2d9a Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 13:55:25 +0000 Subject: [PATCH 27/97] servers: moving contents of config/ to etc/xos/xtreemfs git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@616 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- {src/servers/config => etc/xos/xtreemfs}/default_dir | 0 {src/servers/config => etc/xos/xtreemfs}/dirconfig.properties | 0 {src/servers/config => etc/xos/xtreemfs}/dirconfig.ssl_test | 0 {src/servers/config => etc/xos/xtreemfs}/dirconfig.test | 0 {src/servers/config => etc/xos/xtreemfs}/mrcconfig.properties | 0 {src/servers/config => etc/xos/xtreemfs}/mrcconfig.ssl_test | 0 {src/servers/config => etc/xos/xtreemfs}/mrcconfig.test | 0 {src/servers/config => etc/xos/xtreemfs}/osdconfig.properties | 0 {src/servers/config => etc/xos/xtreemfs}/osdconfig.ssl_test | 0 {src/servers/config => etc/xos/xtreemfs}/osdconfig.test | 0 {src/servers/config => etc/xos/xtreemfs}/osdconfig2.test | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename {src/servers/config => etc/xos/xtreemfs}/default_dir (100%) rename {src/servers/config => etc/xos/xtreemfs}/dirconfig.properties (100%) rename {src/servers/config => etc/xos/xtreemfs}/dirconfig.ssl_test (100%) rename {src/servers/config => etc/xos/xtreemfs}/dirconfig.test (100%) rename {src/servers/config => etc/xos/xtreemfs}/mrcconfig.properties (100%) rename {src/servers/config => etc/xos/xtreemfs}/mrcconfig.ssl_test (100%) rename {src/servers/config => etc/xos/xtreemfs}/mrcconfig.test (100%) rename {src/servers/config => etc/xos/xtreemfs}/osdconfig.properties (100%) rename {src/servers/config => etc/xos/xtreemfs}/osdconfig.ssl_test (100%) rename {src/servers/config => etc/xos/xtreemfs}/osdconfig.test (100%) rename {src/servers/config => etc/xos/xtreemfs}/osdconfig2.test (100%) diff --git a/src/servers/config/default_dir b/etc/xos/xtreemfs/default_dir similarity index 100% rename from src/servers/config/default_dir rename to etc/xos/xtreemfs/default_dir diff --git a/src/servers/config/dirconfig.properties b/etc/xos/xtreemfs/dirconfig.properties similarity index 100% rename from src/servers/config/dirconfig.properties rename to etc/xos/xtreemfs/dirconfig.properties diff --git a/src/servers/config/dirconfig.ssl_test b/etc/xos/xtreemfs/dirconfig.ssl_test similarity index 100% rename from src/servers/config/dirconfig.ssl_test rename to etc/xos/xtreemfs/dirconfig.ssl_test diff --git a/src/servers/config/dirconfig.test b/etc/xos/xtreemfs/dirconfig.test similarity index 100% rename from src/servers/config/dirconfig.test rename to etc/xos/xtreemfs/dirconfig.test diff --git a/src/servers/config/mrcconfig.properties b/etc/xos/xtreemfs/mrcconfig.properties similarity index 100% rename from src/servers/config/mrcconfig.properties rename to etc/xos/xtreemfs/mrcconfig.properties diff --git a/src/servers/config/mrcconfig.ssl_test b/etc/xos/xtreemfs/mrcconfig.ssl_test similarity index 100% rename from src/servers/config/mrcconfig.ssl_test rename to etc/xos/xtreemfs/mrcconfig.ssl_test diff --git a/src/servers/config/mrcconfig.test b/etc/xos/xtreemfs/mrcconfig.test similarity index 100% rename from src/servers/config/mrcconfig.test rename to etc/xos/xtreemfs/mrcconfig.test diff --git a/src/servers/config/osdconfig.properties b/etc/xos/xtreemfs/osdconfig.properties similarity index 100% rename from src/servers/config/osdconfig.properties rename to etc/xos/xtreemfs/osdconfig.properties diff --git a/src/servers/config/osdconfig.ssl_test b/etc/xos/xtreemfs/osdconfig.ssl_test similarity index 100% rename from src/servers/config/osdconfig.ssl_test rename to etc/xos/xtreemfs/osdconfig.ssl_test diff --git a/src/servers/config/osdconfig.test b/etc/xos/xtreemfs/osdconfig.test similarity index 100% rename from src/servers/config/osdconfig.test rename to etc/xos/xtreemfs/osdconfig.test diff --git a/src/servers/config/osdconfig2.test b/etc/xos/xtreemfs/osdconfig2.test similarity index 100% rename from src/servers/config/osdconfig2.test rename to etc/xos/xtreemfs/osdconfig2.test -- GitLab From c09734c296712ab5b5ef7d76e82a10df3a0123ae Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 13:56:15 +0000 Subject: [PATCH 28/97] servers: deleting empty config directory git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@617 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 -- GitLab From 82378fd1b351de6c3a360e32aabdabf3afa6f827 Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 14:16:26 +0000 Subject: [PATCH 29/97] client: regenerating projects, fixing paths git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@618 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- Makefile | 49 ++-------- bin/generate_xtreemfs_java.py | 7 +- src/client/generate_src_and_proj.bat | 22 ++--- .../google-breakpad.SConscript | 8 +- .../google-breakpad_linux.SConscript | 8 +- .../client/org_xtreemfs_client_test_main.cpp | 1 - .../xtreemfs/client/xos_ams_flog.SConscript | 8 +- .../org/xtreemfs/client/xtfs_fuzz.SConscript | 10 +- .../proj/org/xtreemfs/client/xtfs_fuzz.vcproj | 12 +-- .../org/xtreemfs/client/xtfs_lsvol.SConscript | 10 +- .../org/xtreemfs/client/xtfs_lsvol.vcproj | 12 +-- .../org/xtreemfs/client/xtfs_mkvol.SConscript | 10 +- .../org/xtreemfs/client/xtfs_mkvol.vcproj | 12 +-- .../org/xtreemfs/client/xtfs_mount.SConscript | 10 +- .../org/xtreemfs/client/xtfs_mount.vcproj | 12 +-- .../org/xtreemfs/client/xtfs_rmvol.SConscript | 10 +- .../org/xtreemfs/client/xtfs_rmvol.vcproj | 12 +-- .../org/xtreemfs/client/xtfs_send.SConscript | 10 +- .../proj/org/xtreemfs/client/xtfs_send.vcproj | 12 +-- .../org/xtreemfs/client/xtfs_stat.SConscript | 10 +- .../proj/org/xtreemfs/client/xtfs_stat.vcproj | 12 +-- .../client/xtreemfs-client-lib.SConscript | 8 +- .../client/xtreemfs-client-lib.vcproj | 98 ------------------- .../xtreemfs-client-lib_test.SConscript | 8 +- src/client/src/org/xtreemfs/client/main.h | 16 +-- .../org/xtreemfs/client/policy_container.h | 4 +- 26 files changed, 141 insertions(+), 250 deletions(-) diff --git a/Makefile b/Makefile index 2fe4d8a7f..241f36351 100644 --- a/Makefile +++ b/Makefile @@ -12,11 +12,11 @@ endif WHICH_GPP = $(shell which g++) -TARGETS = client server post_make_message +TARGETS = client server .PHONY: clean distclean # Some toplevel configuration -XTFS_BINDIR = $(shell pwd)/client/bin +XTFS_BINDIR = $(shell pwd)/bin export XTFS_BINDIR all: check $(TARGETS) @@ -41,49 +41,16 @@ check: .PHONY: client client_clean client_distclean client: - python client/scons.py -C client + python src/client/scons.py -C src/client client_clean: - python client/scons.py -C client -c + python src/client/scons.py -C src/client -c client_distclean: - python client/scons.py -C client -c + python src/client/scons.py -C src/client -c .PHONY: server server_clean server_distclean server: check - $(ANT_BIN) -f servers/build.xml jar + $(ANT_BIN) -f src/servers/build.xml jar server_clean: check - $(ANT_BIN) -f servers/build.xml clean || exit 1; + $(ANT_BIN) -f src/servers/build.xml clean || exit 1; server_distclean: check - $(ANT_BIN) -f servers/build.xml clean || exit 1; - -post_make_message: - @echo "" - @echo "All components have been built successfully." - @echo "The directories contain the following:" - @echo "" - @echo "server:" - @echo " servers/bin - server tools" - @echo " servers/config - default config files" - @echo " servers/init.d-scrpts - init-d scripts to run the servers" - @echo " servers/lib - thirdparty libraries" - @echo " servers/man - man pages for the server tools" - @echo " servers/src - source code" - @echo "" - @echo " *** To run the servers, please make sure that Java 1.6" - @echo " or newer is available. ***" - @echo "client:" - @echo " client/bin - client tools" - @echo " client/include - include headers" - @echo " client/lib - thirdparty libraries" - @echo " client/man - man pages for client tools" - @echo " client/proj - build and project files" - @echo " client/src - source code" - @echo "misc:" - @echo " interfaces - interfaces for client/server and" - @echo " server/server communication" - @echo " tests - test suite for automated testing" - @echo " utils/bin - additional client utilities" - @echo " utils/man - additional client tool man pages" - -post_make_message_clean: - -post_make_message_distclean: \ No newline at end of file + $(ANT_BIN) -f src/servers/build.xml clean || exit 1; diff --git a/bin/generate_xtreemfs_java.py b/bin/generate_xtreemfs_java.py index 5f35e6037..b8a2bccf5 100755 --- a/bin/generate_xtreemfs_java.py +++ b/bin/generate_xtreemfs_java.py @@ -326,9 +326,10 @@ class XtreemFSJavaTarget(JavaTarget): pass if __name__ == "__main__": import sys, os.path - if len( sys.argv ) == 1: + if len( sys.argv ) == 1: my_dir_path = os.path.dirname( os.path.abspath( sys.modules[__name__].__file__ ) ) - sys.argv.extend( ( "-i", os.path.abspath( os.path.join( my_dir_path, "..", "..", "interfaces" ) ), - "-o", os.path.abspath( os.path.join( my_dir_path, "..", "src" ) ) ) ) + os.chdir( os.path.join( my_dir_path, "..", "src", "servers" ) ) + sys.argv.extend( ( "-i", os.path.abspath( os.path.join( my_dir_path, "..", "src", "interfaces" ) ), + "-o", os.path.abspath( os.path.join( my_dir_path, "..", "src", "servers", "src" ) ) ) ) generator_main( XtreemFSJavaTarget ) diff --git a/src/client/generate_src_and_proj.bat b/src/client/generate_src_and_proj.bat index acff86f15..b6d8454cf 100644 --- a/src/client/generate_src_and_proj.bat +++ b/src/client/generate_src_and_proj.bat @@ -4,7 +4,7 @@ set GOOGLE_BREAKPAD_PATH=%CD%\share\google-breakpad set GOOGLE_BREAKPAD_COMMON_SOURCE_FLAGS=-s %XTREEMFS_CLIENT_PATH%\share\google-breakpad\src -e google_breakpad -I %XTREEMFS_CLIENT_PATH%\share\google-breakpad\src set GOOGLE_BREAKPAD_WINDOWS_SOURCE_FLAGS=%GOOGLE_BREAKPAD_COMMON_SOURCE_FLAGS% -e linux -e mac -e solaris -e minidump_file_writer* -e md5.* set GOOGLE_BREAKPAD_LINUX_SOURCE_FLAGS=%GOOGLE_BREAKPAD_COMMON_SOURCE_FLAGS% -e windows -e mac -e solaris -set XTREEMFS_PATH=%CD%\.. +set XTREEMFS_PATH=%CD%\..\.. set XTREEMFS_CLIENT_PATH=%CD% set YIELDFS_PATH=%XTREEMFS_CLIENT_PATH%\share\yieldfs set YIELD_PATH=%YIELDFS_PATH%\share\yield @@ -20,12 +20,10 @@ set DEPEND_XTREEMFS_CLIENT_FLAGS=-I %XTREEMFS_CLIENT_PATH%\include -L %XTREEMFS_ REM Generate source REM Don't include share\* in the scan here -python %YIELD_PATH%\bin\generate_yield_cpp.py -i %XTREEMFS_PATH%\interfaces -o %XTREEMFS_CLIENT_PATH%\include\org\xtreemfs\interfaces -python %YIELD_PATH%\bin\generate_yield_cpp.py -i %XTREEMFS_CLIENT_PATH%\include -o %XTREEMFS_CLIENT_PATH%\include -python %YIELD_PATH%\bin\generate_yield_cpp.py -i %XTREEMFS_CLIENT_PATH%\src -o %XTREEMFS_CLIENT_PATH%\src +python %YIELD_PATH%\bin\generate_yield_cpp.py -i %XTREEMFS_PATH%\src\interfaces -o %XTREEMFS_CLIENT_PATH%\include\org\xtreemfs\interfaces python %YIELD_PATH%\bin\generate_test_main_cpp.py python %YIELD_PATH%\bin\format_src.py -n "XtreemFS" -l "GPLv2" -s %XTREEMFS_CLIENT_PATH%\include -s %XTREEMFS_CLIENT_PATH%\proj -s %XTREEMFS_CLIENT_PATH%\src -python %XTREEMFS_CLIENT_PATH%\bin\generate_xtreemfs_fuzzer_cpp.py -i %XTREEMFS_PATH%\interfaces -o %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client +REM python %XTREEMFS_PATH%\bin\generate_xtreemfs_fuzzer_cpp.py -i %XTREEMFS_PATH%\interfaces -o %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client REM Generate project files @@ -35,13 +33,13 @@ python %YIELD_PATH%\bin\generate_proj.py -n xtreemfs-client-lib -t lib -s %XTREE python %YIELD_PATH%\bin\generate_proj.py -n xtreemfs-client-lib_test -t exe -s %XTREEMFS_CLIENT_PATH%\proj\org\xtreemfs\client\org_xtreemfs_client_test_main.cpp -s "%XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\*_test.cpp" -c xtreemfs-client-lib.SConscript -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_XTREEMFS_CLIENT_FLAGS% REM Binary projects -python %YIELD_PATH%\bin\generate_proj.py -n xtfs_fuzz -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_fuzz.cpp -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\*_fuzzer.h -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_XTREEMFS_CLIENT_FLAGS% -python %YIELD_PATH%\bin\generate_proj.py -n xtfs_lsvol -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_lsvol.cpp -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% -python %YIELD_PATH%\bin\generate_proj.py -n xtfs_mount -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_mount.cpp -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\main.h -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% -python %YIELD_PATH%\bin\generate_proj.py -n xtfs_mkvol -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_mkvol.cpp -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% -python %YIELD_PATH%\bin\generate_proj.py -n xtfs_rmvol -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_rmvol.cpp -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% -python %YIELD_PATH%\bin\generate_proj.py -n xtfs_send -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_send.cpp -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% -python %YIELD_PATH%\bin\generate_proj.py -n xtfs_stat -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_stat.cpp -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% +python %YIELD_PATH%\bin\generate_proj.py -n xtfs_fuzz -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_fuzz.cpp -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\*_fuzzer.h -o %XTREEMFS_PATH%\bin %DEPEND_XTREEMFS_CLIENT_FLAGS% +python %YIELD_PATH%\bin\generate_proj.py -n xtfs_lsvol -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_lsvol.cpp -o %XTREEMFS_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% +python %YIELD_PATH%\bin\generate_proj.py -n xtfs_mount -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_mount.cpp -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\main.h -o %XTREEMFS_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% +python %YIELD_PATH%\bin\generate_proj.py -n xtfs_mkvol -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_mkvol.cpp -o %XTREEMFS_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% +python %YIELD_PATH%\bin\generate_proj.py -n xtfs_rmvol -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_rmvol.cpp -o %XTREEMFS_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% +python %YIELD_PATH%\bin\generate_proj.py -n xtfs_send -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_send.cpp -o %XTREEMFS_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% +python %YIELD_PATH%\bin\generate_proj.py -n xtfs_stat -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_stat.cpp -o %XTREEMFS_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% REM Policy projects python %YIELD_PATH%\bin\generate_proj.py -n xos_ams_flog -t dll -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xos_ams_flog.c -I %XTREEMFS_CLIENT_PATH%\include --lu xos_ams -o %XTREEMFS_CLIENT_PATH%\lib diff --git a/src/client/proj/google-breakpad/google-breakpad.SConscript b/src/client/proj/google-breakpad/google-breakpad.SConscript index 438f9b84b..1f3a46310 100644 --- a/src/client/proj/google-breakpad/google-breakpad.SConscript +++ b/src/client/proj/google-breakpad/google-breakpad.SConscript @@ -23,7 +23,7 @@ except: if not "advapi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "advapi32.lib" ) if not "gdi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "gdi32.lib" ) else: - build_env["CCFLAGS"] += " -fPIC -Wall -Wunused-macros " # -fPIC (Platform Independent Code) to compile a library as part of a shared object + build_env["CCFLAGS"] += " -Wall -Wunused-macros " if sys.platform == "linux2": build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " build_env["LIBS"].extend( ( "pthread", "util", "dl", "rt", "stdc++" ) ) @@ -39,10 +39,12 @@ except: build_env["CCFLAGS"] += "-fno-rtti -Dupgrade_the_compiler_to_use_STL=1 -D_REENTRANT " build_env["LIBS"].extend( ( "stdc++", "m", "socket", "nsl", "kstat", "rt", "iconv", "cpc" ) ) - if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " - else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "coverage", 0 ): build_env["CCFLAGS"] += "-pg --coverage "; build_env["LINKFLAGS"] += "-pg --coverage " if ARGUMENTS.get( "profile-cpu", 0 ): build_env["CCFLAGS"] += "-pg "; build_env["LINKFLAGS"] += "-pg " if ARGUMENTS.get( "profile-heap", 0 ): build_env["CCFLAGS"] += "-fno-omit-frame-pointer "; build_env["LIBS"].append( "tcmalloc" ) + if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " + else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "shared", 0 ): build_env["CCFLAGS"] += "-fPIC " build_env["CPPPATH"] = list( set( [os.path.abspath( include_dir_path ) for include_dir_path in include_dir_paths] ) ) build_env["LIBPATH"] = list( set( [os.path.abspath( lib_dir_path ) for lib_dir_path in lib_dir_paths] ) ) diff --git a/src/client/proj/google-breakpad/google-breakpad_linux.SConscript b/src/client/proj/google-breakpad/google-breakpad_linux.SConscript index 8c4a7bd7f..8c0f62e5a 100644 --- a/src/client/proj/google-breakpad/google-breakpad_linux.SConscript +++ b/src/client/proj/google-breakpad/google-breakpad_linux.SConscript @@ -23,7 +23,7 @@ except: if not "advapi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "advapi32.lib" ) if not "gdi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "gdi32.lib" ) else: - build_env["CCFLAGS"] += " -fPIC -Wall -Wunused-macros " # -fPIC (Platform Independent Code) to compile a library as part of a shared object + build_env["CCFLAGS"] += " -Wall -Wunused-macros " if sys.platform == "linux2": build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " build_env["LIBS"].extend( ( "pthread", "util", "dl", "rt", "stdc++" ) ) @@ -39,10 +39,12 @@ except: build_env["CCFLAGS"] += "-fno-rtti -Dupgrade_the_compiler_to_use_STL=1 -D_REENTRANT " build_env["LIBS"].extend( ( "stdc++", "m", "socket", "nsl", "kstat", "rt", "iconv", "cpc" ) ) - if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " - else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "coverage", 0 ): build_env["CCFLAGS"] += "-pg --coverage "; build_env["LINKFLAGS"] += "-pg --coverage " if ARGUMENTS.get( "profile-cpu", 0 ): build_env["CCFLAGS"] += "-pg "; build_env["LINKFLAGS"] += "-pg " if ARGUMENTS.get( "profile-heap", 0 ): build_env["CCFLAGS"] += "-fno-omit-frame-pointer "; build_env["LIBS"].append( "tcmalloc" ) + if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " + else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "shared", 0 ): build_env["CCFLAGS"] += "-fPIC " build_env["CPPPATH"] = list( set( [os.path.abspath( include_dir_path ) for include_dir_path in include_dir_paths] ) ) build_env["LIBPATH"] = list( set( [os.path.abspath( lib_dir_path ) for lib_dir_path in lib_dir_paths] ) ) diff --git a/src/client/proj/org/xtreemfs/client/org_xtreemfs_client_test_main.cpp b/src/client/proj/org/xtreemfs/client/org_xtreemfs_client_test_main.cpp index f458ada5a..cfc0242ff 100644 --- a/src/client/proj/org/xtreemfs/client/org_xtreemfs_client_test_main.cpp +++ b/src/client/proj/org/xtreemfs/client/org_xtreemfs_client_test_main.cpp @@ -2,7 +2,6 @@ // This source comes from the XtreemFS project. It is licensed under the GPLv2 (see COPYING for terms and conditions). #include "yield/main.h" -#include "yield/platform/yunit.h" extern YIELD::TestSuite& FileTestSuite(); diff --git a/src/client/proj/org/xtreemfs/client/xos_ams_flog.SConscript b/src/client/proj/org/xtreemfs/client/xos_ams_flog.SConscript index 0dd44ac02..2ab1c51f9 100644 --- a/src/client/proj/org/xtreemfs/client/xos_ams_flog.SConscript +++ b/src/client/proj/org/xtreemfs/client/xos_ams_flog.SConscript @@ -23,7 +23,7 @@ except: if not "advapi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "advapi32.lib" ) if not "gdi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "gdi32.lib" ) else: - build_env["CCFLAGS"] += " -fPIC -Wall -Wunused-macros " # -fPIC (Platform Independent Code) to compile a library as part of a shared object + build_env["CCFLAGS"] += " -Wall -Wunused-macros " if sys.platform == "linux2": build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " build_env["LIBS"].extend( ( "pthread", "util", "dl", "rt", "stdc++" ) ) @@ -39,10 +39,12 @@ except: build_env["CCFLAGS"] += "-fno-rtti -Dupgrade_the_compiler_to_use_STL=1 -D_REENTRANT " build_env["LIBS"].extend( ( "stdc++", "m", "socket", "nsl", "kstat", "rt", "iconv", "cpc" ) ) - if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " - else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "coverage", 0 ): build_env["CCFLAGS"] += "-pg --coverage "; build_env["LINKFLAGS"] += "-pg --coverage " if ARGUMENTS.get( "profile-cpu", 0 ): build_env["CCFLAGS"] += "-pg "; build_env["LINKFLAGS"] += "-pg " if ARGUMENTS.get( "profile-heap", 0 ): build_env["CCFLAGS"] += "-fno-omit-frame-pointer "; build_env["LIBS"].append( "tcmalloc" ) + if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " + else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "shared", 0 ): build_env["CCFLAGS"] += "-fPIC " build_env["CPPPATH"] = list( set( [os.path.abspath( include_dir_path ) for include_dir_path in include_dir_paths] ) ) build_env["LIBPATH"] = list( set( [os.path.abspath( lib_dir_path ) for lib_dir_path in lib_dir_paths] ) ) diff --git a/src/client/proj/org/xtreemfs/client/xtfs_fuzz.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_fuzz.SConscript index 11658ae2e..52465451a 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_fuzz.SConscript +++ b/src/client/proj/org/xtreemfs/client/xtfs_fuzz.SConscript @@ -25,7 +25,7 @@ except: if not "advapi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "advapi32.lib" ) if not "gdi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "gdi32.lib" ) else: - build_env["CCFLAGS"] += " -fPIC -Wall -Wunused-macros " # -fPIC (Platform Independent Code) to compile a library as part of a shared object + build_env["CCFLAGS"] += " -Wall -Wunused-macros " if sys.platform == "linux2": build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " build_env["LIBS"].extend( ( "pthread", "util", "dl", "rt", "stdc++" ) ) @@ -41,10 +41,12 @@ except: build_env["CCFLAGS"] += "-fno-rtti -Dupgrade_the_compiler_to_use_STL=1 -D_REENTRANT " build_env["LIBS"].extend( ( "stdc++", "m", "socket", "nsl", "kstat", "rt", "iconv", "cpc" ) ) - if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " - else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "coverage", 0 ): build_env["CCFLAGS"] += "-pg --coverage "; build_env["LINKFLAGS"] += "-pg --coverage " if ARGUMENTS.get( "profile-cpu", 0 ): build_env["CCFLAGS"] += "-pg "; build_env["LINKFLAGS"] += "-pg " if ARGUMENTS.get( "profile-heap", 0 ): build_env["CCFLAGS"] += "-fno-omit-frame-pointer "; build_env["LIBS"].append( "tcmalloc" ) + if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " + else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "shared", 0 ): build_env["CCFLAGS"] += "-fPIC " build_env["CPPPATH"] = list( set( [os.path.abspath( include_dir_path ) for include_dir_path in include_dir_paths] ) ) build_env["LIBPATH"] = list( set( [os.path.abspath( lib_dir_path ) for lib_dir_path in lib_dir_paths] ) ) @@ -68,5 +70,5 @@ for lib_dir_path in lib_dir_paths: for lib in ["xtreemfs-client"]: if not lib in build_env["LIBS"]: build_env["LIBS"].insert( 0, lib ) -build_env.Program( "../../../../bin/xtfs_fuzz", ( +build_env.Program( "../../../../../../bin/xtfs_fuzz", ( r"../../../../src/org/xtreemfs/client/xtfs_fuzz.cpp" ) ) diff --git a/src/client/proj/org/xtreemfs/client/xtfs_fuzz.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_fuzz.vcproj index 6a5f1005e..c36ae8d73 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_fuzz.vcproj +++ b/src/client/proj/org/xtreemfs/client/xtfs_fuzz.vcproj @@ -44,7 +44,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_fuzz.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_fuzz.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="true" RandomizedBaseAddress="1" @@ -55,7 +55,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_fuzz.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_fuzz.exe" IgnoreAllDefaultLibraries="false" IgnoreDefaultLibraryNames="LIBc.lib;libcmt.lib" GenerateDebugInformation="true" @@ -89,7 +89,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_fuzz.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_fuzz.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -100,7 +100,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_fuzz.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_fuzz.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -133,7 +133,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_fuzz.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_fuzz.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -144,7 +144,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_fuzz.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_fuzz.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" diff --git a/src/client/proj/org/xtreemfs/client/xtfs_lsvol.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_lsvol.SConscript index d25706cec..6f7ee2eed 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_lsvol.SConscript +++ b/src/client/proj/org/xtreemfs/client/xtfs_lsvol.SConscript @@ -26,7 +26,7 @@ except: if not "advapi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "advapi32.lib" ) if not "gdi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "gdi32.lib" ) else: - build_env["CCFLAGS"] += " -fPIC -Wall -Wunused-macros " # -fPIC (Platform Independent Code) to compile a library as part of a shared object + build_env["CCFLAGS"] += " -Wall -Wunused-macros " if sys.platform == "linux2": build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " build_env["LIBS"].extend( ( "pthread", "util", "dl", "rt", "stdc++" ) ) @@ -42,10 +42,12 @@ except: build_env["CCFLAGS"] += "-fno-rtti -Dupgrade_the_compiler_to_use_STL=1 -D_REENTRANT " build_env["LIBS"].extend( ( "stdc++", "m", "socket", "nsl", "kstat", "rt", "iconv", "cpc" ) ) - if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " - else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "coverage", 0 ): build_env["CCFLAGS"] += "-pg --coverage "; build_env["LINKFLAGS"] += "-pg --coverage " if ARGUMENTS.get( "profile-cpu", 0 ): build_env["CCFLAGS"] += "-pg "; build_env["LINKFLAGS"] += "-pg " if ARGUMENTS.get( "profile-heap", 0 ): build_env["CCFLAGS"] += "-fno-omit-frame-pointer "; build_env["LIBS"].append( "tcmalloc" ) + if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " + else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "shared", 0 ): build_env["CCFLAGS"] += "-fPIC " build_env["CPPPATH"] = list( set( [os.path.abspath( include_dir_path ) for include_dir_path in include_dir_paths] ) ) build_env["LIBPATH"] = list( set( [os.path.abspath( lib_dir_path ) for lib_dir_path in lib_dir_paths] ) ) @@ -69,5 +71,5 @@ for lib_dir_path in lib_dir_paths: for lib in ["xtreemfs-client"]: if not lib in build_env["LIBS"]: build_env["LIBS"].insert( 0, lib ) -build_env.Program( "../../../../bin/xtfs_lsvol", ( +build_env.Program( "../../../../../../bin/xtfs_lsvol", ( r"../../../../src/org/xtreemfs/client/xtfs_lsvol.cpp" ) ) diff --git a/src/client/proj/org/xtreemfs/client/xtfs_lsvol.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_lsvol.vcproj index 8ddb6e80d..d7d8c9fd8 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_lsvol.vcproj +++ b/src/client/proj/org/xtreemfs/client/xtfs_lsvol.vcproj @@ -44,7 +44,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_lsvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_lsvol.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="true" RandomizedBaseAddress="1" @@ -55,7 +55,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_lsvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_lsvol.exe" IgnoreAllDefaultLibraries="false" IgnoreDefaultLibraryNames="LIBc.lib;libcmt.lib" GenerateDebugInformation="true" @@ -89,7 +89,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_lsvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_lsvol.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -100,7 +100,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_lsvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_lsvol.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -133,7 +133,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_lsvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_lsvol.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -144,7 +144,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_lsvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_lsvol.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" diff --git a/src/client/proj/org/xtreemfs/client/xtfs_mkvol.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_mkvol.SConscript index 3c20bcb39..8187df574 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_mkvol.SConscript +++ b/src/client/proj/org/xtreemfs/client/xtfs_mkvol.SConscript @@ -26,7 +26,7 @@ except: if not "advapi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "advapi32.lib" ) if not "gdi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "gdi32.lib" ) else: - build_env["CCFLAGS"] += " -fPIC -Wall -Wunused-macros " # -fPIC (Platform Independent Code) to compile a library as part of a shared object + build_env["CCFLAGS"] += " -Wall -Wunused-macros " if sys.platform == "linux2": build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " build_env["LIBS"].extend( ( "pthread", "util", "dl", "rt", "stdc++" ) ) @@ -42,10 +42,12 @@ except: build_env["CCFLAGS"] += "-fno-rtti -Dupgrade_the_compiler_to_use_STL=1 -D_REENTRANT " build_env["LIBS"].extend( ( "stdc++", "m", "socket", "nsl", "kstat", "rt", "iconv", "cpc" ) ) - if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " - else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "coverage", 0 ): build_env["CCFLAGS"] += "-pg --coverage "; build_env["LINKFLAGS"] += "-pg --coverage " if ARGUMENTS.get( "profile-cpu", 0 ): build_env["CCFLAGS"] += "-pg "; build_env["LINKFLAGS"] += "-pg " if ARGUMENTS.get( "profile-heap", 0 ): build_env["CCFLAGS"] += "-fno-omit-frame-pointer "; build_env["LIBS"].append( "tcmalloc" ) + if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " + else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "shared", 0 ): build_env["CCFLAGS"] += "-fPIC " build_env["CPPPATH"] = list( set( [os.path.abspath( include_dir_path ) for include_dir_path in include_dir_paths] ) ) build_env["LIBPATH"] = list( set( [os.path.abspath( lib_dir_path ) for lib_dir_path in lib_dir_paths] ) ) @@ -69,5 +71,5 @@ for lib_dir_path in lib_dir_paths: for lib in ["xtreemfs-client"]: if not lib in build_env["LIBS"]: build_env["LIBS"].insert( 0, lib ) -build_env.Program( "../../../../bin/xtfs_mkvol", ( +build_env.Program( "../../../../../../bin/xtfs_mkvol", ( r"../../../../src/org/xtreemfs/client/xtfs_mkvol.cpp" ) ) diff --git a/src/client/proj/org/xtreemfs/client/xtfs_mkvol.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_mkvol.vcproj index 8a7abcd19..2a4e7835a 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_mkvol.vcproj +++ b/src/client/proj/org/xtreemfs/client/xtfs_mkvol.vcproj @@ -44,7 +44,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_mkvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_mkvol.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="true" RandomizedBaseAddress="1" @@ -55,7 +55,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_mkvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_mkvol.exe" IgnoreAllDefaultLibraries="false" IgnoreDefaultLibraryNames="LIBc.lib;libcmt.lib" GenerateDebugInformation="true" @@ -89,7 +89,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_mkvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_mkvol.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -100,7 +100,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_mkvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_mkvol.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -133,7 +133,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_mkvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_mkvol.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -144,7 +144,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_mkvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_mkvol.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" diff --git a/src/client/proj/org/xtreemfs/client/xtfs_mount.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_mount.SConscript index 482d1a7d2..541007fac 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_mount.SConscript +++ b/src/client/proj/org/xtreemfs/client/xtfs_mount.SConscript @@ -26,7 +26,7 @@ except: if not "advapi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "advapi32.lib" ) if not "gdi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "gdi32.lib" ) else: - build_env["CCFLAGS"] += " -fPIC -Wall -Wunused-macros " # -fPIC (Platform Independent Code) to compile a library as part of a shared object + build_env["CCFLAGS"] += " -Wall -Wunused-macros " if sys.platform == "linux2": build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " build_env["LIBS"].extend( ( "pthread", "util", "dl", "rt", "stdc++" ) ) @@ -42,10 +42,12 @@ except: build_env["CCFLAGS"] += "-fno-rtti -Dupgrade_the_compiler_to_use_STL=1 -D_REENTRANT " build_env["LIBS"].extend( ( "stdc++", "m", "socket", "nsl", "kstat", "rt", "iconv", "cpc" ) ) - if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " - else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "coverage", 0 ): build_env["CCFLAGS"] += "-pg --coverage "; build_env["LINKFLAGS"] += "-pg --coverage " if ARGUMENTS.get( "profile-cpu", 0 ): build_env["CCFLAGS"] += "-pg "; build_env["LINKFLAGS"] += "-pg " if ARGUMENTS.get( "profile-heap", 0 ): build_env["CCFLAGS"] += "-fno-omit-frame-pointer "; build_env["LIBS"].append( "tcmalloc" ) + if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " + else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "shared", 0 ): build_env["CCFLAGS"] += "-fPIC " build_env["CPPPATH"] = list( set( [os.path.abspath( include_dir_path ) for include_dir_path in include_dir_paths] ) ) build_env["LIBPATH"] = list( set( [os.path.abspath( lib_dir_path ) for lib_dir_path in lib_dir_paths] ) ) @@ -69,5 +71,5 @@ for lib_dir_path in lib_dir_paths: for lib in ["xtreemfs-client"]: if not lib in build_env["LIBS"]: build_env["LIBS"].insert( 0, lib ) -build_env.Program( "../../../../bin/xtfs_mount", ( +build_env.Program( "../../../../../../bin/xtfs_mount", ( r"../../../../src/org/xtreemfs/client/xtfs_mount.cpp" ) ) diff --git a/src/client/proj/org/xtreemfs/client/xtfs_mount.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_mount.vcproj index 5b93bcc18..2ab886a39 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_mount.vcproj +++ b/src/client/proj/org/xtreemfs/client/xtfs_mount.vcproj @@ -44,7 +44,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_mount.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_mount.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="true" RandomizedBaseAddress="1" @@ -55,7 +55,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_mount.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_mount.exe" IgnoreAllDefaultLibraries="false" IgnoreDefaultLibraryNames="LIBc.lib;libcmt.lib" GenerateDebugInformation="true" @@ -89,7 +89,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_mount.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_mount.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -100,7 +100,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_mount.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_mount.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -133,7 +133,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_mount.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_mount.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -144,7 +144,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_mount.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_mount.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" diff --git a/src/client/proj/org/xtreemfs/client/xtfs_rmvol.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_rmvol.SConscript index 6fa38ec59..18d8321bb 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_rmvol.SConscript +++ b/src/client/proj/org/xtreemfs/client/xtfs_rmvol.SConscript @@ -26,7 +26,7 @@ except: if not "advapi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "advapi32.lib" ) if not "gdi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "gdi32.lib" ) else: - build_env["CCFLAGS"] += " -fPIC -Wall -Wunused-macros " # -fPIC (Platform Independent Code) to compile a library as part of a shared object + build_env["CCFLAGS"] += " -Wall -Wunused-macros " if sys.platform == "linux2": build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " build_env["LIBS"].extend( ( "pthread", "util", "dl", "rt", "stdc++" ) ) @@ -42,10 +42,12 @@ except: build_env["CCFLAGS"] += "-fno-rtti -Dupgrade_the_compiler_to_use_STL=1 -D_REENTRANT " build_env["LIBS"].extend( ( "stdc++", "m", "socket", "nsl", "kstat", "rt", "iconv", "cpc" ) ) - if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " - else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "coverage", 0 ): build_env["CCFLAGS"] += "-pg --coverage "; build_env["LINKFLAGS"] += "-pg --coverage " if ARGUMENTS.get( "profile-cpu", 0 ): build_env["CCFLAGS"] += "-pg "; build_env["LINKFLAGS"] += "-pg " if ARGUMENTS.get( "profile-heap", 0 ): build_env["CCFLAGS"] += "-fno-omit-frame-pointer "; build_env["LIBS"].append( "tcmalloc" ) + if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " + else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "shared", 0 ): build_env["CCFLAGS"] += "-fPIC " build_env["CPPPATH"] = list( set( [os.path.abspath( include_dir_path ) for include_dir_path in include_dir_paths] ) ) build_env["LIBPATH"] = list( set( [os.path.abspath( lib_dir_path ) for lib_dir_path in lib_dir_paths] ) ) @@ -69,5 +71,5 @@ for lib_dir_path in lib_dir_paths: for lib in ["xtreemfs-client"]: if not lib in build_env["LIBS"]: build_env["LIBS"].insert( 0, lib ) -build_env.Program( "../../../../bin/xtfs_rmvol", ( +build_env.Program( "../../../../../../bin/xtfs_rmvol", ( r"../../../../src/org/xtreemfs/client/xtfs_rmvol.cpp" ) ) diff --git a/src/client/proj/org/xtreemfs/client/xtfs_rmvol.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_rmvol.vcproj index 065f8aa76..4579c6f64 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_rmvol.vcproj +++ b/src/client/proj/org/xtreemfs/client/xtfs_rmvol.vcproj @@ -44,7 +44,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_rmvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_rmvol.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="true" RandomizedBaseAddress="1" @@ -55,7 +55,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_rmvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_rmvol.exe" IgnoreAllDefaultLibraries="false" IgnoreDefaultLibraryNames="LIBc.lib;libcmt.lib" GenerateDebugInformation="true" @@ -89,7 +89,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_rmvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_rmvol.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -100,7 +100,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_rmvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_rmvol.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -133,7 +133,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_rmvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_rmvol.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -144,7 +144,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_rmvol.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_rmvol.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" diff --git a/src/client/proj/org/xtreemfs/client/xtfs_send.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_send.SConscript index 20707f45e..44825e0a3 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_send.SConscript +++ b/src/client/proj/org/xtreemfs/client/xtfs_send.SConscript @@ -26,7 +26,7 @@ except: if not "advapi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "advapi32.lib" ) if not "gdi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "gdi32.lib" ) else: - build_env["CCFLAGS"] += " -fPIC -Wall -Wunused-macros " # -fPIC (Platform Independent Code) to compile a library as part of a shared object + build_env["CCFLAGS"] += " -Wall -Wunused-macros " if sys.platform == "linux2": build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " build_env["LIBS"].extend( ( "pthread", "util", "dl", "rt", "stdc++" ) ) @@ -42,10 +42,12 @@ except: build_env["CCFLAGS"] += "-fno-rtti -Dupgrade_the_compiler_to_use_STL=1 -D_REENTRANT " build_env["LIBS"].extend( ( "stdc++", "m", "socket", "nsl", "kstat", "rt", "iconv", "cpc" ) ) - if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " - else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "coverage", 0 ): build_env["CCFLAGS"] += "-pg --coverage "; build_env["LINKFLAGS"] += "-pg --coverage " if ARGUMENTS.get( "profile-cpu", 0 ): build_env["CCFLAGS"] += "-pg "; build_env["LINKFLAGS"] += "-pg " if ARGUMENTS.get( "profile-heap", 0 ): build_env["CCFLAGS"] += "-fno-omit-frame-pointer "; build_env["LIBS"].append( "tcmalloc" ) + if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " + else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "shared", 0 ): build_env["CCFLAGS"] += "-fPIC " build_env["CPPPATH"] = list( set( [os.path.abspath( include_dir_path ) for include_dir_path in include_dir_paths] ) ) build_env["LIBPATH"] = list( set( [os.path.abspath( lib_dir_path ) for lib_dir_path in lib_dir_paths] ) ) @@ -69,5 +71,5 @@ for lib_dir_path in lib_dir_paths: for lib in ["xtreemfs-client"]: if not lib in build_env["LIBS"]: build_env["LIBS"].insert( 0, lib ) -build_env.Program( "../../../../bin/xtfs_send", ( +build_env.Program( "../../../../../../bin/xtfs_send", ( r"../../../../src/org/xtreemfs/client/xtfs_send.cpp" ) ) diff --git a/src/client/proj/org/xtreemfs/client/xtfs_send.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_send.vcproj index c127f75d1..796029196 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_send.vcproj +++ b/src/client/proj/org/xtreemfs/client/xtfs_send.vcproj @@ -44,7 +44,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_send.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_send.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="true" RandomizedBaseAddress="1" @@ -55,7 +55,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_send.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_send.exe" IgnoreAllDefaultLibraries="false" IgnoreDefaultLibraryNames="LIBc.lib;libcmt.lib" GenerateDebugInformation="true" @@ -89,7 +89,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_send.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_send.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -100,7 +100,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_send.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_send.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -133,7 +133,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_send.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_send.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -144,7 +144,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_send.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_send.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" diff --git a/src/client/proj/org/xtreemfs/client/xtfs_stat.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_stat.SConscript index ed2dd26f9..84f115784 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_stat.SConscript +++ b/src/client/proj/org/xtreemfs/client/xtfs_stat.SConscript @@ -26,7 +26,7 @@ except: if not "advapi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "advapi32.lib" ) if not "gdi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "gdi32.lib" ) else: - build_env["CCFLAGS"] += " -fPIC -Wall -Wunused-macros " # -fPIC (Platform Independent Code) to compile a library as part of a shared object + build_env["CCFLAGS"] += " -Wall -Wunused-macros " if sys.platform == "linux2": build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " build_env["LIBS"].extend( ( "pthread", "util", "dl", "rt", "stdc++" ) ) @@ -42,10 +42,12 @@ except: build_env["CCFLAGS"] += "-fno-rtti -Dupgrade_the_compiler_to_use_STL=1 -D_REENTRANT " build_env["LIBS"].extend( ( "stdc++", "m", "socket", "nsl", "kstat", "rt", "iconv", "cpc" ) ) - if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " - else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "coverage", 0 ): build_env["CCFLAGS"] += "-pg --coverage "; build_env["LINKFLAGS"] += "-pg --coverage " if ARGUMENTS.get( "profile-cpu", 0 ): build_env["CCFLAGS"] += "-pg "; build_env["LINKFLAGS"] += "-pg " if ARGUMENTS.get( "profile-heap", 0 ): build_env["CCFLAGS"] += "-fno-omit-frame-pointer "; build_env["LIBS"].append( "tcmalloc" ) + if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " + else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "shared", 0 ): build_env["CCFLAGS"] += "-fPIC " build_env["CPPPATH"] = list( set( [os.path.abspath( include_dir_path ) for include_dir_path in include_dir_paths] ) ) build_env["LIBPATH"] = list( set( [os.path.abspath( lib_dir_path ) for lib_dir_path in lib_dir_paths] ) ) @@ -69,5 +71,5 @@ for lib_dir_path in lib_dir_paths: for lib in ["xtreemfs-client"]: if not lib in build_env["LIBS"]: build_env["LIBS"].insert( 0, lib ) -build_env.Program( "../../../../bin/xtfs_stat", ( +build_env.Program( "../../../../../../bin/xtfs_stat", ( r"../../../../src/org/xtreemfs/client/xtfs_stat.cpp" ) ) diff --git a/src/client/proj/org/xtreemfs/client/xtfs_stat.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_stat.vcproj index 805ad334a..b615691e9 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_stat.vcproj +++ b/src/client/proj/org/xtreemfs/client/xtfs_stat.vcproj @@ -44,7 +44,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_stat.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_stat.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="true" RandomizedBaseAddress="1" @@ -55,7 +55,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_stat.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_stat.exe" IgnoreAllDefaultLibraries="false" IgnoreDefaultLibraryNames="LIBc.lib;libcmt.lib" GenerateDebugInformation="true" @@ -89,7 +89,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_stat.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_stat.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -100,7 +100,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_stat.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_stat.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -133,7 +133,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_stat.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_stat.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -144,7 +144,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_stat.exe" + OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_stat.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" diff --git a/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.SConscript b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.SConscript index ace64c518..628735624 100644 --- a/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.SConscript +++ b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.SConscript @@ -25,7 +25,7 @@ except: if not "advapi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "advapi32.lib" ) if not "gdi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "gdi32.lib" ) else: - build_env["CCFLAGS"] += " -fPIC -Wall -Wunused-macros " # -fPIC (Platform Independent Code) to compile a library as part of a shared object + build_env["CCFLAGS"] += " -Wall -Wunused-macros " if sys.platform == "linux2": build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " build_env["LIBS"].extend( ( "pthread", "util", "dl", "rt", "stdc++" ) ) @@ -41,10 +41,12 @@ except: build_env["CCFLAGS"] += "-fno-rtti -Dupgrade_the_compiler_to_use_STL=1 -D_REENTRANT " build_env["LIBS"].extend( ( "stdc++", "m", "socket", "nsl", "kstat", "rt", "iconv", "cpc" ) ) - if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " - else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "coverage", 0 ): build_env["CCFLAGS"] += "-pg --coverage "; build_env["LINKFLAGS"] += "-pg --coverage " if ARGUMENTS.get( "profile-cpu", 0 ): build_env["CCFLAGS"] += "-pg "; build_env["LINKFLAGS"] += "-pg " if ARGUMENTS.get( "profile-heap", 0 ): build_env["CCFLAGS"] += "-fno-omit-frame-pointer "; build_env["LIBS"].append( "tcmalloc" ) + if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " + else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "shared", 0 ): build_env["CCFLAGS"] += "-fPIC " build_env["CPPPATH"] = list( set( [os.path.abspath( include_dir_path ) for include_dir_path in include_dir_paths] ) ) build_env["LIBPATH"] = list( set( [os.path.abspath( lib_dir_path ) for lib_dir_path in lib_dir_paths] ) ) diff --git a/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.vcproj b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.vcproj index 8a28227fc..81a5dbd36 100644 --- a/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.vcproj +++ b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.vcproj @@ -229,104 +229,6 @@ > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.SConscript b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.SConscript index 382e09016..05556f7d2 100644 --- a/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.SConscript +++ b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.SConscript @@ -26,7 +26,7 @@ except: if not "advapi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "advapi32.lib" ) if not "gdi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "gdi32.lib" ) else: - build_env["CCFLAGS"] += " -fPIC -Wall -Wunused-macros " # -fPIC (Platform Independent Code) to compile a library as part of a shared object + build_env["CCFLAGS"] += " -Wall -Wunused-macros " if sys.platform == "linux2": build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " build_env["LIBS"].extend( ( "pthread", "util", "dl", "rt", "stdc++" ) ) @@ -42,10 +42,12 @@ except: build_env["CCFLAGS"] += "-fno-rtti -Dupgrade_the_compiler_to_use_STL=1 -D_REENTRANT " build_env["LIBS"].extend( ( "stdc++", "m", "socket", "nsl", "kstat", "rt", "iconv", "cpc" ) ) - if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " - else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "coverage", 0 ): build_env["CCFLAGS"] += "-pg --coverage "; build_env["LINKFLAGS"] += "-pg --coverage " if ARGUMENTS.get( "profile-cpu", 0 ): build_env["CCFLAGS"] += "-pg "; build_env["LINKFLAGS"] += "-pg " if ARGUMENTS.get( "profile-heap", 0 ): build_env["CCFLAGS"] += "-fno-omit-frame-pointer "; build_env["LIBS"].append( "tcmalloc" ) + if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " + else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "shared", 0 ): build_env["CCFLAGS"] += "-fPIC " build_env["CPPPATH"] = list( set( [os.path.abspath( include_dir_path ) for include_dir_path in include_dir_paths] ) ) build_env["LIBPATH"] = list( set( [os.path.abspath( lib_dir_path ) for lib_dir_path in lib_dir_paths] ) ) diff --git a/src/client/src/org/xtreemfs/client/main.h b/src/client/src/org/xtreemfs/client/main.h index 17805373e..73efdb761 100644 --- a/src/client/src/org/xtreemfs/client/main.h +++ b/src/client/src/org/xtreemfs/client/main.h @@ -1,8 +1,8 @@ // Copyright 2009 Minor Gordon. // This source comes from the XtreemFS project. It is licensed under the GPLv2 (see COPYING for terms and conditions). -#ifndef ORG_XTREEMFS_CLIENT_MAIN_H -#define ORG_XTREEMFS_CLIENT_MAIN_H +#ifndef CLIENT_SRC_ORG_XTREEMFS_CLIENT_MAIN_H +#define CLIENT_SRC_ORG_XTREEMFS_CLIENT_MAIN_H #if !defined(YIELD_HAVE_OPENSSL) && defined(_WIN32) #define YIELD_HAVE_OPENSSL 1 @@ -44,7 +44,7 @@ namespace org #ifdef ORG_XTREEMFS_CLIENT_HAVE_GOOGLE_BREAKPAD google_breakpad::ExceptionHandler* exception_handler; void* MinidumpCallback_context = this; -#if defined(_WIN32) +#if defined(_WIN32) // if ( !IsDebuggerPresent() ) { exception_handler = new google_breakpad::ExceptionHandler( YIELD::Path( "." ) + PATH_SEPARATOR_STRING, NULL, MinidumpCallback, MinidumpCallback_context, google_breakpad::ExceptionHandler::HANDLER_ALL ); #elif defined(__linux) @@ -123,7 +123,7 @@ namespace org socket_factory = new YIELD::TCPSocketFactory( get_log() ); } - return socket_factory; + return socket_factory; } YIELD::auto_Object parseURI( const char* uri_c_str ) @@ -151,7 +151,7 @@ namespace org else throw YIELD::Exception( "invalid volume URI" ); } - + // YIELD::Main virtual void parseOption( int id, char* arg ) { @@ -210,11 +210,11 @@ namespace org { YIELD::Path dump_file_name( minidump_id ); dump_file_name = static_cast( dump_file_name ) + ".dmp"; YIELD::Path dump_file_path( dump_path ); dump_file_path = dump_file_path + dump_file_name; - std::string dump_absolute_uri( "http://www.xtreemfs.org/dump/dump.php?f=" ); + std::string dump_absolute_uri( "http://www.xtreemfs.org/dump/dump.php?f=" ); dump_absolute_uri.append( static_cast( dump_file_name ) ); - + get_log()->getStream( YIELD::Log::LOG_EMERG ) << get_program_name() << ": crashed on unknown exception, dumping to " << dump_file_path << " and trying to send to " << dump_absolute_uri; - + try { YIELD::HTTPClient::PUT( dump_absolute_uri, dump_file_path, get_log() ); diff --git a/src/client/src/org/xtreemfs/client/policy_container.h b/src/client/src/org/xtreemfs/client/policy_container.h index 94cbe8cf5..012bc69e7 100644 --- a/src/client/src/org/xtreemfs/client/policy_container.h +++ b/src/client/src/org/xtreemfs/client/policy_container.h @@ -1,8 +1,8 @@ // Copyright 2009 Minor Gordon. // This source comes from the XtreemFS project. It is licensed under the GPLv2 (see COPYING for terms and conditions). -#ifndef ORG_XTREEMFS_CLIENT_POLICY_CONTAINER_H -#define ORG_XTREEMFS_CLIENT_POLICY_CONTAINER_H +#ifndef CLIENT_SRC_ORG_XTREEMFS_CLIENT_POLICY_CONTAINER_H +#define CLIENT_SRC_ORG_XTREEMFS_CLIENT_POLICY_CONTAINER_H #include "org/xtreemfs/client/policy.h" #include "org/xtreemfs/interfaces/types.h" -- GitLab From d93ddfc77a5f3a86e4a75348c73f416415271d94 Mon Sep 17 00:00:00 2001 From: stenjan Date: Fri, 8 May 2009 14:29:45 +0000 Subject: [PATCH 30/97] src/servers/src: removed empty unused pacakges git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@620 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 -- GitLab From 8b9e81837db670e3b600b67966c93f3a89bd0bd5 Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 16:28:16 +0000 Subject: [PATCH 31/97] client: regenerating projects, fixing paths git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@621 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- src/client/generate_src_and_proj.bat | 19 ++--- .../google-breakpad/google-breakpad.vcproj | 4 - .../google-breakpad_custom.SConscript | 4 +- .../google-breakpad_windows.SConscript | 79 +++++++++++++++++++ .../org/xtreemfs/client/xtfs_fuzz.SConscript | 2 +- .../proj/org/xtreemfs/client/xtfs_fuzz.vcproj | 12 +-- .../org/xtreemfs/client/xtfs_lsvol.SConscript | 4 +- .../org/xtreemfs/client/xtfs_lsvol.vcproj | 18 ++--- .../org/xtreemfs/client/xtfs_mkvol.SConscript | 4 +- .../org/xtreemfs/client/xtfs_mkvol.vcproj | 18 ++--- .../org/xtreemfs/client/xtfs_mount.SConscript | 4 +- .../org/xtreemfs/client/xtfs_mount.vcproj | 18 ++--- .../org/xtreemfs/client/xtfs_rmvol.SConscript | 4 +- .../org/xtreemfs/client/xtfs_rmvol.vcproj | 18 ++--- .../org/xtreemfs/client/xtfs_send.SConscript | 4 +- .../proj/org/xtreemfs/client/xtfs_send.vcproj | 18 ++--- .../org/xtreemfs/client/xtfs_stat.SConscript | 4 +- .../proj/org/xtreemfs/client/xtfs_stat.vcproj | 18 ++--- 18 files changed, 165 insertions(+), 87 deletions(-) create mode 100644 src/client/proj/google-breakpad/google-breakpad_windows.SConscript diff --git a/src/client/generate_src_and_proj.bat b/src/client/generate_src_and_proj.bat index b6d8454cf..02ea3196e 100644 --- a/src/client/generate_src_and_proj.bat +++ b/src/client/generate_src_and_proj.bat @@ -2,7 +2,7 @@ set GOOGLE_BREAKPAD_PATH=%CD%\share\google-breakpad set GOOGLE_BREAKPAD_COMMON_SOURCE_FLAGS=-s %XTREEMFS_CLIENT_PATH%\share\google-breakpad\src -e google_breakpad -I %XTREEMFS_CLIENT_PATH%\share\google-breakpad\src -set GOOGLE_BREAKPAD_WINDOWS_SOURCE_FLAGS=%GOOGLE_BREAKPAD_COMMON_SOURCE_FLAGS% -e linux -e mac -e solaris -e minidump_file_writer* -e md5.* +set GOOGLE_BREAKPAD_WINDOWS_SOURCE_FLAGS=%GOOGLE_BREAKPAD_COMMON_SOURCE_FLAGS% -D UNICODE -e linux -e mac -e solaris -e minidump_file_writer* -e md5.* -e crash_generation_server.cc set GOOGLE_BREAKPAD_LINUX_SOURCE_FLAGS=%GOOGLE_BREAKPAD_COMMON_SOURCE_FLAGS% -e windows -e mac -e solaris set XTREEMFS_PATH=%CD%\..\.. set XTREEMFS_CLIENT_PATH=%CD% @@ -33,13 +33,13 @@ python %YIELD_PATH%\bin\generate_proj.py -n xtreemfs-client-lib -t lib -s %XTREE python %YIELD_PATH%\bin\generate_proj.py -n xtreemfs-client-lib_test -t exe -s %XTREEMFS_CLIENT_PATH%\proj\org\xtreemfs\client\org_xtreemfs_client_test_main.cpp -s "%XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\*_test.cpp" -c xtreemfs-client-lib.SConscript -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_XTREEMFS_CLIENT_FLAGS% REM Binary projects -python %YIELD_PATH%\bin\generate_proj.py -n xtfs_fuzz -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_fuzz.cpp -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\*_fuzzer.h -o %XTREEMFS_PATH%\bin %DEPEND_XTREEMFS_CLIENT_FLAGS% -python %YIELD_PATH%\bin\generate_proj.py -n xtfs_lsvol -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_lsvol.cpp -o %XTREEMFS_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% -python %YIELD_PATH%\bin\generate_proj.py -n xtfs_mount -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_mount.cpp -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\main.h -o %XTREEMFS_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% -python %YIELD_PATH%\bin\generate_proj.py -n xtfs_mkvol -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_mkvol.cpp -o %XTREEMFS_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% -python %YIELD_PATH%\bin\generate_proj.py -n xtfs_rmvol -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_rmvol.cpp -o %XTREEMFS_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% -python %YIELD_PATH%\bin\generate_proj.py -n xtfs_send -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_send.cpp -o %XTREEMFS_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% -python %YIELD_PATH%\bin\generate_proj.py -n xtfs_stat -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_stat.cpp -o %XTREEMFS_PATH%\bin %DEPEND_GOOGLE_BREAKPAD_FLAGS% %DEPEND_XTREEMFS_CLIENT_FLAGS% +python %YIELD_PATH%\bin\generate_proj.py -n xtfs_fuzz -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_fuzz.cpp -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\*_fuzzer.h -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_XTREEMFS_CLIENT_FLAGS% +python %YIELD_PATH%\bin\generate_proj.py -n xtfs_lsvol -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_lsvol.cpp -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_XTREEMFS_CLIENT_FLAGS% %DEPEND_GOOGLE_BREAKPAD_FLAGS% +python %YIELD_PATH%\bin\generate_proj.py -n xtfs_mount -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_mount.cpp -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\main.h -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_XTREEMFS_CLIENT_FLAGS% %DEPEND_GOOGLE_BREAKPAD_FLAGS% +python %YIELD_PATH%\bin\generate_proj.py -n xtfs_mkvol -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_mkvol.cpp -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_XTREEMFS_CLIENT_FLAGS% %DEPEND_GOOGLE_BREAKPAD_FLAGS% +python %YIELD_PATH%\bin\generate_proj.py -n xtfs_rmvol -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_rmvol.cpp -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_XTREEMFS_CLIENT_FLAGS% %DEPEND_GOOGLE_BREAKPAD_FLAGS% +python %YIELD_PATH%\bin\generate_proj.py -n xtfs_send -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_send.cpp -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_XTREEMFS_CLIENT_FLAGS% %DEPEND_GOOGLE_BREAKPAD_FLAGS% +python %YIELD_PATH%\bin\generate_proj.py -n xtfs_stat -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_stat.cpp -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_XTREEMFS_CLIENT_FLAGS% %DEPEND_GOOGLE_BREAKPAD_FLAGS% REM Policy projects python %YIELD_PATH%\bin\generate_proj.py -n xos_ams_flog -t dll -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xos_ams_flog.c -I %XTREEMFS_CLIENT_PATH%\include --lu xos_ams -o %XTREEMFS_CLIENT_PATH%\lib @@ -47,9 +47,10 @@ python %YIELD_PATH%\bin\generate_proj.py -n xos_ams_flog -t dll -s %XTREEMFS_CLI REM Google Breakpad cd %XTREEMFS_CLIENT_PATH%\proj\google-breakpad -python %YIELD_PATH%\bin\generate_vcproj.py -n google-breakpad -t lib -D UNICODE %GOOGLE_BREAKPAD_WINDOWS_SOURCE_FLAGS% -o %XTREEMFS_CLIENT_PATH%\lib +python %YIELD_PATH%\bin\generate_vcproj.py -n google-breakpad -t lib %GOOGLE_BREAKPAD_WINDOWS_SOURCE_FLAGS% -o %XTREEMFS_CLIENT_PATH%\lib python %YIELD_PATH%\bin\generate_SConscript.py -n google-breakpad python %YIELD_PATH%\bin\generate_SConscript.py -n google-breakpad_linux -t lib %GOOGLE_BREAKPAD_LINUX_SOURCE_FLAGS% -o %XTREEMFS_CLIENT_PATH%\lib\google-breakpad +python %YIELD_PATH%\bin\generate_SConscript.py -n google-breakpad_windows -t lib %GOOGLE_BREAKPAD_WINDOWS_SOURCE_FLAGS% -o %XTREEMFS_CLIENT_PATH%\lib\google-breakpad cd %XTREEMFS_CLIENT_PATH% diff --git a/src/client/proj/google-breakpad/google-breakpad.vcproj b/src/client/proj/google-breakpad/google-breakpad.vcproj index e999e0b0e..21e4e0b5a 100644 --- a/src/client/proj/google-breakpad/google-breakpad.vcproj +++ b/src/client/proj/google-breakpad/google-breakpad.vcproj @@ -205,10 +205,6 @@ RelativePath="..\..\share\google-breakpad\src\client\windows\crash_generation\crash_generation_client.cc" > - - diff --git a/src/client/proj/google-breakpad/google-breakpad_custom.SConscript b/src/client/proj/google-breakpad/google-breakpad_custom.SConscript index c086f8a1b..c941d94b6 100644 --- a/src/client/proj/google-breakpad/google-breakpad_custom.SConscript +++ b/src/client/proj/google-breakpad/google-breakpad_custom.SConscript @@ -2,9 +2,11 @@ import sys, platform Import( "build_env", "build_conf" ) + if sys.platform.startswith( "win" ): SConscript( "google-breakpad_windows.SConscript" ) - build_env["LIBS"].append( "google-breakpad.lib" ) + if ARGUMENTS.get( "release", 0 ): build_env["LIBS"].append( "google-breakpad.lib" ) + else: build_env["LIBS"].append( "google-breakpad_d.lib" ) elif sys.platform.startswith( "linux" ) and platform.machine() != "x86_64": SConscript( "google-breakpad_linux.SConscript" ) build_env["LIBS"].append( "google-breakpad" ) diff --git a/src/client/proj/google-breakpad/google-breakpad_windows.SConscript b/src/client/proj/google-breakpad/google-breakpad_windows.SConscript new file mode 100644 index 000000000..1d88c0d94 --- /dev/null +++ b/src/client/proj/google-breakpad/google-breakpad_windows.SConscript @@ -0,0 +1,79 @@ +import sys, os.path, platform + + +try: + Import( "build_env", "build_conf" ) +except: + build_env = {} # Init Environment() from this so that it doesn't start with default values for e.g. CC, which induces pkginfo popens on Sun + + include_dir_paths = os.environ.has_key( "CPPPATH" ) and os.environ["CPPPATH"].split( sys.platform.startswith( "win" ) and ';' or ':' ) or [] + + build_env["CCFLAGS"] = os.environ.get( "CCFLAGS", "" ).strip() + lib_dir_paths = os.environ.has_key( "LIBPATH" ) and os.environ["LIBPATH"].split( sys.platform.startswith( "win" ) and ';' or ':' ) or [] + build_env["LINKFLAGS"] = os.environ.get( "LINKFLAGS", "" ).strip() + build_env["LIBS"] = os.environ.has_key( "LIBS" ) and os.environ["LIBS"].split( " " ) or [] + + if sys.platform.startswith( "win" ): + if os.environ.has_key( "INCLUDE" ): include_dir_paths.extend( os.environ["INCLUDE"].split( ';' ) ) + if os.environ.has_key( "LIB" ): lib_dir_paths.extend( os.environ["LIB"].split( ';' ) ) + build_env["CCFLAGS"] += ' /EHsc /GR- /D "_CRT_DISABLE_PERFCRIT_LOCKS" /D "WIN32" /nologo ' # GR- is -fno-rtti, EHsc is to enable exception handling + if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "/MD " + else: build_env["CCFLAGS"] += "/MDd /ZI /W3 " + if not "user32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "user32.lib" ) + if not "advapi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "advapi32.lib" ) + if not "gdi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "gdi32.lib" ) + else: + build_env["CCFLAGS"] += " -Wall -Wunused-macros " + if sys.platform == "linux2": + build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " + build_env["LIBS"].extend( ( "pthread", "util", "dl", "rt", "stdc++" ) ) + elif sys.platform == "darwin": + build_env["CCFLAGS"] += " -D_FILE_OFFSET_BITS=64 " + # build_env["LINKFLAGS"] += "-framework Carbon " + build_env["LIBS"].append( "iconv" ) + elif sys.platform.startswith( "freebsd" ): + build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " + build_env["LIBS"].extend( ( "pthread", "intl", "iconv" ) ) + elif sys.platform == "sunos5": + build_env["tools"] = ["gcc", "g++", "gnulink", "ar"] + build_env["CCFLAGS"] += "-fno-rtti -Dupgrade_the_compiler_to_use_STL=1 -D_REENTRANT " + build_env["LIBS"].extend( ( "stdc++", "m", "socket", "nsl", "kstat", "rt", "iconv", "cpc" ) ) + + if ARGUMENTS.get( "coverage", 0 ): build_env["CCFLAGS"] += "-pg --coverage "; build_env["LINKFLAGS"] += "-pg --coverage " + if ARGUMENTS.get( "profile-cpu", 0 ): build_env["CCFLAGS"] += "-pg "; build_env["LINKFLAGS"] += "-pg " + if ARGUMENTS.get( "profile-heap", 0 ): build_env["CCFLAGS"] += "-fno-omit-frame-pointer "; build_env["LIBS"].append( "tcmalloc" ) + if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " + else: build_env["CCFLAGS"] += "-g -D_DEBUG " + if ARGUMENTS.get( "shared", 0 ): build_env["CCFLAGS"] += "-fPIC " + + build_env["CPPPATH"] = list( set( [os.path.abspath( include_dir_path ) for include_dir_path in include_dir_paths] ) ) + build_env["LIBPATH"] = list( set( [os.path.abspath( lib_dir_path ) for lib_dir_path in lib_dir_paths] ) ) + build_env = Environment( **build_env ) + + build_conf = build_env.Configure() + if not sys.platform.startswith( "win" ) and not sys.platform.startswith( "sunos" ) and platform.architecture()[0] == "32bit": + build_env["CCFLAGS"] += "-march=i686 " + + Export( "build_env", "build_conf" ) + +defines = ["UNICODE"] +if sys.platform.startswith( "win" ): defines.extend( [] ) +else: defines.extend( [] ) +for define in defines: + if sys.platform.startswith( "win" ): define_switch = '/D "' + define + '"' + else: define_switch = "-D" + define + if not define_switch in build_env["CCFLAGS"]: build_env["CCFLAGS"] += define_switch + " " + +include_dir_paths = [os.path.abspath( '../../share/google-breakpad/src' )] +for include_dir_path in include_dir_paths: + if not include_dir_path in build_env["CPPPATH"]: build_env["CPPPATH"].append( include_dir_path ) + +build_env.Library( "../../lib/google-breakpad", ( + r"../../share/google-breakpad/src/client/windows/crash_generation/client_info.cc", + r"../../share/google-breakpad/src/client/windows/crash_generation/crash_generation_client.cc", + r"../../share/google-breakpad/src/client/windows/crash_generation/minidump_generator.cc", + r"../../share/google-breakpad/src/client/windows/handler/exception_handler.cc", + r"../../share/google-breakpad/src/common/convert_UTF.c", + r"../../share/google-breakpad/src/common/string_conversion.cc", + r"../../share/google-breakpad/src/common/windows/guid_string.cc", + r"../../share/google-breakpad/src/common/windows/string_utils.cc" ) ) diff --git a/src/client/proj/org/xtreemfs/client/xtfs_fuzz.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_fuzz.SConscript index 52465451a..f5835a1ce 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_fuzz.SConscript +++ b/src/client/proj/org/xtreemfs/client/xtfs_fuzz.SConscript @@ -70,5 +70,5 @@ for lib_dir_path in lib_dir_paths: for lib in ["xtreemfs-client"]: if not lib in build_env["LIBS"]: build_env["LIBS"].insert( 0, lib ) -build_env.Program( "../../../../../../bin/xtfs_fuzz", ( +build_env.Program( "../../../../bin/xtfs_fuzz", ( r"../../../../src/org/xtreemfs/client/xtfs_fuzz.cpp" ) ) diff --git a/src/client/proj/org/xtreemfs/client/xtfs_fuzz.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_fuzz.vcproj index c36ae8d73..6a5f1005e 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_fuzz.vcproj +++ b/src/client/proj/org/xtreemfs/client/xtfs_fuzz.vcproj @@ -44,7 +44,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_fuzz.exe" + OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_fuzz.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="true" RandomizedBaseAddress="1" @@ -55,7 +55,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_fuzz.exe" + OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_fuzz.exe" IgnoreAllDefaultLibraries="false" IgnoreDefaultLibraryNames="LIBc.lib;libcmt.lib" GenerateDebugInformation="true" @@ -89,7 +89,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_fuzz.exe" + OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_fuzz.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -100,7 +100,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_fuzz.exe" + OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_fuzz.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -133,7 +133,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client_d.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_fuzz.exe" + OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_fuzz.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" @@ -144,7 +144,7 @@ UseLibraryDependencyInputs="true" AdditionalDependencies="xtreemfs-client.lib" AdditionalLibraryDirectories="$(ProjectDir)..\..\..\..\lib" - OutputFile="$(ProjectDir)..\..\..\..\..\..\bin\xtfs_fuzz.exe" + OutputFile="$(ProjectDir)..\..\..\..\bin\xtfs_fuzz.exe" IgnoreAllDefaultLibraries="false" GenerateDebugInformation="false" RandomizedBaseAddress="1" diff --git a/src/client/proj/org/xtreemfs/client/xtfs_lsvol.SConscript b/src/client/proj/org/xtreemfs/client/xtfs_lsvol.SConscript index 6f7ee2eed..c33485c14 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_lsvol.SConscript +++ b/src/client/proj/org/xtreemfs/client/xtfs_lsvol.SConscript @@ -1,7 +1,7 @@ import sys, os.path, platform -SConscript( '../../../google-breakpad/google-breakpad.SConscript' ) SConscript( 'xtreemfs-client-lib.SConscript' ) +SConscript( '../../../google-breakpad/google-breakpad.SConscript' ) try: @@ -71,5 +71,5 @@ for lib_dir_path in lib_dir_paths: for lib in ["xtreemfs-client"]: if not lib in build_env["LIBS"]: build_env["LIBS"].insert( 0, lib ) -build_env.Program( "../../../../../../bin/xtfs_lsvol", ( +build_env.Program( "../../../../bin/xtfs_lsvol", ( r"../../../../src/org/xtreemfs/client/xtfs_lsvol.cpp" ) ) diff --git a/src/client/proj/org/xtreemfs/client/xtfs_lsvol.vcproj b/src/client/proj/org/xtreemfs/client/xtfs_lsvol.vcproj index d7d8c9fd8..7a53c2f6b 100644 --- a/src/client/proj/org/xtreemfs/client/xtfs_lsvol.vcproj +++ b/src/client/proj/org/xtreemfs/client/xtfs_lsvol.vcproj @@ -27,7 +27,7 @@ Date: Fri, 8 May 2009 16:31:40 +0000 Subject: [PATCH 32/97] bin: softlinks to client/bin to get around SCons limitation git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@622 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- bin/xtfs_lsvol | 1 + bin/xtfs_mkvol | 1 + bin/xtfs_mount | 1 + bin/xtfs_rmvol | 1 + bin/xtfs_send | 1 + bin/xtfs_stat | 1 + bin/xtfs_test | 344 +++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 350 insertions(+) create mode 120000 bin/xtfs_lsvol create mode 120000 bin/xtfs_mkvol create mode 120000 bin/xtfs_mount create mode 120000 bin/xtfs_rmvol create mode 120000 bin/xtfs_send create mode 120000 bin/xtfs_stat create mode 100755 bin/xtfs_test diff --git a/bin/xtfs_lsvol b/bin/xtfs_lsvol new file mode 120000 index 000000000..1d5f4507c --- /dev/null +++ b/bin/xtfs_lsvol @@ -0,0 +1 @@ +../src/client/bin/xtfs_lsvol \ No newline at end of file diff --git a/bin/xtfs_mkvol b/bin/xtfs_mkvol new file mode 120000 index 000000000..087e10be3 --- /dev/null +++ b/bin/xtfs_mkvol @@ -0,0 +1 @@ +../src/client/bin/xtfs_mkvol \ No newline at end of file diff --git a/bin/xtfs_mount b/bin/xtfs_mount new file mode 120000 index 000000000..f88872479 --- /dev/null +++ b/bin/xtfs_mount @@ -0,0 +1 @@ +../src/client/bin/xtfs_mount \ No newline at end of file diff --git a/bin/xtfs_rmvol b/bin/xtfs_rmvol new file mode 120000 index 000000000..38074edc4 --- /dev/null +++ b/bin/xtfs_rmvol @@ -0,0 +1 @@ +../src/client/bin/xtfs_rmvol \ No newline at end of file diff --git a/bin/xtfs_send b/bin/xtfs_send new file mode 120000 index 000000000..736295dfc --- /dev/null +++ b/bin/xtfs_send @@ -0,0 +1 @@ +../src/client/bin/xtfs_send \ No newline at end of file diff --git a/bin/xtfs_stat b/bin/xtfs_stat new file mode 120000 index 000000000..5ea24253b --- /dev/null +++ b/bin/xtfs_stat @@ -0,0 +1 @@ +../src/client/bin/xtfs_stat \ No newline at end of file diff --git a/bin/xtfs_test b/bin/xtfs_test new file mode 100755 index 000000000..6fd9b56b6 --- /dev/null +++ b/bin/xtfs_test @@ -0,0 +1,344 @@ +#!/usr/bin/env python + +import sys, os.path, signal, shutil, time, traceback, unittest, subprocess +from errno import * +from optparse import OptionParser +from subprocess import Popen, call + + +# Constants +# Private key passphrases +CLIENT_PKCS12_PASSPHRASE = "passphrase" +DIR_PKCS12_PASSPHRASE = "passphrase" +MRC_PKCS12_PASSPHRASE = "passphrase" +OSD_PKCS12_PASSPHRASE = "passphrase" +TRUSTED_CERTS_JKS_PASSPHRASE = "passphrase" + +# Paths +MY_DIR_PATH = os.path.dirname( os.path.abspath( sys.modules[__name__].__file__ ) ) +XTREEMFS_DIR_PATH = os.path.abspath( os.path.join( MY_DIR_PATH, ".." ) ) + +CERT_DIR_PATH = os.path.abspath( os.path.join( MY_DIR_PATH, "..", "certs" ) ) +CLIENT_PKCS12_FILE_PATH = os.path.join( CERT_DIR_PATH, "Client.p12" ) +DIR_PKCS12_FILE_PATH = os.path.join( CERT_DIR_PATH, "DIR.p12" ) +MRC_PKCS12_FILE_PATH = os.path.join( CERT_DIR_PATH, "MRC.p12" ) +OSD_PKCS12_FILE_PATH = os.path.join( CERT_DIR_PATH, "OSD.p12" ) +TRUSTED_CERTS_JKS_FILE_PATH = os.path.join( CERT_DIR_PATH, "trusted.jks" ) + +CLASSPATH = ( os.path.join( XTREEMFS_DIR_PATH, "src", "servers", "dist", "XtreemFS.jar" ), + os.path.join( XTREEMFS_DIR_PATH, "src", "servers", "lib", "BabuDB-0.1.0-RC.jar" ) ) + +XTFS_MKVOL_FILE_PATH = os.path.join( XTREEMFS_DIR_PATH, "bin", "xtfs_mkvol" + ( sys.platform.startswith( "win" ) and ".exe" or "" ) ) +XTFS_MOUNT_FILE_PATH = os.path.join( XTREEMFS_DIR_PATH, "bin", "xtfs_mount" + ( sys.platform.startswith( "win" ) and ".exe" or "" ) ) + + +# Ports +DIR_HTTP_PORT = 30638 +DIR_ONCRPC_PORT = 32638 +MRC_HTTP_PORT = 30636 +MRC_ONCRPC_PORT = 32636 +OSD_HTTP_PORT = 30640 +OSD_ONCRPC_PORT = 32640 + +# Option defaults +DEBUG_LEVEL_DEFAULT = 0 +NUM_OSDS_DEFAULT = 1 +SSL_ENABLED_DEFAULT = False +STRIPE_SIZE_DEFAULT = 128 +STRIPING_POLICY_TYPE_DEFAULT = "RAID0" + + +# Singletons +original_cwd = os.getcwd() + + +def check_environment(): + if os.environ.has_key( "JAVA_HOME" ): +# JVERS=`$JAVA_HOME/bin/java -version 2>&1 | grep "java version" | \ +# cut -d " " -f 3` +# perl -e " exit 1 if ($JVERS < \"1.6.0\");" +# if [ $? -eq 1 ]; then +# echo "ERROR: java version is $JVERS but required is >= 1.6.0" +# exit 1 +# fi +# fi +# echo "java home $JAVA_HOME" + pass + else: + print "$JAVA_HOME not set, JDK/JRE 1.6 required" + return False + + for file_path in ( XTFS_MOUNT_FILE_PATH, ) + CLASSPATH: + if not os.path.exists( file_path ): + print "ERROR: %(file_path)s does not exist." % locals() + return False + + return True + + +def execute_tests( num_osds=NUM_OSDS_DEFAULT, verbose=False ): + tests_dir_path = os.path.join( MY_DIR_PATH, "tests" ) + sys.path.append( tests_dir_path ) + test_suites = {} + for file_name in os.listdir( tests_dir_path ): + if file_name.endswith( ".py" ): + test_module_name = os.path.splitext( file_name )[0] + print "Trying to import test", test_module_name + try: + test_module = __import__( test_module_name ) + except ImportError: + print "Could not import", test_module_name, "from tests" + traceback.print_exc() + continue + + if hasattr( test_module, "createTestSuite" ): + createTestSuite = getattr( test_module, "createTestSuite" ) + if verbose: + test_suite = createTestSuite( stdout=sys.stdout, stderr=sys.stderr ) + else: + test_suite = createTestSuite( stdout=subprocess.PIPE, stderr=subproces.STDOUT ) + if test_suite is not None: + test_suites[test_module_name] = test_suite + else: + print "Test module", test_module_name, "does not have a createTestSuite global function" + + test_module_names = test_suites.keys() + test_module_names.sort() + for test_module_name in test_module_names: + test_suite = test_suites[test_module_name] + for mount_point_dir_name in os.listdir( os.path.join( MY_DIR_PATH, "mnt" ) ): + mount_point_dir_path = os.path.join( MY_DIR_PATH, "mnt", mount_point_dir_name ) + print "Running", test_module_name, "in", mount_point_dir_path + test_run_dir_path = os.path.join( mount_point_dir_path, test_module_name ) + try: os.mkdir( test_run_dir_path ) + except: pass + os.chdir( test_run_dir_path ) + unittest.TextTestRunner().run( test_suite ) + os.chdir( mount_point_dir_path ) + shutil.rmtree( test_run_dir_path ) + + os.chdir( original_cwd ) + + +def generate_dir_config( debug_level=DEBUG_LEVEL_DEFAULT, ssl_enabled=SSL_ENABLED_DEFAULT ): + locals().update( globals() ) + database_dir = os.path.join( "data", "dir" ) + open( os.path.join( "config", "dir.config" ), "w+" ).write( """\ +uuid = test-env-DIR +debug_level = %(debug_level)s +listen.port = %(DIR_ONCRPC_PORT)u +http_port = %(DIR_HTTP_PORT)u +database.dir = %(database_dir)s +authentication_provider = org.xtreemfs.common.auth.NullAuthProvider +""" % locals() + _generate_ssl_config( ssl_enabled, DIR_PKCS12_FILE_PATH, DIR_PKCS12_PASSPHRASE ) ) + +def generate_mrc_config( debug_level=DEBUG_LEVEL_DEFAULT, ssl_enabled=SSL_ENABLED_DEFAULT ): + locals().update( globals() ) + database_log = os.path.join( "data", "mrc" ) + database_dir = os.path.join( "data", "mrc" ) + open( os.path.join( "config", "mrc.config" ), "w+" ).write( """\ +uuid = test-env-MRC +debug_level = %(debug_level)s +listen.port = %(MRC_ONCRPC_PORT)u +http_port = %(MRC_HTTP_PORT)u +dir_service.port = %(DIR_ONCRPC_PORT)u +dir_service.host = localhost +database.log = %(database_log)s +database.dir = %(database_dir)s +osd_check_interval = 300 +no_atime = true +no_fsync = true +local_clock_renewal = 50 +remote_time_sync = 60000 +database.checkpoint.interval = 1800000 +database.checkpoint.idle_interval = 1000 +database.checkpoint.logfile_size = 16384 +authentication_provider = org.xtreemfs.common.auth.NullAuthProvider +capability_secret = testsecret +""" % locals() + _generate_ssl_config( ssl_enabled, MRC_PKCS12_FILE_PATH, MRC_PKCS12_PASSPHRASE ) ) + +def generate_osd_config( debug_level=DEBUG_LEVEL_DEFAULT, ssl_enabled=SSL_ENABLED_DEFAULT, osdnum=1 ): + locals().update( globals() ) + listen_port = OSD_ONCRPC_PORT + int( osdnum ) + http_port = OSD_HTTP_PORT + int( osdnum ) + object_dir = os.path.join( "data", "osd" + str( osdnum ) ) + open( os.path.join( "config", "osd" + str( osdnum ) + ".config" ), "w+" ).write( """\ +uuid = test-env-OSD%(osdnum)s +debug_level = %(debug_level)s +listen.port = %(listen_port)u +http_port = %(http_port)u +dir_service.host = localhost +dir_service.port = %(DIR_ONCRPC_PORT)u +object_dir=%(object_dir)s +local_clock_renewal = 50 +remote_time_sync = 60000 +report_free_space = true +checksums.enabled = false +capability_secret = testsecret +""" % locals() + _generate_ssl_config( ssl_enabled, OSD_PKCS12_FILE_PATH, OSD_PKCS12_PASSPHRASE ) ) + +def _generate_ssl_config( ssl_enabled, pkcs12_file_path, pkcs12_passphrase ): + locals().update( globals() ) + if ssl_enabled: + return """\ +ssl.enabled = true +ssl.service_creds = %(pkcs12_file_path)s +ssl.service_creds.pw = %(pks12_passphrase)s +ssl.service_creds.container = PKCS12 +ssl.trusted_certs = %(TRUSTED_CERTS_JKS_FILE_PATH)s +ssl.trusted_certs.pw = %(TRUSTED_CERTS_JCS_PASSPHRASE)s +ssl.trusted_certs.container = JKS +""" % locals() + else: + return """\ +ssl.enabled = false +""" + + +def start_environment( debug_level=DEBUG_LEVEL_DEFAULT, num_osds=NUM_OSDS_DEFAULT, ssl_enabled=SSL_ENABLED_DEFAULT, create_volumes=True, mount_volumes=True ): + # prepare_test_directory + for subdir_name in ( "config", "data", "log", "mnt", "run" ): + if not os.path.exists( subdir_name ): + os.mkdir( subdir_name ) + + generate_dir_config( debug_level, ssl_enabled ) + generate_mrc_config( debug_level, ssl_enabled ) + for osdnum in xrange( num_osds ): + generate_osd_config( debug_level, ssl_enabled, osdnum ) + + _start_service( "dir" ) + _start_service( "mrc" ) + for osdnum in xrange( num_osds ): + _start_service( "osd", str( osdnum ) ) + + time.sleep( 1.0 ) # Wait for the servers to start + + if ssl_enabled: + client_ssl_args = ( "--pkcs12-file-path=%(CLIENT_PKCS12_FILE_PATH)s", "--pkcs12-passphrase=%(CLIENT_PKCS12_PASSPHRASE)s" ) + + if create_volumes: + for osdnum in xrange( num_osds ): + xtfs_mkvol_args = [XTFS_MKVOL_FILE_PATH] + xtfs_mkvol_args.extend( ( "-d", str( debug_level ) ) ) + if ssl_enabled: xtfs_mkvol_args.extend( client_ssl_args ) + xtfs_mkvol_args.extend( ( "-p", str( STRIPING_POLICY_TYPE_DEFAULT ) ) ) + xtfs_mkvol_args.extend( ( "-s", str( STRIPE_SIZE_DEFAULT ) ) ) + xtfs_mkvol_args.extend( ( "-w", str( osdnum + 1 ) ) ) # Stripe width + xtfs_mkvol_args.append( "localhost/test_%(osdnum)u" % locals() ) + xtfs_mkvol_args = " ".join( xtfs_mkvol_args ) + print "Creating volume test_%(osdnum)s with command line" % locals(), xtfs_mkvol_args + retcode = call( xtfs_mkvol_args, shell=True ) + if retcode != 0 and retcode != EEXIST: + print "FAILED: cannot create volume test_%(osdnum)u" % locals() + stop_environment( num_osds ) + sys.exit( 1 ) + + if mount_volumes: + for osdnum in xrange( num_osds ): + for direct_io in ( False, True ): + mount_dir_name = str( osdnum ) + ( not direct_io and "_nondirect" or "" ) + mount_dir_path = os.path.join( "mnt", mount_dir_name ) + xtfs_mount_args = [XTFS_MOUNT_FILE_PATH] + xtfs_mount_args.extend( ( "-d", str( debug_level ) ) ) + xtfs_mount_args.append( "-f" ) # So we can redirect stdout and stderr + if ssl_enabled: xtfs_mount_args.extend( client_ssl_args ) + if direct_io: xtfs_mount_args.extend( ( "-o", "direct_io" ) ) + DIR_ONCRPC_PORT = globals()["DIR_ONCRPC_PORT"] + xtfs_mount_args.append( "localhost:%(DIR_ONCRPC_PORT)s/test_%(osdnum)u" % locals() ) + xtfs_mount_args.append( mount_dir_path ) + xtfs_mount_args = " ".join( xtfs_mount_args ) + print "Mounting volume test_%(osdnum)s with command line" % locals(), xtfs_mount_args + if not os.path.exists( mount_dir_path ): os.mkdir( mount_dir_path ) + log_file_path = os.path.join( "log", "client" + mount_dir_name + ".log" ) + stderr = stdout = open( log_file_path, "a" ) + xtfs_mount_process = Popen( xtfs_mount_args, shell=True, stdout=stdout, stderr=stderr ) + + +def _start_service( service_name, service_num="" ): + args = [os.path.join( os.environ["JAVA_HOME"], "bin", "java" )] + args.append( "-ea" ) # Enable assertions + args.extend( ( "-cp", "" + ( sys.platform.startswith( "win" ) and ";".join( CLASSPATH ) or ":".join( CLASSPATH ) ) + "", ) ) + args.append( "org.xtreemfs." + service_name + "." + service_name.upper() ) # Class name + args.append( os.path.join( "config", service_name + service_num + ".config" ) ) # Configuration file + args = " ".join( args ) + log_file_path = os.path.join( "log", service_name + service_num + ".log" ) + stderr = stdout = open( log_file_path, "a" ) + print "Starting", service_name.upper() + service_num, "service with command line", args, "and redirecting output to", log_file_path + p = Popen( args, shell=True, stdout=stdout, stderr=stderr ) + time.sleep( 2.0 ) + open( os.path.join( "run", service_name + service_num + ".run" ), "w+" ).write( str( p.pid ) ) + + +def stop_environment( num_osds=NUM_OSDS_DEFAULT ): + for osdnum in xrange( num_osds ): + _stop_service( "osd", str( osdnum ) ) + _stop_service( "mrc" ) + _stop_service( "dir" ) # Stop the DIR last so the other services can deregister + + mnt_dir_path = os.path.abspath( "mnt" ) + for mounts_line in open( "/proc/mounts" ).readlines(): + mounts_line_parts = mounts_line.split() + device = mounts_line_parts[0] + mount_point_dir_path = mounts_line_parts[1] + if device == "/dev/fuse" and mount_point_dir_path.startswith( mnt_dir_path ): + fusermount_args = " ".join( ["fusermount", "-u", mount_point_dir_path] ) + print "Unmounting volume with", fusermount_args + call( fusermount_args, shell=True ) + +def _stop_service( service_name, service_num="" ): + run_file_path = os.path.join( "run", service_name + service_num + ".run" ) + if os.path.exists( run_file_path ): + service_pid = int( open( run_file_path ).read().strip() ) + print "Stopping", service_name.upper() + service_num, "service with PID", service_pid + if sys.platform.startswith( "win" ): + call( "TASKKILL /PID %(service_pid)u /F /T" % locals() ) + else: + try: + os.kill( service_pid, signal.SIGTERM ) + except: + traceback.print_exc() + os.unlink( run_file_path ) + else: + print "ERROR:", run_file_path, "does not exist,", service_name.upper(), "service is not running." + + +if __name__ == "__main__": + if not check_environment(): + sys.exit( 1 ) + + + option_parser = OptionParser() + option_parser.add_option( "-d", action="store", dest="debug_level", default=DEBUG_LEVEL_DEFAULT ) + option_parser.add_option( "--execute_tests", action="store_true", dest="execute_tests" ) + option_parser.add_option( "-m", action="store_true", dest="disable_create_volumes" ) + option_parser.add_option( "-n", action="store_true", dest="disable_mount_volumes" ) + option_parser.add_option( "-o", action="store", dest="num_osds", type="int", default=NUM_OSDS_DEFAULT ) + option_parser.add_option( "--start", action="store_true", dest="start_environment" ) + option_parser.add_option( "--start_environment", action="store_true", dest="start_environment" ) + option_parser.add_option( "--stop", action="store_true", dest="stop_environment" ) + option_parser.add_option( "--stop_environment", action="store_true", dest="stop_environment" ) + option_parser.add_option( "-s", action="store_true", dest="ssl_enabled", default=SSL_ENABLED_DEFAULT ) + option_parser.add_option( "--test", action="store_true", dest="execute_tests" ) + option_parser.add_option( "-v", "--verbose", action="store_true", dest="verbose" ) + options, ignore = option_parser.parse_args() + + + if options.execute_tests: + execute_tests( verbose=options.verboses ) + elif options.stop_environment: + stop_environment() + else: + stop_environment() + start_environment( debug_level=options.debug_level, ssl_enabled=options.ssl_enabled, num_osds=options.num_osds, create_volumes=not options.disable_create_volumes, mount_volumes=not options.disable_mount_volumes ) + time.sleep( 1.0 ) # Wait for clients and servers to start up + if not options.start_environment: # i.e. no options were specified + try: + execute_tests( num_osds=options.num_osds, verbose=options.verbose ) + except KeyboardInterrupt: + pass + except: + traceback.print_exc() + os.chdir( original_cwd ) + stop_environment() + + -- GitLab From 6cbf963137a8a4320701059af3f07bd914e6d70c Mon Sep 17 00:00:00 2001 From: stenjan Date: Fri, 8 May 2009 16:40:11 +0000 Subject: [PATCH 33/97] MRC backend: added performance tweak for faster metadata lookups git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@623 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- .../database/babudb/BabuDBStorageHelper.java | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageHelper.java b/src/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageHelper.java index 0ce1f1e8e..99fefac8e 100644 --- a/src/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageHelper.java +++ b/src/servers/src/org/xtreemfs/mrc/database/babudb/BabuDBStorageHelper.java @@ -449,8 +449,8 @@ public class BabuDBStorageHelper { // determine the full file name which the entry refers to, depending // on the metadata type (0: file, 2: link) - String entryFileName = next.getValue()[0] == 2 ? new String(next.getValue(), 8, - next.getValue().length - 8) : new BufferBackedRCMetadata(next.getKey(), next.getValue()) + String entryFileName = next.getValue()[0] == 2 ? new String(next.getValue(), 9, + next.getValue().length - 9) : new BufferBackedRCMetadata(next.getKey(), next.getValue()) .getFileName(); // check whether file exists, i.e.\ the file name stored in the @@ -581,6 +581,34 @@ public class BabuDBStorageHelper { public static BufferBackedFileMetadata getMetadata(BabuDB database, String dbName, long parentId, String fileName) throws BabuDBException { + // first, check the most common case: do a lookups to the first + // key to find the element + + byte[] key = BabuDBStorageHelper.createFilePrefixKey(parentId, fileName, (byte) 1); + byte[] value = database.directLookup(dbName, BabuDBStorageManager.FILE_ID_INDEX, key); + + if (value != null) { + + BufferBackedRCMetadata rcMetadata = new BufferBackedRCMetadata(key, value); + + // if the metadata was found, look up frequently changed metadata + // and XLoc list and return the result + if (fileName.equals(rcMetadata.getFileName())) { + + byte[][] keyBufs = new byte[][] { + BabuDBStorageHelper.createFilePrefixKey(parentId, fileName, (byte) 0), key, + BabuDBStorageHelper.createFilePrefixKey(parentId, fileName, (byte) 2) }; + byte[][] valBufs = new byte[][] { + database.directLookup(dbName, BabuDBStorageManager.FILE_ID_INDEX, keyBufs[0]), value, + database.directLookup(dbName, BabuDBStorageManager.FILE_ID_INDEX, keyBufs[2]) }; + + return new BufferBackedFileMetadata(keyBufs, valBufs, BabuDBStorageManager.FILE_INDEX); + } + } + + // otherwise, the file does not exist or there is a collision; in this + // case, find the file by means of a prefix lookup + // first, find the file's collision number short collNumber = BabuDBStorageHelper.findFileCollisionNumber(database, dbName, parentId, fileName); if (collNumber == -1) -- GitLab From 7f00217733ea08a7bf334bc8f9c28b77657003cf Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 17:24:58 +0000 Subject: [PATCH 34/97] xtfs_test: path fixes git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@624 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- Makefile | 17 ++++++++++------- bin/xtfs_test | 31 +++++++++++++++++-------------- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index 241f36351..cf976ed88 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ endif WHICH_GPP = $(shell which g++) -TARGETS = client server +TARGETS = client server test .PHONY: clean distclean # Some toplevel configuration @@ -40,17 +40,20 @@ check: @echo "python ok" .PHONY: client client_clean client_distclean -client: +client: check python src/client/scons.py -C src/client -client_clean: +client_clean: check python src/client/scons.py -C src/client -c -client_distclean: +client_distclean: check python src/client/scons.py -C src/client -c .PHONY: server server_clean server_distclean server: check - $(ANT_BIN) -f src/servers/build.xml jar + $(ANT_BIN) -f src/servers/build.xml jar server_clean: check - $(ANT_BIN) -f src/servers/build.xml clean || exit 1; + $(ANT_BIN) -f src/servers/build.xml clean || exit 1; server_distclean: check - $(ANT_BIN) -f src/servers/build.xml clean || exit 1; + $(ANT_BIN) -f src/servers/build.xml clean || exit 1; + +test: client server + $(XTFS_BINDIR)/xtfs_test diff --git a/bin/xtfs_test b/bin/xtfs_test index 6fd9b56b6..575fab62e 100755 --- a/bin/xtfs_test +++ b/bin/xtfs_test @@ -17,8 +17,9 @@ TRUSTED_CERTS_JKS_PASSPHRASE = "passphrase" # Paths MY_DIR_PATH = os.path.dirname( os.path.abspath( sys.modules[__name__].__file__ ) ) XTREEMFS_DIR_PATH = os.path.abspath( os.path.join( MY_DIR_PATH, ".." ) ) +XTREEMFS_TESTS_DIR_PATH = os.path.join( XTREEMFS_DIR_PATH, "tests" ) -CERT_DIR_PATH = os.path.abspath( os.path.join( MY_DIR_PATH, "..", "certs" ) ) +CERT_DIR_PATH = os.path.join( XTREEMFS_DIR_PATH, "tests", "certs" ) CLIENT_PKCS12_FILE_PATH = os.path.join( CERT_DIR_PATH, "Client.p12" ) DIR_PKCS12_FILE_PATH = os.path.join( CERT_DIR_PATH, "DIR.p12" ) MRC_PKCS12_FILE_PATH = os.path.join( CERT_DIR_PATH, "MRC.p12" ) @@ -77,10 +78,9 @@ def check_environment(): def execute_tests( num_osds=NUM_OSDS_DEFAULT, verbose=False ): - tests_dir_path = os.path.join( MY_DIR_PATH, "tests" ) - sys.path.append( tests_dir_path ) + sys.path.append( XTREEMFS_TESTS_DIR_PATH ) test_suites = {} - for file_name in os.listdir( tests_dir_path ): + for file_name in os.listdir( XTREEMFS_TESTS_DIR_PATH ): if file_name.endswith( ".py" ): test_module_name = os.path.splitext( file_name )[0] print "Trying to import test", test_module_name @@ -96,7 +96,7 @@ def execute_tests( num_osds=NUM_OSDS_DEFAULT, verbose=False ): if verbose: test_suite = createTestSuite( stdout=sys.stdout, stderr=sys.stderr ) else: - test_suite = createTestSuite( stdout=subprocess.PIPE, stderr=subproces.STDOUT ) + test_suite = createTestSuite( stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) if test_suite is not None: test_suites[test_module_name] = test_suite else: @@ -106,8 +106,8 @@ def execute_tests( num_osds=NUM_OSDS_DEFAULT, verbose=False ): test_module_names.sort() for test_module_name in test_module_names: test_suite = test_suites[test_module_name] - for mount_point_dir_name in os.listdir( os.path.join( MY_DIR_PATH, "mnt" ) ): - mount_point_dir_path = os.path.join( MY_DIR_PATH, "mnt", mount_point_dir_name ) + for mount_point_dir_name in os.listdir( os.path.join( original_cwd, "mnt" ) ): + mount_point_dir_path = os.path.join( original_cwd, "mnt", mount_point_dir_name ) print "Running", test_module_name, "in", mount_point_dir_path test_run_dir_path = os.path.join( mount_point_dir_path, test_module_name ) try: os.mkdir( test_run_dir_path ) @@ -228,16 +228,19 @@ def start_environment( debug_level=DEBUG_LEVEL_DEFAULT, num_osds=NUM_OSDS_DEFAUL xtfs_mkvol_args = " ".join( xtfs_mkvol_args ) print "Creating volume test_%(osdnum)s with command line" % locals(), xtfs_mkvol_args retcode = call( xtfs_mkvol_args, shell=True ) - if retcode != 0 and retcode != EEXIST: - print "FAILED: cannot create volume test_%(osdnum)u" % locals() - stop_environment( num_osds ) - sys.exit( 1 ) +# if retcode != 0 and retcode != EEXIST: +# print "FAILED: cannot create volume test_%(osdnum)u" % locals() +# stop_environment( num_osds ) +# sys.exit( 1 ) if mount_volumes: + assert os.getcwd() == original_cwd + try: os.mkdir( "mnt" ) + except: pass for osdnum in xrange( num_osds ): for direct_io in ( False, True ): mount_dir_name = str( osdnum ) + ( not direct_io and "_nondirect" or "" ) - mount_dir_path = os.path.join( "mnt", mount_dir_name ) + mount_dir_path = os.path.join( original_cwd, "mnt", mount_dir_name ) xtfs_mount_args = [XTFS_MOUNT_FILE_PATH] xtfs_mount_args.extend( ( "-d", str( debug_level ) ) ) xtfs_mount_args.append( "-f" ) # So we can redirect stdout and stderr @@ -265,7 +268,7 @@ def _start_service( service_name, service_num="" ): stderr = stdout = open( log_file_path, "a" ) print "Starting", service_name.upper() + service_num, "service with command line", args, "and redirecting output to", log_file_path p = Popen( args, shell=True, stdout=stdout, stderr=stderr ) - time.sleep( 2.0 ) + time.sleep( 1.0 ) open( os.path.join( "run", service_name + service_num + ".run" ), "w+" ).write( str( p.pid ) ) @@ -275,7 +278,7 @@ def stop_environment( num_osds=NUM_OSDS_DEFAULT ): _stop_service( "mrc" ) _stop_service( "dir" ) # Stop the DIR last so the other services can deregister - mnt_dir_path = os.path.abspath( "mnt" ) + mnt_dir_path = os.path.abspath( os.path.join( original_cwd, "mnt" ) ) for mounts_line in open( "/proc/mounts" ).readlines(): mounts_line_parts = mounts_line.split() device = mounts_line_parts[0] -- GitLab From b922f7491e849531b508e97bcd6d4c42a8c85570 Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 18:32:16 +0000 Subject: [PATCH 35/97] xtfs_test: pass verbose to the test runner git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@625 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- bin/xtfs_test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/xtfs_test b/bin/xtfs_test index 575fab62e..44e73b76c 100755 --- a/bin/xtfs_test +++ b/bin/xtfs_test @@ -113,7 +113,7 @@ def execute_tests( num_osds=NUM_OSDS_DEFAULT, verbose=False ): try: os.mkdir( test_run_dir_path ) except: pass os.chdir( test_run_dir_path ) - unittest.TextTestRunner().run( test_suite ) + unittest.TextTestRunner( verbosity=( verbose and 2 or 1 ) ).run( test_suite ) os.chdir( mount_point_dir_path ) shutil.rmtree( test_run_dir_path ) -- GitLab From 30a7aeceae70f9c979587ca376efa7b7c59ecb93 Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Fri, 8 May 2009 19:22:24 +0000 Subject: [PATCH 36/97] Makefile: removed test from all git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@626 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index cf976ed88..c197ebbea 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ endif WHICH_GPP = $(shell which g++) -TARGETS = client server test +TARGETS = client server .PHONY: clean distclean # Some toplevel configuration -- GitLab From c16a1fc4170ce4233bd918aa47efd29383546e73 Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Sun, 10 May 2009 19:15:10 +0000 Subject: [PATCH 37/97] xtfs_test: redirecting dbench output to /dev/NULL, try except around rmtree git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@627 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- bin/xtfs_test | 6 +++++- tests/13_dbench.py | 9 ++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/bin/xtfs_test b/bin/xtfs_test index 44e73b76c..f5d7d5c36 100755 --- a/bin/xtfs_test +++ b/bin/xtfs_test @@ -115,7 +115,8 @@ def execute_tests( num_osds=NUM_OSDS_DEFAULT, verbose=False ): os.chdir( test_run_dir_path ) unittest.TextTestRunner( verbosity=( verbose and 2 or 1 ) ).run( test_suite ) os.chdir( mount_point_dir_path ) - shutil.rmtree( test_run_dir_path ) + try: shutil.rmtree( test_run_dir_path ) + except: traceback.print_exc() os.chdir( original_cwd ) @@ -337,11 +338,14 @@ if __name__ == "__main__": if not options.start_environment: # i.e. no options were specified try: execute_tests( num_osds=options.num_osds, verbose=options.verbose ) + ret = 0 except KeyboardInterrupt: pass except: traceback.print_exc() + ret = 1 os.chdir( original_cwd ) stop_environment() + sys.exit( ret ) diff --git a/tests/13_dbench.py b/tests/13_dbench.py index 9e56b9bd6..d93e6786a 100644 --- a/tests/13_dbench.py +++ b/tests/13_dbench.py @@ -7,11 +7,6 @@ DBENCH_CLIENT_TXT_GZ_FILE_PATH = os.path.join( MY_DIR_PATH, "dbench-client.txt.g class dbenchTest(unittest.TestCase): - def __init__( self, stdout=sys.stdout, stderr=sys.stderr ): - unittest.TestCase.__init__( self ) - self.stdout = stdout - self.stderr = stderr - def runTest( self ): gzip_client_txt_gz_data = gzip.GzipFile( DBENCH_CLIENT_TXT_GZ_FILE_PATH, mode="rb" ).read() assert len( gzip_client_txt_gz_data ) > 0 @@ -19,14 +14,14 @@ class dbenchTest(unittest.TestCase): assert os.stat( "dbench-client.txt" ).st_size > 0 args = "dbench -c dbench-client.txt -D . 5" - p = subprocess.Popen( args, shell=True, stdout=self.stdout, stderr=self.stderr ) + p = subprocess.Popen( args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) retcode = p.wait() self.assertEqual( retcode, 0 ) def createTestSuite( *args, **kwds ): if not sys.platform.startswith( "win" ): - return unittest.TestSuite( [dbenchTest( *args, **kwds )] ) + return unittest.TestSuite( [dbenchTest()] ) if __name__ == "__main__": -- GitLab From 56f4d503400c6077587f11e6a6a0ff0965b8124b Mon Sep 17 00:00:00 2001 From: "bjoern.kolbeck" Date: Sun, 10 May 2009 19:32:15 +0000 Subject: [PATCH 38/97] servers: changed UDP messages to use ONC RPC/XDR git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@628 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- .../interfaces/OSDInterface/OSDInterface.java | 4 +- .../xtreemfs_broadcast_gmaxRequest.java | 105 ++++++++++++++ .../xtreemfs_broadcast_gmaxResponse.java | 70 +++++++++ .../OSDInterface/xtreemfs_pingRequest.java | 78 ++++++++++ .../OSDInterface/xtreemfs_pingResponse.java | 77 ++++++++++ .../utils/ONCRPCResponseHeader.java | 2 +- .../xtreemfs/interfaces/utils/XDRUtils.java | 4 + .../xtreemfs/osd/OSDRequestDispatcher.java | 42 ++++-- .../org/xtreemfs/osd/stages/VivaldiStage.java | 15 +- .../xtreemfs/osd/storage/StorageThread.java | 10 +- .../xtreemfs/osd/striping/GMAXMessage.java | 101 ------------- .../org/xtreemfs/osd/striping/UDPMessage.java | 123 +++++++++++++--- .../test/osd/SimpleVivaldiStageTest.java | 89 ++++++++++++ .../org/xtreemfs/test/osd/UDPComTest.java | 137 ++++++++++++++++++ 14 files changed, 702 insertions(+), 155 deletions(-) create mode 100644 src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_broadcast_gmaxRequest.java create mode 100644 src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_broadcast_gmaxResponse.java create mode 100644 src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_pingRequest.java create mode 100644 src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_pingResponse.java delete mode 100644 src/servers/src/org/xtreemfs/osd/striping/GMAXMessage.java create mode 100644 src/servers/test/org/xtreemfs/test/osd/SimpleVivaldiStageTest.java create mode 100644 src/servers/test/org/xtreemfs/test/osd/UDPComTest.java diff --git a/src/servers/src/org/xtreemfs/interfaces/OSDInterface/OSDInterface.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/OSDInterface.java index c4fb48d4a..4bb6857b2 100644 --- a/src/servers/src/org/xtreemfs/interfaces/OSDInterface/OSDInterface.java +++ b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/OSDInterface.java @@ -31,6 +31,8 @@ public class OSDInterface case 101: return new xtreemfs_internal_truncateRequest(); case 102: return new xtreemfs_internal_read_localRequest(); case 50: return new xtreemfs_shutdownRequest(); + case 1000: return new xtreemfs_broadcast_gmaxRequest(); + case 1001: return new xtreemfs_pingRequest(); default: throw new Exception( "unknown request number " + Integer.toString( header.getOperationNumber() ) ); } @@ -40,7 +42,7 @@ public class OSDInterface { switch( header.getXID() ) { - case 1: return new readResponse(); case 2: return new truncateResponse(); case 3: return new unlinkResponse(); case 4: return new writeResponse(); case 103: return new xtreemfs_check_objectResponse(); case 100: return new xtreemfs_internal_get_gmaxResponse(); case 104: return new xtreemfs_internal_get_file_sizeResponse(); case 101: return new xtreemfs_internal_truncateResponse(); case 102: return new xtreemfs_internal_read_localResponse(); case 50: return new xtreemfs_shutdownResponse(); + case 1: return new readResponse(); case 2: return new truncateResponse(); case 3: return new unlinkResponse(); case 4: return new writeResponse(); case 103: return new xtreemfs_check_objectResponse(); case 100: return new xtreemfs_internal_get_gmaxResponse(); case 104: return new xtreemfs_internal_get_file_sizeResponse(); case 101: return new xtreemfs_internal_truncateResponse(); case 102: return new xtreemfs_internal_read_localResponse(); case 50: return new xtreemfs_shutdownResponse(); case 1000: return new xtreemfs_broadcast_gmaxResponse(); case 1001: return new xtreemfs_pingResponse(); default: throw new Exception( "unknown response number " + Integer.toString( header.getXID() ) ); } } diff --git a/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_broadcast_gmaxRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_broadcast_gmaxRequest.java new file mode 100644 index 000000000..8fe00f69d --- /dev/null +++ b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_broadcast_gmaxRequest.java @@ -0,0 +1,105 @@ +package org.xtreemfs.interfaces.OSDInterface; + +import org.xtreemfs.interfaces.*; +import java.util.HashMap; +import org.xtreemfs.interfaces.utils.*; +import org.xtreemfs.foundation.oncrpc.utils.ONCRPCBufferWriter; +import org.xtreemfs.common.buffer.ReusableBuffer; + + + + +public class xtreemfs_broadcast_gmaxRequest implements org.xtreemfs.interfaces.utils.Request +{ + public xtreemfs_broadcast_gmaxRequest() { fileId = ""; truncateEpoch = 0; lastObject = 0; fileSize = 0; } + public xtreemfs_broadcast_gmaxRequest( String fileId, long truncateEpoch, long lastObject, long fileSize ) { this.fileId = fileId; this.truncateEpoch = truncateEpoch; this.lastObject = lastObject; this.fileSize = fileSize; } + public xtreemfs_broadcast_gmaxRequest( Object from_hash_map ) { fileId = ""; truncateEpoch = 0; lastObject = 0; fileSize = 0; this.deserialize( from_hash_map ); } + public xtreemfs_broadcast_gmaxRequest( Object[] from_array ) { fileId = ""; truncateEpoch = 0; lastObject = 0; fileSize = 0;this.deserialize( from_array ); } + + public String getFileId() { return fileId; } + public void setFileId( String fileId ) { this.fileId = fileId; } + public long getTruncateEpoch() { return truncateEpoch; } + public void setTruncateEpoch( long truncateEpoch ) { this.truncateEpoch = truncateEpoch; } + public long getLastObject() { return lastObject; } + public void setLastObject( long lastObject ) { this.lastObject = lastObject; } + public long getFileSize() { return fileSize; } + public void setFileSize( long fileSize ) { this.fileSize = fileSize; } + + public String getTypeName() { return "org::xtreemfs::interfaces::OSDInterface::xtreemfs_broadcast_gmaxRequest"; } + public long getTypeId() { return 1000; } + + public String toString() + { + return "xtreemfs_broadcast_gmaxRequest( " + "\"" + fileId + "\"" + ", " + Long.toString( truncateEpoch ) + ", " + Long.toString( lastObject ) + ", " + Long.toString( fileSize ) + " )"; + } + + + public void deserialize( Object from_hash_map ) + { + this.deserialize( ( HashMap )from_hash_map ); + } + + public void deserialize( HashMap from_hash_map ) + { + this.fileId = ( String )from_hash_map.get( "fileId" ); + this.truncateEpoch = ( ( Long )from_hash_map.get( "truncateEpoch" ) ).longValue(); + this.lastObject = ( ( Long )from_hash_map.get( "lastObject" ) ).longValue(); + this.fileSize = ( ( Long )from_hash_map.get( "fileSize" ) ).longValue(); + } + + public void deserialize( Object[] from_array ) + { + this.fileId = ( String )from_array[0]; + this.truncateEpoch = ( ( Long )from_array[1] ).longValue(); + this.lastObject = ( ( Long )from_array[2] ).longValue(); + this.fileSize = ( ( Long )from_array[3] ).longValue(); + } + + public void deserialize( ReusableBuffer buf ) + { + fileId = org.xtreemfs.interfaces.utils.XDRUtils.deserializeString( buf ); + truncateEpoch = buf.getLong(); + lastObject = buf.getLong(); + fileSize = buf.getLong(); + } + + public Object serialize() + { + HashMap to_hash_map = new HashMap(); + to_hash_map.put( "fileId", fileId ); + to_hash_map.put( "truncateEpoch", new Long( truncateEpoch ) ); + to_hash_map.put( "lastObject", new Long( lastObject ) ); + to_hash_map.put( "fileSize", new Long( fileSize ) ); + return to_hash_map; + } + + public void serialize( ONCRPCBufferWriter writer ) + { + org.xtreemfs.interfaces.utils.XDRUtils.serializeString( fileId, writer ); + writer.putLong( truncateEpoch ); + writer.putLong( lastObject ); + writer.putLong( fileSize ); + } + + public int calculateSize() + { + int my_size = 0; + my_size += org.xtreemfs.interfaces.utils.XDRUtils.stringLengthPadded(fileId); + my_size += ( Long.SIZE / 8 ); + my_size += ( Long.SIZE / 8 ); + my_size += ( Long.SIZE / 8 ); + return my_size; + } + + // Request + public int getOperationNumber() { return 1000; } + public Response createDefaultResponse() { return new xtreemfs_broadcast_gmaxResponse(); } + + + private String fileId; + private long truncateEpoch; + private long lastObject; + private long fileSize; + +} + diff --git a/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_broadcast_gmaxResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_broadcast_gmaxResponse.java new file mode 100644 index 000000000..758123933 --- /dev/null +++ b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_broadcast_gmaxResponse.java @@ -0,0 +1,70 @@ +package org.xtreemfs.interfaces.OSDInterface; + +import org.xtreemfs.interfaces.*; +import java.util.HashMap; +import org.xtreemfs.interfaces.utils.*; +import org.xtreemfs.foundation.oncrpc.utils.ONCRPCBufferWriter; +import org.xtreemfs.common.buffer.ReusableBuffer; + + + + +public class xtreemfs_broadcast_gmaxResponse implements org.xtreemfs.interfaces.utils.Response +{ + public xtreemfs_broadcast_gmaxResponse() { } + public xtreemfs_broadcast_gmaxResponse( Object from_hash_map ) { this.deserialize( from_hash_map ); } + public xtreemfs_broadcast_gmaxResponse( Object[] from_array ) { this.deserialize( from_array ); } + + public String getTypeName() { return "org::xtreemfs::interfaces::OSDInterface::xtreemfs_broadcast_gmaxResponse"; } + public long getTypeId() { return 1000; } + + public String toString() + { + return "xtreemfs_broadcast_gmaxResponse()"; + } + + + public void deserialize( Object from_hash_map ) + { + this.deserialize( ( HashMap )from_hash_map ); + } + + public void deserialize( HashMap from_hash_map ) + { + + } + + public void deserialize( Object[] from_array ) + { + + } + + public void deserialize( ReusableBuffer buf ) + { + + } + + public Object serialize() + { + HashMap to_hash_map = new HashMap(); +return to_hash_map; + } + + public void serialize( ONCRPCBufferWriter writer ) + { + + } + + public int calculateSize() + { + int my_size = 0; + + return my_size; + } + + // Response + public int getOperationNumber() { return 1000; } + + +} + diff --git a/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_pingRequest.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_pingRequest.java new file mode 100644 index 000000000..e61c656ff --- /dev/null +++ b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_pingRequest.java @@ -0,0 +1,78 @@ +package org.xtreemfs.interfaces.OSDInterface; + +import org.xtreemfs.interfaces.*; +import java.util.HashMap; +import org.xtreemfs.interfaces.utils.*; +import org.xtreemfs.foundation.oncrpc.utils.ONCRPCBufferWriter; +import org.xtreemfs.common.buffer.ReusableBuffer; + + + + +public class xtreemfs_pingRequest implements org.xtreemfs.interfaces.utils.Request +{ + public xtreemfs_pingRequest() { coordinates = new VivaldiCoordinates(); } + public xtreemfs_pingRequest( VivaldiCoordinates coordinates ) { this.coordinates = coordinates; } + public xtreemfs_pingRequest( Object from_hash_map ) { coordinates = new VivaldiCoordinates(); this.deserialize( from_hash_map ); } + public xtreemfs_pingRequest( Object[] from_array ) { coordinates = new VivaldiCoordinates();this.deserialize( from_array ); } + + public VivaldiCoordinates getCoordinates() { return coordinates; } + public void setCoordinates( VivaldiCoordinates coordinates ) { this.coordinates = coordinates; } + + public String getTypeName() { return "org::xtreemfs::interfaces::OSDInterface::xtreemfs_pingRequest"; } + public long getTypeId() { return 1001; } + + public String toString() + { + return "xtreemfs_pingRequest( " + coordinates.toString() + " )"; + } + + + public void deserialize( Object from_hash_map ) + { + this.deserialize( ( HashMap )from_hash_map ); + } + + public void deserialize( HashMap from_hash_map ) + { + this.coordinates.deserialize( from_hash_map.get( "coordinates" ) ); + } + + public void deserialize( Object[] from_array ) + { + this.coordinates.deserialize( from_array[0] ); + } + + public void deserialize( ReusableBuffer buf ) + { + coordinates = new VivaldiCoordinates(); coordinates.deserialize( buf ); + } + + public Object serialize() + { + HashMap to_hash_map = new HashMap(); + to_hash_map.put( "coordinates", coordinates.serialize() ); + return to_hash_map; + } + + public void serialize( ONCRPCBufferWriter writer ) + { + coordinates.serialize( writer ); + } + + public int calculateSize() + { + int my_size = 0; + my_size += coordinates.calculateSize(); + return my_size; + } + + // Request + public int getOperationNumber() { return 1001; } + public Response createDefaultResponse() { return new xtreemfs_pingResponse(); } + + + private VivaldiCoordinates coordinates; + +} + diff --git a/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_pingResponse.java b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_pingResponse.java new file mode 100644 index 000000000..0840fb145 --- /dev/null +++ b/src/servers/src/org/xtreemfs/interfaces/OSDInterface/xtreemfs_pingResponse.java @@ -0,0 +1,77 @@ +package org.xtreemfs.interfaces.OSDInterface; + +import org.xtreemfs.interfaces.*; +import java.util.HashMap; +import org.xtreemfs.interfaces.utils.*; +import org.xtreemfs.foundation.oncrpc.utils.ONCRPCBufferWriter; +import org.xtreemfs.common.buffer.ReusableBuffer; + + + + +public class xtreemfs_pingResponse implements org.xtreemfs.interfaces.utils.Response +{ + public xtreemfs_pingResponse() { remote_coordinates = new VivaldiCoordinates(); } + public xtreemfs_pingResponse( VivaldiCoordinates remote_coordinates ) { this.remote_coordinates = remote_coordinates; } + public xtreemfs_pingResponse( Object from_hash_map ) { remote_coordinates = new VivaldiCoordinates(); this.deserialize( from_hash_map ); } + public xtreemfs_pingResponse( Object[] from_array ) { remote_coordinates = new VivaldiCoordinates();this.deserialize( from_array ); } + + public VivaldiCoordinates getRemote_coordinates() { return remote_coordinates; } + public void setRemote_coordinates( VivaldiCoordinates remote_coordinates ) { this.remote_coordinates = remote_coordinates; } + + public String getTypeName() { return "org::xtreemfs::interfaces::OSDInterface::xtreemfs_pingResponse"; } + public long getTypeId() { return 1001; } + + public String toString() + { + return "xtreemfs_pingResponse( " + remote_coordinates.toString() + " )"; + } + + + public void deserialize( Object from_hash_map ) + { + this.deserialize( ( HashMap )from_hash_map ); + } + + public void deserialize( HashMap from_hash_map ) + { + this.remote_coordinates.deserialize( from_hash_map.get( "remote_coordinates" ) ); + } + + public void deserialize( Object[] from_array ) + { + this.remote_coordinates.deserialize( from_array[0] ); + } + + public void deserialize( ReusableBuffer buf ) + { + remote_coordinates = new VivaldiCoordinates(); remote_coordinates.deserialize( buf ); + } + + public Object serialize() + { + HashMap to_hash_map = new HashMap(); + to_hash_map.put( "remote_coordinates", remote_coordinates.serialize() ); + return to_hash_map; + } + + public void serialize( ONCRPCBufferWriter writer ) + { + remote_coordinates.serialize( writer ); + } + + public int calculateSize() + { + int my_size = 0; + my_size += remote_coordinates.calculateSize(); + return my_size; + } + + // Response + public int getOperationNumber() { return 1001; } + + + private VivaldiCoordinates remote_coordinates; + +} + diff --git a/src/servers/src/org/xtreemfs/interfaces/utils/ONCRPCResponseHeader.java b/src/servers/src/org/xtreemfs/interfaces/utils/ONCRPCResponseHeader.java index 161b34ce6..84d1024ba 100644 --- a/src/servers/src/org/xtreemfs/interfaces/utils/ONCRPCResponseHeader.java +++ b/src/servers/src/org/xtreemfs/interfaces/utils/ONCRPCResponseHeader.java @@ -96,7 +96,7 @@ public class ONCRPCResponseHeader implements Serializable { public void deserialize(ReusableBuffer buf) { xid = buf.getInt(); int msgType = buf.getInt(); - assert msgType == 1; + assert msgType == 1 : "message type must be ANSWER, but is "+msgType; reply_stat = buf.getInt(); assert reply_stat == REPLY_STAT_MSG_ACCEPTED; diff --git a/src/servers/src/org/xtreemfs/interfaces/utils/XDRUtils.java b/src/servers/src/org/xtreemfs/interfaces/utils/XDRUtils.java index 633b3bb50..4303c1983 100644 --- a/src/servers/src/org/xtreemfs/interfaces/utils/XDRUtils.java +++ b/src/servers/src/org/xtreemfs/interfaces/utils/XDRUtils.java @@ -46,6 +46,10 @@ public class XDRUtils { //public static final int MAX_ARRAY_ELEMS = 8*1024; public static final int MAX_ARRAY_ELEMS = 1024*1024; + public static final int TYPE_CALL = 0; + + public static final int TYPE_RESPONSE = 1; + public static ReusableBuffer deserializeSerializableBuffer(ReusableBuffer data) { final int dataSize = data.getInt(); diff --git a/src/servers/src/org/xtreemfs/osd/OSDRequestDispatcher.java b/src/servers/src/org/xtreemfs/osd/OSDRequestDispatcher.java index 1a9b71cc9..ce8cd6ccc 100644 --- a/src/servers/src/org/xtreemfs/osd/OSDRequestDispatcher.java +++ b/src/servers/src/org/xtreemfs/osd/OSDRequestDispatcher.java @@ -91,7 +91,6 @@ import org.xtreemfs.osd.storage.CleanupThread; import org.xtreemfs.osd.storage.HashStorageLayout; import org.xtreemfs.osd.storage.MetadataCache; import org.xtreemfs.osd.storage.StorageLayout; -import org.xtreemfs.osd.striping.GMAXMessage; import org.xtreemfs.osd.striping.UDPCommunicator; import org.xtreemfs.osd.striping.UDPMessage; import org.xtreemfs.osd.striping.UDPReceiverInterface; @@ -100,6 +99,9 @@ import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer; import org.xtreemfs.foundation.CrashReporter; +import org.xtreemfs.interfaces.OSDInterface.xtreemfs_broadcast_gmaxRequest; +import org.xtreemfs.interfaces.OSDInterface.xtreemfs_pingRequest; +import org.xtreemfs.interfaces.OSDInterface.xtreemfs_pingResponse; public class OSDRequestDispatcher implements RPCServerRequestListener, LifeCycleListener, UDPReceiverInterface { @@ -611,25 +613,33 @@ public class OSDRequestDispatcher implements RPCServerRequestListener, LifeCycle @Override public void receiveUDP(UDPMessage msg) { - if (msg.getMsgType() == UDPMessage.Type.GMAX) { - //send gmax to storage stage - try { - GMAXMessage gmax = new GMAXMessage(msg); - + assert(msg.isRequest() || msg.isResponse()); + + if (msg.isRequest()) { + if (msg.getRequestData() instanceof xtreemfs_broadcast_gmaxRequest) { + xtreemfs_broadcast_gmaxRequest rq = (xtreemfs_broadcast_gmaxRequest) msg.getRequestData(); if (Logging.isDebug()) Logging.logMessage(Logging.LEVEL_DEBUG, Category.stage, this, - "received GMAX packet for: %s", gmax.getFileId()); - - stStage.receivedGMAX_ASYNC(gmax.getFileId(), gmax.getTruncateEpoch(), gmax.getLastObject()); - } catch (Exception ex) { + "received GMAX packet for: %s from %s", rq.getFileId(),msg.getAddress()); + + stStage.receivedGMAX_ASYNC(rq.getFileId(), rq.getTruncateEpoch(), rq.getLastObject()); + } else if (msg.getRequestData() instanceof xtreemfs_pingRequest) { + xtreemfs_pingRequest rq = (xtreemfs_pingRequest) msg.getRequestData(); + if (Logging.isDebug()) + Logging.logMessage(Logging.LEVEL_DEBUG, Category.stage, this, + "received ping request from: %s", msg.getAddress()); + + vStage.receiveVivaldiMessage(msg); + } + } else { + if (msg.getResponseData() instanceof xtreemfs_pingResponse) { + xtreemfs_pingResponse resp = (xtreemfs_pingResponse) msg.getResponseData(); if (Logging.isDebug()) - Logging.logMessage(Logging.LEVEL_DEBUG, Category.stage, this, OutputUtils - .stackTraceToString(ex)); + Logging.logMessage(Logging.LEVEL_DEBUG, Category.stage, this, + "received ping response from: %s", msg.getAddress()); + + vStage.receiveVivaldiMessage(msg); } - } else if (msg.getMsgType() == UDPMessage.Type.VIVALDI_COORD_XCHG_REQUEST || - msg.getMsgType() == UDPMessage.Type.VIVALDI_COORD_XCHG_RESPONSE) { - //send data to vivaldi stage - vStage.receiveVivaldiMessage(msg); } } diff --git a/src/servers/src/org/xtreemfs/osd/stages/VivaldiStage.java b/src/servers/src/org/xtreemfs/osd/stages/VivaldiStage.java index 496d83149..eab66d21b 100644 --- a/src/servers/src/org/xtreemfs/osd/stages/VivaldiStage.java +++ b/src/servers/src/org/xtreemfs/osd/stages/VivaldiStage.java @@ -14,6 +14,7 @@ import org.xtreemfs.common.buffer.ReusableBuffer; import org.xtreemfs.common.util.OutputUtils; import org.xtreemfs.dir.client.DIRClient; import org.xtreemfs.foundation.oncrpc.utils.ONCRPCBufferWriter; +import org.xtreemfs.interfaces.OSDInterface.xtreemfs_pingResponse; import org.xtreemfs.interfaces.VivaldiCoordinates; import org.xtreemfs.osd.OSDRequestDispatcher; import org.xtreemfs.osd.striping.UDPMessage; @@ -57,10 +58,10 @@ public class VivaldiStage extends Stage { //do something... - if (msg.getMsgType() == UDPMessage.Type.VIVALDI_COORD_XCHG_REQUEST) { + if (msg.isRequest()) { //send response if it was a request //FIXME: replace vc with your coordinates - sendVivaldiCoordinates(msg.getAddress(), true, vc); + sendVivaldiCoordinates(msg, vc); } } else { @@ -95,15 +96,11 @@ public class VivaldiStage extends Stage { enqueueOperation(STAGEOP_COORD_XCHG_REQUEST, new Object[]{msg}, null, null); } - private void sendVivaldiCoordinates(InetSocketAddress osd, boolean isResponse, VivaldiCoordinates myCoordinates) { + private void sendVivaldiCoordinates(UDPMessage request, VivaldiCoordinates myCoordinates) { final int payloadSize = myCoordinates.calculateSize(); //add one byte for UDP message type identifier - ONCRPCBufferWriter wr = new ONCRPCBufferWriter(payloadSize+1); - wr.put((byte)0); - myCoordinates.serialize(wr); - wr.flip(); - final ReusableBuffer buf = wr.getBuffers().get(0); - UDPMessage msg = new UDPMessage(isResponse ? UDPMessage.Type.VIVALDI_COORD_XCHG_RESPONSE : UDPMessage.Type.VIVALDI_COORD_XCHG_REQUEST, osd, buf); + xtreemfs_pingResponse resp = new xtreemfs_pingResponse(myCoordinates); + UDPMessage msg = request.createResponse(resp); master.getUdpComStage().send(msg); } diff --git a/src/servers/src/org/xtreemfs/osd/storage/StorageThread.java b/src/servers/src/org/xtreemfs/osd/storage/StorageThread.java index 0e23189d5..ee94a6955 100644 --- a/src/servers/src/org/xtreemfs/osd/storage/StorageThread.java +++ b/src/servers/src/org/xtreemfs/osd/storage/StorageThread.java @@ -41,6 +41,7 @@ import org.xtreemfs.interfaces.NewFileSize; import org.xtreemfs.interfaces.OSDWriteResponse; import org.xtreemfs.interfaces.ObjectData; import org.xtreemfs.interfaces.OSDInterface.OSDException; +import org.xtreemfs.interfaces.OSDInterface.xtreemfs_broadcast_gmaxRequest; import org.xtreemfs.osd.ErrorCodes; import org.xtreemfs.osd.OSDRequestDispatcher; import org.xtreemfs.osd.stages.Stage; @@ -50,7 +51,7 @@ import org.xtreemfs.osd.stages.StorageStage.InternalGetGmaxCallback; import org.xtreemfs.osd.stages.StorageStage.ReadObjectCallback; import org.xtreemfs.osd.stages.StorageStage.TruncateCallback; import org.xtreemfs.osd.stages.StorageStage.WriteObjectCallback; -import org.xtreemfs.osd.striping.GMAXMessage; +import org.xtreemfs.osd.striping.UDPMessage; public class StorageThread extends Stage { @@ -464,9 +465,10 @@ public class StorageThread extends Stage { if (osds.size() > 1) { for (ServiceUUID osd : osds) { if (!osd.equals(localUUID)) { - final GMAXMessage m = new GMAXMessage(fileId, fi.getTruncateEpoch(), - objNo); - master.getUdpComStage().send(m.getMessage(osd.getAddress())); + final xtreemfs_broadcast_gmaxRequest m = new xtreemfs_broadcast_gmaxRequest(fileId, + fi.getTruncateEpoch(), objNo, -1); + final UDPMessage udpm = new UDPMessage(osd.getAddress(), 1, 0, m); + master.getUdpComStage().send(udpm); } } } diff --git a/src/servers/src/org/xtreemfs/osd/striping/GMAXMessage.java b/src/servers/src/org/xtreemfs/osd/striping/GMAXMessage.java deleted file mode 100644 index 4e47c3ea8..000000000 --- a/src/servers/src/org/xtreemfs/osd/striping/GMAXMessage.java +++ /dev/null @@ -1,101 +0,0 @@ -/* Copyright (c) 2009 Konrad-Zuse-Zentrum fuer Informationstechnik Berlin. - - This file is part of XtreemFS. XtreemFS is part of XtreemOS, a Linux-based - Grid Operating System, see for more details. - The XtreemOS project has been developed with the financial support of the - European Commission's IST program under contract #FP6-033576. - - XtreemFS is free software: you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation, either version 2 of the License, or (at your option) - any later version. - - XtreemFS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with XtreemFS. If not, see . - */ -/* - * AUTHORS: Björn Kolbeck (ZIB) - */ - -package org.xtreemfs.osd.striping; - -import java.net.InetSocketAddress; -import org.xtreemfs.common.buffer.BufferPool; -import org.xtreemfs.common.buffer.ReusableBuffer; - -/** - * - * @author bjko - */ -public class GMAXMessage { - - - private final String fileId; - - private final long truncateEpoch; - - private final long lastObject; - - private final static int MAX_FILEID = 128; - - public GMAXMessage(String fileId, long truncateEpoch, long lastObject) { - this.fileId = fileId; - this.truncateEpoch = truncateEpoch; - this.lastObject = lastObject; - } - - public GMAXMessage(UDPMessage msg) { - final ReusableBuffer data = msg.getPayload(); - data.position(1); - int strlen = data.getInt(); - if (strlen > MAX_FILEID) { - throw new IllegalArgumentException("invalid UDP message, fileID too long."); - } - byte[] bytes = new byte[strlen]; - data.get(bytes); - fileId = new String(bytes); - truncateEpoch = data.getLong(); - lastObject = data.getLong(); - BufferPool.free(data); - } - - public UDPMessage getMessage(InetSocketAddress receiver) { - byte[] bytes = getFileId().getBytes(); - ReusableBuffer data = BufferPool.allocate(Long.SIZE/8*2+Integer.SIZE/8+bytes.length+1); - //leave one byte for the message type set by UDPMessage - data.position(1); - - data.putInt(bytes.length); - data.put(bytes); - data.putLong(getTruncateEpoch()); - data.putLong(getLastObject()); - return new UDPMessage(UDPMessage.Type.GMAX, receiver, data); - - } - - /** - * @return the fileId - */ - public String getFileId() { - return fileId; - } - - /** - * @return the truncateEpoch - */ - public long getTruncateEpoch() { - return truncateEpoch; - } - - /** - * @return the lastObject - */ - public long getLastObject() { - return lastObject; - } -} diff --git a/src/servers/src/org/xtreemfs/osd/striping/UDPMessage.java b/src/servers/src/org/xtreemfs/osd/striping/UDPMessage.java index 6ee96b598..240861e67 100644 --- a/src/servers/src/org/xtreemfs/osd/striping/UDPMessage.java +++ b/src/servers/src/org/xtreemfs/osd/striping/UDPMessage.java @@ -26,16 +26,17 @@ package org.xtreemfs.osd.striping; import java.net.InetSocketAddress; import org.xtreemfs.common.buffer.ReusableBuffer; +import org.xtreemfs.foundation.oncrpc.utils.ONCRPCBufferWriter; +import org.xtreemfs.interfaces.OSDInterface.OSDInterface; +import org.xtreemfs.interfaces.utils.ONCRPCRequestHeader; +import org.xtreemfs.interfaces.utils.ONCRPCResponseHeader; +import org.xtreemfs.interfaces.utils.Request; +import org.xtreemfs.interfaces.utils.Response; +import org.xtreemfs.interfaces.utils.Serializable; +import org.xtreemfs.interfaces.utils.XDRUtils; public class UDPMessage { - /** - * @return the msgType - */ - public Type getMsgType() { - return msgType; - } - /** * @return the address */ @@ -50,34 +51,110 @@ public class UDPMessage { return payload; } - public static enum Type { - GMAX, - MPXL, - VIVALDI_COORD_XCHG_REQUEST, - VIVALDI_COORD_XCHG_RESPONSE - }; + private final ONCRPCRequestHeader requestHeader; + + private final ONCRPCResponseHeader responseHeader; - private final Type msgType; + private final Response responseData; + + private final Request requestData; private final InetSocketAddress address; private final ReusableBuffer payload; - public UDPMessage(Type msgType, InetSocketAddress address, ReusableBuffer payload) { - this.msgType = msgType; + public UDPMessage(InetSocketAddress address, int xid, int proc, Request payload) { + requestHeader = new ONCRPCRequestHeader(xid, 0 , OSDInterface.getVersion(), payload.getOperationNumber()); + responseHeader = null; this.address = address; - this.payload = payload; - payload.position(0); - payload.put((byte)msgType.ordinal()); - payload.position(0); + ONCRPCBufferWriter wr = new ONCRPCBufferWriter(1024); + requestHeader.serialize(wr); + payload.serialize(wr); + wr.flip(); + this.payload = wr.getBuffers().get(0); + requestData = null; + responseData = null; + } + + private UDPMessage(UDPMessage request, Response payload) { + requestHeader = null; + responseHeader = new ONCRPCResponseHeader(request.getRequestHeader().getXID(), + ONCRPCResponseHeader.REPLY_STAT_MSG_ACCEPTED, + ONCRPCResponseHeader.ACCEPT_STAT_SUCCESS); + this.address = request.getAddress(); + ONCRPCBufferWriter wr = new ONCRPCBufferWriter(1024); + responseHeader.serialize(wr); + payload.serialize(wr); + wr.flip(); + this.payload = wr.getBuffers().get(0); + requestData = null; + responseData = null; } - public UDPMessage(InetSocketAddress address, ReusableBuffer payload) { + public UDPMessage(InetSocketAddress address, ReusableBuffer payload) throws Exception { this.address = address; this.payload = payload; payload.position(0); - int tmp = payload.get(); - msgType = Type.values()[tmp]; + payload.getInt(); + int callType = payload.getInt(); + payload.position(0); + if (callType == XDRUtils.TYPE_CALL) { + requestHeader = new ONCRPCRequestHeader(); + requestHeader.deserialize(payload); + responseHeader = null; + + requestData = OSDInterface.createRequest(requestHeader); + responseData = null; + + + } else { + responseHeader = new ONCRPCResponseHeader(); + responseHeader.deserialize(payload); + requestHeader = null; + + responseData = OSDInterface.createResponse(responseHeader); + requestData = null; + } + } + + public UDPMessage createResponse(Response response) { + return new UDPMessage(this, response); + } + + public boolean isRequest() { + return requestData != null; + } + + public boolean isResponse() { + return responseData != null; + } + + /** + * @return the requestHeader + */ + public ONCRPCRequestHeader getRequestHeader() { + return requestHeader; + } + + /** + * @return the responseHeader + */ + public ONCRPCResponseHeader getResponseHeader() { + return responseHeader; + } + + /** + * @return the responseData + */ + public Response getResponseData() { + return responseData; + } + + /** + * @return the requestData + */ + public Request getRequestData() { + return requestData; } } \ No newline at end of file diff --git a/src/servers/test/org/xtreemfs/test/osd/SimpleVivaldiStageTest.java b/src/servers/test/org/xtreemfs/test/osd/SimpleVivaldiStageTest.java new file mode 100644 index 000000000..2b503672f --- /dev/null +++ b/src/servers/test/org/xtreemfs/test/osd/SimpleVivaldiStageTest.java @@ -0,0 +1,89 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.xtreemfs.test.osd; + +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetSocketAddress; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.xtreemfs.common.buffer.ReusableBuffer; +import org.xtreemfs.common.logging.Logging; +import org.xtreemfs.foundation.oncrpc.utils.ONCRPCBufferWriter; +import org.xtreemfs.interfaces.OSDInterface.xtreemfs_pingRequest; +import org.xtreemfs.interfaces.OSDInterface.xtreemfs_pingResponse; +import org.xtreemfs.interfaces.VivaldiCoordinates; +import org.xtreemfs.interfaces.utils.ONCRPCRequestHeader; +import org.xtreemfs.interfaces.utils.ONCRPCResponseHeader; +import org.xtreemfs.test.TestEnvironment; +import org.xtreemfs.test.TestEnvironment.Services; + +/** + * + * @author bjko + */ +public class SimpleVivaldiStageTest { + + TestEnvironment env; + + public SimpleVivaldiStageTest() { + Logging.start(Logging.LEVEL_DEBUG); + } + + @BeforeClass + public static void setUpClass() throws Exception { + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() throws Exception { + env = new TestEnvironment(new TestEnvironment.Services[]{Services.DIR_SERVICE,Services.OSD}); + env.start(); + } + + @After + public void tearDown() { + env.shutdown(); + } + + @Test + public void testVivaldiPing() throws Exception { + xtreemfs_pingRequest payload = new xtreemfs_pingRequest(new VivaldiCoordinates()); + + ONCRPCRequestHeader rq = new ONCRPCRequestHeader(1, 1, 1, payload.getOperationNumber()); + + ONCRPCBufferWriter wr = new ONCRPCBufferWriter(ONCRPCBufferWriter.BUFF_SIZE); + rq.serialize(wr); + payload.serialize(wr); + wr.flip(); + + DatagramSocket dsock = new DatagramSocket(); + byte[] data = wr.getBuffers().get(0).array(); + DatagramPacket dpack = new DatagramPacket(data, data.length, env.getOSDAddress()); + dsock.send(dpack); + + DatagramPacket answer = new DatagramPacket(new byte[1024], 1024); + dsock.receive(answer); + + ReusableBuffer rb = ReusableBuffer.wrap(answer.getData()); + + ONCRPCResponseHeader rhdr = new ONCRPCResponseHeader(); + rhdr.deserialize(rb); + + xtreemfs_pingResponse resp = new xtreemfs_pingResponse(); + resp.deserialize(rb); + + dsock.close(); + } + // public void hello() {} + +} \ No newline at end of file diff --git a/src/servers/test/org/xtreemfs/test/osd/UDPComTest.java b/src/servers/test/org/xtreemfs/test/osd/UDPComTest.java new file mode 100644 index 000000000..2b9572052 --- /dev/null +++ b/src/servers/test/org/xtreemfs/test/osd/UDPComTest.java @@ -0,0 +1,137 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.xtreemfs.test.osd; + +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetSocketAddress; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.xtreemfs.common.logging.Logging; +import org.xtreemfs.foundation.oncrpc.utils.ONCRPCBufferWriter; +import org.xtreemfs.interfaces.OSDInterface.xtreemfs_broadcast_gmaxRequest; +import org.xtreemfs.interfaces.OSDInterface.xtreemfs_pingRequest; +import org.xtreemfs.interfaces.OSDInterface.xtreemfs_pingResponse; +import org.xtreemfs.interfaces.VivaldiCoordinates; +import org.xtreemfs.interfaces.utils.ONCRPCRequestHeader; +import org.xtreemfs.interfaces.utils.ONCRPCResponseHeader; +import org.xtreemfs.osd.striping.UDPCommunicator; +import org.xtreemfs.osd.striping.UDPMessage; +import org.xtreemfs.osd.striping.UDPReceiverInterface; +import org.xtreemfs.test.TestEnvironment; +import org.xtreemfs.test.TestEnvironment.Services; +import static org.junit.Assert.*; + +/** + * + * @author bjko + */ +public class UDPComTest { + + TestEnvironment env; + private static final int COMPORT = 22333; + + public UDPComTest() { + Logging.start(Logging.LEVEL_DEBUG); + } + + @BeforeClass + public static void setUpClass() throws Exception { + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() throws Exception { + env = new TestEnvironment(new Services[]{TestEnvironment.Services.TIME_SYNC}); + env.start(); + } + + @After + public void tearDown() { + env.shutdown(); + } + + @Test + public void testUDPMessage() throws Exception { + + UDPCommunicator udpcom = new UDPCommunicator(COMPORT + , new UDPReceiverInterface() { + + @Override + public void receiveUDP(UDPMessage msg) { + assert(msg.isRequest()); + assert(msg.getRequestData() != null); + System.out.println("data: "+msg.getRequestData()); + } + }); + + udpcom.start(); + + xtreemfs_broadcast_gmaxRequest payload = new xtreemfs_broadcast_gmaxRequest("1234", 1, 1, 1); + ONCRPCRequestHeader rq = new ONCRPCRequestHeader(1, 1, 1, payload.getOperationNumber()); + + ONCRPCBufferWriter wr = new ONCRPCBufferWriter(ONCRPCBufferWriter.BUFF_SIZE); + rq.serialize(wr); + payload.serialize(wr); + wr.flip(); + + DatagramSocket dsock = new DatagramSocket(); + byte[] data = wr.getBuffers().get(0).array(); + DatagramPacket dpack = new DatagramPacket(data, data.length, new InetSocketAddress("localhost", COMPORT)); + dsock.send(dpack); + + dsock.close(); + + udpcom.shutdown(); + + + } + + + @Test + public void testUDPResponse() throws Exception { + + UDPCommunicator udpcom = new UDPCommunicator(COMPORT + , new UDPReceiverInterface() { + + @Override + public void receiveUDP(UDPMessage msg) { + assert(msg.isResponse()); + assert(msg.getResponseData() != null); + System.out.println("data: "+msg.getResponseData()); + } + }); + + udpcom.start(); + + xtreemfs_pingResponse payload = new xtreemfs_pingResponse(new VivaldiCoordinates()); + ONCRPCResponseHeader rq = new ONCRPCResponseHeader(1, ONCRPCResponseHeader.REPLY_STAT_MSG_ACCEPTED, + ONCRPCResponseHeader.ACCEPT_STAT_SUCCESS); + + ONCRPCBufferWriter wr = new ONCRPCBufferWriter(ONCRPCBufferWriter.BUFF_SIZE); + rq.serialize(wr); + payload.serialize(wr); + wr.flip(); + + DatagramSocket dsock = new DatagramSocket(); + byte[] data = wr.getBuffers().get(0).array(); + DatagramPacket dpack = new DatagramPacket(data, data.length, new InetSocketAddress("localhost", COMPORT)); + dsock.send(dpack); + + dsock.close(); + + udpcom.shutdown(); + + + } + +} \ No newline at end of file -- GitLab From 5f6590e100b9816b097c1f1013db154a26ddea0a Mon Sep 17 00:00:00 2001 From: "bjoern.kolbeck" Date: Sun, 10 May 2009 19:34:02 +0000 Subject: [PATCH 39/97] interfaces: added calls for UDP messages (gmax broadcast, vivaldi ping) git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@629 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- src/interfaces/org/xtreemfs/interfaces/osd_interface.idl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/interfaces/org/xtreemfs/interfaces/osd_interface.idl b/src/interfaces/org/xtreemfs/interfaces/osd_interface.idl index 6e6c00744..852e514a2 100644 --- a/src/interfaces/org/xtreemfs/interfaces/osd_interface.idl +++ b/src/interfaces/org/xtreemfs/interfaces/osd_interface.idl @@ -57,6 +57,11 @@ module org void xtreemfs_internal_truncate( FileCredentials file_credentials, string file_id, uint64_t new_file_size, out OSDWriteResponse osd_write_response ) # 101; InternalReadLocalResponse xtreemfs_internal_read_local( FileCredentials file_credentials, string file_id, uint64_t object_number, uint64_t object_version, uint64_t offset, uint64_t length ) # 102; void xtreemfs_shutdown() # 50; + + // OSD UDP messages + void xtreemfs_broadcast_gmax(string fileId, uint64_t truncateEpoch, uint64_t lastObject, + uint64_t fileSize) # 1000; + void xtreemfs_ping(VivaldiCoordinates coordinates, out VivaldiCoordinates remote_coordinates) #1001; }; }; }; -- GitLab From a42b2a513697cb3024639950c844e62632b8ea4a Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Mon, 11 May 2009 07:44:20 +0000 Subject: [PATCH 40/97] client: removing yieldfs svn:external git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@630 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 -- GitLab From c35067425098ab6a93e5c3c1a84636bc5fdca290 Mon Sep 17 00:00:00 2001 From: "Minor.Gordon" Date: Mon, 11 May 2009 09:07:38 +0000 Subject: [PATCH 41/97] client: checking in yieldfs and yield as combined source, eliminating unused *_test.cpp git-svn-id: https://xtreemfs.googlecode.com/svn/trunk@631 f8528748-c2c0-11dd-ba5c-d3b7c2b3b534 --- src/client/SConstruct | 1 - src/client/generate_src_and_proj.bat | 10 +- src/client/include/org/xtreemfs/client/file.h | 2 +- .../include/org/xtreemfs/client/volume.h | 2 +- .../client/org_xtreemfs_client_test_main.cpp | 37 - .../client/xtreemfs-client-lib.SConscript | 16 +- .../client/xtreemfs-client-lib.vcproj | 56 +- .../xtreemfs-client-lib_test.SConscript | 78 - .../client/xtreemfs-client-lib_test.vcproj | 186 - src/client/share/yieldfs/include/yieldfs.h | 185 + .../yieldfs/share/yield/include/SimpleOpt.h | 1060 +++++ .../yieldfs/share/yield/include/msstdint.h | 232 + .../yieldfs/share/yield/include/uriparser.h | 915 ++++ .../share/yieldfs/share/yield/include/yajl.h | 418 ++ .../share/yieldfs/share/yield/include/yield.h | 11 + .../yieldfs/share/yield/include/yield/arch.h | 749 +++ .../yieldfs/share/yield/include/yield/ipc.h | 1451 ++++++ .../yieldfs/share/yield/include/yield/main.h | 221 + .../share/yield/include/yield/platform.h | 3052 +++++++++++++ .../yieldfs/share/yield/src/yield/arch.cpp | 256 ++ .../yieldfs/share/yield/src/yield/ipc.cpp | 4031 +++++++++++++++++ .../share/yield/src/yield/platform.cpp | 3809 ++++++++++++++++ src/client/share/yieldfs/src/yieldfs.cpp | 1992 ++++++++ .../src/org/xtreemfs/client/file_test.cpp | 38 - .../src/org/xtreemfs/client/path_test.cpp | 57 - .../org/xtreemfs/client/policy_container.cpp | 2 +- .../client/proxy_exception_response.cpp | 2 +- src/client/src/org/xtreemfs/client/volume.cpp | 2 +- .../src/org/xtreemfs/client/volume_test.cpp | 33 - src/client/xtreemfs-client.sln | 27 - 30 files changed, 18442 insertions(+), 489 deletions(-) delete mode 100644 src/client/proj/org/xtreemfs/client/org_xtreemfs_client_test_main.cpp delete mode 100644 src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.SConscript delete mode 100644 src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.vcproj create mode 100644 src/client/share/yieldfs/include/yieldfs.h create mode 100644 src/client/share/yieldfs/share/yield/include/SimpleOpt.h create mode 100644 src/client/share/yieldfs/share/yield/include/msstdint.h create mode 100644 src/client/share/yieldfs/share/yield/include/uriparser.h create mode 100644 src/client/share/yieldfs/share/yield/include/yajl.h create mode 100644 src/client/share/yieldfs/share/yield/include/yield.h create mode 100644 src/client/share/yieldfs/share/yield/include/yield/arch.h create mode 100644 src/client/share/yieldfs/share/yield/include/yield/ipc.h create mode 100644 src/client/share/yieldfs/share/yield/include/yield/main.h create mode 100644 src/client/share/yieldfs/share/yield/include/yield/platform.h create mode 100644 src/client/share/yieldfs/share/yield/src/yield/arch.cpp create mode 100644 src/client/share/yieldfs/share/yield/src/yield/ipc.cpp create mode 100644 src/client/share/yieldfs/share/yield/src/yield/platform.cpp create mode 100644 src/client/share/yieldfs/src/yieldfs.cpp delete mode 100644 src/client/src/org/xtreemfs/client/file_test.cpp delete mode 100644 src/client/src/org/xtreemfs/client/path_test.cpp delete mode 100644 src/client/src/org/xtreemfs/client/volume_test.cpp diff --git a/src/client/SConstruct b/src/client/SConstruct index 23fdc911e..16371e851 100644 --- a/src/client/SConstruct +++ b/src/client/SConstruct @@ -4,7 +4,6 @@ SConscript( "proj/org/xtreemfs/client/xtfs_mount.SConscript" ) SConscript( "proj/org/xtreemfs/client/xtfs_rmvol.SConscript" ) SConscript( "proj/org/xtreemfs/client/xtfs_send.SConscript" ) SConscript( "proj/org/xtreemfs/client/xtfs_stat.SConscript" ) -SConscript( "proj/org/xtreemfs/client/xtreemfs-client-lib_test.SConscript" ) Import( "build_conf" ) if build_conf.CheckCHeader( "xos_ams.h" ): diff --git a/src/client/generate_src_and_proj.bat b/src/client/generate_src_and_proj.bat index 02ea3196e..5197b0e26 100644 --- a/src/client/generate_src_and_proj.bat +++ b/src/client/generate_src_and_proj.bat @@ -7,14 +7,13 @@ set GOOGLE_BREAKPAD_LINUX_SOURCE_FLAGS=%GOOGLE_BREAKPAD_COMMON_SOURCE_FLAGS% -e set XTREEMFS_PATH=%CD%\..\.. set XTREEMFS_CLIENT_PATH=%CD% set YIELDFS_PATH=%XTREEMFS_CLIENT_PATH%\share\yieldfs -set YIELD_PATH=%YIELDFS_PATH%\share\yield -REM set YIELD_PATH=%CD%\..\..\yield +set YIELD_PATH=%XTREEMFS_PATH%\..\yield set DEPEND_GOOGLE_BREAKPAD_FLAGS=-I %GOOGLE_BREAKPAD_PATH%\src -c %XTREEMFS_CLIENT_PATH%\proj\google-breakpad\google-breakpad.SConscript -set DEPEND_YIELD_INCLUDE_FLAGS=-I %YIELD_PATH%\include +set DEPEND_YIELD_INCLUDE_FLAGS=-I %YIELDFS_PATH%\share\yield\include set DEPEND_YIELD_LIB_FLAGS=--lw libeay32.lib --lw ssleay32.lib --lwS libeay32.lib --lwS ssleay32.lib --lu ssl set DEPEND_YIELDFS_INCLUDE_FLAGS=-I %YIELDFS_PATH%\include %DEPEND_YIELD_INCLUDE_FLAGS% -set DEPEND_YIELDFS_LIB_FLAGS=-L %YIELDFS_PATH%\lib -l yieldfs_d.lib -c %YIELDFS_PATH%\proj\yieldfs\yieldfs.SConscript %DEPEND_YIELD_LIB_FLAGS% +set DEPEND_YIELDFS_LIB_FLAGS=%DEPEND_YIELD_LIB_FLAGS% set DEPEND_XTREEMFS_CLIENT_FLAGS=-I %XTREEMFS_CLIENT_PATH%\include -L %XTREEMFS_CLIENT_PATH%\lib -l xtreemfs-client_d.lib -c %XTREEMFS_CLIENT_PATH%\proj\org\xtreemfs\client\xtreemfs-client-lib.SConscript %DEPEND_YIELDFS_INCLUDE_FLAGS% @@ -29,8 +28,7 @@ REM python %XTREEMFS_PATH%\bin\generate_xtreemfs_fuzzer_cpp.py -i %XTREEMFS_PATH REM Generate project files cd %XTREEMFS_CLIENT_PATH%\proj\org\xtreemfs\client REM Library projects -python %YIELD_PATH%\bin\generate_proj.py -n xtreemfs-client-lib -t lib -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client -e "*_test.cpp" -e "xtfs_*.cpp" -e "xos*" -s %XTREEMFS_CLIENT_PATH%\include\org\xtreemfs -s %XTREEMFS_PATH%\interfaces -I %XTREEMFS_CLIENT_PATH%\include -o %XTREEMFS_CLIENT_PATH%\lib\xtreemfs-client %DEPEND_YIELDFS_INCLUDE_FLAGS% %DEPEND_YIELDFS_LIB_FLAGS% -python %YIELD_PATH%\bin\generate_proj.py -n xtreemfs-client-lib_test -t exe -s %XTREEMFS_CLIENT_PATH%\proj\org\xtreemfs\client\org_xtreemfs_client_test_main.cpp -s "%XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\*_test.cpp" -c xtreemfs-client-lib.SConscript -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_XTREEMFS_CLIENT_FLAGS% +python %YIELD_PATH%\bin\generate_proj.py -n xtreemfs-client-lib -t lib -s %XTREEMFS_CLIENT_PATH%\src\org -s %YIELDFS_PATH%\src -s %YIELDFS_PATH%\share\yield\src -e "xtfs_*.cpp" -e "xos*" -s %XTREEMFS_CLIENT_PATH%\include\org\xtreemfs -s %XTREEMFS_PATH%\interfaces -I %XTREEMFS_CLIENT_PATH%\include -o %XTREEMFS_CLIENT_PATH%\lib\xtreemfs-client %DEPEND_YIELDFS_INCLUDE_FLAGS% %DEPEND_YIELDFS_LIB_FLAGS% REM Binary projects python %YIELD_PATH%\bin\generate_proj.py -n xtfs_fuzz -t exe -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\xtfs_fuzz.cpp -s %XTREEMFS_CLIENT_PATH%\src\org\xtreemfs\client\*_fuzzer.h -o %XTREEMFS_CLIENT_PATH%\bin %DEPEND_XTREEMFS_CLIENT_FLAGS% diff --git a/src/client/include/org/xtreemfs/client/file.h b/src/client/include/org/xtreemfs/client/file.h index fb802b4b9..a6d5f7fe8 100644 --- a/src/client/include/org/xtreemfs/client/file.h +++ b/src/client/include/org/xtreemfs/client/file.h @@ -20,7 +20,7 @@ namespace org class File : public YIELD::File { public: - YIELD_PLATFORM_FILE_PROTOTYPES; + YIELD_FILE_PROTOTYPES; private: friend class Volume; diff --git a/src/client/include/org/xtreemfs/client/volume.h b/src/client/include/org/xtreemfs/client/volume.h index 8842a65dd..7886217b3 100644 --- a/src/client/include/org/xtreemfs/client/volume.h +++ b/src/client/include/org/xtreemfs/client/volume.h @@ -31,7 +31,7 @@ namespace org YIELD::auto_Object get_osd_proxy( const std::string& osd_uuid ); // YIELD::Volume - YIELD_PLATFORM_VOLUME_PROTOTYPES; + YIELD_VOLUME_PROTOTYPES; YIELD::auto_Object getattr( const Path& path ); bool listdir( const YIELD::Path& path, listdirCallback& callback ) { return listdir( path, Path(), callback ); } bool listdir( const YIELD::Path& path, const YIELD::Path& match_file_name_prefix, listdirCallback& callback ); diff --git a/src/client/proj/org/xtreemfs/client/org_xtreemfs_client_test_main.cpp b/src/client/proj/org/xtreemfs/client/org_xtreemfs_client_test_main.cpp deleted file mode 100644 index cfc0242ff..000000000 --- a/src/client/proj/org/xtreemfs/client/org_xtreemfs_client_test_main.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2009 Minor Gordon. -// This source comes from the XtreemFS project. It is licensed under the GPLv2 (see COPYING for terms and conditions). - -#include "yield/main.h" - - -extern YIELD::TestSuite& FileTestSuite(); -extern YIELD::TestSuite& PathTestSuite(); -extern YIELD::TestSuite& VolumeTestSuite(); - - -class org_xtreemfs_client_testMain : public YIELD::Main -{ -public: - org_xtreemfs_client_testMain() - : YIELD::Main( "org_xtreemfs_client_test" ) - { } - - // YIELD::Main - int _main( int argc, char** argv ) - { - YIELD::TestRunner test_runner; - int run_ret = 0; - - run_ret |= test_runner.run( FileTestSuite() ); - run_ret |= test_runner.run( PathTestSuite() ); - run_ret |= test_runner.run( VolumeTestSuite() ); - - return run_ret; - } -}; - -int main( int argc, char** argv ) -{ - return org_xtreemfs_client_testMain().main( argc, argv ); -} - diff --git a/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.SConscript b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.SConscript index 628735624..0845d5abb 100644 --- a/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.SConscript +++ b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.SConscript @@ -1,7 +1,5 @@ import sys, os.path, platform -SConscript( '../../../../share/yieldfs/proj/yieldfs/yieldfs.SConscript' ) - try: Import( "build_env", "build_conf" ) @@ -62,12 +60,8 @@ include_dir_paths = [os.path.abspath( '../../../../share/yieldfs/share/yield/inc for include_dir_path in include_dir_paths: if not include_dir_path in build_env["CPPPATH"]: build_env["CPPPATH"].append( include_dir_path ) -lib_dir_paths = [os.path.abspath( '../../../../share/yieldfs/lib' )] -for lib_dir_path in lib_dir_paths: - if not lib_dir_path in build_env["LIBPATH"]: build_env["LIBPATH"].append( lib_dir_path ) - # Don't add libs until after custom and dependency SConscripts, to avoid failing build_conf checks because of missing -l libs -for lib in ["yieldfs"]: +for lib in []: if not lib in build_env["LIBS"]: build_env["LIBS"].insert( 0, lib ) if sys.platform.startswith( "win" ): for lib in ["libeay32.lib", "ssleay32.lib", "libeay32.lib", "ssleay32.lib"]: @@ -86,4 +80,10 @@ build_env.Library( "../../../../lib/xtreemfs-client", ( r"../../../../src/org/xtreemfs/client/path.cpp", r"../../../../src/org/xtreemfs/client/policy_container.cpp", r"../../../../src/org/xtreemfs/client/proxy_exception_response.cpp", - r"../../../../src/org/xtreemfs/client/volume.cpp" ) ) + r"../../../../src/org/xtreemfs/client/volume.cpp", + r"../../../../share/yieldfs/src/yieldfs.cpp", + r"../../../../share/yieldfs/share/yield/src/uriparser.c", + r"../../../../share/yieldfs/share/yield/src/yajl.c", + r"../../../../share/yieldfs/share/yield/src/yield/arch.cpp", + r"../../../../share/yieldfs/share/yield/src/yield/ipc.cpp", + r"../../../../share/yieldfs/share/yield/src/yield/platform.cpp" ) ) diff --git a/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.vcproj b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.vcproj index 81a5dbd36..da2c9f72f 100644 --- a/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.vcproj +++ b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib.vcproj @@ -42,8 +42,8 @@ - + + @@ -277,6 +279,34 @@ RelativePath="..\..\..\..\src\org\xtreemfs\client\volume.cpp" > + + + + + + + + + + + + + + + + diff --git a/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.SConscript b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.SConscript deleted file mode 100644 index 05556f7d2..000000000 --- a/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.SConscript +++ /dev/null @@ -1,78 +0,0 @@ -import sys, os.path, platform - -SConscript( 'xtreemfs-client-lib.SConscript' ) -SConscript( 'xtreemfs-client-lib.SConscript' ) - - -try: - Import( "build_env", "build_conf" ) -except: - build_env = {} # Init Environment() from this so that it doesn't start with default values for e.g. CC, which induces pkginfo popens on Sun - - include_dir_paths = os.environ.has_key( "CPPPATH" ) and os.environ["CPPPATH"].split( sys.platform.startswith( "win" ) and ';' or ':' ) or [] - - build_env["CCFLAGS"] = os.environ.get( "CCFLAGS", "" ).strip() - lib_dir_paths = os.environ.has_key( "LIBPATH" ) and os.environ["LIBPATH"].split( sys.platform.startswith( "win" ) and ';' or ':' ) or [] - build_env["LINKFLAGS"] = os.environ.get( "LINKFLAGS", "" ).strip() - build_env["LIBS"] = os.environ.has_key( "LIBS" ) and os.environ["LIBS"].split( " " ) or [] - - if sys.platform.startswith( "win" ): - if os.environ.has_key( "INCLUDE" ): include_dir_paths.extend( os.environ["INCLUDE"].split( ';' ) ) - if os.environ.has_key( "LIB" ): lib_dir_paths.extend( os.environ["LIB"].split( ';' ) ) - build_env["CCFLAGS"] += ' /EHsc /GR- /D "_CRT_DISABLE_PERFCRIT_LOCKS" /D "WIN32" /nologo ' # GR- is -fno-rtti, EHsc is to enable exception handling - if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "/MD " - else: build_env["CCFLAGS"] += "/MDd /ZI /W3 " - if not "user32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "user32.lib" ) - if not "advapi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "advapi32.lib" ) - if not "gdi32.lib" in build_env["LIBS"]: build_env["LIBS"].append( "gdi32.lib" ) - else: - build_env["CCFLAGS"] += " -Wall -Wunused-macros " - if sys.platform == "linux2": - build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " - build_env["LIBS"].extend( ( "pthread", "util", "dl", "rt", "stdc++" ) ) - elif sys.platform == "darwin": - build_env["CCFLAGS"] += " -D_FILE_OFFSET_BITS=64 " - # build_env["LINKFLAGS"] += "-framework Carbon " - build_env["LIBS"].append( "iconv" ) - elif sys.platform.startswith( "freebsd" ): - build_env["CCFLAGS"] += "-fno-rtti -D_FILE_OFFSET_BITS=64 " - build_env["LIBS"].extend( ( "pthread", "intl", "iconv" ) ) - elif sys.platform == "sunos5": - build_env["tools"] = ["gcc", "g++", "gnulink", "ar"] - build_env["CCFLAGS"] += "-fno-rtti -Dupgrade_the_compiler_to_use_STL=1 -D_REENTRANT " - build_env["LIBS"].extend( ( "stdc++", "m", "socket", "nsl", "kstat", "rt", "iconv", "cpc" ) ) - - if ARGUMENTS.get( "coverage", 0 ): build_env["CCFLAGS"] += "-pg --coverage "; build_env["LINKFLAGS"] += "-pg --coverage " - if ARGUMENTS.get( "profile-cpu", 0 ): build_env["CCFLAGS"] += "-pg "; build_env["LINKFLAGS"] += "-pg " - if ARGUMENTS.get( "profile-heap", 0 ): build_env["CCFLAGS"] += "-fno-omit-frame-pointer "; build_env["LIBS"].append( "tcmalloc" ) - if ARGUMENTS.get( "release", 0 ): build_env["CCFLAGS"] += "-O2 " - else: build_env["CCFLAGS"] += "-g -D_DEBUG " - if ARGUMENTS.get( "shared", 0 ): build_env["CCFLAGS"] += "-fPIC " - - build_env["CPPPATH"] = list( set( [os.path.abspath( include_dir_path ) for include_dir_path in include_dir_paths] ) ) - build_env["LIBPATH"] = list( set( [os.path.abspath( lib_dir_path ) for lib_dir_path in lib_dir_paths] ) ) - build_env = Environment( **build_env ) - - build_conf = build_env.Configure() - if not sys.platform.startswith( "win" ) and not sys.platform.startswith( "sunos" ) and platform.architecture()[0] == "32bit": - build_env["CCFLAGS"] += "-march=i686 " - - Export( "build_env", "build_conf" ) - -include_dir_paths = [os.path.abspath( '../../../../share/yieldfs/share/yield/include' ), os.path.abspath( '../../../../share/yieldfs/include' ), os.path.abspath( '../../../../include' )] -for include_dir_path in include_dir_paths: - if not include_dir_path in build_env["CPPPATH"]: build_env["CPPPATH"].append( include_dir_path ) - -lib_dir_paths = [os.path.abspath( '../../../../lib' )] -for lib_dir_path in lib_dir_paths: - if not lib_dir_path in build_env["LIBPATH"]: build_env["LIBPATH"].append( lib_dir_path ) - -# Don't add libs until after custom and dependency SConscripts, to avoid failing build_conf checks because of missing -l libs -for lib in ["xtreemfs-client"]: - if not lib in build_env["LIBS"]: build_env["LIBS"].insert( 0, lib ) - -build_env.Program( "../../../../bin/xtreemfs-client-lib_test", ( - r"./org_xtreemfs_client_test_main.cpp", - r"../../../../src/org/xtreemfs/client/file_test.cpp", - r"../../../../src/org/xtreemfs/client/path_test.cpp", - r"../../../../src/org/xtreemfs/client/volume_test.cpp" ) ) diff --git a/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.vcproj b/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.vcproj deleted file mode 100644 index fd8205efb..000000000 --- a/src/client/proj/org/xtreemfs/client/xtreemfs-client-lib_test.vcproj +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/client/share/yieldfs/include/yieldfs.h b/src/client/share/yieldfs/include/yieldfs.h new file mode 100644 index 000000000..22954ad29 --- /dev/null +++ b/src/client/share/yieldfs/include/yieldfs.h @@ -0,0 +1,185 @@ +// Copyright 2009 Minor Gordon. +// This source comes from the YieldFS project. It is licensed under the New BSD license (see COPYING for terms and conditions). + +#ifndef YIELDFS_H +#define YIELDFS_H + +#include "yield/platform.h" + + +namespace yieldfs +{ + class CachedStat; +#ifdef _WIN32 + class FUSEWin32; +#else + class FUSEUnix; +#endif + + + class StackableFile : public YIELD::File + { + protected: + StackableFile( const YIELD::Path& path, YIELD::auto_Object underlying_file, YIELD::auto_Object log ) + : path( path ), underlying_file( underlying_file ), log( log ) + { } + + virtual ~StackableFile() + { } + + + YIELD::Path path; + YIELD::auto_Object underlying_file; + YIELD::auto_Object log; + }; + + + class StackableVolume : public YIELD::Volume + { + public: + virtual bool access( const YIELD::Path& path, int amode ) { return underlying_volume->access( path, amode ); } + virtual bool chmod( const YIELD::Path& path, mode_t mode ) { return underlying_volume->chmod( path, mode ); } + virtual bool chown( const YIELD::Path& path, int32_t uid, int32_t gid ) { return underlying_volume->chown( path, uid, gid ); } + virtual YIELD::auto_Object getattr( const YIELD::Path& path ) { return underlying_volume->getattr( path ); } + virtual bool getxattr( const YIELD::Path& path, const std::string& name, std::string& out_value ) { return underlying_volume->getxattr( path, name, out_value ); } + virtual bool link( const YIELD::Path& old_path, const YIELD::Path& new_path ) { return underlying_volume->link( old_path, new_path ); } + virtual bool listxattr( const YIELD::Path& path, std::vector& out_names ) { return underlying_volume->listxattr( path, out_names ); } + virtual bool mkdir( const YIELD::Path& path, mode_t mode ) { return underlying_volume->mkdir( path, mode ); } + virtual YIELD::auto_Object open( const YIELD::Path& path, uint32_t flags, mode_t mode, uint32_t attributes ) { return underlying_volume->open( path, flags, mode, attributes ); } + virtual bool readdir( const YIELD::Path& path, const YIELD::Path& match_file_name_prefix, YIELD::Volume::readdirCallback& callback ) { return underlying_volume->readdir( path, match_file_name_prefix, callback ); } + virtual YIELD::auto_Object readlink( const YIELD::Path& path ) { return underlying_volume->readlink( path ); } + virtual bool removexattr( const YIELD::Path& path, const std::string& name ) { return underlying_volume->removexattr( path, name ); } + virtual bool rename( const YIELD::Path& from_path, const YIELD::Path& to_path ) { return underlying_volume->rename( from_path, to_path ); } + virtual bool rmdir( const YIELD::Path& path ) { return underlying_volume->rmdir( path ); } + virtual bool setattr( const YIELD::Path& path, uint32_t file_attributes ) { return underlying_volume->setattr( path, file_attributes ); } + virtual bool setxattr( const YIELD::Path& path, const std::string& name, const std::string& value, int flags ) { return underlying_volume->setxattr( path, name, value, flags ); } + virtual bool statvfs( const YIELD::Path& path, struct statvfs* stvfsbuf ) { return underlying_volume->statvfs( path, stvfsbuf ); } + virtual bool symlink( const YIELD::Path& old_path, const YIELD::Path& new_path ) { return underlying_volume->symlink( old_path, new_path ); } + virtual bool truncate( const YIELD::Path& path, uint64_t new_size ) { return underlying_volume->truncate( path, new_size ); } + virtual bool unlink( const YIELD::Path& path ) { return underlying_volume->unlink( path ); } + virtual bool utimens( const YIELD::Path& path, const YIELD::Time& atime, const YIELD::Time& mtime, const YIELD::Time& ctime ) { return underlying_volume->utimens( path, atime, mtime, ctime ); } + virtual YIELD::Path volname( const YIELD::Path& path ) { return underlying_volume->volname( path ); } + + protected: + StackableVolume( YIELD::auto_Object underlying_volume ) + : underlying_volume( underlying_volume ), log( NULL ) + { } + + StackableVolume( YIELD::auto_Object underlying_volume, YIELD::auto_Object log ) + : underlying_volume( underlying_volume ), log( log ) + { } + + + YIELD::auto_Object underlying_volume; + YIELD::auto_Object log; + }; + + + class FileCachingVolume : public StackableVolume + { + public: + FileCachingVolume( YIELD::auto_Object underlying_volume, YIELD::auto_Object log = NULL ) + : StackableVolume( underlying_volume ) + { } + + // YIELD::Volume + YIELD::auto_Object open( const YIELD::Path& path, uint32_t flags, mode_t mode, uint32_t attributes ); + + private: + virtual ~FileCachingVolume() { } + }; + + + class FUSE : public YIELD::Object + { + public: + const static uint32_t FUSE_FLAG_DEBUG = 1; + const static uint32_t FUSE_FLAG_DIRECT_IO = 2; + const static uint32_t FUSE_FLAGS_DEFAULT = 0; + + + FUSE( YIELD::auto_Object volume, uint32_t flags = FUSE_FLAGS_DEFAULT ); + FUSE( YIELD::auto_Object volume, YIELD::auto_Object log, uint32_t flags = FUSE_FLAGS_DEFAULT ); + +#ifdef _WIN32 + int main( const char* drive_letter ); +#else + int main( char* argv0, const char* mount_point ); + int main( struct fuse_args&, const char* mount_point ); +#endif + + protected: +#ifdef _WIN32 + FUSEWin32* fuse_win32; +#else + FUSEUnix* fuse_unix; +#endif + + private: + ~FUSE(); + }; + + + class StatCachingVolume : public StackableVolume, private YIELD::HATTrie + { + public: + StatCachingVolume( YIELD::auto_Object underlying_volume, double ttl_s ); + StatCachingVolume( YIELD::auto_Object underlying_volume, YIELD::auto_Object log, double ttl_s ); + + void evict( const YIELD::Path& path ); + YIELD::auto_Object find( const YIELD::Path& path ); + void insert( const YIELD::Path& path, YIELD::Stat& stat ); + + // YIELD::Volume + bool chmod( const YIELD::Path& path, mode_t mode ); + bool chown( const YIELD::Path& path, int32_t uid, int32_t gid ); + YIELD::auto_Object getattr( const YIELD::Path& path ); + bool link( const YIELD::Path& old_path, const YIELD::Path& new_path ); + bool mkdir( const YIELD::Path& path, mode_t mode ); + YIELD::auto_Object open( const YIELD::Path& path, uint32_t flags, mode_t mode ); + bool readdir( const YIELD::Path& path, const YIELD::Path& match_file_name_prefix, YIELD::Volume::readdirCallback& callback ); + bool removexattr( const YIELD::Path& path, const std::string& name ); + bool rename( const YIELD::Path& from_path, const YIELD::Path& to_path ); + bool rmdir( const YIELD::Path& path ); + bool setattr( const YIELD::Path& path, uint32_t file_attributes ); + bool setxattr( const YIELD::Path& path, const std::string& name, const std::string& value, int32_t flags ); + bool symlink( const YIELD::Path& to_path, const YIELD::Path& from_path ); + bool truncate( const YIELD::Path& path, uint64_t new_size ); + bool unlink( const YIELD::Path& path ); + bool utimens( const YIELD::Path& path, const YIELD::Time& atime, const YIELD::Time& mtime, const YIELD::Time& ctime ); + + private: + friend class StatCachingVolumereaddirCallback; + + ~StatCachingVolume(); + + + double ttl_s; + + YIELD::Mutex lock; + + + YIELD::Path getParentDirectoryPath( const YIELD::Path& ); + void insert( const YIELD::Path& path, CachedStat* cached_stat ); + }; + + + class TracingVolume : public StackableVolume + { + public: + TracingVolume( YIELD::auto_Object underlying_volume ); // Log to std::cout + TracingVolume( YIELD::auto_Object underlying_volume, YIELD::auto_Object log ); // Steals a reference to log + + // YIELD::Volume + YIELD_VOLUME_PROTOTYPES; + virtual bool exists( const YIELD::Path& path ); + virtual bool listdir( const YIELD::Path& path, const YIELD::Path& match_file_name_prefix, listdirCallback& callback ); + virtual bool mktree( const YIELD::Path& path, mode_t mode ); + virtual bool rmtree( const YIELD::Path& path ); + + private: + ~TracingVolume() { } + }; +}; + +#endif diff --git a/src/client/share/yieldfs/share/yield/include/SimpleOpt.h b/src/client/share/yieldfs/share/yield/include/SimpleOpt.h new file mode 100644 index 000000000..a9542f386 --- /dev/null +++ b/src/client/share/yieldfs/share/yield/include/SimpleOpt.h @@ -0,0 +1,1060 @@ +/*! @file SimpleOpt.h + + @version 3.4 + + @brief A cross-platform command line library which can parse almost any + of the standard command line formats in use today. It is designed + explicitly to be portable to any platform and has been tested on Windows + and Linux. See CSimpleOptTempl for the class definition. + + @section features FEATURES + + - MIT Licence allows free use in all software (including GPL + and commercial) + - multi-platform (Windows 95/98/ME/NT/2K/XP, Linux, Unix) + - supports all lengths of option names: + +
- + switch character only (e.g. use stdin for input) +
-o + short (single character) +
-long + long (multiple character, single switch character) +
--longer + long (multiple character, multiple switch characters) +
+ - supports all types of arguments for options: + +
--option + short/long option flag (no argument) +
--option ARG + short/long option with separate required argument +
--option=ARG + short/long option with combined required argument +
--option[=ARG] + short/long option with combined optional argument +
-oARG + short option with combined required argument +
-o[ARG] + short option with combined optional argument +
+ - supports options with multiple or variable numbers of arguments: + +
--multi ARG1 ARG2 + Multiple arguments +
--multi N ARG-1 ARG-2 ... ARG-N + Variable number of arguments +
+ - supports case-insensitive option matching on short, long and/or + word arguments. + - supports options which do not use a switch character. i.e. a special + word which is construed as an option. + e.g. "foo.exe open /directory/file.txt" + - supports clumping of multiple short options (no arguments) in a string + e.g. "foo.exe -abcdef file1" <==> "foo.exe -a -b -c -d -e -f file1" + - automatic recognition of a single slash as equivalent to a single + hyphen on Windows, e.g. "/f FILE" is equivalent to "-f FILE". + - file arguments can appear anywhere in the argument list: + "foo.exe file1.txt -a ARG file2.txt --flag file3.txt file4.txt" + files will be returned to the application in the same order they were + supplied on the command line + - short-circuit option matching: "--man" will match "--mandate" + invalid options can be handled while continuing to parse the command + line valid options list can be changed dynamically during command line + processing, i.e. accept different options depending on an option + supplied earlier in the command line. + - implemented with only a single C++ header file + - optionally use no C runtime or OS functions + - char, wchar_t and Windows TCHAR in the same program + - complete working examples included + - compiles cleanly at warning level 4 (Windows/VC.NET 2003), warning + level 3 (Windows/VC6) and -Wall (Linux/gcc) + + @section usage USAGE + + The SimpleOpt class is used by following these steps: + +
    +
  1. Include the SimpleOpt.h header file + +
    +        \#include "SimpleOpt.h"
    +        
    + +
  2. Define an array of valid options for your program. + +
    +@link CSimpleOptTempl::SOption CSimpleOpt::SOption @endlink g_rgOptions[] = {
    +    { OPT_FLAG, _T("-a"),     SO_NONE    }, // "-a"
    +    { OPT_FLAG, _T("-b"),     SO_NONE    }, // "-b"
    +    { OPT_ARG,  _T("-f"),     SO_REQ_SEP }, // "-f ARG"
    +    { OPT_HELP, _T("-?"),     SO_NONE    }, // "-?"
    +    { OPT_HELP, _T("--help"), SO_NONE    }, // "--help"
    +    SO_END_OF_OPTIONS                       // END
    +};
    +
    + + Note that all options must start with a hyphen even if the slash will + be accepted. This is because the slash character is automatically + converted into a hyphen to test against the list of options. + For example, the following line matches both "-?" and "/?" + (on Windows). + +
    +        { OPT_HELP, _T("-?"),     SO_NONE    }, // "-?"
    +        
    + +
  3. Instantiate a CSimpleOpt object supplying argc, argv and the option + table + +
    +@link CSimpleOptTempl CSimpleOpt @endlink args(argc, argv, g_rgOptions);
    +
    + +
  4. Process the arguments by calling Next() until it returns false. + On each call, first check for an error by calling LastError(), then + either handle the error or process the argument. + +
    +while (args.Next()) {
    +    if (args.LastError() == SO_SUCCESS) {
    +        handle option: use OptionId(), OptionText() and OptionArg()
    +    }
    +    else {
    +        handle error: see ESOError enums
    +    }
    +}
    +
    + +
  5. Process all non-option arguments with File(), Files() and FileCount() + +
    +ShowFiles(args.FileCount(), args.Files());
    +
    + +
+ + @section notes NOTES + + - In MBCS mode, this library is guaranteed to work correctly only when + all option names use only ASCII characters. + - Note that if case-insensitive matching is being used then the first + matching option in the argument list will be returned. + + @section licence MIT LICENCE + + The licence text below is the boilerplate "MIT Licence" used from: + http://www.opensource.org/licenses/mit-license.php + + Copyright (c) 2006-2007, Brodie Thiesfield + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/*! @mainpage + + +
Library SimpleOpt +
Author Brodie Thiesfield [code at jellycan dot com] +
Source http://code.jellycan.com/simpleopt/ +
+ + @section SimpleOpt SimpleOpt + + A cross-platform library providing a simple method to parse almost any of + the standard command-line formats in use today. + + See the @link SimpleOpt.h SimpleOpt @endlink documentation for full + details. + + @section SimpleGlob SimpleGlob + + A cross-platform file globbing library providing the ability to + expand wildcards in command-line arguments to a list of all matching + files. + + See the @link SimpleGlob.h SimpleGlob @endlink documentation for full + details. +*/ + +#ifndef INCLUDED_SimpleOpt +#define INCLUDED_SimpleOpt + +// Default the max arguments to a fixed value. If you want to be able to +// handle any number of arguments, then predefine this to 0 and it will +// use an internal dynamically allocated buffer instead. +#ifdef SO_MAX_ARGS +# define SO_STATICBUF SO_MAX_ARGS +#else +# include // malloc, free +# include // memcpy +# define SO_STATICBUF 50 +#endif + +//! Error values +typedef enum _ESOError +{ + //! No error + SO_SUCCESS = 0, + + /*! It looks like an option (it starts with a switch character), but + it isn't registered in the option table. */ + SO_OPT_INVALID = -1, + + /*! Multiple options matched the supplied option text. + Only returned when NOT using SO_O_EXACT. */ + SO_OPT_MULTIPLE = -2, + + /*! Option doesn't take an argument, but a combined argument was + supplied. */ + SO_ARG_INVALID = -3, + + /*! SO_REQ_CMB style-argument was supplied to a SO_REQ_SEP option + Only returned when using SO_O_PEDANTIC. */ + SO_ARG_INVALID_TYPE = -4, + + //! Required argument was not supplied + SO_ARG_MISSING = -5, + + /*! Option argument looks like another option. + Only returned when NOT using SO_O_NOERR. */ + SO_ARG_INVALID_DATA = -6 +} ESOError; + +//! Option flags +enum _ESOFlags +{ + /*! Disallow partial matching of option names */ + SO_O_EXACT = 0x0001, + + /*! Disallow use of slash as an option marker on Windows. + Un*x only ever recognizes a hyphen. */ + SO_O_NOSLASH = 0x0002, + + /*! Permit arguments on single letter options with no equals sign. + e.g. -oARG or -o[ARG] */ + SO_O_SHORTARG = 0x0004, + + /*! Permit single character options to be clumped into a single + option string. e.g. "-a -b -c" <==> "-abc" */ + SO_O_CLUMP = 0x0008, + + /*! Process the entire argv array for options, including the + argv[0] entry. */ + SO_O_USEALL = 0x0010, + + /*! Do not generate an error for invalid options. errors for missing + arguments will still be generated. invalid options will be + treated as files. invalid options in clumps will be silently + ignored. */ + SO_O_NOERR = 0x0020, + + /*! Validate argument type pedantically. Return an error when a + separated argument "-opt arg" is supplied by the user as a + combined argument "-opt=arg". By default this is not considered + an error. */ + SO_O_PEDANTIC = 0x0040, + + /*! Case-insensitive comparisons for short arguments */ + SO_O_ICASE_SHORT = 0x0100, + + /*! Case-insensitive comparisons for long arguments */ + SO_O_ICASE_LONG = 0x0200, + + /*! Case-insensitive comparisons for word arguments + i.e. arguments without any hyphens at the start. */ + SO_O_ICASE_WORD = 0x0400, + + /*! Case-insensitive comparisons for all arg types */ + SO_O_ICASE = 0x0700 +}; + +/*! Types of arguments that options may have. Note that some of the _ESOFlags + are not compatible with all argument types. SO_O_SHORTARG requires that + relevant options use either SO_REQ_CMB or SO_OPT. SO_O_CLUMP requires + that relevant options use only SO_NONE. + */ +typedef enum _ESOArgType { + /*! No argument. Just the option flags. + e.g. -o --opt */ + SO_NONE, + + /*! Required separate argument. + e.g. -o ARG --opt ARG */ + SO_REQ_SEP, + + /*! Required combined argument. + e.g. -oARG -o=ARG --opt=ARG */ + SO_REQ_CMB, + + /*! Optional combined argument. + e.g. -o[ARG] -o[=ARG] --opt[=ARG] */ + SO_OPT, + + /*! Multiple separate arguments. The actual number of arguments is + determined programatically at the time the argument is processed. + e.g. -o N ARG1 ARG2 ... ARGN --opt N ARG1 ARG2 ... ARGN */ + SO_MULTI +} ESOArgType; + +//! this option definition must be the last entry in the table +#define SO_END_OF_OPTIONS { -1, NULL, SO_NONE } + +#ifdef _DEBUG +# ifdef _MSC_VER +# include +# define SO_ASSERT(b) _ASSERTE(b) +# else +# include +# define SO_ASSERT(b) assert(b) +# endif +#else +# define SO_ASSERT(b) //!< assertion used to test input data +#endif + +// --------------------------------------------------------------------------- +// MAIN TEMPLATE CLASS +// --------------------------------------------------------------------------- + +/*! @brief Implementation of the SimpleOpt class */ +template +class CSimpleOptTempl +{ +public: + /*! @brief Structure used to define all known options. */ + struct SOption { + /*! ID to return for this flag. Optional but must be >= 0 */ + int nId; + + /*! arg string to search for, e.g. "open", "-", "-f", "--file" + Note that on Windows the slash option marker will be converted + to a hyphen so that "-f" will also match "/f". */ + const SOCHAR * pszArg; + + /*! type of argument accepted by this option */ + ESOArgType nArgType; + }; + + /*! @brief Initialize the class. Init() must be called later. */ + CSimpleOptTempl() + : m_rgShuffleBuf(NULL) + { + Init(0, NULL, NULL, 0); + } + + /*! @brief Initialize the class in preparation for use. */ + CSimpleOptTempl( + int argc, + SOCHAR * argv[], + const SOption * a_rgOptions, + int a_nFlags = 0 + ) + : m_rgShuffleBuf(NULL) + { + Init(argc, argv, a_rgOptions, a_nFlags); + } + +#ifndef SO_MAX_ARGS + /*! @brief Deallocate any allocated memory. */ + ~CSimpleOptTempl() { if (m_rgShuffleBuf) free(m_rgShuffleBuf); } +#endif + + /*! @brief Initialize the class in preparation for calling Next. + + The table of options pointed to by a_rgOptions does not need to be + valid at the time that Init() is called. However on every call to + Next() the table pointed to must be a valid options table with the + last valid entry set to SO_END_OF_OPTIONS. + + NOTE: the array pointed to by a_argv will be modified by this + class and must not be used or modified outside of member calls to + this class. + + @param a_argc Argument array size + @param a_argv Argument array + @param a_rgOptions Valid option array + @param a_nFlags Optional flags to modify the processing of + the arguments + + @return true Successful + @return false if SO_MAX_ARGC > 0: Too many arguments + if SO_MAX_ARGC == 0: Memory allocation failure + */ + bool Init( + int a_argc, + SOCHAR * a_argv[], + const SOption * a_rgOptions, + int a_nFlags = 0 + ); + + /*! @brief Change the current options table during option parsing. + + @param a_rgOptions Valid option array + */ + inline void SetOptions(const SOption * a_rgOptions) { + m_rgOptions = a_rgOptions; + } + + /*! @brief Change the current flags during option parsing. + + Note that changing the SO_O_USEALL flag here will have no affect. + It must be set using Init() or the constructor. + + @param a_nFlags Flags to modify the processing of the arguments + */ + inline void SetFlags(int a_nFlags) { m_nFlags = a_nFlags; } + + /*! @brief Query if a particular flag is set */ + inline bool HasFlag(int a_nFlag) const { + return (m_nFlags & a_nFlag) == a_nFlag; + } + + /*! @brief Advance to the next option if available. + + When all options have been processed it will return false. When true + has been returned, you must check for an invalid or unrecognized + option using the LastError() method. This will be return an error + value other than SO_SUCCESS on an error. All standard data + (e.g. OptionText(), OptionArg(), OptionId(), etc) will be available + depending on the error. + + After all options have been processed, the remaining files from the + command line can be processed in same order as they were passed to + the program. + + @return true option or error available for processing + @return false all options have been processed + */ + bool Next(); + + /*! Stops processing of the command line and returns all remaining + arguments as files. The next call to Next() will return false. + */ + void Stop(); + + /*! @brief Return the last error that occurred. + + This function must always be called before processing the current + option. This function is available only when Next() has returned true. + */ + inline ESOError LastError() const { return m_nLastError; } + + /*! @brief Return the nId value from the options array for the current + option. + + This function is available only when Next() has returned true. + */ + inline int OptionId() const { return m_nOptionId; } + + /*! @brief Return the pszArg from the options array for the current + option. + + This function is available only when Next() has returned true. + */ + inline const SOCHAR * OptionText() const { return m_pszOptionText; } + + /*! @brief Return the argument for the current option where one exists. + + If there is no argument for the option, this will return NULL. + This function is available only when Next() has returned true. + */ + inline SOCHAR * OptionArg() const { return m_pszOptionArg; } + + /*! @brief Validate and return the desired number of arguments. + + This is only valid when OptionId() has return the ID of an option + that is registered as SO_MULTI. It may be called multiple times + each time returning the desired number of arguments. Previously + returned argument pointers are remain valid. + + If an error occurs during processing, NULL will be returned and + the error will be available via LastError(). + + @param n Number of arguments to return. + */ + SOCHAR ** MultiArg(int n); + + /*! @brief Returned the number of entries in the Files() array. + + After Next() has returned false, this will be the list of files (or + otherwise unprocessed arguments). + */ + inline int FileCount() const { return m_argc - m_nLastArg; } + + /*! @brief Return the specified file argument. + + @param n Index of the file to return. This must be between 0 + and FileCount() - 1; + */ + inline SOCHAR * File(int n) const { + SO_ASSERT(n >= 0 && n < FileCount()); + return m_argv[m_nLastArg + n]; + } + + /*! @brief Return the array of files. */ + inline SOCHAR ** Files() const { return &m_argv[m_nLastArg]; } + +private: + CSimpleOptTempl(const CSimpleOptTempl &); // disabled + CSimpleOptTempl & operator=(const CSimpleOptTempl &); // disabled + + SOCHAR PrepareArg(SOCHAR * a_pszString) const; + bool NextClumped(); + void ShuffleArg(int a_nStartIdx, int a_nCount); + int LookupOption(const SOCHAR * a_pszOption) const; + int CalcMatch(const SOCHAR *a_pszSource, const SOCHAR *a_pszTest) const; + + // Find the '=' character within a string. + inline SOCHAR * FindEquals(SOCHAR *s) const { + while (*s && *s != (SOCHAR)'=') ++s; + return *s ? s : NULL; + } + bool IsEqual(SOCHAR a_cLeft, SOCHAR a_cRight, int a_nArgType) const; + + inline void Copy(SOCHAR ** ppDst, SOCHAR ** ppSrc, int nCount) const { +#ifdef SO_MAX_ARGS + // keep our promise of no CLIB usage + while (nCount-- > 0) *ppDst++ = *ppSrc++; +#else + memcpy(ppDst, ppSrc, nCount * sizeof(SOCHAR*)); +#endif + } + +private: + const SOption * m_rgOptions; //!< pointer to options table + int m_nFlags; //!< flags + int m_nOptionIdx; //!< current argv option index + int m_nOptionId; //!< id of current option (-1 = invalid) + int m_nNextOption; //!< index of next option + int m_nLastArg; //!< last argument, after this are files + int m_argc; //!< argc to process + SOCHAR ** m_argv; //!< argv + const SOCHAR * m_pszOptionText; //!< curr option text, e.g. "-f" + SOCHAR * m_pszOptionArg; //!< curr option arg, e.g. "c:\file.txt" + SOCHAR * m_pszClump; //!< clumped single character options + SOCHAR m_szShort[3]; //!< temp for clump and combined args + ESOError m_nLastError; //!< error status from the last call + SOCHAR ** m_rgShuffleBuf; //!< shuffle buffer for large argc +}; + +// --------------------------------------------------------------------------- +// IMPLEMENTATION +// --------------------------------------------------------------------------- + +template +bool +CSimpleOptTempl::Init( + int a_argc, + SOCHAR * a_argv[], + const SOption * a_rgOptions, + int a_nFlags + ) +{ + m_argc = a_argc; + m_nLastArg = a_argc; + m_argv = a_argv; + m_rgOptions = a_rgOptions; + m_nLastError = SO_SUCCESS; + m_nOptionIdx = 0; + m_nOptionId = -1; + m_pszOptionText = NULL; + m_pszOptionArg = NULL; + m_nNextOption = (a_nFlags & SO_O_USEALL) ? 0 : 1; + m_szShort[0] = (SOCHAR)'-'; + m_szShort[2] = (SOCHAR)'\0'; + m_nFlags = a_nFlags; + m_pszClump = NULL; + +#ifdef SO_MAX_ARGS + if (m_argc > SO_MAX_ARGS) { + m_nLastError = SO_ARG_INVALID_DATA; + m_nLastArg = 0; + return false; + } +#else + if (m_rgShuffleBuf) { + free(m_rgShuffleBuf); + } + if (m_argc > SO_STATICBUF) { + m_rgShuffleBuf = (SOCHAR**) malloc(sizeof(SOCHAR*) * m_argc); + if (!m_rgShuffleBuf) { + return false; + } + } +#endif + + return true; +} + +template +bool +CSimpleOptTempl::Next() +{ +#ifdef SO_MAX_ARGS + if (m_argc > SO_MAX_ARGS) { + SO_ASSERT(!"Too many args! Check the return value of Init()!"); + return false; + } +#endif + + // process a clumped option string if appropriate + if (m_pszClump && *m_pszClump) { + // silently discard invalid clumped option + bool bIsValid = NextClumped(); + while (*m_pszClump && !bIsValid && HasFlag(SO_O_NOERR)) { + bIsValid = NextClumped(); + } + + // return this option if valid or we are returning errors + if (bIsValid || !HasFlag(SO_O_NOERR)) { + return true; + } + } + SO_ASSERT(!m_pszClump || !*m_pszClump); + m_pszClump = NULL; + + // init for the next option + m_nOptionIdx = m_nNextOption; + m_nOptionId = -1; + m_pszOptionText = NULL; + m_pszOptionArg = NULL; + m_nLastError = SO_SUCCESS; + + // find the next option + SOCHAR cFirst; + int nTableIdx = -1; + int nOptIdx = m_nOptionIdx; + while (nTableIdx < 0 && nOptIdx < m_nLastArg) { + SOCHAR * pszArg = m_argv[nOptIdx]; + m_pszOptionArg = NULL; + + // find this option in the options table + cFirst = PrepareArg(pszArg); + if (pszArg[0] == (SOCHAR)'-') { + // find any combined argument string and remove equals sign + m_pszOptionArg = FindEquals(pszArg); + if (m_pszOptionArg) { + *m_pszOptionArg++ = (SOCHAR)'\0'; + } + } + nTableIdx = LookupOption(pszArg); + + // if we didn't find this option but if it is a short form + // option then we try the alternative forms + if (nTableIdx < 0 + && !m_pszOptionArg + && pszArg[0] == (SOCHAR)'-' + && pszArg[1] + && pszArg[1] != (SOCHAR)'-' + && pszArg[2]) + { + // test for a short-form with argument if appropriate + if (HasFlag(SO_O_SHORTARG)) { + m_szShort[1] = pszArg[1]; + int nIdx = LookupOption(m_szShort); + if (nIdx >= 0 + && (m_rgOptions[nIdx].nArgType == SO_REQ_CMB + || m_rgOptions[nIdx].nArgType == SO_OPT)) + { + m_pszOptionArg = &pszArg[2]; + pszArg = m_szShort; + nTableIdx = nIdx; + } + } + + // test for a clumped short-form option string and we didn't + // match on the short-form argument above + if (nTableIdx < 0 && HasFlag(SO_O_CLUMP)) { + m_pszClump = &pszArg[1]; + ++m_nNextOption; + if (nOptIdx > m_nOptionIdx) { + ShuffleArg(m_nOptionIdx, nOptIdx - m_nOptionIdx); + } + return Next(); + } + } + + // The option wasn't found. If it starts with a switch character + // and we are not suppressing errors for invalid options then it + // is reported as an error, otherwise it is data. + if (nTableIdx < 0) { + if (!HasFlag(SO_O_NOERR) && pszArg[0] == (SOCHAR)'-') { + m_pszOptionText = pszArg; + break; + } + + pszArg[0] = cFirst; + ++nOptIdx; + if (m_pszOptionArg) { + *(--m_pszOptionArg) = (SOCHAR)'='; + } + } + } + + // end of options + if (nOptIdx >= m_nLastArg) { + if (nOptIdx > m_nOptionIdx) { + ShuffleArg(m_nOptionIdx, nOptIdx - m_nOptionIdx); + } + return false; + } + ++m_nNextOption; + + // get the option id + ESOArgType nArgType = SO_NONE; + if (nTableIdx < 0) { + m_nLastError = (ESOError) nTableIdx; // error code + } + else { + m_nOptionId = m_rgOptions[nTableIdx].nId; + m_pszOptionText = m_rgOptions[nTableIdx].pszArg; + + // ensure that the arg type is valid + nArgType = m_rgOptions[nTableIdx].nArgType; + switch (nArgType) { + case SO_NONE: + if (m_pszOptionArg) { + m_nLastError = SO_ARG_INVALID; + } + break; + + case SO_REQ_SEP: + if (m_pszOptionArg) { + // they wanted separate args, but we got a combined one, + // unless we are pedantic, just accept it. + if (HasFlag(SO_O_PEDANTIC)) { + m_nLastError = SO_ARG_INVALID_TYPE; + } + } + // more processing after we shuffle + break; + + case SO_REQ_CMB: + if (!m_pszOptionArg) { + m_nLastError = SO_ARG_MISSING; + } + break; + + case SO_OPT: + // nothing to do + break; + + case SO_MULTI: + // nothing to do. Caller must now check for valid arguments + // using GetMultiArg() + break; + } + } + + // shuffle the files out of the way + if (nOptIdx > m_nOptionIdx) { + ShuffleArg(m_nOptionIdx, nOptIdx - m_nOptionIdx); + } + + // we need to return the separate arg if required, just re-use the + // multi-arg code because it all does the same thing + if ( nArgType == SO_REQ_SEP + && !m_pszOptionArg + && m_nLastError == SO_SUCCESS) + { + SOCHAR ** ppArgs = MultiArg(1); + if (ppArgs) { + m_pszOptionArg = *ppArgs; + } + } + + return true; +} + +template +void +CSimpleOptTempl::Stop() +{ + if (m_nNextOption < m_nLastArg) { + ShuffleArg(m_nNextOption, m_nLastArg - m_nNextOption); + } +} + +template +SOCHAR +CSimpleOptTempl::PrepareArg( + SOCHAR * a_pszString + ) const +{ +#ifdef _WIN32 + // On Windows we can accept the forward slash as a single character + // option delimiter, but it cannot replace the '-' option used to + // denote stdin. On Un*x paths may start with slash so it may not + // be used to start an option. + if (!HasFlag(SO_O_NOSLASH) + && a_pszString[0] == (SOCHAR)'/' + && a_pszString[1] + && a_pszString[1] != (SOCHAR)'-') + { + a_pszString[0] = (SOCHAR)'-'; + return (SOCHAR)'/'; + } +#endif + return a_pszString[0]; +} + +template +bool +CSimpleOptTempl::NextClumped() +{ + // prepare for the next clumped option + m_szShort[1] = *m_pszClump++; + m_nOptionId = -1; + m_pszOptionText = NULL; + m_pszOptionArg = NULL; + m_nLastError = SO_SUCCESS; + + // lookup this option, ensure that we are using exact matching + int nSavedFlags = m_nFlags; + m_nFlags = SO_O_EXACT; + int nTableIdx = LookupOption(m_szShort); + m_nFlags = nSavedFlags; + + // unknown option + if (nTableIdx < 0) { + m_nLastError = (ESOError) nTableIdx; // error code + return false; + } + + // valid option + m_pszOptionText = m_rgOptions[nTableIdx].pszArg; + ESOArgType nArgType = m_rgOptions[nTableIdx].nArgType; + if (nArgType == SO_NONE) { + m_nOptionId = m_rgOptions[nTableIdx].nId; + return true; + } + + if (nArgType == SO_REQ_CMB && *m_pszClump) { + m_nOptionId = m_rgOptions[nTableIdx].nId; + m_pszOptionArg = m_pszClump; + while (*m_pszClump) ++m_pszClump; // must point to an empty string + return true; + } + + // invalid option as it requires an argument + m_nLastError = SO_ARG_MISSING; + return true; +} + +// Shuffle arguments to the end of the argv array. +// +// For example: +// argv[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8" }; +// +// ShuffleArg(1, 1) = { "0", "2", "3", "4", "5", "6", "7", "8", "1" }; +// ShuffleArg(5, 2) = { "0", "1", "2", "3", "4", "7", "8", "5", "6" }; +// ShuffleArg(2, 4) = { "0", "1", "6", "7", "8", "2", "3", "4", "5" }; +template +void +CSimpleOptTempl::ShuffleArg( + int a_nStartIdx, + int a_nCount + ) +{ + SOCHAR * staticBuf[SO_STATICBUF]; + SOCHAR ** buf = m_rgShuffleBuf ? m_rgShuffleBuf : staticBuf; + int nTail = m_argc - a_nStartIdx - a_nCount; + + // make a copy of the elements to be moved + Copy(buf, m_argv + a_nStartIdx, a_nCount); + + // move the tail down + Copy(m_argv + a_nStartIdx, m_argv + a_nStartIdx + a_nCount, nTail); + + // append the moved elements to the tail + Copy(m_argv + a_nStartIdx + nTail, buf, a_nCount); + + // update the index of the last unshuffled arg + m_nLastArg -= a_nCount; +} + +// match on the long format strings. partial matches will be +// accepted only if that feature is enabled. +template +int +CSimpleOptTempl::LookupOption( + const SOCHAR * a_pszOption + ) const +{ + int nBestMatch = -1; // index of best match so far + int nBestMatchLen = 0; // matching characters of best match + int nLastMatchLen = 0; // matching characters of last best match + + for (int n = 0; m_rgOptions[n].nId >= 0; ++n) { + // the option table must use hyphens as the option character, + // the slash character is converted to a hyphen for testing. + SO_ASSERT(m_rgOptions[n].pszArg[0] != (SOCHAR)'/'); + + int nMatchLen = CalcMatch(m_rgOptions[n].pszArg, a_pszOption); + if (nMatchLen == -1) { + return n; + } + if (nMatchLen > 0 && nMatchLen >= nBestMatchLen) { + nLastMatchLen = nBestMatchLen; + nBestMatchLen = nMatchLen; + nBestMatch = n; + } + } + + // only partial matches or no match gets to here, ensure that we + // don't return a partial match unless it is a clear winner + if (HasFlag(SO_O_EXACT) || nBestMatch == -1) { + return SO_OPT_INVALID; + } + return (nBestMatchLen > nLastMatchLen) ? nBestMatch : SO_OPT_MULTIPLE; +} + +// calculate the number of characters that match (case-sensitive) +// 0 = no match, > 0 == number of characters, -1 == perfect match +template +int +CSimpleOptTempl::CalcMatch( + const SOCHAR * a_pszSource, + const SOCHAR * a_pszTest + ) const +{ + if (!a_pszSource || !a_pszTest) { + return 0; + } + + // determine the argument type + int nArgType = SO_O_ICASE_LONG; + if (a_pszSource[0] != '-') { + nArgType = SO_O_ICASE_WORD; + } + else if (a_pszSource[1] != '-' && !a_pszSource[2]) { + nArgType = SO_O_ICASE_SHORT; + } + + // match and skip leading hyphens + while (*a_pszSource == (SOCHAR)'-' && *a_pszSource == *a_pszTest) { + ++a_pszSource; + ++a_pszTest; + } + if (*a_pszSource == (SOCHAR)'-' || *a_pszTest == (SOCHAR)'-') { + return 0; + } + + // find matching number of characters in the strings + int nLen = 0; + while (*a_pszSource && IsEqual(*a_pszSource, *a_pszTest, nArgType)) { + ++a_pszSource; + ++a_pszTest; + ++nLen; + } + + // if we have exhausted the source... + if (!*a_pszSource) { + // and the test strings, then it's a perfect match + if (!*a_pszTest) { + return -1; + } + + // otherwise the match failed as the test is longer than + // the source. i.e. "--mant" will not match the option "--man". + return 0; + } + + // if we haven't exhausted the test string then it is not a match + // i.e. "--mantle" will not best-fit match to "--mandate" at all. + if (*a_pszTest) { + return 0; + } + + // partial match to the current length of the test string + return nLen; +} + +template +bool +CSimpleOptTempl::IsEqual( + SOCHAR a_cLeft, + SOCHAR a_cRight, + int a_nArgType + ) const +{ + // if this matches then we are doing case-insensitive matching + if (m_nFlags & a_nArgType) { + if (a_cLeft >= 'A' && a_cLeft <= 'Z') a_cLeft += 'a' - 'A'; + if (a_cRight >= 'A' && a_cRight <= 'Z') a_cRight += 'a' - 'A'; + } + return a_cLeft == a_cRight; +} + +// calculate the number of characters that match (case-sensitive) +// 0 = no match, > 0 == number of characters, -1 == perfect match +template +SOCHAR ** +CSimpleOptTempl::MultiArg( + int a_nCount + ) +{ + // ensure we have enough arguments + if (m_nNextOption + a_nCount > m_nLastArg) { + m_nLastError = SO_ARG_MISSING; + return NULL; + } + + // our argument array + SOCHAR ** rgpszArg = &m_argv[m_nNextOption]; + + // Ensure that each of the following don't start with an switch character. + // Only make this check if we are returning errors for unknown arguments. + if (!HasFlag(SO_O_NOERR)) { + for (int n = 0; n < a_nCount; ++n) { + SOCHAR ch = PrepareArg(rgpszArg[n]); + if (rgpszArg[n][0] == (SOCHAR)'-') { + rgpszArg[n][0] = ch; + m_nLastError = SO_ARG_INVALID_DATA; + return NULL; + } + rgpszArg[n][0] = ch; + } + } + + // all good + m_nNextOption += a_nCount; + return rgpszArg; +} + + +// --------------------------------------------------------------------------- +// TYPE DEFINITIONS +// --------------------------------------------------------------------------- + +/*! @brief ASCII/MBCS version of CSimpleOpt */ +typedef CSimpleOptTempl CSimpleOptA; + +/*! @brief wchar_t version of CSimpleOpt */ +typedef CSimpleOptTempl CSimpleOptW; + +#if defined(_UNICODE) +/*! @brief TCHAR version dependent on if _UNICODE is defined */ +# define CSimpleOpt CSimpleOptW +#else +/*! @brief TCHAR version dependent on if _UNICODE is defined */ +# define CSimpleOpt CSimpleOptA +#endif + +#endif // INCLUDED_SimpleOpt diff --git a/src/client/share/yieldfs/share/yield/include/msstdint.h b/src/client/share/yieldfs/share/yield/include/msstdint.h new file mode 100644 index 000000000..25a583964 --- /dev/null +++ b/src/client/share/yieldfs/share/yield/include/msstdint.h @@ -0,0 +1,232 @@ +// ISO C9x compliant stdint.h for Microsoft Visual Studio +// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 +// +// Copyright (c) 2006-2008 Alexander Chemeris +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. The name of the author may be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _MSC_VER // [ +#error "Use this header only with Microsoft Visual C++ compilers!" +#endif // _MSC_VER ] + +#ifndef _MSC_STDINT_H_ // [ +#define _MSC_STDINT_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include + +// For Visual Studio 6 in C++ mode wrap include with 'extern "C++" {}' +// or compiler give many errors like this: +// error C2733: second C linkage of overloaded function 'wmemchr' not allowed +#if (_MSC_VER < 1300) && defined(__cplusplus) + extern "C++" { +#endif +# include +#if (_MSC_VER < 1300) && defined(__cplusplus) + } +#endif + +// Define _W64 macros to mark types changing their size, like intptr_t. +#ifndef _W64 +# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 +# define _W64 __w64 +# else +# define _W64 +# endif +#endif + + +// 7.18.1 Integer types + +// 7.18.1.1 Exact-width integer types +typedef __int8 int8_t; +typedef __int16 int16_t; +typedef __int32 int32_t; +typedef __int64 int64_t; +typedef unsigned __int8 uint8_t; +typedef unsigned __int16 uint16_t; +typedef unsigned __int32 uint32_t; +typedef unsigned __int64 uint64_t; + +// 7.18.1.2 Minimum-width integer types +typedef int8_t int_least8_t; +typedef int16_t int_least16_t; +typedef int32_t int_least32_t; +typedef int64_t int_least64_t; +typedef uint8_t uint_least8_t; +typedef uint16_t uint_least16_t; +typedef uint32_t uint_least32_t; +typedef uint64_t uint_least64_t; + +// 7.18.1.3 Fastest minimum-width integer types +typedef int8_t int_fast8_t; +typedef int16_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef int64_t int_fast64_t; +typedef uint8_t uint_fast8_t; +typedef uint16_t uint_fast16_t; +typedef uint32_t uint_fast32_t; +typedef uint64_t uint_fast64_t; + +// 7.18.1.4 Integer types capable of holding object pointers +#ifdef _WIN64 // [ + typedef __int64 intptr_t; + typedef unsigned __int64 uintptr_t; +#else // _WIN64 ][ + typedef _W64 int intptr_t; + typedef _W64 unsigned int uintptr_t; +#endif // _WIN64 ] + +// 7.18.1.5 Greatest-width integer types +typedef int64_t intmax_t; +typedef uint64_t uintmax_t; + + +// 7.18.2 Limits of specified-width integer types + +#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 + +// 7.18.2.1 Limits of exact-width integer types +#define INT8_MIN ((int8_t)_I8_MIN) +#define INT8_MAX _I8_MAX +#define INT16_MIN ((int16_t)_I16_MIN) +#define INT16_MAX _I16_MAX +#define INT32_MIN ((int32_t)_I32_MIN) +#define INT32_MAX _I32_MAX +#define INT64_MIN ((int64_t)_I64_MIN) +#define INT64_MAX _I64_MAX +#define UINT8_MAX _UI8_MAX +#define UINT16_MAX _UI16_MAX +#define UINT32_MAX _UI32_MAX +#define UINT64_MAX _UI64_MAX + +// 7.18.2.2 Limits of minimum-width integer types +#define INT_LEAST8_MIN INT8_MIN +#define INT_LEAST8_MAX INT8_MAX +#define INT_LEAST16_MIN INT16_MIN +#define INT_LEAST16_MAX INT16_MAX +#define INT_LEAST32_MIN INT32_MIN +#define INT_LEAST32_MAX INT32_MAX +#define INT_LEAST64_MIN INT64_MIN +#define INT_LEAST64_MAX INT64_MAX +#define UINT_LEAST8_MAX UINT8_MAX +#define UINT_LEAST16_MAX UINT16_MAX +#define UINT_LEAST32_MAX UINT32_MAX +#define UINT_LEAST64_MAX UINT64_MAX + +// 7.18.2.3 Limits of fastest minimum-width integer types +#define INT_FAST8_MIN INT8_MIN +#define INT_FAST8_MAX INT8_MAX +#define INT_FAST16_MIN INT16_MIN +#define INT_FAST16_MAX INT16_MAX +#define INT_FAST32_MIN INT32_MIN +#define INT_FAST32_MAX INT32_MAX +#define INT_FAST64_MIN INT64_MIN +#define INT_FAST64_MAX INT64_MAX +#define UINT_FAST8_MAX UINT8_MAX +#define UINT_FAST16_MAX UINT16_MAX +#define UINT_FAST32_MAX UINT32_MAX +#define UINT_FAST64_MAX UINT64_MAX + +// 7.18.2.4 Limits of integer types capable of holding object pointers +#ifdef _WIN64 // [ +# define INTPTR_MIN INT64_MIN +# define INTPTR_MAX INT64_MAX +# define UINTPTR_MAX UINT64_MAX +#else // _WIN64 ][ +# define INTPTR_MIN INT32_MIN +# define INTPTR_MAX INT32_MAX +# define UINTPTR_MAX UINT32_MAX +#endif // _WIN64 ] + +// 7.18.2.5 Limits of greatest-width integer types +#define INTMAX_MIN INT64_MIN +#define INTMAX_MAX INT64_MAX +#define UINTMAX_MAX UINT64_MAX + +// 7.18.3 Limits of other integer types + +#ifdef _WIN64 // [ +# define PTRDIFF_MIN _I64_MIN +# define PTRDIFF_MAX _I64_MAX +#else // _WIN64 ][ +# define PTRDIFF_MIN _I32_MIN +# define PTRDIFF_MAX _I32_MAX +#endif // _WIN64 ] + +#define SIG_ATOMIC_MIN INT_MIN +#define SIG_ATOMIC_MAX INT_MAX + +#ifndef SIZE_MAX // [ +# ifdef _WIN64 // [ +# define SIZE_MAX _UI64_MAX +# else // _WIN64 ][ +# define SIZE_MAX _UI32_MAX +# endif // _WIN64 ] +#endif // SIZE_MAX ] + +// WCHAR_MIN and WCHAR_MAX are also defined in +#ifndef WCHAR_MIN // [ +# define WCHAR_MIN 0 +#endif // WCHAR_MIN ] +#ifndef WCHAR_MAX // [ +# define WCHAR_MAX _UI16_MAX +#endif // WCHAR_MAX ] + +#define WINT_MIN 0 +#define WINT_MAX _UI16_MAX + +#endif // __STDC_LIMIT_MACROS ] + + +// 7.18.4 Limits of other integer types + +#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 + +// 7.18.4.1 Macros for minimum-width integer constants + +#define INT8_C(val) val##i8 +#define INT16_C(val) val##i16 +#define INT32_C(val) val##i32 +#define INT64_C(val) val##i64 + +#define UINT8_C(val) val##ui8 +#define UINT16_C(val) val##ui16 +#define UINT32_C(val) val##ui32 +#define UINT64_C(val) val##ui64 + +// 7.18.4.2 Macros for greatest-width integer constants +#define INTMAX_C INT64_C +#define UINTMAX_C UINT64_C + +#endif // __STDC_CONSTANT_MACROS ] + + +#endif // _MSC_STDINT_H_ ] diff --git a/src/client/share/yieldfs/share/yield/include/uriparser.h b/src/client/share/yieldfs/share/yield/include/uriparser.h new file mode 100644 index 000000000..6a511b3b9 --- /dev/null +++ b/src/client/share/yieldfs/share/yield/include/uriparser.h @@ -0,0 +1,915 @@ +/* + * uriparser - RFC 3986 URI parsing library + * + * Copyright (C) 2007, Weijia Song + * Copyright (C) 2007, Sebastian Pipping + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * @file UriDefsConfig.h + * Adjusts the internal configuration after processing external definitions. + */ + +#ifndef URIPARSER_H +#define URIPARSER_H + +# include /* For NULL, snprintf */ +# include /* For wchar_t */ +# include /* For strlen, memset, memcpy */ +# include /* For malloc */ + + +/* Header: UriDefsAnsi.h */ +#undef URI_CHAR +#define URI_CHAR char + +#undef _UT +#define _UT(x) x + +#undef URI_FUNC +#define URI_FUNC(x) uri##x##A + +#undef URI_TYPE +#define URI_TYPE(x) Uri##x##A + + + +#undef URI_STRLEN +#define URI_STRLEN strlen +#undef URI_STRCPY +#define URI_STRCPY strcpy +#undef URI_STRCMP +#define URI_STRCMP strcmp +#undef URI_STRNCMP +#define URI_STRNCMP strncmp + +/* TODO Remove on next source-compatibility break */ +#undef URI_SNPRINTF +#if (defined(__WIN32__) || defined(_WIN32) || defined(WIN32)) +# define URI_SNPRINTF _snprintf +#else +# define URI_SNPRINTF snprintf +#endif + + +/* Header: UriBase.h */ + +/* Version helper macro */ +#define URI_ANSI_TO_UNICODE(x) L##x + + + +/* Version */ +#define URI_VER_MAJOR 0 +#define URI_VER_MINOR 7 +#define URI_VER_RELEASE 5 +#define URI_VER_SUFFIX_ANSI "" +#define URI_VER_SUFFIX_UNICODE URI_ANSI_TO_UNICODE(URI_VER_SUFFIX_ANSI) + + + +/* More version helper macros */ +#define URI_INT_TO_ANSI_HELPER(x) #x +#define URI_INT_TO_ANSI(x) URI_INT_TO_ANSI_HELPER(x) + +#define URI_INT_TO_UNICODE_HELPER(x) URI_ANSI_TO_UNICODE(#x) +#define URI_INT_TO_UNICODE(x) URI_INT_TO_UNICODE_HELPER(x) + +#define URI_VER_ANSI_HELPER(ma, mi, r, s) \ + URI_INT_TO_ANSI(ma) "." \ + URI_INT_TO_ANSI(mi) "." \ + URI_INT_TO_ANSI(r) \ + s + +#define URI_VER_UNICODE_HELPER(ma, mi, r, s) \ + URI_INT_TO_UNICODE(ma) L"." \ + URI_INT_TO_UNICODE(mi) L"." \ + URI_INT_TO_UNICODE(r) \ + s + + + +/* Full version strings */ +#define URI_VER_ANSI URI_VER_ANSI_HELPER(URI_VER_MAJOR, URI_VER_MINOR, URI_VER_RELEASE, URI_VER_SUFFIX_ANSI) +#define URI_VER_UNICODE URI_VER_UNICODE_HELPER(URI_VER_MAJOR, URI_VER_MINOR, URI_VER_RELEASE, URI_VER_SUFFIX_UNICODE) + + + +/* Unused parameter macro */ +#ifdef __GNUC__ +# define URI_UNUSED(x) unused_##x __attribute__((unused)) +#else +# define URI_UNUSED(x) x +#endif + + + +typedef int UriBool; /**< Boolean type */ + +#define URI_TRUE 1 +#define URI_FALSE 0 + + + +/* Shared errors */ +#define URI_SUCCESS 0 +#define URI_ERROR_SYNTAX 1 /* Parsed text violates expected format */ +#define URI_ERROR_NULL 2 /* One of the params passed was NULL + although it mustn't be */ +#define URI_ERROR_MALLOC 3 /* Requested memory could not be allocated */ +#define URI_ERROR_OUTPUT_TOO_LARGE 4 /* Some output is to large for the receiving buffer */ +#define URI_ERROR_NOT_IMPLEMENTED 8 /* The called function is not implemented yet */ +#define URI_ERROR_RANGE_INVALID 9 /* The parameters passed contained invalid ranges */ + + +/* Errors specific to ToString */ +#define URI_ERROR_TOSTRING_TOO_LONG URI_ERROR_OUTPUT_TOO_LARGE /* Deprecated, test for URI_ERROR_OUTPUT_TOO_LARGE instead */ + +/* Errors specific to AddBaseUri */ +#define URI_ERROR_ADDBASE_REL_BASE 5 /* Given base is not absolute */ + +/* Errors specific to RemoveBaseUri */ +#define URI_ERROR_REMOVEBASE_REL_BASE 6 /* Given base is not absolute */ +#define URI_ERROR_REMOVEBASE_REL_SOURCE 7 /* Given base is not absolute */ + + +/* Function inlining, not ANSI/ISO C! */ +#if (defined(URI_DOXYGEN) || defined(URI_SIZEDOWN)) +# define URI_INLINE +#elif defined(__INTEL_COMPILER) +/* Intel C/C++ */ +/* http://predef.sourceforge.net/precomp.html#sec20 */ +/* http://www.intel.com/support/performancetools/c/windows/sb/CS-007751.htm#2 */ +# define URI_INLINE __force_inline +#elif defined(_MSC_VER) +/* Microsoft Visual C++ */ +/* http://predef.sourceforge.net/precomp.html#sec32 */ +/* http://msdn2.microsoft.com/en-us/library/ms882281.aspx */ +# define URI_INLINE __forceinline +#elif (__GNUC__ >= 4) +/* GCC C/C++ 4.x.x */ +/* http://predef.sourceforge.net/precomp.html#sec13 */ +# define URI_INLINE __attribute__((always_inline)) +#elif (__STDC_VERSION__ >= 199901L) +/* C99, "inline" is a keyword */ +# define URI_INLINE inline +#else +/* No inlining */ +# define URI_INLINE +#endif + + + +/* Header: UriBase.h */ +/** + * Holds an IPv4 address. + */ +typedef struct UriIp4Struct { + unsigned char data[4]; /**< Each octet in one byte */ +} UriIp4; /**< @copydoc UriIp4Struct */ + + + +/** + * Holds an IPv6 address. + */ +typedef struct UriIp6Struct { + unsigned char data[16]; /**< Each quad in two bytes */ +} UriIp6; /**< @copydoc UriIp6Struct */ + + + +/** + * Specifies a line break conversion mode + */ +typedef enum UriBreakConversionEnum { + URI_BR_TO_LF, /**< Convert to Unix line breaks ("\\x0a") */ + URI_BR_TO_CRLF, /**< Convert to Windows line breaks ("\\x0d\\x0a") */ + URI_BR_TO_CR, /**< Convert to Macintosh line breaks ("\\x0d") */ + URI_BR_TO_UNIX = URI_BR_TO_LF, /**< @copydoc UriBreakConversionEnum::URI_BR_TO_LF */ + URI_BR_TO_WINDOWS = URI_BR_TO_CRLF, /**< @copydoc UriBreakConversionEnum::URI_BR_TO_CRLF */ + URI_BR_TO_MAC = URI_BR_TO_CR, /**< @copydoc UriBreakConversionEnum::URI_BR_TO_CR */ + URI_BR_DONT_TOUCH /**< Copy line breaks unmodified */ +} UriBreakConversion; /**< @copydoc UriBreakConversionEnum */ + + + +/** + * Specifies which component of a %URI has to be normalized. + */ +typedef enum UriNormalizationMaskEnum { + URI_NORMALIZED = 0, /**< Do not normalize anything */ + URI_NORMALIZE_SCHEME = 1 << 0, /**< Normalize scheme (fix uppercase letters) */ + URI_NORMALIZE_USER_INFO = 1 << 1, /**< Normalize user info (fix uppercase percent-encodings) */ + URI_NORMALIZE_HOST = 1 << 2, /**< Normalize host (fix uppercase letters) */ + URI_NORMALIZE_PATH = 1 << 3, /**< Normalize path (fix uppercase percent-encodings and redundant dot segments) */ + URI_NORMALIZE_QUERY = 1 << 4, /**< Normalize query (fix uppercase percent-encodings) */ + URI_NORMALIZE_FRAGMENT = 1 << 5 /**< Normalize fragment (fix uppercase percent-encodings) */ +} UriNormalizationMask; /**< @copydoc UriNormalizationMaskEnum */ + + +/* Header: Uri.h */ +/** + * Specifies a range of characters within a string. + * The range includes all characters from first + * to one before afterLast. So if both are + * non-NULL the difference is the length of the text range. + * + * @see UriUriA + * @see UriPathSegmentA + * @see UriHostDataA + * @since 0.3.0 + */ +typedef struct URI_TYPE(TextRangeStruct) { + const URI_CHAR * first; /**< Pointer to first character */ + const URI_CHAR * afterLast; /**< Pointer to character after the last one still in */ +} URI_TYPE(TextRange); /**< @copydoc UriTextRangeStructA */ + + + +/** + * Represents a path segment within a %URI path. + * More precisely it is a node in a linked + * list of path segments. + * + * @see UriUriA + * @since 0.3.0 + */ +typedef struct URI_TYPE(PathSegmentStruct) { + URI_TYPE(TextRange) text; /**< Path segment name */ + struct URI_TYPE(PathSegmentStruct) * next; /**< Pointer to the next path segment in the list, can be NULL if last already */ + + void * reserved; /**< Reserved to the parser */ +} URI_TYPE(PathSegment); /**< @copydoc UriPathSegmentStructA */ + + + +/** + * Holds structured host information. + * This is either a IPv4, IPv6, plain + * text for IPvFuture or all zero for + * a registered name. + * + * @see UriUriA + * @since 0.3.0 + */ +typedef struct URI_TYPE(HostDataStruct) { + UriIp4 * ip4; /**< IPv4 address */ + UriIp6 * ip6; /**< IPv6 address */ + URI_TYPE(TextRange) ipFuture; /**< IPvFuture address */ +} URI_TYPE(HostData); /**< @copydoc UriHostDataStructA */ + + + +/** + * Represents an RFC 3986 %URI. + * Missing components can be {NULL, NULL} ranges. + * + * @see uriParseUriA + * @see uriFreeUriMembersA + * @see UriParserStateA + * @since 0.3.0 + */ +typedef struct URI_TYPE(UriStruct) { + URI_TYPE(TextRange) scheme; /**< Scheme (e.g. "http") */ + URI_TYPE(TextRange) userInfo; /**< User info (e.g. "user:pass") */ + URI_TYPE(TextRange) hostText; /**< Host text (set for all hosts, excluding square brackets) */ + URI_TYPE(HostData) hostData; /**< Structured host type specific data */ + URI_TYPE(TextRange) portText; /**< Port (e.g. "80") */ + URI_TYPE(PathSegment) * pathHead; /**< Head of a linked list of path segments */ + URI_TYPE(PathSegment) * pathTail; /**< Tail of the list behind pathHead */ + URI_TYPE(TextRange) query; /**< Query without leading "?" */ + URI_TYPE(TextRange) fragment; /**< Query without leading "#" */ + UriBool absolutePath; /**< Absolute path flag, distincting "a" and "/a" */ + UriBool owner; /**< Memory owner flag */ + + void * reserved; /**< Reserved to the parser */ +} URI_TYPE(Uri); /**< @copydoc UriUriStructA */ + + + +/** + * Represents a state of the %URI parser. + * Missing components can be NULL to reflect + * a components absence. + * + * @see uriFreeUriMembersA + * @since 0.3.0 + */ +typedef struct URI_TYPE(ParserStateStruct) { + URI_TYPE(Uri) * uri; /**< Plug in the %URI structure to be filled while parsing here */ + int errorCode; /**< Code identifying the occured error */ + const URI_CHAR * errorPos; /**< Pointer to position in case of a syntax error */ + + void * reserved; /**< Reserved to the parser */ +} URI_TYPE(ParserState); /**< @copydoc UriParserStateStructA */ + + + +/** + * Represents a query element. + * More precisely it is a node in a linked + * list of query elements. + * + * @since 0.7.0 + */ +typedef struct URI_TYPE(QueryListStruct) { + URI_CHAR * key; /**< Key of the query element */ + URI_CHAR * value; /**< Value of the query element, can be NULL */ + + struct URI_TYPE(QueryListStruct) * next; /**< Pointer to the next key/value pair in the list, can be NULL if last already */ +} URI_TYPE(QueryList); /**< @copydoc UriQueryListStructA */ + + + +/** + * Parses a RFC 3986 URI. + * + * @param state INOUT: Parser state with set output %URI, must not be NULL + * @param first IN: Pointer to the first character to parse, must not be NULL + * @param afterLast IN: Pointer to the character after the last to parse, must not be NULL + * @return 0 on success, error code otherwise + * + * @see uriParseUriA + * @see uriToStringA + * @since 0.3.0 + */ +int URI_FUNC(ParseUriEx)(URI_TYPE(ParserState) * state, + const URI_CHAR * first, const URI_CHAR * afterLast); + + + +/** + * Parses a RFC 3986 %URI. + * + * @param state INOUT: Parser state with set output %URI, must not be NULL + * @param text IN: Text to parse, must not be NULL + * @return 0 on success, error code otherwise + * + * @see uriParseUriExA + * @see uriToStringA + * @since 0.3.0 + */ +int URI_FUNC(ParseUri)(URI_TYPE(ParserState) * state, + const URI_CHAR * text); + + + +/** + * Frees all memory associated with the members + * of the %URI structure. Note that the structure + * itself is not freed, only its members. + * + * @param uri INOUT: %URI structure whose members should be freed + * + * @since 0.3.0 + */ +void URI_FUNC(FreeUriMembers)(URI_TYPE(Uri) * uri); + + + +/** + * Percent-encodes all unreserved characters from the input string and + * writes the encoded version to the output string. + * Be sure to allocate 3 times the space of the input buffer for + * the output buffer for normalizeBreaks == URI_FALSE and 6 times + * the space for normalizeBreaks == URI_TRUE + * (since e.g. "\x0d" becomes "%0D%0A" in that case) + * + * @param inFirst IN: Pointer to first character of the input text + * @param inAfterLast IN: Pointer after the last character of the input text + * @param out OUT: Encoded text destination + * @param spaceToPlus IN: Wether to convert ' ' to '+' or not + * @param normalizeBreaks IN: Wether to convert CR and LF to CR-LF or not. + * @return Position of terminator in output string + * + * @see uriEscapeA + * @see uriUnescapeInPlaceExA + * @since 0.5.2 + */ +URI_CHAR * URI_FUNC(EscapeEx)(const URI_CHAR * inFirst, + const URI_CHAR * inAfterLast, URI_CHAR * out, + UriBool spaceToPlus, UriBool normalizeBreaks); + + + +/** + * Percent-encodes all unreserved characters from the input string and + * writes the encoded version to the output string. + * Be sure to allocate 3 times the space of the input buffer for + * the output buffer for normalizeBreaks == URI_FALSE and 6 times + * the space for normalizeBreaks == URI_FALSE + * (since e.g. "\x0d" becomes "%0D%0A" in that case) + * + * @param in IN: Text source + * @param out OUT: Encoded text destination + * @param spaceToPlus IN: Wether to convert ' ' to '+' or not + * @param normalizeBreaks IN: Wether to convert CR and LF to CR-LF or not. + * @return Position of terminator in output string + * + * @see uriEscapeExA + * @see uriUnescapeInPlaceA + * @since 0.5.0 + */ +URI_CHAR * URI_FUNC(Escape)(const URI_CHAR * in, URI_CHAR * out, + UriBool spaceToPlus, UriBool normalizeBreaks); + + + +/** + * Unescapes percent-encoded groups in a given string. + * E.g. "%20" will become " ". Unescaping is done in place. + * The return value will be point to the new position + * of the terminating zero. Use this value to get the new + * length of the string. NULL is only returned if inout + * is NULL. + * + * @param inout INOUT: Text to unescape/decode + * @param plusToSpace IN: Whether to convert '+' to ' ' or not + * @param breakConversion IN: Line break conversion mode + * @return Pointer to new position of the terminating zero + * + * @see uriUnescapeInPlaceA + * @see uriEscapeExA + * @since 0.5.0 + */ +const URI_CHAR * URI_FUNC(UnescapeInPlaceEx)(URI_CHAR * inout, + UriBool plusToSpace, UriBreakConversion breakConversion); + + + +/** + * Unescapes percent-encoded groups in a given string. + * E.g. "%20" will become " ". Unescaping is done in place. + * The return value will be point to the new position + * of the terminating zero. Use this value to get the new + * length of the string. NULL is only returned if inout + * is NULL. + * + * NOTE: '+' is not decoded to ' ' and line breaks are not converted. + * Use the more advanced UnescapeInPlaceEx for that features instead. + * + * @param inout INOUT: Text to unescape/decode + * @return Pointer to new position of the terminating zero + * + * @see uriUnescapeInPlaceExA + * @see uriEscapeA + * @since 0.3.0 + */ +const URI_CHAR * URI_FUNC(UnescapeInPlace)(URI_CHAR * inout); + + + +/** + * Performs reference resolution as described in + * section 5.2.2 of RFC 3986. + * NOTE: On success you have to call uriFreeUriMembersA on \p absoluteDest manually later. + * + * @param absoluteDest OUT: Result %URI + * @param relativeSource IN: Reference to resolve + * @param absoluteBase IN: Base %URI to apply + * @return Error code or 0 on success + * + * @see uriRemoveBaseUriA + * @since 0.4.0 + */ +int URI_FUNC(AddBaseUri)(URI_TYPE(Uri) * absoluteDest, + const URI_TYPE(Uri) * relativeSource, + const URI_TYPE(Uri) * absoluteBase); + + + +/** + * Tries to make a relative %URI (a reference) from an + * absolute %URI and a given base %URI. This can only work if + * the absolute %URI shares scheme and authority with + * the base %URI. If it does not the result will still be + * an absolute URI (with scheme part if necessary). + * NOTE: On success you have to call uriFreeUriMembersA on + * \p dest manually later. + * + * @param dest OUT: Result %URI + * @param absoluteSource IN: Absolute %URI to make relative + * @param absoluteBase IN: Base %URI + * @param domainRootMode IN: Create %URI with path relative to domain root + * @return Error code or 0 on success + * + * @see uriAddBaseUriA + * @since 0.5.2 + */ +int URI_FUNC(RemoveBaseUri)(URI_TYPE(Uri) * dest, + const URI_TYPE(Uri) * absoluteSource, + const URI_TYPE(Uri) * absoluteBase, + UriBool domainRootMode); + + + +/** + * Checks two URIs for equivalence. Comparison is done + * the naive way, without prior normalization. + * NOTE: Two NULL URIs are equal as well. + * + * @param a IN: First %URI + * @param b IN: Second %URI + * @return URI_TRUE when equal, URI_FAlSE else + * + * @since 0.4.0 + */ +UriBool URI_FUNC(EqualsUri)(const URI_TYPE(Uri) * a, const URI_TYPE(Uri) * b); + + + +/** + * Calculates the number of characters needed to store the + * string representation of the given %URI excluding the + * terminator. + * + * @param uri IN: %URI to measure + * @param charsRequired OUT: Length of the string representation in characters excluding terminator + * @return Error code or 0 on success + * + * @see uriToStringA + * @since 0.5.0 + */ +int URI_FUNC(ToStringCharsRequired)(const URI_TYPE(Uri) * uri, + int * charsRequired); + + + +/** + * Converts a %URI structure back to text as described in + * section 5.3 of RFC 3986. + * + * @param dest OUT: Output destination + * @param uri IN: %URI to convert + * @param maxChars IN: Maximum number of characters to copy including terminator + * @param charsWritten OUT: Number of characters written, can be lower than maxChars even if the %URI is too long! + * @return Error code or 0 on success + * + * @see uriToStringCharsRequiredA + * @since 0.4.0 + */ +int URI_FUNC(ToString)(URI_CHAR * dest, const URI_TYPE(Uri) * uri, int maxChars, int * charsWritten); + + + +/** + * Determines the components of a %URI that are not normalized. + * + * @param uri IN: %URI to check + * @return Normalization job mask + * + * @see uriNormalizeSyntaxA + * @since 0.5.0 + */ +unsigned int URI_FUNC(NormalizeSyntaxMaskRequired)(const URI_TYPE(Uri) * uri); + + + +/** + * Normalizes a %URI using a normalization mask. + * The normalization mask decides what components are normalized. + * + * NOTE: If necessary the %URI becomes owner of all memory + * behind the text pointed to. Text is duplicated in that case. + * + * @param uri INOUT: %URI to normalize + * @param mask IN: Normalization mask + * @return Error code or 0 on success + * + * @see uriNormalizeSyntaxA + * @see uriNormalizeSyntaxMaskRequiredA + * @since 0.5.0 + */ +int URI_FUNC(NormalizeSyntaxEx)(URI_TYPE(Uri) * uri, unsigned int mask); + + + +/** + * Normalizes all components of a %URI. + * + * NOTE: If necessary the %URI becomes owner of all memory + * behind the text pointed to. Text is duplicated in that case. + * + * @param uri INOUT: %URI to normalize + * @return Error code or 0 on success + * + * @see uriNormalizeSyntaxExA + * @see uriNormalizeSyntaxMaskRequiredA + * @since 0.5.0 + */ +int URI_FUNC(NormalizeSyntax)(URI_TYPE(Uri) * uri); + + + +/** + * Converts a Unix filename to a %URI string. + * The destination buffer must be large enough to hold 7 + 3 * len(filename) + 1 + * characters in case of an absolute filename or 3 * len(filename) + 1 in case + * of a relative filename. + * + * EXAMPLE + * Input: "/bin/bash" + * Output: "file:///bin/bash" + * + * @param filename IN: Unix filename to convert + * @param uriString OUT: Destination to write %URI string to + * @return Error code or 0 on success + * + * @see uriUriStringToUnixFilenameA + * @see uriWindowsFilenameToUriStringA + * @since 0.5.2 + */ +int URI_FUNC(UnixFilenameToUriString)(const URI_CHAR * filename, + URI_CHAR * uriString); + + + +/** + * Converts a Windows filename to a %URI string. + * The destination buffer must be large enough to hold 8 + 3 * len(filename) + 1 + * characters in case of an absolute filename or 3 * len(filename) + 1 in case + * of a relative filename. + * + * EXAMPLE + * Input: "E:\\Documents and Settings" + * Output: "file:///E:/Documents%20and%20Settings" + * + * @param filename IN: Windows filename to convert + * @param uriString OUT: Destination to write %URI string to + * @return Error code or 0 on success + * + * @see uriUriStringToWindowsFilenameA + * @see uriUnixFilenameToUriStringA + * @since 0.5.2 + */ +int URI_FUNC(WindowsFilenameToUriString)(const URI_CHAR * filename, + URI_CHAR * uriString); + + + +/** + * Extracts a Unix filename from a %URI string. + * The destination buffer must be large enough to hold len(uriString) + 1 - 7 + * characters in case of an absolute %URI or len(uriString) + 1 in case + * of a relative %URI. + * + * @param uriString IN: %URI string to convert + * @param filename OUT: Destination to write filename to + * @return Error code or 0 on success + * + * @see uriUnixFilenameToUriStringA + * @see uriUriStringToWindowsFilenameA + * @since 0.5.2 + */ +int URI_FUNC(UriStringToUnixFilename)(const URI_CHAR * uriString, + URI_CHAR * filename); + + + +/** + * Extracts a Windows filename from a %URI string. + * The destination buffer must be large enough to hold len(uriString) + 1 - 8 + * characters in case of an absolute %URI or len(uriString) + 1 in case + * of a relative %URI. + * + * @param uriString IN: %URI string to convert + * @param filename OUT: Destination to write filename to + * @return Error code or 0 on success + * + * @see uriWindowsFilenameToUriStringA + * @see uriUriStringToUnixFilenameA + * @since 0.5.2 + */ +int URI_FUNC(UriStringToWindowsFilename)(const URI_CHAR * uriString, + URI_CHAR * filename); + + + +/** + * Calculates the number of characters needed to store the + * string representation of the given query list excluding the + * terminator. It is assumed that line breaks are will be + * normalized to "%0D%0A". + * + * @param queryList IN: Query list to measure + * @param charsRequired OUT: Length of the string representation in characters excluding terminator + * @return Error code or 0 on success + * + * @see uriComposeQueryCharsRequiredExA + * @see uriComposeQueryA + * @since 0.7.0 + */ +int URI_FUNC(ComposeQueryCharsRequired)(const URI_TYPE(QueryList) * queryList, + int * charsRequired); + + + +/** + * Calculates the number of characters needed to store the + * string representation of the given query list excluding the + * terminator. + * + * @param queryList IN: Query list to measure + * @param charsRequired OUT: Length of the string representation in characters excluding terminator + * @param spaceToPlus IN: Wether to convert ' ' to '+' or not + * @param normalizeBreaks IN: Wether to convert CR and LF to CR-LF or not. + * @return Error code or 0 on success + * + * @see uriComposeQueryCharsRequiredA + * @see uriComposeQueryExA + * @since 0.7.0 + */ +int URI_FUNC(ComposeQueryCharsRequiredEx)(const URI_TYPE(QueryList) * queryList, + int * charsRequired, UriBool spaceToPlus, UriBool normalizeBreaks); + + + +/** + * Converts a query list structure back to a query string. + * The composed string does not start with '?', + * on the way ' ' is converted to '+' and line breaks are + * normalized to "%0D%0A". + * + * @param dest OUT: Output destination + * @param queryList IN: Query list to convert + * @param maxChars IN: Maximum number of characters to copy including terminator + * @param charsWritten OUT: Number of characters written, can be lower than maxChars even if the query list is too long! + * @return Error code or 0 on success + * + * @see uriComposeQueryExA + * @see uriComposeQueryMallocA + * @see uriComposeQueryCharsRequiredA + * @see uriDissectQueryMallocA + * @since 0.7.0 + */ +int URI_FUNC(ComposeQuery)(URI_CHAR * dest, + const URI_TYPE(QueryList) * queryList, int maxChars, int * charsWritten); + + + +/** + * Converts a query list structure back to a query string. + * The composed string does not start with '?'. + * + * @param dest OUT: Output destination + * @param queryList IN: Query list to convert + * @param maxChars IN: Maximum number of characters to copy including terminator + * @param charsWritten OUT: Number of characters written, can be lower than maxChars even if the query list is too long! + * @param spaceToPlus IN: Wether to convert ' ' to '+' or not + * @param normalizeBreaks IN: Wether to convert CR and LF to CR-LF or not. + * @return Error code or 0 on success + * + * @see uriComposeQueryA + * @see uriComposeQueryMallocExA + * @see uriComposeQueryCharsRequiredExA + * @see uriDissectQueryMallocExA + * @since 0.7.0 + */ +int URI_FUNC(ComposeQueryEx)(URI_CHAR * dest, + const URI_TYPE(QueryList) * queryList, int maxChars, int * charsWritten, + UriBool spaceToPlus, UriBool normalizeBreaks); + + + +/** + * Converts a query list structure back to a query string. + * Memory for this string is allocated internally. + * The composed string does not start with '?', + * on the way ' ' is converted to '+' and line breaks are + * normalized to "%0D%0A". + * + * @param dest OUT: Output destination + * @param queryList IN: Query list to convert + * @return Error code or 0 on success + * + * @see uriComposeQueryMallocExA + * @see uriComposeQueryA + * @see uriDissectQueryMallocA + * @since 0.7.0 + */ +int URI_FUNC(ComposeQueryMalloc)(URI_CHAR ** dest, + const URI_TYPE(QueryList) * queryList); + + + +/** + * Converts a query list structure back to a query string. + * Memory for this string is allocated internally. + * The composed string does not start with '?'. + * + * @param dest OUT: Output destination + * @param queryList IN: Query list to convert + * @param spaceToPlus IN: Wether to convert ' ' to '+' or not + * @param normalizeBreaks IN: Wether to convert CR and LF to CR-LF or not. + * @return Error code or 0 on success + * + * @see uriComposeQueryMallocA + * @see uriComposeQueryExA + * @see uriDissectQueryMallocExA + * @since 0.7.0 + */ +int URI_FUNC(ComposeQueryMallocEx)(URI_CHAR ** dest, + const URI_TYPE(QueryList) * queryList, + UriBool spaceToPlus, UriBool normalizeBreaks); + + + +/** + * Constructs a query list from the raw query string of a given URI. + * On the way '+' is converted back to ' ', line breaks are not modified. + * + * @param dest OUT: Output destination + * @param itemCount OUT: Number of items found, can be NULL + * @param first IN: Pointer to first character after '?' + * @param afterLast IN: Pointer to character after the last one still in + * @return Error code or 0 on success + * + * @see uriDissectQueryMallocExA + * @see uriComposeQueryA + * @see uriFreeQueryListA + * @since 0.7.0 + */ +int URI_FUNC(DissectQueryMalloc)(URI_TYPE(QueryList) ** dest, int * itemCount, + const URI_CHAR * first, const URI_CHAR * afterLast); + + + +/** + * Constructs a query list from the raw query string of a given URI. + * + * @param dest OUT: Output destination + * @param itemCount OUT: Number of items found, can be NULL + * @param first IN: Pointer to first character after '?' + * @param afterLast IN: Pointer to character after the last one still in + * @param plusToSpace IN: Whether to convert '+' to ' ' or not + * @param breakConversion IN: Line break conversion mode + * @return Error code or 0 on success + * + * @see uriDissectQueryMallocA + * @see uriComposeQueryExA + * @see uriFreeQueryListA + * @since 0.7.0 + */ +int URI_FUNC(DissectQueryMallocEx)(URI_TYPE(QueryList) ** dest, int * itemCount, + const URI_CHAR * first, const URI_CHAR * afterLast, + UriBool plusToSpace, UriBreakConversion breakConversion); + + + +/** + * Frees all memory associated with the given query list. + * The structure itself is freed as well. + * + * @param queryList INOUT: Query list to free + * + * @since 0.7.0 + */ +void URI_FUNC(FreeQueryList)(URI_TYPE(QueryList) * queryList); + + +/* Header: UriIp4.h */ +/** + * Converts a IPv4 text representation into four bytes. + * + * @param octetOutput Output destination + * @param first First character of IPv4 text to parse + * @param afterLast Position to stop parsing at + * @return Error code or 0 on success + */ +int URI_FUNC(ParseIpFourAddress)(unsigned char * octetOutput, + const URI_CHAR * first, const URI_CHAR * afterLast); + +#endif diff --git a/src/client/share/yieldfs/share/yield/include/yajl.h b/src/client/share/yieldfs/share/yield/include/yajl.h new file mode 100644 index 000000000..768998e99 --- /dev/null +++ b/src/client/share/yieldfs/share/yield/include/yajl.h @@ -0,0 +1,418 @@ +/* + * Copyright 2007, Lloyd Hilaiel. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. Neither the name of Lloyd Hilaiel nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef YAJL_H +#define YAJL_H + + +/* Header: yajl_common.h */ +#define YAJL_MAX_DEPTH 128 + +/* msft dll export gunk. To build a DLL on windows, you + * must define WIN32, YAJL_SHARED, and YAJL_BUILD. To use a shared + * DLL, you must define YAJL_SHARED and WIN32 */ +#if defined(WIN32) && defined(YAJL_SHARED) +# ifdef YAJL_BUILD +# define YAJL_API __declspec(dllexport) +# else +# define YAJL_API __declspec(dllimport) +# endif +#else +# define YAJL_API +#endif + + +/* Header: yajl_buf.h */ +/** + * yajl_buf is a buffer with exponential growth. the buffer ensures that + * you are always null padded. + */ +typedef struct yajl_buf_t * yajl_buf; + +/* allocate a new buffer */ +yajl_buf yajl_buf_alloc(void); + +/* free the buffer */ +void yajl_buf_free(yajl_buf buf); + +/* append a number of bytes to the buffer */ +void yajl_buf_append(yajl_buf buf, const void * data, unsigned int len); + +/* empty the buffer */ +void yajl_buf_clear(yajl_buf buf); + +/* get a pointer to the beginning of the buffer */ +const unsigned char * yajl_buf_data(yajl_buf buf); + +/* get the length of the buffer */ +unsigned int yajl_buf_len(yajl_buf buf); + +/* truncate the buffer */ +void yajl_buf_truncate(yajl_buf buf, unsigned int len); + + +/* Header: yajl_encode.h */ +void yajl_string_encode(yajl_buf buf, const unsigned char * str, + unsigned int length); + +void yajl_string_decode(yajl_buf buf, const unsigned char * str, + unsigned int length); + + +/* yajl_gen.h */ + /** generator status codes */ + typedef enum { + /** no error */ + yajl_gen_status_ok = 0, + /** at a point where a map key is generated, a function other than + * yajl_gen_string was called */ + yajl_gen_keys_must_be_strings, + /** YAJL's maximum generation depth was exceeded. see + * YAJL_MAX_DEPTH */ + yajl_max_depth_exceeded, + /** A generator function (yajl_gen_XXX) was called while in an error + * state */ + yajl_gen_in_error_state, + /** A complete JSON document has been generated */ + yajl_gen_generation_complete + } yajl_gen_status; + + /** an opaque handle to a generator */ + typedef struct yajl_gen_t * yajl_gen; + + /** configuration structure for the generator */ + typedef struct { + /** generate indented (beautiful) output */ + unsigned int beautify; + /** an opportunity to define an indent string. such as \\t or + * some number of spaces. default is four spaces ' '. This + * member is only relevant when beautify is true */ + const char * indentString; + } yajl_gen_config; + + /** allocate a generator handle */ + yajl_gen YAJL_API yajl_gen_alloc(const yajl_gen_config * config); + + /** free a generator handle */ + void YAJL_API yajl_gen_free(yajl_gen handle); + + yajl_gen_status YAJL_API yajl_gen_integer(yajl_gen hand, long int number); + yajl_gen_status YAJL_API yajl_gen_double(yajl_gen hand, double number); + yajl_gen_status YAJL_API yajl_gen_number(yajl_gen hand, + const char * num, + unsigned int len); + yajl_gen_status YAJL_API yajl_gen_string(yajl_gen hand, + const unsigned char * str, + unsigned int len); + yajl_gen_status YAJL_API yajl_gen_null(yajl_gen hand); + yajl_gen_status YAJL_API yajl_gen_bool(yajl_gen hand, int boolean); + yajl_gen_status YAJL_API yajl_gen_map_open(yajl_gen hand); + yajl_gen_status YAJL_API yajl_gen_map_close(yajl_gen hand); + yajl_gen_status YAJL_API yajl_gen_array_open(yajl_gen hand); + yajl_gen_status YAJL_API yajl_gen_array_close(yajl_gen hand); + + /** access the null terminated generator buffer. If incrementally + * outputing JSON, one should call yajl_gen_clear to clear the + * buffer. This allows stream generation. */ + yajl_gen_status YAJL_API yajl_gen_get_buf(yajl_gen hand, + const unsigned char ** buf, + unsigned int * len); + + /** clear yajl's output buffer, but maintain all internal generation + * state. This function will not "reset" the generator state, and is + * intended to enable incremental JSON outputing. */ + void YAJL_API yajl_gen_clear(yajl_gen hand); + + +/* yajl_lex.h */ + typedef enum { + yajl_tok_bool, + yajl_tok_colon, + yajl_tok_comma, + yajl_tok_eof, + yajl_tok_error, + yajl_tok_left_brace, + yajl_tok_left_bracket, + yajl_tok_null, + yajl_tok_right_brace, + yajl_tok_right_bracket, + + /* we differentiate between integers and doubles to allow the + * parser to interpret the number without re-scanning */ + yajl_tok_integer, + yajl_tok_double, + + /* we differentiate between strings which require further processing, + * and strings that do not */ + yajl_tok_string, + yajl_tok_string_with_escapes, + + /* comment tokens are not currently returned to the parser, ever */ + yajl_tok_comment +} yajl_tok; + +typedef struct yajl_lexer_t * yajl_lexer; + +yajl_lexer yajl_lex_alloc(unsigned int allowComments, + unsigned int validateUTF8); + +void yajl_lex_free(yajl_lexer lexer); + +/** + * run/continue a lex. "offset" is an input/output parameter. + * It should be initialized to zero for a + * new chunk of target text, and upon subsetquent calls with the same + * target text should passed with the value of the previous invocation. + * + * the client may be interested in the value of offset when an error is + * returned from the lexer. This allows the client to render useful +n * error messages. + * + * When you pass the next chunk of data, context should be reinitialized + * to zero. + * + * Finally, the output buffer is usually just a pointer into the jsonText, + * however in cases where the entity being lexed spans multiple chunks, + * the lexer will buffer the entity and the data returned will be + * a pointer into that buffer. + * + * This behavior is abstracted from client code except for the performance + * implications which require that the client choose a reasonable chunk + * size to get adequate performance. + */ +yajl_tok yajl_lex_lex(yajl_lexer lexer, const unsigned char * jsonText, + unsigned int jsonTextLen, unsigned int * offset, + const unsigned char ** outBuf, unsigned int * outLen); + +/** have a peek at the next token, but don't move the lexer forward */ +yajl_tok yajl_lex_peek(yajl_lexer lexer, const unsigned char * jsonText, + unsigned int jsonTextLen, unsigned int offset); + + +typedef enum { + yajl_lex_e_ok = 0, + yajl_lex_string_invalid_utf8, + yajl_lex_string_invalid_escaped_char, + yajl_lex_string_invalid_json_char, + yajl_lex_string_invalid_hex_char, + yajl_lex_invalid_char, + yajl_lex_invalid_string, + yajl_lex_missing_integer_after_decimal, + yajl_lex_missing_integer_after_exponent, + yajl_lex_missing_integer_after_minus, + yajl_lex_unallowed_comment +} yajl_lex_error; + +const char * yajl_lex_error_to_string(yajl_lex_error error); + +/** allows access to more specific information about the lexical + * error when yajl_lex_lex returns yajl_tok_error. */ +yajl_lex_error yajl_lex_get_error(yajl_lexer lexer); + +/** get the current offset into the most recently lexed json string. */ +unsigned int yajl_lex_current_offset(yajl_lexer lexer); + +/** get the number of lines lexed by this lexer instance */ +unsigned int yajl_lex_current_line(yajl_lexer lexer); + +/** get the number of chars lexed by this lexer instance since the last + * \n or \r */ +unsigned int yajl_lex_current_char(yajl_lexer lexer); + + +/* yajl_parse.h */ + /** error codes returned from this interface */ + typedef enum { + /** no error was encountered */ + yajl_status_ok, + /** a client callback returned zero, stopping the parse */ + yajl_status_client_canceled, + /** The parse cannot yet complete because more json input text + * is required, call yajl_parse with the next buffer of input text. + * (pertinent only when stream parsing) */ + yajl_status_insufficient_data, + /** An error occured during the parse. Call yajl_get_error for + * more information about the encountered error */ + yajl_status_error + } yajl_status; + + /** attain a human readable, english, string for an error */ + const char * YAJL_API yajl_status_to_string(yajl_status code); + + /** an opaque handle to a parser */ + typedef struct yajl_handle_t * yajl_handle; + + /** yajl is an event driven parser. this means as json elements are + * parsed, you are called back to do something with the data. The + * functions in this table indicate the various events for which + * you will be called back. Each callback accepts a "context" + * pointer, this is a void * that is passed into the yajl_parse + * function which the client code may use to pass around context. + * + * All callbacks return an integer. If non-zero, the parse will + * continue. If zero, the parse will be canceled and + * yajl_status_client_canceled will be returned from the parse. + * + * Note about handling of numbers: + * yajl will only convert numbers that can be represented in a double + * or a long int. All other numbers will be passed to the client + * in string form using the yajl_number callback. Furthermore, if + * yajl_number is not NULL, it will always be used to return numbers, + * that is yajl_integer and yajl_double will be ignored. If + * yajl_number is NULL but one of yajl_integer or yajl_double are + * defined, parsing of a number larger than is representable + * in a double or long int will result in a parse error. + */ + typedef struct { + int (* yajl_null)(void * ctx); + int (* yajl_boolean)(void * ctx, int boolVal); + int (* yajl_integer)(void * ctx, long integerVal); + int (* yajl_double)(void * ctx, double doubleVal); + /** A callback which passes the string representation of the number + * back to the client. Will be used for all numbers when present */ + int (* yajl_number)(void * ctx, const char * numberVal, + unsigned int numberLen); + + /** strings are returned as pointers into the JSON text when, + * possible, as a result, they are _not_ null padded */ + int (* yajl_string)(void * ctx, const unsigned char * stringVal, + unsigned int stringLen); + + int (* yajl_start_map)(void * ctx); + int (* yajl_map_key)(void * ctx, const unsigned char * key, + unsigned int stringLen); + int (* yajl_end_map)(void * ctx); + + int (* yajl_start_array)(void * ctx); + int (* yajl_end_array)(void * ctx); + } yajl_callbacks; + + /** configuration structure for the generator */ + typedef struct { + /** if nonzero, javascript style comments will be allowed in + * the json input, both slash star and slash slash */ + unsigned int allowComments; + /** if nonzero, invalid UTF8 strings will cause a parse + * error */ + unsigned int checkUTF8; + } yajl_parser_config; + + /** allocate a parser handle + * \param callbacks a yajl callbacks structure specifying the + * functions to call when different JSON entities + * are encountered in the input text. May be NULL, + * which is only useful for validation. + * \param config configuration parameters for the parse. + * \param ctx a context pointer that will be passed to callbacks. + */ + yajl_handle YAJL_API yajl_alloc(const yajl_callbacks * callbacks, + const yajl_parser_config * config, + void * ctx); + + /** free a parser handle */ + void YAJL_API yajl_free(yajl_handle handle); + + /** Parse some json! + * \param hand - a handle to the json parser allocated with yajl_alloc + * \param jsonText - a pointer to the UTF8 json text to be parsed + * \param jsonTextLength - the length, in bytes, of input text + */ + yajl_status YAJL_API yajl_parse(yajl_handle hand, + const unsigned char * jsonText, + unsigned int jsonTextLength); + + /** get an error string describing the state of the + * parse. + * + * If verbose is non-zero, the message will include the JSON + * text where the error occured, along with an arrow pointing to + * the specific char. + * + * A dynamically allocated string will be returned which should + * be freed with yajl_free_error + */ + unsigned char * YAJL_API yajl_get_error(yajl_handle hand, int verbose, + const unsigned char * jsonText, + unsigned int jsonTextLength); + + /** free an error returned from yajl_get_error */ + void YAJL_API yajl_free_error(unsigned char * str); + + +/* yajl_parser.h */ + typedef enum { + yajl_state_start = 0, + yajl_state_parse_complete, + yajl_state_parse_error, + yajl_state_lexical_error, + yajl_state_map_start, + yajl_state_map_sep, + yajl_state_map_need_val, + yajl_state_map_got_val, + yajl_state_map_need_key, + yajl_state_array_start, + yajl_state_array_got_val, + yajl_state_array_need_val +} yajl_state; + +struct yajl_handle_t { + const yajl_callbacks * callbacks; + void * ctx; + yajl_lexer lexer; + const char * parseError; + unsigned int errorOffset; + /* temporary storage for decoded strings */ + yajl_buf decodeBuf; + /* a stack of states. access with yajl_state_XXX routines */ + yajl_buf stateBuf; +}; + +yajl_status +yajl_do_parse(yajl_handle handle, unsigned int * offset, + const unsigned char * jsonText, unsigned int jsonTextLen); + +unsigned char * +yajl_render_error_string(yajl_handle hand, const unsigned char * jsonText, + unsigned int jsonTextLen, int verbose); + +yajl_state yajl_state_current(yajl_handle handle); + +void yajl_state_push(yajl_handle handle, yajl_state state); + +yajl_state yajl_state_pop(yajl_handle handle); + +unsigned int yajl_parse_depth(yajl_handle handle); + +void yajl_state_set(yajl_handle handle, yajl_state state); + + +#endif diff --git a/src/client/share/yieldfs/share/yield/include/yield.h b/src/client/share/yieldfs/share/yield/include/yield.h new file mode 100644 index 000000000..b7b61c0a8 --- /dev/null +++ b/src/client/share/yieldfs/share/yield/include/yield.h @@ -0,0 +1,11 @@ +// Copyright 2003-2008 Minor Gordon, with original implementations and ideas contributed by Felix Hupfeld. +// This source comes from the Yield project. It is licensed under the GPLv2 (see COPYING for terms and conditions). + +#ifndef YIELD_H +#define YIELD_H + +#include "yield/arch.h" +#include "yield/ipc.h" +#include "yield/platform.h" + +#endif diff --git a/src/client/share/yieldfs/share/yield/include/yield/arch.h b/src/client/share/yieldfs/share/yield/include/yield/arch.h new file mode 100644 index 000000000..4ea1264cf --- /dev/null +++ b/src/client/share/yieldfs/share/yield/include/yield/arch.h @@ -0,0 +1,749 @@ +// Copyright 2003-2008 Minor Gordon, with original implementations and ideas contributed by Felix Hupfeld. +// This source comes from the Yield project. It is licensed under the GPLv2 (see COPYING for terms and conditions). + +#ifndef YIELD_ARCH_H +#define YIELD_ARCH_H + +#include "yield/platform.h" + + +#define YIELD_ARCH_STAGES_PER_GROUP_MAX 32 + +#ifdef __sun +#define YIELD_ARCH_RECORD_PERFCTRS 1 +#include +#endif + + +namespace YIELD +{ + class Event : public Object + { + public: + Event() : enqueued_time_ns( 0 ) { } + + // Object + inline Event& incRef() { return Object::incRef( *this ); } + + protected: + virtual ~Event() { } + + private: + template friend class StageImpl; + uint64_t enqueued_time_ns; + }; + + + class Response : public Event + { + public: + Response() { } + + // Object + inline Response& incRef() { return Object::incRef( *this ); } + + protected: + virtual ~Response() { } + }; + + + class ExceptionResponse : public Response, public Exception + { + public: + ExceptionResponse() { } + ExceptionResponse( uint32_t error_code ) : Exception( error_code ) { } + ExceptionResponse( const char* what ) : Exception( what ) { } + ExceptionResponse( const Exception& other ) : Exception( other ) { } + ExceptionResponse( const ExceptionResponse& other ) : Exception( other ) { } + virtual ~ExceptionResponse() throw() { } + + virtual ExceptionResponse* clone() const { return new ExceptionResponse( what() ); } + virtual void throwStackClone() const { throw ExceptionResponse( what() ); } + + // Object + YIELD_OBJECT_TYPE_INFO( EXCEPTION_RESPONSE, "ExceptionResponse", 639602091UL ); + }; + + + class Request : public Event + { + public: + Request() { } + + virtual uint32_t getDefaultResponseTypeId() const { return 0; } + //virtual auto_Object createDefaultResponse() { return 0; } + virtual Response& waitForDefaultResponse( timeout_ns_t timeout_ns ) { throw new ExceptionResponse( "not implemented" ); } + virtual bool respond( Response& response) { Object::decRef( response ); return true; } + + // For IDL-generated Requests + virtual uint32_t getInterfaceNumber() const { return 0; } + virtual uint32_t getOperationNumber() const { return 0; } + + // Object + Request& incRef() { return Object::incRef( *this ); } + + protected: + virtual ~Request() { } + }; + + + class EventTarget : public Object + { + public: + virtual bool send( Event& ) = 0; + + // Object + inline EventTarget& incRef() { return Object::incRef( *this ); } + + protected: + virtual ~EventTarget() { } + }; + + + class EventHandler : public EventTarget + { + public: + EventHandler() : redirect_to_event_target( NULL ) { } + + virtual const char* getEventHandlerName() const = 0; + virtual bool isThreadSafe() const { return false; } + virtual EventHandler* clone() const { return 0; } // Some scheduling policies will try to replicate an EventHandler instead of sharing it (and possibly locking, if isThreadSafe() = false); EventHandlers that don't keep much state (such as e.g. caches) should implement this method + + virtual void handleEvent( Event& ) = 0; + virtual void handleUnknownEvent( Event& ); + + // Object + inline EventHandler& incRef() { return Object::incRef( *this ); } + + // EventTarget + bool send( Event& ); + + EventTarget* redirect_to_event_target; + + protected: + virtual ~EventHandler() { } + + private: + Mutex handleEvent_lock; + }; + + + class EventQueue : public EventTarget + { + public: + virtual EventQueue* clone() const = 0; + + virtual Event* dequeue() = 0; // Blocking + + template + ExpectedEventType& dequeue_typed() + { + Event* dequeued_ev = dequeue(); + if ( dequeued_ev ) + return _checkDequeuedEventAgainstExpectedEventType( *dequeued_ev ); + else + throw Exception( "EventQueue::dequeue_typed: blocking dequeue was broken" ); + } + + virtual bool enqueue( Event& ev ) = 0; + + + virtual Event* timed_dequeue( timeout_ns_t timeout_ns ) = 0; + + template + ExpectedEventType& timed_dequeue_typed( timeout_ns_t timeout_ns ) + { + Event* dequeued_ev = this->timed_dequeue( timeout_ns ); + if ( dequeued_ev ) + return _checkDequeuedEventAgainstExpectedEventType( *dequeued_ev ); + else + throw Exception( "EventQueue::timed_dequeue_type: timed out" ); + } + + virtual Event* try_dequeue() = 0; + + // EventTarget + bool send( Event& ev ) + { + return enqueue( ev ); + } + + protected: + virtual ~EventQueue() { } + + private: + template + inline ExpectedEventType& _checkDequeuedEventAgainstExpectedEventType( Event& dequeued_ev ) + { + if ( dequeued_ev.get_type_id() == YIELD_OBJECT_TYPE_ID( ExpectedEventType ) ) + return static_cast( dequeued_ev ); + else if ( dequeued_ev.get_general_type() == Object::EXCEPTION_RESPONSE ) + { + try + { + static_cast( dequeued_ev ).throwStackClone(); + } + catch ( ExceptionResponse& ) + { + Object::decRef( dequeued_ev ); + throw; + } + + throw Exception( "should never reach this point" ); + } + else + throw Exception( "EventQueue::deqeue_typed: received unexpected, non-exception event type" ); + } + }; + + + template > + class OneSignalEventQueue : public EventQueue, private InternalQueueType + { + public: + ~OneSignalEventQueue() { } + + // EventQueue + virtual EventQueue* clone() const { return new OneSignalEventQueue; } + + Event* dequeue() + { + Event* result = InternalQueueType::try_dequeue(); + + if ( result != 0 ) // Hot case + return result; // Don't dec the semaphore, just let a cold acquire succeed on an empty queue + else + { + do + { + empty.acquire(); + result = InternalQueueType::try_dequeue(); + } + while ( result == 0 ); + + return result; + } + } + + bool enqueue( Event& ev ) + { + if ( InternalQueueType::enqueue( &ev ) ) + { + empty.release(); + return true; + } + else + return false; + } + + Event* timed_dequeue( timeout_ns_t timeout_ns ) + { + Event* result = InternalQueueType::try_dequeue(); + + if ( result != 0 ) + return result; + else + { + for ( ;; ) + { + + uint64_t before_acquire_time_ns = Time::getCurrentUnixTimeNS(); + + empty.timed_acquire( timeout_ns ); + + if ( ( result = InternalQueueType::try_dequeue() ) != 0 ) + break; + + uint64_t waited_ns = Time::getCurrentUnixTimeNS() - before_acquire_time_ns; + if ( waited_ns >= timeout_ns ) + break; + else + timeout_ns -= static_cast( waited_ns ); + } + + return result; + } + } + + inline Event* try_dequeue() + { + return InternalQueueType::try_dequeue(); + } + + protected: + CountingSemaphore empty; + }; + + + class Stage : public EventTarget + { + public: + virtual const char* get_stage_name() const = 0; + virtual EventHandler& get_event_handler() = 0; + virtual EventQueue& get_event_queue() = 0; + + virtual double get_rho() const { return 0; } + + virtual bool visit() { return false; }; // Blocking visit, for SEDA + virtual bool visit( timeout_ns_t ) { return false; }; // Timed visit, for CohortS + + inline Stage& incRef() { return Object::incRef( *this ); } + + protected: + Stage() + { +#ifdef YIELD_ARCH_RECORD_PERFCTRS +#ifdef __sun + last_recorded_cpc_events_time_ns = 0; + pic0_total = pic1_total = 0; +#endif +#endif + } + + virtual ~Stage() { } + + private: +#ifdef YIELD_ARCH_RECORD_PERFCTRS +#ifdef __sun + friend class StageGroupThread; + uint64_t pic0_total, pic1_total; + uint64_t last_recorded_cpc_events_time_ns; +#endif +#endif + }; + + + // A separate templated version for subclasses to inherit from (MG1Stage, CohortStage, etc.) + // This helps eliminate some virtual function calls by having the specific EventHandler type instead of a generic EventHandler pointer + template + class StageImpl : public Stage//, private StatsEventSource + { + public: + StageImpl( const std::string& stage_group_name, auto_Object event_handler, auto_Object event_queue, EventTarget* stage_stats_event_target, auto_Object log ) + : Stage(), //StatsEventSource( 2000, stage_stats_event_target ), + event_handler( event_handler ), event_queue( event_queue ), log( log ) + { + event_handler->redirect_to_event_target = this; + event_queue_length = event_queue_arrival_count = 1; // send() would normally inc these, but we can't use send() because it's a virtual function; instead we enqueue directly and inc the lengths ourselves + event_queue_full_count = 0; + + event_queue_length = event_queue_arrival_count = 0; + rho = elapsed_ms = 0; + } + + double get_rho() const { return rho; } + + // EventTarget + bool send( Event& ev ) + { + if ( log != NULL && log->get_level() >= Log::LOG_DEBUG ) + { + std::ostringstream log_str; + log_str << "StageImpl: thread #" << Thread::getCurrentThreadId() << " sending " << ev.get_type_name() << " to the " << get_stage_name() << " stage."; + log->getStream( Log::LOG_DEBUG ) << log_str.str(); + } + + ++event_queue_length; + ++event_queue_arrival_count; + + if ( event_queue->enqueue( ev ) ) + return true; + else + { + if ( event_queue_full_count++ < 10 ) + std::cerr << Time() << ": queue full #" << static_cast( event_queue_full_count ) << " at " << event_handler->getEventHandlerName() << " stage." << std::endl; + + /* + StageGroupThread* running_stage_group_thread = stage_group.get_running_stage_group_thread(); + + for ( unsigned char lock_acquire_tries = 0; lock_acquire_tries < 15; lock_acquire_tries++ ) + { + // Acquire the lock on the receiving stage + if ( lock.timed_acquire( static_cast( lock_acquire_tries * NS_IN_MS ) ) ) + { + while ( running_stage_group_thread->shouldRun() ) + { + // Keep trying to enqueue until it succeeds + // Process an event from the head of the queue + Event* head_ev = event_queue->try_dequeue(); + if ( head_ev ) + { + --event_queue_length; + _callEventHandler( *head_ev ); + } + + // Try to enqueue the send() event + if ( event_queue->enqueue( ev ) ) + { + lock.release(); + return true; + } + } + } + } + */ + + return false; + } + } + + // Stage + const char* get_stage_name() const { return event_handler->getEventHandlerName(); } + EventHandler& get_event_handler() { return *event_handler; } + EventQueue& get_event_queue() { return *event_queue; } + + bool visit() + { + if ( lock.try_acquire() ) + { + Event* ev = event_queue->dequeue(); + if ( ev ) + { + --event_queue_length; + _callEventHandler( *ev ); + while ( ( ev = event_queue->try_dequeue() ) != NULL ) + _callEventHandler( *ev ); + lock.release(); + return true; + } + else + { + lock.release(); + return false; + } + } + else + return false; + } + + bool visit( timeout_ns_t timeout_ns ) + { + if ( lock.try_acquire() ) + { + Event* ev = event_queue->timed_dequeue( timeout_ns ); + if ( ev ) + { + _callEventHandler( *ev ); + ev = event_queue->try_dequeue(); + while ( ev != NULL ) + { + --event_queue_length; + _callEventHandler( *ev ); + ev = event_queue->try_dequeue(); + } + lock.release(); + return true; + } + else + { + lock.release(); + return false; + } + } + else + return false; + } + + private: + auto_Object event_handler; + auto_Object event_queue; + auto_Object log; + + unsigned char event_queue_full_count; + LockType lock; + + + void _callEventHandler( Event& ev ) + { + uint64_t event_queueing_time_ns = Time::getCurrentUnixTimeNS() - ev.enqueued_time_ns; + if ( event_queueing_time_ns < 2 * NS_IN_S ) + event_queueing_time_sampler.setNextSample( static_cast( event_queueing_time_ns * NS_IN_MS ) ); + + if ( log != NULL && log->get_level() >= Log::LOG_DEBUG ) + { + std::ostringstream log_str; + log_str << "StageImpl: thread #" << Thread::getCurrentThreadId() << " processing " << ev.get_type_name() << " at the " << get_stage_name() << " stage."; + log->getStream( Log::LOG_DEBUG ) << log_str.str(); + } + + double start_time_ms = Time::getCurrentUnixTimeMS(); + + event_handler->handleEvent( ev ); + + double event_processing_time_ms = Time::getCurrentUnixTimeMS() - start_time_ms; + if ( event_processing_time_ms < 10 * MS_IN_S ) + event_processing_time_sampler.setNextSample( event_processing_time_ms ); + + // StatsEventSource::checkTimer(); + } + + + Sampler event_queueing_time_sampler, event_processing_time_sampler; + Sampler queue_length_sampler; + Sampler arrival_rate_sampler; + uint32_t event_queue_length, event_queue_arrival_count; + double rho, elapsed_ms; + + /* + // StatsEventSource + StatsEvent* createStatsEvent( double elapsed_ms ) + { + elapsed_ms += elapsed_ms; + + uint32_t event_queue_length = this->event_queue_length; + queue_length_sampler.setNextSample( event_queue_length ); + double arrival_rate = static_cast( event_queue_arrival_count ) / elapsed_ms; + event_queue_arrival_count = 0; + arrival_rate_sampler.setNextSample( arrival_rate ); + + if ( elapsed_ms < 1000 ) + return NULL; + else + { + StageStatsEvent* stage_stats_ev = new StageStatsEvent( get_event_handler().getEventHandlerName() ); + + stage_stats_ev->queue_length_samples_count = queue_length_sampler.getSamplesCount(); + stage_stats_ev->queue_length_statistics = queue_length_sampler.getStatistics(); + stage_stats_ev->event_queueing_time_statistics = event_queueing_time_sampler.getStatistics(); + stage_stats_ev->event_processing_time_statistics = event_processing_time_sampler.getStatistics(); + + stage_stats_ev->arrival_rate_s = arrival_rate_sampler.getStatistics().ninetieth_percentile * 1000.0; + stage_stats_ev->service_rate_s = 1000.0 / static_cast( stage_stats_ev->event_processing_time_statistics.ninetieth_percentile ); + stage_stats_ev->rho = rho = ( stage_stats_ev->service_rate_s > 0 ) ? stage_stats_ev->arrival_rate_s / stage_stats_ev->service_rate_s : 0; + + return stage_stats_ev; + } + } + */ + }; + + + class StageGroupThread; + + class StageGroup : public Object + { + public: + template auto_Object createStage( auto_Object event_handler ) { return createStage( static_cast( event_handler.release() ), 1, NULL, NULL, NULL ); } + template auto_Object createStage( auto_Object event_handler, int16_t threads ) { return createStage( static_cast( event_handler.release() ), threads, NULL, NULL, NULL ); } + template auto_Object createStage( auto_Object event_handler, auto_Object event_queue ) { return createStage( static_cast( event_handler.release() ), 1, static_cast( event_queue.release() ), NULL, NULL ); } + template auto_Object createStage( auto_Object event_handler, auto_Object event_queue, auto_Object log ) { return createStage( static_cast( event_handler.release() ), 1, static_cast( event_queue.release() ), NULL, log ); } + template auto_Object createStage( auto_Object event_handler, int16_t threads, auto_Object event_queue ) { return createStage( static_cast( event_handler.release() ), threads, static_cast( event_queue.release() ), NULL, NULL ); } + template auto_Object createStage( auto_Object event_handler, int16_t threads, auto_Object event_queue, EventTarget& stage_stats_event_target ) { return createStage( static_cast( event_handler.release() ), threads, static_cast( event_queue.release() ), &stage_stats_event_target, NULL ); } + template auto_Object createStage( auto_Object event_handler, int16_t threads, auto_Object event_queue, EventTarget& stage_stats_event_target, auto_Object log ) { return createStage( static_cast( event_handler.release() ), threads, static_cast( event_queue.release() ), &stage_stats_event_target, log ); } + + inline auto_Object get_limit_physical_processor_set() const { return limit_physical_processor_set; } + inline auto_Object get_limit_logical_processor_set() const { return limit_logical_processor_set; } + unsigned long get_running_stage_group_thread_tls_key() const { return running_stage_group_thread_tls_key; } + inline StageGroupThread* get_running_stage_group_thread() const { return static_cast( Thread::getTLS( running_stage_group_thread_tls_key ) ); } + inline EventTarget* get_stage_stats_event_target() const { return stage_stats_event_target; } + + // Object + inline StageGroup& incRef() { return Object::incRef( *this ); } + + protected: + StageGroup( const std::string& name, auto_Object limit_physical_processor_set = NULL, EventTarget* stage_stats_event_target = NULL, auto_Object log = NULL ); + virtual ~StageGroup(); + + void addStage( auto_Object stage ) + { + unsigned char stage_i; + for ( stage_i = 0; stage_i < YIELD_ARCH_STAGES_PER_GROUP_MAX; stage_i++ ) + { + if ( stages[stage_i] == NULL ) + { + stages[stage_i] = stage.release(); + return; + } + } + + DebugBreak(); + } + + auto_Object get_log() const { return log; } + const std::string& get_name() const { return name; } + + virtual auto_Object createStage( auto_Object event_handler, int16_t threads, auto_Object event_queue, EventTarget* stage_stats_event_target, auto_Object log ) = 0; + + private: + std::string name; + auto_Object limit_physical_processor_set, limit_logical_processor_set; + EventTarget* stage_stats_event_target; + auto_Object log; + + unsigned long running_stage_group_thread_tls_key; + Stage* stages[YIELD_ARCH_STAGES_PER_GROUP_MAX]; + }; + + + class StageGroupThread : public Thread + { + public: + virtual ~StageGroupThread(); + + inline bool shouldRun() const { return should_run; } + void stop() { should_run = false; } + + protected: + StageGroupThread( const std::string& stage_group_name, auto_Object limit_logical_processor_set = NULL, auto_Object = NULL ); + + + void before_run( const char* thread_name = NULL ); + + inline bool visitStage( Stage& stage ) + { +#ifdef YIELD_ARCH_RECORD_PERFCTRS + startPerformanceCounterSampling(); +#endif + + bool success = stage.visit(); + +#ifdef YIELD_ARCH_RECORD_PERFCTRS + stopPerformanceCounterSampling( stage, success ); +#endif + + return success; + } + + inline bool visitStage( Stage& stage, timeout_ns_t timeout_ns ) + { +#ifdef YIELD_ARCH_RECORD_PERFCTRS + startPerformanceCounterSampling(); +#endif + + bool success = stage.visit( timeout_ns ); + +#ifdef YIELD_ARCH_RECORD_PERFCTRS + stopPerformanceCounterSampling( stage, success ); +#endif + + return success; + } + + private: + std::string stage_group_name; + auto_Object limit_logical_processor_set; + auto_Object log; + + bool should_run; + +#ifdef YIELD_ARCH_RECORD_PERFCTRS +#ifdef __sun + cpc_t* cpc; cpc_set_t* cpc_set; + int pic0_index, pic1_index; + cpc_buf_t *before_cpc_buf, *after_cpc_buf, *diff_cpc_buf; + + inline void startPerformanceCounterSampling() + { + cpc_set_sample( cpc, cpc_set, before_cpc_buf ); + } + + inline void stopPerformanceCounterSampling( Stage& stage, bool visit_was_successful ) + { + cpc_set_sample( cpc, cpc_set, after_cpc_buf ); + cpc_buf_sub( cpc, diff_cpc_buf, after_cpc_buf, before_cpc_buf ); + uint64_t pic0; cpc_buf_get( cpc, diff_cpc_buf, pic0_index, &pic0 ); + stage.pic0_total += pic0; + uint64_t pic1; cpc_buf_get( cpc, diff_cpc_buf, pic1_index, &pic1 ); + stage.pic1_total += pic1; + + if ( visit_was_successful ) + { + uint64_t current_time_ns = Time::getCurrentUnixTimeNS(); + if ( stage.last_recorded_cpc_events_time_ns - current_time_ns >= 5 * NS_IN_S ) + { + stage.last_recorded_cpc_events_time_ns = current_time_ns; + std::ostringstream cout_str; + cout_str << stage.get_stage_name() << " performance counter totals: " << stage.pic0_total << "/" << stage.pic1_total << std::endl; + std::cout << cout_str.str(); + } + } + } +#endif +#endif + }; + + + class StageStartupEvent : public Event + { + public: + StageStartupEvent( Stage& stage ) : stage( stage ) + { } + + Stage& get_stage() { return stage; } + + // Object + YIELD_OBJECT_TYPE_INFO( EVENT, "StageStartupEvent", 3496483221UL ); + + private: + Stage& stage; + }; + + + class StageShutdownEvent : public Event + { + public: + // Object + YIELD_OBJECT_TYPE_INFO( EVENT, "StageShutdownEvent", 753093765UL ); + }; + + + class SEDAStageGroupThread; + + + class SEDAStageGroup : public StageGroup + { + public: + SEDAStageGroup( const char* name, ProcessorSet* limit_physical_processor_set = NULL, EventTarget* stage_stats_event_target = NULL, auto_Object log = NULL ) + : StageGroup( name, limit_physical_processor_set, stage_stats_event_target, log ) + { } + + // Templated createStage's that pass the real EventHandler and EventQueue types to StageImpl to bypass the interfaces + template + auto_Object createStage( auto_Object event_handler, int16_t threads, EventTarget* stage_stats_event_target, auto_Object log ) + { + return createStage< EventHandlerType, OneSignalEventQueue<> >( event_handler, threads, new OneSignalEventQueue<>, stage_stats_event_target, log ); + } + + template + auto_Object createStage( auto_Object event_handler, int16_t threads, auto_Object event_queue, EventTarget* stage_stats_event_target, auto_Object log ) + { + if ( threads == -1 ) + { + if ( get_limit_physical_processor_set() != NULL ) + threads = get_limit_physical_processor_set()->count(); + else + threads = Machine::getOnlinePhysicalProcessorCount(); + } + + if ( stage_stats_event_target == NULL ) + stage_stats_event_target = this->get_stage_stats_event_target(); + + if ( log == NULL ) + log = this->get_log(); + + auto_Object stage; + if ( event_handler->isThreadSafe() ) + stage = new StageImpl( get_name(), event_handler, event_queue, stage_stats_event_target, log ); + else + stage = new StageImpl( get_name(), event_handler, event_queue, stage_stats_event_target, log ); + + this->addStage( stage ); + startThreads( stage, threads ); + + return stage; + } + + // StageGroup + auto_Object createStage( auto_Object event_handler, int16_t threads, auto_Object event_queue, EventTarget* stage_stats_event_target, auto_Object log ); + + protected: + virtual ~SEDAStageGroup(); + + private: + void startThreads( auto_Object stage, int16_t threads ); + + std::vector threads; + }; +}; + +#endif diff --git a/src/client/share/yieldfs/share/yield/include/yield/ipc.h b/src/client/share/yieldfs/share/yield/include/yield/ipc.h new file mode 100644 index 000000000..d49533fe7 --- /dev/null +++ b/src/client/share/yieldfs/share/yield/include/yield/ipc.h @@ -0,0 +1,1451 @@ +// Copyright 2003-2008 Minor Gordon, with original implementations and ideas contributed by Felix Hupfeld. +// This source comes from the Yield project. It is licensed under the GPLv2 (see COPYING for terms and conditions). + +#ifndef YIELD_IPC_H +#define YIELD_IPC_H + +#include "yield/arch.h" + + +#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__MACH__) +#define YIELD_HAVE_FREEBSD_KQUEUE 1 +struct kevent; +#elif defined(__linux__) +#define YIELD_HAVE_LINUX_EPOLL 1 +struct epoll_event; +// epoll_event's context (.data) member is a union of fd, u32, u64, and a Object*, which means +// that (unlike with kqueue) you can either get the context or the fd back, but not both +// In order to keep both I also a hash_map for fd->context. This may become a performance issue. +// If so, we'll have to find another way to satisfy callers who need the fd and/or the context. +#define YIELD_LINUX_EPOLL_RETURN_FD 1 +#elif defined(YIELD_HAVE_SOLARIS_EVENT_PORTS) +struct port_event; +typedef port_event port_event_t; +#endif + +#if defined(_WIN32) +struct fd_set; +#elif !defined(YIELD_HAVE_QUEUE) && !defined(YIELD_HAVE_LINUX_EPOLL) && !defined(YIELD_HAVE_SOLARIS_EVENT_PORTS) +#include +#endif + +#ifdef YIELD_HAVE_OPENSSL +#include +#include +#include +#include +#include +#include +#ifdef _WIN32 +#pragma comment( lib, "libeay32.lib" ) +#pragma comment( lib, "ssleay32.lib" ) +#endif +#endif + +#ifdef YIELD_HAVE_ZLIB +#ifdef _WIN32 +#pragma comment( lib, "zlib.lib" ) +#undef ZLIB_WINAPI // So zlib doesn't #include windows.h +#endif +#include "zlib.h" +#endif + +struct in6_addr; +struct sockaddr_storage; +struct sockaddr_in6; +struct UriUriStructA; +struct yajl_gen_t; +typedef struct yajl_gen_t* yajl_gen; + + +#define YIELD_IPC_RFC822_HEADERS_STACK_BUFFER_LENGTH 128 +#define YIELD_IPC_RFC822_HEADERS_STACK_IOVECS_LENGTH 32 + + +namespace YIELD +{ + class FDAndInternalEventQueue; + class ONCRPCRecordInputStream; +#ifdef _WIN32 + typedef unsigned int socket_t; +#else + typedef int socket_t; +#endif + class URI; + + + class SocketAddress : public Object + { + public: + SocketAddress(); + SocketAddress( uint16_t port, bool loopback = true ); // port is in host byte order, loopback = false => INADDR_ANY + SocketAddress( const char* hostname ); + SocketAddress( const char* hostname, uint16_t port ); + SocketAddress( const URI& ); // URI ports should obviously be in host byte order + SocketAddress( const struct sockaddr_storage& ); + SocketAddress( const SocketAddress& ); + ~SocketAddress(); + + bool getnameinfo( std::string& out_hostname, bool numeric = true ) const; + bool getnameinfo( char* out_hostname, uint32_t out_hostname_len, bool numeric = true ) const; + uint16_t get_port() const; + operator struct sockaddr_storage() const; + bool operator==( const SocketAddress& other ) const; + bool operator!=( const SocketAddress& other ) const; + + private: + struct sockaddr_storage* _sockaddr_storage; + + void init( const char* hostname, uint16_t port ); + void init( const struct in6_addr&, uint16_t port ); + void init( const struct sockaddr_storage& ); + }; + + static inline std::ostream& operator<<( std::ostream& os, const SocketAddress& sockaddr ) + { + char nameinfo[1025]; + if ( sockaddr.getnameinfo( nameinfo, 1025, true ) ) + os << "[" << nameinfo << "]"; + else + os << "[could not resolve socket address]"; + os << ":" << sockaddr.get_port(); + return os; + } + + + class Socket : public Event, public InputStream, public OutputStream + { + public: + Socket( int domain, int type, int protocol, auto_Object log = NULL ); + Socket( socket_t _socket, auto_Object log = NULL ); + + bool bind( const SocketAddress& bind_to_sockaddr ); + virtual Stream::Status connect( const SocketAddress& connect_to_sockaddr ); + virtual bool close(); + bool get_blocking_mode() const { return blocking_mode; } + auto_Object get_log() const { return log; } + auto_Object getpeername() const; + auto_Object getsockname() const; + operator socket_t() const { return _socket; } + bool operator==( socket_t _socket ) const { return this->_socket == _socket; } + std::ostream& operator<<( std::ostream& os ) const { os << "socket #" << static_cast( _socket ); return os; } + OutputStream& operator<<( OutputStream& output_stream ) const { output_stream.write( "socket" ); return output_stream; } + bool set_blocking_mode( bool blocking ); + virtual bool shutdown() { return true; } + + // InputStream + virtual Stream::Status read( void* buffer, size_t buffer_len, size_t* out_bytes_read = 0 ); + + // OutputStream + virtual Stream::Status writev( const struct iovec* buffers, uint32_t buffers_count, size_t* out_bytes_written = 0 ); + + protected: + virtual ~Socket() + { + close(); + } + + auto_Object log; + + private: + Socket( const Socket& other ) + { + DebugBreak(); + } // Prevent copying + + int domain, type, protocol; + socket_t _socket; + + bool blocking_mode; + + static bool _close( socket_t ); + }; + + + class SocketFactory : public Object + { + public: + virtual auto_Object createSocket( auto_Object log = NULL ) = 0; + + protected: + SocketFactory( auto_Object log = NULL ) + : log( log ) + { } + + virtual ~SocketFactory() { } + + auto_Object log; + }; + + + class TCPSocket : public Socket + { + public: + TCPSocket( auto_Object log = NULL ); + + auto_Object accept(); + virtual bool listen(); + virtual bool shutdown(); + + // Object + YIELD_OBJECT_TYPE_INFO( EVENT, "TCPSocket", 2622352664UL ); + inline TCPSocket& incRef() { return Object::incRef( *this ); } + + // OutputStream + virtual Stream::Status writev( const struct iovec* buffers, uint32_t buffers_count, size_t* out_bytes_written = 0 ); + + protected: + TCPSocket( socket_t, auto_Object log ); + virtual ~TCPSocket() { } + + socket_t _accept(); + + private: + size_t partial_write_len; + }; + + + class TCPSocketFactory : public SocketFactory + { + public: + TCPSocketFactory( auto_Object log = NULL ) + : SocketFactory( log ) + { } + + // SocketFactory + auto_Object createSocket( auto_Object log = NULL ) + { + return new TCPSocket( log != NULL ? log : this->log ); + } + + private: + ~TCPSocketFactory() { } + }; + + + class FDEvent : public Event + { + public: + inline Object* get_context() const { return context; } + inline uint32_t get_error_code() const { return error_code; } + fd_t get_fd() const { return fd; } + inline socket_t get_socket() const { return _socket; } + inline bool want_read() const { return _want_read; } + + // Object + YIELD_OBJECT_TYPE_INFO( EVENT, "FDEvent", 3294357755UL ) + void serialize( StructuredOutputStream& ); + + private: + friend class FDEventQueue; + + union + { + fd_t fd; + socket_t _socket; + }; + + Object* context; + bool _want_read; + uint32_t error_code; + }; + + + class FDEventQueue : public EventQueue + { + public: + FDEventQueue(); + +#ifdef _WIN32 + bool attach( socket_t fd, Object* context, bool enable_read = true, bool enable_write = false ); + void detach( socket_t fd, Object* context, bool will_keep_fd_open = true ); + bool toggle( socket_t fd, Object* context, bool enable_read, bool enable_write ); +#else + bool attach( fd_t fd, Object* context, bool enable_read = true, bool enable_write = false ); + void detach( fd_t fd, Object* context, bool will_keep_fd_open = true ); + bool toggle( fd_t fd, Object* context, bool enable_read, bool enable_write ); +#endif + + virtual void break_blocking_dequeue(); + + // EventQueue + virtual EventQueue* clone() const { return new FDEventQueue; } + virtual bool enqueue( Event& ); // Discards events + virtual Event* dequeue(); + virtual Event* try_dequeue() { return FDEventQueue::timed_dequeue( 0 ); } + virtual Event* timed_dequeue( timeout_ns_t timeout_ns ); + + protected: + virtual ~FDEventQueue(); + + private: +#ifdef YIELD_HAVE_LINUX_EVENTFD + int signal_eventfd; +#else + auto_Object signal_read_socket, signal_write_socket; +#endif + int active_fds; + +#if defined(YIELD_HAVE_LINUX_EPOLL) || defined(YIELD_HAVE_FREEBSD_KQUEUE) || defined(YIELD_HAVE_SOLARIS_EVENT_PORTS) + fd_t poll_fd; +#endif + +#if defined(YIELD_HAVE_LINUX_EPOLL) + struct epoll_event* returned_events; +#ifdef YIELD_LINUX_EPOLL_RETURN_FD + STLHashMap fd_to_context_map; +#endif +#elif defined(YIELD_HAVE_FREEBSD_KQUEUE) + struct kevent* returned_events; +#elif defined(YIELD_HAVE_SOLARIS_EVENT_PORTS) + port_event_t* returned_events; +#else + STLHashMap fd_to_context_map; +#ifdef _WIN32 + fd_set *read_fds, *read_fds_copy, *write_fds, *write_fds_copy, *except_fds, *except_fds_copy; + STLHashMap::iterator next_fd_to_check; +#else + typedef std::vector pollfd_vector; + pollfd_vector::size_type next_pollfd_to_check; + pollfd_vector pollfds; +#endif +#endif + + FDEvent stack_fd_event; + void fillStackFDEvent(); + +#if defined(YIELD_HAVE_LINUX_EPOLL) || defined(YIELD_HAVE_FREEBSD_KQUEUE) || defined(YIELD_HAVE_SOLARIS_EVENT_PORTS) + void clearReturnedEvents( fd_t, Object* ); +#endif + void clearSignal(); + int poll(); + int poll( timeout_ns_t timeout_ns ); + }; + + + class FDAndInternalEventQueue : public FDEventQueue, private NonBlockingFiniteQueue + { + public: + FDAndInternalEventQueue(); + + // EventQueue + virtual EventQueue* clone() const { return new FDAndInternalEventQueue; } + bool enqueue( Event& ); + Event* dequeue(); + Event* try_dequeue(); + Event* timed_dequeue( timeout_ns_t timeout_ns ); + + private: + ~FDAndInternalEventQueue() { } + + bool dequeue_blocked; + }; + + + class Client : public EventHandler + { + public: + auto_Object get_log() const { return log; } + uint8_t get_reconnect_tries_max() const { return reconnect_tries_max; } + uint64_t get_operation_timeout_ns() const { return operation_timeout_ns; } + auto_Object get_socket_factory() const { return socket_factory; } + void set_reconnect_tries_max( uint8_t reconnect_tries_max ) { this->reconnect_tries_max = reconnect_tries_max; } + void set_operation_timeout_ns( uint64_t operation_timeout_ns ) { this->operation_timeout_ns = operation_timeout_ns; } + + // EventHandler + virtual void handleEvent( Event& ); + + protected: + template + static auto_Object create( auto_Object stage_group, const SocketAddress& peer_sockaddr, auto_Object socket_factory = NULL, auto_Object log = NULL ) + { + ClientType* client = new ClientType( peer_sockaddr, socket_factory, log ); + static_cast( stage_group.get() )->createStage( client->incRef(), new FDAndInternalEventQueue ); + return client; + } + + Client( const SocketAddress& peer_sockaddr, auto_Object socket_factory, auto_Object log ); + virtual ~Client(); + + virtual auto_Object createProtocolRequest( auto_Object body ) = 0; + virtual auto_Object createProtocolResponse() = 0; + virtual void respond( auto_Object protocol_request, auto_Object response ) = 0; + + private: + SocketAddress peer_sockaddr; + auto_Object socket_factory; + auto_Object log; + + uint8_t reconnect_tries, reconnect_tries_max; + uint64_t operation_timeout_ns; + + FDAndInternalEventQueue* fd_event_queue; + + + class Connection : public Object, public InputStream, public OutputStream + { + public: + enum State { IDLE = 0, CONNECTING, WRITING, READING }; + + Connection( auto_Object _socket ); + + inline State get_state() const { return state; } + const Time& get_last_activity_time() const { return last_activity_time; } + auto_Object get_protocol_request() const { return protocol_request; } + void set_protocol_request( auto_Object protocol_request ) { this->protocol_request = protocol_request; } + auto_Object get_protocol_response() const { return protocol_response; } + void set_protocol_response( auto_Object protocol_response ) { this->protocol_response = protocol_response; } + inline void set_state( State state ) { this->state = state; } + + operator socket_t() const { return *_socket; } + bool operator==( const Connection& other ) const { return _socket == other._socket; } + + bool close() { return _socket->close(); } + Stream::Status connect( const SocketAddress& connect_to_sockaddr ); + bool shutdown() { return _socket->shutdown(); } + void touch() { last_activity_time = Time(); } + + // InputStream + Stream::Status read( void* buffer, size_t buffer_len, size_t* out_bytes_read = 0 ); + + // OutputStream + Stream::Status writev( const struct iovec* buffers, uint32_t buffers_count, size_t* out_bytes_written = 0 ); + + private: + ~Connection() { } + + auto_Object _socket; + + State state; + Time last_activity_time; + + auto_Object protocol_request; + auto_Object protocol_response; + }; + + std::vector connections; + Connection* createConnection(); + void destroyConnection( Connection& connection ); + + + class ConnectionActivityCheckRequest : public Request + { + public: + // Object + YIELD_OBJECT_TYPE_INFO( REQUEST, "ConnectionActivityCheckRequest", 3667953665 ); + }; + + class ConnectionActivityCheckTimer : public Timer + { + public: + ConnectionActivityCheckTimer( Client& client ); + + // Timer + void fire(); + + private: + Client& client; + + ConnectionActivityCheckRequest stack_connection_activity_check_request; + }; + + auto_Object connection_activity_timer; + }; + + + class RFC822Headers + { + public: + RFC822Headers(); + virtual ~RFC822Headers(); + + Stream::Status deserialize( InputStream& input_stream, size_t* out_bytes_read ); + char* get_header( const char* header_name, const char* default_value="" ); + char* operator[]( const char* header_name ) { return get_header( header_name ); } + void set_header( const char* header, size_t header_len ); // Mutable header with name: value in one string, will copy both + void set_header( const char* header_name, const char* header_value ); // Literal header + void set_header( const char* header_name, char* header_value ); // Mutable header, will copy value + void set_header( char* header_name, char* header_value ); // Mutable name and mutable value, will copy both + void set_header( const std::string& header_name, const std::string& header_value ); // Mutable name and mutable value, will copy both + Stream::Status serialize( OutputStream& output_stream, size_t* out_bytes_written ); + + protected: + void copy_iovec( const char* data, size_t len ); + void set_iovec( const char* data, size_t len ) { struct iovec _iovec; _iovec.iov_base = const_cast( data ); _iovec.iov_len = len; set_iovec( _iovec ); } + void set_iovec( const struct iovec& out_iovec ); + + private: + enum { DESERIALIZING_LEADING_WHITESPACE, DESERIALIZING_HEADER_NAME, DESERIALIZING_HEADER_NAME_VALUE_SEPARATOR, DESERIALIZING_HEADER_VALUE, DESERIALIZING_HEADER_VALUE_TERMINATOR, DESERIALIZING_TRAILING_CRLF, DESERIALIZE_DONE } deserialize_state; + char stack_buffer[YIELD_IPC_RFC822_HEADERS_STACK_BUFFER_LENGTH], *heap_buffer, *buffer_p; + size_t heap_buffer_len; + iovec stack_iovecs[YIELD_IPC_RFC822_HEADERS_STACK_IOVECS_LENGTH], *heap_iovecs; uint8_t iovecs_filled; + + inline void advanceBufferPointer() + { + buffer_p++; + + if ( heap_buffer == NULL ) + { + if ( buffer_p - stack_buffer < YIELD_IPC_RFC822_HEADERS_STACK_BUFFER_LENGTH ) + return; + else + allocateHeapBuffer(); + } + else if ( static_cast( buffer_p - heap_buffer ) < heap_buffer_len ) + return; + else + allocateHeapBuffer(); + } + + void allocateHeapBuffer(); + }; + + + class HTTPRequest : public Request, public RFC822Headers + { + public: + HTTPRequest(); // Incoming + HTTPRequest( const char* method, const char* relative_uri, const char* host, auto_Object<> body = NULL ); // Outgoing + HTTPRequest( const char* method, const URI& absolute_uri, auto_Object<> body = NULL ); // Outgoing + + uint8_t get_http_version() const { return http_version; } + const char* get_method() const { return method; } + const char* get_uri() const { return uri; } + auto_Object<> get_body() const { return body; } + + bool respond( uint16_t status_code ); + bool respond( uint16_t status_code, auto_Object body ); + virtual bool respond( Response& response ) { return Request::respond( response ); } + + // Object + YIELD_OBJECT_TYPE_INFO( REQUEST, "HTTPRequest", 2869724743UL ); + Stream::Status deserialize( InputStream&, size_t* out_bytes_read = NULL ); + Stream::Status serialize( OutputStream&, size_t* out_bytes_written = NULL ); + + protected: + virtual ~HTTPRequest(); + + private: + void init( const char* method, const char* relative_uri, const char* host, auto_Object<> body ); + + char method[16]; + char* uri; size_t uri_len; + uint8_t http_version; + auto_Object<> body; + + enum { DESERIALIZING_METHOD, DESERIALIZING_URI, DESERIALIZING_HTTP_VERSION, DESERIALIZING_HEADERS, DESERIALIZING_BODY, DESERIALIZE_DONE } deserialize_state; + enum { SERIALIZING_METHOD, SERIALIZING_METHOD_URI_SEPARATOR, SERIALIZING_URI, SERIALIZING_HTTP_VERSION, SERIALIZING_HEADERS, SERIALIZING_BODY, SERIALIZE_DONE } serialize_state; + }; + + + class HTTPResponse : public Response, protected RFC822Headers + { + public: + HTTPResponse(); // Incoming + HTTPResponse( uint16_t status_code ); // Outgoing + HTTPResponse( uint16_t status_code, auto_Object<> body ); // Outgoing + + auto_Object<> get_body() const { return body; } + uint8_t get_http_version() const { return http_version; } + uint16_t get_status_code() const { return status_code; } + void set_body( auto_Object<> body ) { this->body = body; } + void set_status_code( uint16_t status_code ) { this->status_code = status_code; } + + // Object + YIELD_OBJECT_TYPE_INFO( RESPONSE, "HTTPResponse", 231649460UL ); + HTTPResponse& incRef() { return Object::incRef( *this ); } + Stream::Status deserialize( InputStream&, size_t* out_bytes_read = NULL ); + Stream::Status serialize( OutputStream&, size_t* out_bytes_written = NULL ); + + private: + ~HTTPResponse() { } + + uint8_t http_version; + union { char status_code_str[4]; uint16_t status_code; }; + auto_Object<> body; + + enum { DESERIALIZING_HTTP_VERSION, DESERIALIZING_STATUS_CODE, DESERIALIZING_REASON, DESERIALIZING_HEADERS, DESERIALIZING_BODY, DESERIALIZE_DONE } deserialize_state; + enum { SERIALIZING_STATUS_LINE, SERIALIZING_HEADERS, SERIALIZING_BODY, SERIALIZE_DONE } serialize_state; + }; + + + class HTTPClient : public Client + { + public: + template + static auto_Object create( auto_Object& stage_group, const SocketAddress& peer_sockaddr, auto_Object socket_factory = NULL, auto_Object log = NULL ) + { + return Client::create( stage_group, peer_sockaddr, socket_factory, log ); + } + + static auto_Object GET( const URI& absolute_uri, auto_Object log = NULL ); + static auto_Object PUT( const URI& absolute_uri, auto_Object<> body, auto_Object log = NULL ); + static auto_Object PUT( const URI& absolute_uri, const Path& body_file_path, auto_Object log = NULL ); + + // Object + HTTPClient& incRef() { return Object::incRef( *this ); } + + // EventHandler + virtual const char* getEventHandlerName() const { return "HTTPClient"; } + + protected: + friend class Client; + + HTTPClient( const SocketAddress& peer_sockaddr, auto_Object socket_factory, auto_Object log ) + : Client( peer_sockaddr, socket_factory, log ) + { } + + virtual ~HTTPClient() { } + + virtual auto_Object createProtocolRequest( auto_Object<> body ); + virtual auto_Object createProtocolResponse(); + virtual void respond( auto_Object protocol_request, auto_Object response ); + + private: + static auto_Object sendHTTPRequest( const char* method, const YIELD::URI& uri, auto_Object<> body, auto_Object log ); + }; + + + class JSONValue; + + class JSONInputStream : public StructuredInputStream + { + public: + JSONInputStream( InputStream& underlying_input_stream ); + virtual ~JSONInputStream(); + + // StructuredInputStream + YIELD_STRUCTURED_INPUT_STREAM_PROTOTYPES; + + protected: + JSONInputStream( const Declaration& root_decl, JSONValue& root_json_value ); + + private: + const Declaration* root_decl; + JSONValue *root_json_value, *next_json_value; // next_json_value is for arrays and maps + + virtual void readSequence( Object& ); + virtual void readMap( Object& ); + virtual void readStruct( Object& ); + JSONValue* readJSONValue( const Declaration&, Object::GeneralType = Object::UNKNOWN ); + }; + + + class JSONOutputStream : public StructuredOutputStream + { + public: + JSONOutputStream( OutputStream& underlying_output_stream, bool write_empty_strings = true ); + virtual ~JSONOutputStream(); // If the stream is wrapped in map, sequence, etc. then the constructor will append the final } or [, so the underlying output stream should not be deleted before this object! + + // StructuredOutputStream + YIELD_STRUCTURED_OUTPUT_STREAM_PROTOTYPES; + virtual void writePointer( const Declaration& decl, void* value ); + + protected: + JSONOutputStream( OutputStream& underlying_output_stream, bool write_empty_strings, yajl_gen writer, const Declaration& root_decl ); + + virtual void writeDeclaration( const Declaration& ); + virtual void writeSequence( Object* ); // Can be NULL for empty arrays + virtual void writeMap( Object* ); // Can be NULL for empty maps + virtual void writeStruct( Object* ); + + private: + OutputStream& underlying_output_stream; + bool write_empty_strings; + + const Declaration* root_decl; // Mostly for debugging, also used to indicate if this is the root JSONOutputStream + yajl_gen writer; + bool in_map; + + void flushYAJLBuffer(); + }; + + + class ObjectFactory : public Object + { + public: + virtual Object* createObject() const = 0; + + // Object + ObjectFactory& incRef() { return Object::incRef( *this ); } + + protected: + virtual ~ObjectFactory() { } + }; + + template + class ObjectFactoryImpl : public ObjectFactory + { + public: + // ObjectFactory + Object* createObject() const { return new ObjectType; } + + private: + ~ObjectFactoryImpl() { } + }; + + class ObjectFactories : public Object, private CuckooHashTable + { + public: + auto_Object<> createObject( const std::string& type_name ) { return createObject( type_name.c_str() ); } + auto_Object<> createObject( const char* type_name ) { return createObject( string_hash( type_name ) ); } + auto_Object<> createObject( uint32_t type_id ) + { + auto_Object object_factory = getObjectFactory( type_id ); + if ( object_factory != NULL ) + return object_factory->createObject(); + else + return 0; + } + + const auto_Object getObjectFactory( const std::string& type_name ) { return getObjectFactory( type_name.c_str() ); } + const auto_Object getObjectFactory( const char* type_name ) { return getObjectFactory( string_hash( type_name ) ); } + const auto_Object getObjectFactory( uint32_t type_id ) + { + ObjectFactory* object_factory = CuckooHashTable::find( type_id ); + if ( object_factory != NULL ) + return object_factory->incRef(); + else + return NULL; + } + + void registerObjectFactory( const std::string& type_name, auto_Object object_factory ) { return registerObjectFactory( type_name.c_str(), object_factory ); } + void registerObjectFactory( const char* type_name, auto_Object object_factory ) { registerObjectFactory( string_hash( type_name ), object_factory ); } + void registerObjectFactory( uint32_t type_id, auto_Object object_factory ) + { + Object::decRef( CuckooHashTable::erase( type_id ) ); + CuckooHashTable::insert( type_id, object_factory.release() ); + } + + private: + ~ObjectFactories() + { + for ( CuckooHashTable::iterator object_factory_i = begin(); object_factory_i != end(); object_factory_i++ ) + Object::decRef( *object_factory_i ); + } + }; + + + class ONCRPCClient : public Client + { + public: + static auto_Objectcreate( auto_Object stage_group, const SocketAddress& peer_sockaddr, auto_Object socket_factory = NULL, auto_Object log = NULL ) + { + return Client::create( stage_group, peer_sockaddr, socket_factory, log ); + } + + // Object + ONCRPCClient& incRef() { return Object::incRef( *this ); } + + // EventHandler + virtual const char* getEventHandlerName() const { return "ONCRPCClient"; } + + protected: + friend class Client; + + ONCRPCClient( const SocketAddress& peer_sockaddr, auto_Object socket_factory, auto_Object log ); + virtual ~ONCRPCClient() { } + + auto_Object object_factories; + + // Client + virtual auto_Object createProtocolRequest( auto_Object<> body ); + virtual auto_Object createProtocolResponse(); + virtual void respond( auto_Object protocol_request, auto_Object response ); + }; + + + class ONCRPCMessage + { + public: + auto_Object<> get_body() const { return body; } + uint32_t get_xid() const { return xid; } + + protected: + ONCRPCMessage( auto_Object<> body, auto_Object log ) + : body( body ), log( log ) + { + xid = 0; + oncrpc_record_input_stream = NULL; + } + + ONCRPCMessage( auto_Object object_factories, auto_Object log ) + : object_factories( object_factories ), log( log ) + { + xid = 0; + oncrpc_record_input_stream = NULL; + } + + ONCRPCMessage( uint32_t credential_auth_flavor, auto_Object<> credential, auto_Object<> body, auto_Object log ) // Outgoing + : body( body ), log( log ) + { + xid = 0; + oncrpc_record_input_stream = NULL; + } + + virtual ~ONCRPCMessage(); + + + auto_Object object_factories; + auto_Object<> body; + auto_Object log; + + uint32_t xid; + + ONCRPCRecordInputStream& get_oncrpc_record_input_stream( InputStream& underlying_input_stream ); + + private: + ONCRPCRecordInputStream* oncrpc_record_input_stream; + }; + + + class ONCRPCRequest : public Request, public ONCRPCMessage + { + public: + const static uint32_t AUTH_NONE = 0; + + + ONCRPCRequest( auto_Object<> body, auto_Object log = NULL ) + : ONCRPCMessage( body, log ) + { + credential_auth_flavor = AUTH_NONE; + } + + ONCRPCRequest( auto_Object object_factories, auto_Object log = NULL ) + : ONCRPCMessage( object_factories, log ) + { + credential_auth_flavor = AUTH_NONE; + } + + + ONCRPCRequest( uint32_t credential_auth_flavor, auto_Object<> credential, auto_Object<> body, auto_Object log = NULL ) + : ONCRPCMessage( body, log ), credential_auth_flavor( credential_auth_flavor ), credential( credential ) + { } + + uint32_t get_credential_auth_flavor() const { return credential_auth_flavor; } + auto_Object<> get_credential() const { return credential; } + + // Object + YIELD_OBJECT_TYPE_INFO( REQUEST, "ONCRPCRequest", 3095736087UL ); + ONCRPCRequest& incRef() { return Object::incRef( *this ); } + Stream::Status deserialize( InputStream&, size_t* out_bytes_read = 0 ); + Stream::Status serialize( OutputStream&, size_t* out_bytes_read = 0 ); + + private: + ~ONCRPCRequest() { } + + uint32_t credential_auth_flavor; + auto_Object<> credential; + }; + + + class ONCRPCResponse : public Response, public ONCRPCMessage + { + public: + ONCRPCResponse( auto_Object object_factories, auto_Object log = NULL ) // Incoming + : ONCRPCMessage( object_factories, log ) + { } + + ONCRPCResponse( uint32_t xid, auto_Object<> body, auto_Object log = NULL ) // Outgoing + : ONCRPCMessage( body, log ) + { + this->xid = xid; + } + + // Object + YIELD_OBJECT_TYPE_INFO( REQUEST, "ONCRPCResponse", 2752670386UL ); + Stream::Status deserialize( InputStream&, size_t* out_bytes_read = 0 ); + Stream::Status serialize( OutputStream&, size_t* out_bytes_read = 0 ); + + private: + ~ONCRPCResponse() { } + }; + + +#ifdef YIELD_HAVE_OPENSSL + + class SSLContext : public Object + { + public: + SSLContext( SSL_METHOD* method, const Path& pem_certificate_file_path, const Path& pem_private_key_file_path, const std::string& pem_private_key_passphrase ) + : pem_private_key_passphrase( pem_private_key_passphrase ) + { + ctx = createSSL_CTX( method ); + + if ( SSL_CTX_use_certificate_file( ctx, pem_certificate_file_path, SSL_FILETYPE_PEM ) > 0 ) + { + if ( !pem_private_key_passphrase.empty() ) + { + SSL_CTX_set_default_passwd_cb( ctx, pem_password_callback ); + SSL_CTX_set_default_passwd_cb_userdata( ctx, this ); + } + + if ( SSL_CTX_use_PrivateKey_file( ctx, pem_private_key_file_path, SSL_FILETYPE_PEM ) > 0 ) + return; + } + + throwOpenSSLException(); + } + + SSLContext( SSL_METHOD* method, const std::string& pem_certificate_str, const std::string& pem_private_key_str, const std::string& pem_private_key_passphrase ) + : pem_private_key_passphrase( pem_private_key_passphrase ) + { + ctx = createSSL_CTX( method ); + + BIO* pem_certificate_bio = BIO_new_mem_buf( reinterpret_cast( const_cast( pem_certificate_str.c_str() ) ), static_cast( pem_certificate_str.size() ) ); + if ( pem_certificate_bio != NULL ) + { + X509* cert = PEM_read_bio_X509( pem_certificate_bio, NULL, pem_password_callback, this ); + if ( cert != NULL ) + { + SSL_CTX_use_certificate( ctx, cert ); + + BIO* pem_private_key_bio = BIO_new_mem_buf( reinterpret_cast( const_cast( pem_private_key_str.c_str() ) ), static_cast( pem_private_key_str.size() ) ); + if ( pem_private_key_bio != NULL ) + { + EVP_PKEY* pkey = PEM_read_bio_PrivateKey( pem_private_key_bio, NULL, pem_password_callback, this ); + if ( pkey != NULL ) + { + SSL_CTX_use_PrivateKey( ctx, pkey ); + + BIO_free( pem_certificate_bio ); + BIO_free( pem_private_key_bio ); + + return; + } + + BIO_free( pem_private_key_bio ); + } + } + + BIO_free( pem_certificate_bio ); + } + + throwOpenSSLException(); + } + + SSLContext( SSL_METHOD* method, const Path& pkcs12_file_path, const std::string& pkcs12_passphrase ) + { + ctx = createSSL_CTX( method ); + + BIO* bio = BIO_new_file( pkcs12_file_path, "rb" ); + if ( bio != NULL ) + { + PKCS12* p12 = d2i_PKCS12_bio( bio, NULL ); + if ( p12 != NULL ) + { + EVP_PKEY* pkey = NULL; + X509* cert = NULL; + STACK_OF( X509 )* ca = NULL; + if ( PKCS12_parse( p12, pkcs12_passphrase.c_str(), &pkey, &cert, &ca ) ) + { + if ( pkey != NULL && cert != NULL && ca != NULL ) + { + SSL_CTX_use_certificate( ctx, cert ); + SSL_CTX_use_PrivateKey( ctx, pkey ); + + X509_STORE* store = SSL_CTX_get_cert_store( ctx ); + for ( int i = 0; i < sk_X509_num( ca ); i++ ) + { + X509* store_cert = sk_X509_value( ca, i ); + X509_STORE_add_cert( store, store_cert ); + } + + BIO_free( bio ); + + return; + } + else + { + BIO_free( bio ); + throw Exception( "invalid PKCS#12 file or passphrase" ); + } + } + } + + BIO_free( bio ); + } + + throwOpenSSLException(); + } + + SSL_CTX* get_ssl_ctx() const { return ctx; } + + // Object + inline SSLContext& incRef() { return Object::incRef( *this ); } + + private: + ~SSLContext() + { + SSL_CTX_free( ctx ); + } + + + std::string pem_private_key_passphrase; + + SSL_CTX* ctx; + + + SSL_CTX* createSSL_CTX( SSL_METHOD* method ) + { + SSL_library_init(); + OpenSSL_add_all_algorithms(); + + SSL_CTX* ctx = SSL_CTX_new( method ); + if ( ctx != NULL ) + { +#ifdef SSL_OP_NO_TICKET + SSL_CTX_set_options( ctx, SSL_OP_ALL|SSL_OP_NO_TICKET ); +#else + SSL_CTX_set_options( ctx, SSL_OP_ALL ); +#endif + SSL_CTX_set_verify( ctx, SSL_VERIFY_NONE, NULL ); + return ctx; + } + else + { + throwOpenSSLException(); + return NULL; + } + } + + static int pem_password_callback( char *buf, int size, int rwflag, void *userdata ) + { + SSLContext* this_ = static_cast( userdata ); + if ( size > static_cast( this_->pem_private_key_passphrase.size() ) ) + size = static_cast( this_->pem_private_key_passphrase.size() ); + std::memcpy( buf, this_->pem_private_key_passphrase.c_str(), size ); + return size; + } + + void throwOpenSSLException() + { + SSL_load_error_strings(); + throw Exception( ERR_error_string( ERR_get_error(), NULL ) ); + } + }; + + + class SSLSocket : public TCPSocket + { + public: + SSLSocket( auto_Object ctx, auto_Object log = NULL ) // Steals a reference to ctx + : TCPSocket( log ), ctx( ctx ) + { + ssl = SSL_new( ctx->get_ssl_ctx() ); + SSL_set_fd( ssl, *this ); +// SSL_set_mode( ssl, SSL_MODE_ENABLE_PARTIAL_WRITE|SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER ); + init( log ); + } + + // Object + YIELD_OBJECT_TYPE_INFO( EVENT, "SSLSocket", 2540210862UL ); + inline SSLSocket& incRef() { return Object::incRef( *this ); } + + // InputStream + Stream::Status read( void* buffer, size_t buffer_len, size_t* out_bytes_read ) + { + int SSL_read_ret = SSL_read( ssl, buffer, static_cast( buffer_len ) ); + if ( SSL_read_ret > 0 ) + { + if ( log != NULL ) + { + Log::Stream log_stream = log->getStream( Log::LOG_DEBUG ); + log_stream << "SSLSocket: read on " << this << ": "; + log_stream.write( buffer, static_cast( SSL_read_ret ) ); + } + + if ( out_bytes_read ) + *out_bytes_read = static_cast( SSL_read_ret ); + + return STREAM_STATUS_OK; + } + else + return returnSSLStatus(); + } + + // OutputStream + Stream::Status writev( const struct iovec* buffers, uint32_t buffers_count, size_t* out_bytes_written ) + { + int SSL_write_ret; + if ( buffers_count == 1 ) // && buffers[0].iov_len < SSL_MAX_CONTENT_LEN ) + { + SSL_write_ret = SSL_write( ssl, buffers[0].iov_base, static_cast( buffers[0].iov_len ) ); + if ( SSL_write_ret > 0 && out_bytes_written ) + *out_bytes_written = static_cast( SSL_write_ret ); + } + else // Concatenate buffers into a single write_buffer and write that + { + if ( write_buffer == NULL ) + { + for ( unsigned int buffer_i = 0; buffer_i < buffers_count; buffer_i++ ) + write_buffer_len += buffers[buffer_i].iov_len; + write_buffer_p = write_buffer = new unsigned char[write_buffer_len]; + for ( unsigned int buffer_i = 0; buffer_i < buffers_count; buffer_i++ ) + { + memcpy( write_buffer_p, buffers[buffer_i].iov_base, buffers[buffer_i].iov_len ); + write_buffer_p += buffers[buffer_i].iov_len; + } + write_buffer_p = write_buffer; + } + + size_t total_bytes_written = 0; +// for ( ;; ) // SSL_write multiple times if the buffer is > the max record len +// { + int SSL_write_len = static_cast( write_buffer_len - static_cast( write_buffer_p - write_buffer ) ); + // if ( SSL_write_len > SSL_MAX_CONTENT_LEN ) SSL_write_len = SSL_MAX_CONTENT_LEN; + SSL_write_ret = SSL_write( ssl, reinterpret_cast( write_buffer_p ), SSL_write_len ); + if ( SSL_write_ret > 0 ) + { + write_buffer_p += SSL_write_ret; + total_bytes_written += SSL_write_ret; + + if ( static_cast( write_buffer_p - write_buffer ) == write_buffer_len ) + { + delete [] write_buffer; + write_buffer_p = write_buffer = NULL; + write_buffer_len = 0; + + if ( out_bytes_written ) + *out_bytes_written = total_bytes_written; + + // break; + } + else + DebugBreak(); // continue; + } +// else +// break; +// } + } + + if ( SSL_write_ret > 0 ) + { + if ( log != NULL ) + { + Log::Stream log_stream = log->getStream( Log::LOG_DEBUG ); + log_stream << "SSLSocket: write on " << this << ": "; + log_stream.write( buffers, buffers_count ); + } + + return STREAM_STATUS_OK; + } + else + return returnSSLStatus(); + } + + // TCPSocket + auto_Object accept() + { + socket_t peer_socket = TCPSocket::_accept(); + if ( peer_socket != static_cast( -1 ) ) + { + SSL* peer_ssl = SSL_new( ctx->get_ssl_ctx() ); + SSL_set_fd( peer_ssl, peer_socket ); + SSL_set_accept_state( peer_ssl ); + return new SSLSocket( *peer_ssl, log ); + } + else + return NULL; + } + + Stream::Status connect( const SocketAddress& peer_sockaddr ) + { + Stream::Status connect_status = TCPSocket::connect( peer_sockaddr ); + if ( connect_status == STREAM_STATUS_OK ) + { + SSL_set_fd( ssl, *this ); // Have to SSL_set_fd again in case connect had to re-create the socket falling back to IPv4 to IPv6 + SSL_set_connect_state( ssl ); + } + return connect_status; + } + + bool shutdown() + { + if ( SSL_shutdown( ssl ) != -1 ) + return TCPSocket::shutdown(); + else + return false; + } + + private: + SSLSocket( SSL& ssl, auto_Object log ) + : TCPSocket( static_cast( SSL_get_fd( &ssl ) ), log ), + ssl( &ssl ) + { + ctx = NULL; + init( log ); + } + + ~SSLSocket() + { + SSL_free( ssl ); + delete [] write_buffer; + } + + void init( auto_Object log ) + { + write_buffer = write_buffer_p = NULL; + write_buffer_len = 0; + if ( log != NULL ) + { + SSL_set_app_data( ssl, reinterpret_cast( this ) ); + SSL_set_info_callback( ssl, info_callback ); + } + } + + auto_Object ctx; + SSL* ssl; + unsigned char *write_buffer, *write_buffer_p; size_t write_buffer_len; + + + static void info_callback( const SSL* ssl, int where, int ret ) + { + std::ostringstream info; + + int w = where & ~SSL_ST_MASK; + if ( ( w & SSL_ST_CONNECT ) == SSL_ST_CONNECT ) info << "SSL_connect:"; + else if ( ( w & SSL_ST_ACCEPT ) == SSL_ST_ACCEPT ) info << "SSL_accept:"; + else info << "undefined:"; + + if ( ( where & SSL_CB_LOOP ) == SSL_CB_LOOP ) + info << SSL_state_string_long( ssl ); + else if ( ( where & SSL_CB_ALERT ) == SSL_CB_ALERT ) + { + if ( ( where & SSL_CB_READ ) == SSL_CB_READ ) + info << "read:"; + else + info << "write:"; + info << "SSL3 alert" << SSL_alert_type_string_long( ret ) << ":" << SSL_alert_desc_string_long( ret ); + } + else if ( ( where & SSL_CB_EXIT ) == SSL_CB_EXIT ) + { + if ( ret == 0 ) + info << "failed in " << SSL_state_string_long( ssl ); + else + info << "error in " << SSL_state_string_long( ssl ); + } + else + return; + + reinterpret_cast( SSL_get_app_data( const_cast( ssl ) ) )->log->getStream( Log::LOG_NOTICE ) << "SSLSocket: " << info.str(); + } + + Stream::Status returnSSLStatus() + { + if ( SSL_want_read( ssl ) == 1 ) + { + if ( log != NULL && log->get_level() >= Log::LOG_INFO ) + log->getStream( Log::LOG_INFO ) << "SSLSocket: would block on read on socket #" << this << "."; + return STREAM_STATUS_WANT_READ; + } + if ( SSL_want_write( ssl ) == 1 ) + { + if ( log != NULL && log->get_level() >= Log::LOG_INFO ) + log->getStream( Log::LOG_INFO ) << "SSLSocket: would block on write on " << this << "."; + return STREAM_STATUS_WANT_WRITE; + } + else + { + if ( log != NULL && log->get_level() >= Log::LOG_INFO ) + log->getStream( Log::LOG_INFO ) << "SSLSocket: lost connection on " << this << ", error = " << Exception::strerror() << "."; + return STREAM_STATUS_ERROR; + } + } + }; + + + class SSLSocketFactory : public SocketFactory + { + public: + SSLSocketFactory( auto_Object ssl_context, auto_Object log = NULL ) + : SocketFactory( log ), ssl_context( ssl_context ) + { } + + // SocketFactory + virtual auto_Object createSocket( auto_Object log = NULL ) + { + return new SSLSocket( ssl_context, log != NULL ? log : this->log ); + } + + private: + ~SSLSocketFactory() { } + + auto_Object ssl_context; + }; + +#endif + + + class UDPSocket : public Socket + { + public: + UDPSocket( auto_Object log = NULL ); + + bool joinMulticastGroup( const SocketAddress& multicast_group_sockaddr, bool loopback ); + bool leaveMulticastGroup( const SocketAddress& multicast_group_sockaddr ); + + // Object + YIELD_OBJECT_TYPE_INFO( EVENT, "UDPSocket", 2607589533UL ); + inline UDPSocket& incRef() { return Object::incRef( *this ); } + + // InputStream + Stream::Status read( void* buffer, size_t buffer_len, size_t* out_bytes_read = 0 ); + + private: + ~UDPSocket() { } + }; + + + class URI : public Object + { + public: + // Factory methods return NULL instead of throwing exceptions + static auto_Object parse( const char* uri ) { return parse( uri, std::strlen( uri ) ); } + static auto_Object parse( const std::string& uri ) { return parse( uri.c_str(), uri.size() ); } + static auto_Object parse( const char* uri, size_t uri_len ); + + // Constructors throw exceptions + URI( const char* uri ) { init( uri, std::strlen( uri ) ); } + URI( const std::string& uri ) { init( uri.c_str(), uri.size() ); } + URI( const char* uri, size_t uri_len ) { init( uri, uri_len ); } + URI( const URI& other ); + virtual ~URI() { } + + const std::string& get_scheme() const { return scheme; } + const std::string& get_host() const { return host; } + const std::string& get_password() const { return password; } + unsigned short get_port() const { return port; } + const std::string& get_resource() const { return resource; } + const std::string& get_user() const { return user; } + void set_port( unsigned short port ) { this->port = port; } + + // Object + URI& incRef() { return Object::incRef( *this ); } + + private: + URI( UriUriStructA& parsed_uri ) + { + init( parsed_uri ); + } + + void init( const char* uri, size_t uri_len ); + void init( UriUriStructA& parsed_uri ); + + std::string scheme, user, password, host; + unsigned short port; + std::string resource; + }; + + + static inline std::ostream& operator<<( std::ostream& os, const URI& uri ) + { + os << uri.get_scheme(); + os << "://"; + os << uri.get_host(); + if ( uri.get_port() != 0 ) + os << ":" << uri.get_port(); + os << uri.get_resource(); + return os; + } + + +#ifdef YIELD_HAVE_ZLIB + class zlibOutputStream : public OutputStream + { + public: + zlibOutputStream() + { + zstream.zalloc = Z_NULL; + zstream.zfree = Z_NULL; + zstream.opaque = Z_NULL; + out_ev = NULL; + } + + auto_Object serialize( String& s, int level = Z_BEST_COMPRESSION ) + { + if ( deflateInit( &zstream, level ) == Z_OK ) + { + zstream.next_out = reinterpret_cast( zout ); + zstream.avail_out = sizeof( zout ); + total_bytes_written = 0; + out_ev = new String(); + + s.serialize( *this, NULL ); + + int deflate_ret; + + while ( ( deflate_ret = deflate( &zstream, Z_FINISH ) ) == Z_OK ) // Z_OK = need more buffer space to finish compression, Z_STREAM_END = really done + { + out_ev->append( zout, sizeof( zout ) ); + zstream.next_out = reinterpret_cast( zout ); + zstream.avail_out = sizeof( zout ); + } + + if ( deflate_ret == Z_STREAM_END ) + { + if ( ( deflate_ret = deflateEnd( &zstream ) ) == Z_OK ) + { + if ( zstream.avail_out < sizeof( zout ) ) + out_ev->append( zout, sizeof( zout ) - zstream.avail_out ); + + if ( out_ev->size() < total_bytes_written ) // i.e. the compressed buffer is smaller than the input buffer(s) + return out_ev; + } + } + + Object::decRef( *out_ev ); + } + + return NULL; + } + + // OutputStream + Stream::Status writev( const struct iovec* buffers, uint32_t buffers_count, size_t* out_bytes_written ) + { + int deflate_ret; + size_t bytes_written = 0; + + for ( size_t buffer_i = 0; buffer_i < buffers_count; buffer_i++ ) + { + zstream.next_in = reinterpret_cast( buffers[buffer_i].iov_base ); + zstream.avail_in = buffers[buffer_i].iov_len; + bytes_written += buffers[buffer_i].iov_len; + total_bytes_written += buffers[buffer_i].iov_len; + + while ( ( deflate_ret = deflate( &zstream, Z_NO_FLUSH ) ) == Z_OK ) + { + if ( zstream.avail_out > 0 ) + { + if ( out_bytes_written ) + *out_bytes_written = bytes_written; + return STREAM_STATUS_OK; + } + else + { + out_ev->append( zout, sizeof( zout ) ); + zstream.next_out = reinterpret_cast( zout ); + zstream.avail_out = sizeof( zout ); + } + } + } + + if ( deflate_ret == Z_OK ) + { + if ( out_bytes_written ) + *out_bytes_written = bytes_written; + return STREAM_STATUS_OK; + } + else + return STREAM_STATUS_ERROR; + } + + private: + z_stream zstream; + char zout[4096]; size_t total_bytes_written; + String* out_ev; + }; +#endif +}; + +#endif diff --git a/src/client/share/yieldfs/share/yield/include/yield/main.h b/src/client/share/yieldfs/share/yield/include/yield/main.h new file mode 100644 index 000000000..b5387f865 --- /dev/null +++ b/src/client/share/yieldfs/share/yield/include/yield/main.h @@ -0,0 +1,221 @@ +// Copyright 2003-2009 Minor Gordon, with original implementations and ideas contributed by Felix Hupfeld. +// This source comes from the Yield project. It is licensed under the GPLv2 (see COPYING for terms and conditions). + +#ifndef YIELD_MAIN_H +#define YIELD_MAIN_H + +#include "yield/platform.h" + +#include +#include // For srand +#include +#include // For time() +#include +#include +#include +#include + +#include "SimpleOpt.h" + +#ifdef _WIN32 +#include +#pragma comment( lib, "ws2_32.lib" ) +#else +#include +#endif + + +namespace YIELD +{ + class Main + { + public: + Log::Level get_log_level() const { return log_level; } + const char* get_program_name() const { return program_name; } + + virtual int main( int argc, char** argv ) + { +#ifdef _WIN32 + WORD wVersionRequested = MAKEWORD( 2, 2 ); + WSADATA wsaData; + WSAStartup( wVersionRequested, &wsaData ); +#else + signal( SIGPIPE, SIG_IGN ); +#endif + + srand( static_cast( std::time( 0 ) ) ); + + try + { + std::vector simpleopt_options; + for ( std::vector