blob: 415d2a13db8e9f48e2c06b00f75550d6ee73ee6f [file] [log] [blame]
#!/usr/bin/env python2.6
'''
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
'''
from unittest import TestCase
from ambari_agent.ServerStatus import ServerStatus
from ambari_agent.NetUtil import NetUtil
import ambari_agent.main
from threading import Thread
import time
from ambari_agent.Heartbeat import Heartbeat
from ambari_agent.ActionQueue import ActionQueue
from ambari_agent import AmbariConfig
import socket
import os
import logging
from ambari_agent.Controller import Controller
import socket
NON_EXISTING_DOMAIN = 'non-existing-domain43342432.com'
BAD_URL = 'http://localhost:54222/badurl/'
class TestNetUtil(TestCase):
logger = logging.getLogger()
def setUp(self):
self.logger.info("Starting TestConnectionRetries test")
self.logger.disabled = True
self.defaulttimeout = -1.0
if hasattr(socket, 'getdefaulttimeout'):
# get the default timeout on sockets
self.defaulttimeout = socket.getdefaulttimeout()
# Test was failing: BUG-3112
# def test_url_checks(self):
# netutil = NetUtil()
# if hasattr(socket, 'setdefaulttimeout'):
# # Set the default timeout on sockets
# socket.setdefaulttimeout(1)
# self.assertEquals(netutil.checkURL('http://' + NON_EXISTING_DOMAIN), False, "Not existing domain")
# self.assertEquals(netutil.checkURL(BAD_URL), False, "Bad url")
# self.assertEquals(netutil.checkURL('http://192.168.253.177'), False, "Not reachable IP")
# if hasattr(socket, 'setdefaulttimeout'):
# # Set the default timeout on sockets
# socket.setdefaulttimeout(20)
# self.assertEquals(netutil.checkURL('http://www.iana.org/domains/example/'), True, "Good url - HTTP code 200")
# self.assertEquals(netutil.checkURL('https://www.iana.org/domains/example/'), True, "Good HTTPS url - HTTP code 200")
def test_registration_retries(self):
netutil = NetUtil()
netutil.CONNECT_SERVER_RETRY_INTERVAL_SEC=0.05
retries = netutil.try_to_connect(BAD_URL, 3)
self.assertEquals(retries, 3)
def test_infinit_registration_retries(self):
netutil = NetUtil()
netutil.CONNECT_SERVER_RETRY_INTERVAL_SEC=0.05
thread = Thread(target = netutil.try_to_connect, args = (BAD_URL, -1))
thread.start()
time.sleep(0.25)
# I have to stop the thread anyway, so I'll check results later
threadWasAlive = thread.isAlive()
netutil.DEBUG_STOP_RETRIES_FLAG = True
time.sleep(0.5)
# Checking results before thread stop
self.assertEquals(threadWasAlive, True, "Thread should still be retrying to connect")
# Checking results after thread stop
self.assertEquals(thread.isAlive(), False, "Thread should stop now")
def tearDown(self):
if self.defaulttimeout is not None and self.defaulttimeout > 0 and hasattr(socket, 'setdefaulttimeout'):
# Set the default timeout on sockets
socket.setdefaulttimeout(self.defaulttimeout)
self.logger.disabled = False
self.logger.info("Finished TestConnectionRetries test")