#!/usr/bin/python -t
# Copyright (c) 2014 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 sys
import threading
import time
import common
from autotest_lib.site_utils.lib import infra
from autotest_lib.site_utils.stats import registry
def main():
"""
Runs all of the registered functions in stats/
"""
threads = []
pollers = registry.registered_functions()
for sam in infra.sam_servers():
for f in pollers.get('sam', []):
threads.append(threading.Thread(target=f, args=(sam,)))
for drone in infra.drone_servers():
for f in pollers.get('drone', []):
threads.append(threading.Thread(target=f, args=(drone,)))
for devserver in infra.devserver_servers():
for f in pollers.get('devserver', []):
threads.append(threading.Thread(target=f, args=(devserver,)))
for f in pollers.get(None, []):
threads.append(threading.Thread(target=f))
for thread in threads:
thread.daemon = True
thread.start()
# Now we want to stay responsive to ctrl-c, so we need to just idle the main
# thread. If we notice that all of our threads disappeared though, there's
# no point in continuing to run.
while threading.active_count() > 0:
time.sleep(1)
if __name__ == '__main__':
sys.exit(main())