#!/usr/bin/python
# Copyright (c) 2013 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.

"""Stress test for dev_server_wrapper.

Test script runs a long time stressing the ability to start and stop the
dev_server_wrapper. Even very rare hangs will cause significant build flake.
"""

import logging

from chromite.lib import dev_server_wrapper

_ITERATIONS = 10000


def main(_argv):
  logging.getLogger().setLevel(logging.DEBUG)
  for i in range(_ITERATIONS):
    print 'Iteration {}'.format(i)
    wrapper = dev_server_wrapper.DevServerWrapper()
    print 'Starting'
    wrapper.Start()
    print 'Stopping'
    wrapper.Stop()
