Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: server/site_linux_server.py

Issue 6609034: VPN: Test to set up & validate a Client connection to the Server (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/autotest.git@master
Patch Set: Made client & server code more similar. Updated failure tests Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: server/site_linux_server.py
diff --git a/server/site_linux_server.py b/server/site_linux_server.py
new file mode 100644
index 0000000000000000000000000000000000000000..7e4c1bc1888512a3a123e198f9e14d538036ae5a
--- /dev/null
+++ b/server/site_linux_server.py
@@ -0,0 +1,79 @@
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import logging, re, time
+from autotest_lib.client.common_lib import error
+
+class LinuxServer(object):
+ """
+ Linux Server: A machine which hosts network services.
+
+ """
+
+ def __init__(self, server, params):
+ self.server = server # Server host.
+ self.vpn_kind = None
+ self.conf = {}
+
+ def vpn_server_config(self, params):
+ """ Configure & launch the server side of the VPN.
+
+ Parameters, in 'params':
+
+ kind : required
+
+ The kind of VPN which should be configured and
+ launched.
+
+ Valid values:
+
+ openvpn
+
+ config: required
+
+ The configuration information associated with
+ the VPN server.
+
+ This is a dict which contains key/value pairs
+ representing the VPN's configuration.
+
+ The values stored in the 'config' param must all be
+ supported by the specified VPN kind.
+ """
+ self.vpn_server_kill({}) # Must be first. Relies on self.vpn_kind.
+
+ self.vpn_kind = params.get('kind', None)
+
+ # Read configuration information & create server configuration file.
+ #
+ # As VPN kinds other than 'openvpn' are supported, and
+ # since 'self.conf' is cummulative, perhaps there should be
+ # a method which will clear 'self.conf'; different types of
+ # VPN will likely not have the same configuration
+ # parameters. This is only really needed if a test is
+ # written to switch between two differents kinds of VPN.
+ for k, v in params.get('config', {}).iteritems():
+ self.conf[k] = v
+ self.server.run("cat <<EOF >%s\n%s\nEOF\n" %
+ ('/tmp/vpn-server.conf', '\n'.join(
+ "%s %s" % kv for kv in self.conf.iteritems())))
+
+ # Launch specified VPN server.
+ if self.vpn_kind is None:
+ raise error.TestFail('No VPN kind specified for this test.');
+ elif self.vpn_kind == 'openvpn':
+ self.server.run("/usr/sbin/openvpn --config /tmp/vpn-server.conf &")
+ else:
+ raise error.TestFail('(internal error): No config case '
+ 'for VPN kind (%s)' % self.vpn_kind)
+
+ def vpn_server_kill(self, params):
+ """ Kill the VPN server. """
+ if self.vpn_kind is not None:
+ if self.vpn_kind == 'openvpn':
+ self.server.run("pkill /usr/sbin/openvpn")
+ else:
+ raise error.TestFail('(internal error): No kill case '
+ 'for VPN kind (%s)' % self.vpn_kind)
+ self.vpn_kind = None;

Powered by Google App Engine
This is Rietveld 408576698