#!/usr/bin/python -S
# Copyright 2012 Google Inc. All Rights Reserved.
#
"""Request a simple URL from all the known gstatic.com IP/IPv6 addresses."""

__author__ = 'apenwarr@google.com (Avery Pennarun)'

import socket
import sys
import time

try:
  import monotime  #gpylint: disable-msg=W0611,C6204
except ImportError:
  pass


HOSTNAME = 'gstatic.com'
PORT = 80


_time = getattr(time, 'monotime', time.time)


def main():
  try:
    addrs = socket.getaddrinfo(HOSTNAME, PORT,
                               0, socket.SOCK_STREAM, 0,
                               socket.AI_ALL)
  except socket.error:
    print HOSTNAME, 'DNS-ERR'
    return 1

  bad = 0
  for family, typ, proto, _, addr in addrs:
    ip = addr[0]
    s = socket.socket(family, typ, proto)
    try:
      s.connect(addr)
    except socket.error:
      print ip, 'ERR'
      bad = 1
      continue
    start = _time()
    s.send('GET /generate_204 HTTP/1.0\r\n'
           'User-Agent: gfiber-cpe-gstatic\r\n'
           '\r\n')
    buf = s.recv(4096)
    end = _time()
    if not buf:
      print ip, 'ERR'
      bad = 1
      continue
    print ip, '%.1fms' % ((end - start) * 1000)
  return bad


if __name__ == '__main__':
  sys.exit(main())
