| # Copyright (c) 2012 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, math, re |
| import subprocess |
| import time |
| from autotest_lib.client.bin import test, utils |
| from autotest_lib.client.common_lib import error |
| from autotest_lib.client.cros import cros_logging |
| |
| OPENSSL = '/usr/bin/openssl' |
| TLSDATE = '/usr/bin/tlsdate' |
| |
| class platform_AccurateTime(test.test): |
| version = 1 |
| |
| def serve(self): |
| self.ca = '%s/ca.pem' % self.srcdir |
| self.cert = '%s/cert.pem' % self.srcdir |
| self.key = '%s/cert.key' % self.srcdir |
| self.server = subprocess.Popen([OPENSSL, 's_server', '-www', |
| '-CAfile', self.ca, '-cert', self.cert, |
| '-key', self.key, '-port', '4433']) |
| time.sleep(1) |
| |
| def tlsdate(self): |
| proc = subprocess.Popen([TLSDATE, '-H', '127.0.0.1', '-p', '4433', |
| '-C', self.srcdir, |
| '-nv'], stdout=subprocess.PIPE, |
| stderr=subprocess.PIPE) |
| (out,err) = proc.communicate() |
| return err |
| |
| def run_once(self): |
| self.serve() |
| out = self.tlsdate() |
| print out |
| try: |
| if 'verification passed' not in out: |
| raise error.TestFail('ssl did not verify') |
| if 'difference is about' not in out: |
| raise error.TestFail('no time delta found') |
| finally: |
| self.server.terminate() |