Пример #1
0
  def test_defaults(self):
    rm = RecoveryManager()
    self.assertFalse(rm.enabled())
    self.assertEqual(None, rm.get_install_command("NODEMANAGER"))
    self.assertEqual(None, rm.get_start_command("NODEMANAGER"))

    rm.update_current_status("NODEMANAGER", "INSTALLED")
    rm.update_desired_status("NODEMANAGER", "STARTED")
    self.assertFalse(rm.requires_recovery("NODEMANAGER"))
  def test_defaults(self):
    rm = RecoveryManager(tempfile.mktemp())
    self.assertFalse(rm.enabled())
    self.assertEqual(None, rm.get_install_command("NODEMANAGER"))
    self.assertEqual(None, rm.get_start_command("NODEMANAGER"))

    rm.update_current_status("NODEMANAGER", "INSTALLED")
    rm.update_desired_status("NODEMANAGER", "STARTED")
    self.assertFalse(rm.requires_recovery("NODEMANAGER"))
    pass
Пример #3
0
    def test_sliding_window(self, time_mock):
        time_mock.side_effect = \
          [1000, 1001, 1002, 1003, 1004, 1071, 1150, 1151, 1152, 1153, 1400, 1401,
           1500, 1571, 1572, 1653, 1900, 1971, 2300, 2301]

        rm = RecoveryManager(tempfile.mktemp(), True, False)
        self.assertTrue(rm.enabled())

        config = rm.update_config(0, 60, 5, 12, True, False, "")
        self.assertFalse(rm.enabled())

        rm.update_config(6, 60, 5, 12, True, False, "")
        self.assertTrue(rm.enabled())

        rm.update_config(6, 0, 5, 12, True, False, "")
        self.assertFalse(rm.enabled())

        rm.update_config(6, 60, 0, 12, True, False, "")
        self.assertFalse(rm.enabled())

        rm.update_config(6, 60, 1, 12, True, False, None)
        self.assertTrue(rm.enabled())

        rm.update_config(6, 60, 61, 12, True, False, None)
        self.assertFalse(rm.enabled())

        rm.update_config(6, 60, 5, 4, True, False, "")
        self.assertFalse(rm.enabled())

        # maximum 2 in 2 minutes and at least 1 minute wait
        rm.update_config(2, 5, 1, 4, True, False, "")
        self.assertTrue(rm.enabled())

        # T = 1000-2
        self.assertTrue(rm.may_execute("NODEMANAGER"))
        self.assertTrue(rm.may_execute("NODEMANAGER"))
        self.assertTrue(rm.may_execute("NODEMANAGER"))

        # T = 1003-4
        self.assertTrue(rm.execute("NODEMANAGER"))
        self.assertFalse(rm.execute("NODEMANAGER"))  # too soon

        # T = 1071
        self.assertTrue(rm.execute("NODEMANAGER"))  # 60+ seconds passed

        # T = 1150-3
        self.assertFalse(rm.execute("NODEMANAGER"))  # limit 2 exceeded
        self.assertFalse(rm.may_execute("NODEMANAGER"))
        self.assertTrue(rm.execute("DATANODE"))
        self.assertTrue(rm.may_execute("NAMENODE"))

        # T = 1400-1
        self.assertTrue(rm.execute("NODEMANAGER"))  # windows reset
        self.assertFalse(rm.may_execute("NODEMANAGER"))  # too soon

        # maximum 2 in 2 minutes and no min wait
        rm.update_config(2, 5, 1, 5, True, True, "")

        # T = 1500-3
        self.assertTrue(rm.execute("NODEMANAGER2"))
        self.assertTrue(rm.may_execute("NODEMANAGER2"))
        self.assertTrue(rm.execute("NODEMANAGER2"))
        self.assertFalse(rm.execute("NODEMANAGER2"))  # max limit

        # T = 1900-2
        self.assertTrue(rm.execute("NODEMANAGER2"))
        self.assertTrue(rm.execute("NODEMANAGER2"))

        # T = 2300-2
        # lifetime max reached
        self.assertTrue(rm.execute("NODEMANAGER2"))
        self.assertFalse(rm.execute("NODEMANAGER2"))
        pass
  def test_sliding_window(self, time_mock):
    time_mock.side_effect = \
      [1000, 1001, 1002, 1003, 1004, 1071, 1150, 1151, 1152, 1153, 1400, 1401,
       1500, 1571, 1572, 1653, 1900, 1971, 2300, 2301]

    rm = RecoveryManager(tempfile.mktemp(), True, False)
    self.assertTrue(rm.enabled())

    rm.update_config(0, 60, 5, 12, True, False, "", "")
    self.assertFalse(rm.enabled())

    rm.update_config(6, 60, 5, 12, True, False, "", "")
    self.assertTrue(rm.enabled())

    rm.update_config(6, 0, 5, 12, True, False, "", "")
    self.assertFalse(rm.enabled())

    rm.update_config(6, 60, 0, 12, True, False, "", "")
    self.assertFalse(rm.enabled())

    rm.update_config(6, 60, 1, 12, True, False, None, None)
    self.assertTrue(rm.enabled())

    rm.update_config(6, 60, 61, 12, True, False, "", None)
    self.assertFalse(rm.enabled())

    rm.update_config(6, 60, 5, 0, True, False, None, "")
    self.assertFalse(rm.enabled())

    rm.update_config(6, 60, 5, 4, True, False, "", "")
    self.assertFalse(rm.enabled())

    # maximum 2 in 2 minutes and at least 1 minute wait
    rm.update_config(2, 5, 1, 4, True, False, "", "")
    self.assertTrue(rm.enabled())

    # T = 1000-2
    self.assertTrue(rm.may_execute("NODEMANAGER"))
    self.assertTrue(rm.may_execute("NODEMANAGER"))
    self.assertTrue(rm.may_execute("NODEMANAGER"))

    # T = 1003-4
    self.assertTrue(rm.execute("NODEMANAGER"))
    self.assertFalse(rm.execute("NODEMANAGER"))  # too soon

    # T = 1071
    self.assertTrue(rm.execute("NODEMANAGER"))  # 60+ seconds passed

    # T = 1150-3
    self.assertFalse(rm.execute("NODEMANAGER"))  # limit 2 exceeded
    self.assertFalse(rm.may_execute("NODEMANAGER"))
    self.assertTrue(rm.execute("DATANODE"))
    self.assertTrue(rm.may_execute("NAMENODE"))

    # T = 1400-1
    self.assertTrue(rm.execute("NODEMANAGER"))  # windows reset
    self.assertFalse(rm.may_execute("NODEMANAGER"))  # too soon

    # maximum 2 in 2 minutes and no min wait
    rm.update_config(2, 5, 1, 5, True, True, "", "")

    # T = 1500-3
    self.assertTrue(rm.execute("NODEMANAGER2"))
    self.assertTrue(rm.may_execute("NODEMANAGER2"))
    self.assertTrue(rm.execute("NODEMANAGER2"))
    self.assertFalse(rm.execute("NODEMANAGER2"))  # max limit

    # T = 1900-2
    self.assertTrue(rm.execute("NODEMANAGER2"))
    self.assertTrue(rm.execute("NODEMANAGER2"))

    # T = 2300-2
    # lifetime max reached
    self.assertTrue(rm.execute("NODEMANAGER2"))
    self.assertFalse(rm.execute("NODEMANAGER2"))
    pass