Add support for tests on the server side

Signed-off-by: Martin J. Bligh <mbligh@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@807 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/server/utils.py b/server/utils.py
index a307323..10c7985 100644
--- a/server/utils.py
+++ b/server/utils.py
@@ -320,3 +320,28 @@
 		keyval.write('%s=%s\n' % (key, str(value)))
 	keyval.close()
 
+
+def update_version(srcdir, preserve_srcdir, new_version, install, *args, **dargs):
+	"""
+	Make sure srcdir is version new_version
+
+	If not, delete it and install() the new version.
+
+	In the preserve_srcdir case, we just check it's up to date,
+	and if not, we rerun install, without removing srcdir
+	"""
+	versionfile = srcdir + '/.version'
+	install_needed = True
+
+	if os.path.exists(srcdir):
+		if os.path.exists(versionfile):
+			old_version = pickle.load(open(versionfile, 'r'))
+			if (old_version == new_version):
+				install_needed = False
+
+	if install_needed:
+		if not preserve_srcdir:
+			system('rm -rf ' + srcdir)
+		install(*args, **dargs)
+		if os.path.exists(srcdir):
+			pickle.dump(new_version, open(versionfile, 'w'))