Home | History | Annotate | Download | only in platform_AccurateTime
      1 # Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 import logging, math, re
      6 import subprocess
      7 import time
      8 from autotest_lib.client.bin import test, utils
      9 from autotest_lib.client.common_lib import error
     10 from autotest_lib.client.cros import cros_logging
     11 
     12 OPENSSL = '/usr/bin/openssl'
     13 TLSDATE = '/usr/bin/tlsdate'
     14 
     15 class platform_AccurateTime(test.test):
     16     version = 1
     17 
     18     def serve(self):
     19         self.ca = '%s/ca.pem' % self.srcdir
     20         self.cert = '%s/cert.pem' % self.srcdir
     21         self.key = '%s/cert.key' % self.srcdir
     22         self.server = subprocess.Popen([OPENSSL, 's_server', '-www',
     23                                         '-CAfile', self.ca, '-cert', self.cert,
     24                                         '-key', self.key, '-port', '4433'])
     25         time.sleep(1)
     26 
     27     def tlsdate(self):
     28         proc = subprocess.Popen([TLSDATE, '-H', '127.0.0.1', '-p', '4433',
     29                                  '-C', self.srcdir,
     30                                  '-nv'], stdout=subprocess.PIPE,
     31                                  stderr=subprocess.PIPE)
     32         (out,err) = proc.communicate()
     33         return err
     34 
     35     def run_once(self):
     36         self.serve()
     37         out = self.tlsdate()
     38         print out
     39         try:
     40             if 'verification passed' not in out:
     41                 raise error.TestFail('ssl did not verify')
     42             if 'difference is about' not in out:
     43                 raise error.TestFail('no time delta found')
     44         finally:
     45             self.server.terminate()
     46