Esempio n. 1
0
    def test_Monitoring(self):
        B.testConfiguration()
        ns = "monitortest"
        testbackend.createNamespace(ns)
        target = testbackend.theBackend()(ns)

        self.assertEqual(B.getProgressInfo(target), None)
        backupWithMonitoring(self, self.source, target)

        info = B.getProgressInfo(target)
        self.assertTrue(type(info), dict)
        self.assertEqual(info["total_size"], info["seen"])
        self.assertEqual(info["still_to_be_examined"], 0)
        self.assertTrue(info["sent_to_backend"] <= info["total_size"])
Esempio n. 2
0
    def test_Monitoring(self):
        B.testConfiguration()
        ns = "monitortest"
        testbackend.createNamespace(ns)
        target = testbackend.theBackend()(ns)

        self.assertEqual(B.getProgressInfo(target), None)
        backupWithMonitoring(self, self.source, target)

        info = B.getProgressInfo(target)
        self.assertTrue(type(info), dict)
        self.assertEqual(info["total_size"], info["seen"])
        self.assertEqual(info["still_to_be_examined"], 0)
        self.assertTrue(info["sent_to_backend"] <= info["total_size"])
def backupWithMonitoring(self, source, target, *args, **kwargs):
    infoList = []

    PITReplication.removeProgressInfo(target)
    backupThread = ThreadWithExn(target=PITReplication.backup,
                                 args=((source, target) + args),
                                 kwargs=kwargs)
    backupThread.start()

    progressInfo = None

    def check_progress(self, old, new, infoList):
        # check monotonicity
        self.assertTrue(old == None or new != None)

        if old != None:
            self.assertEqual(new["total_size"], old["total_size"])
            self.assertTrue(new["seen"] >= old["seen"])
            self.assertTrue(new["sent_to_backend"] >= old["sent_to_backend"])

        if new != None:
            self.assertTrue(new["status"] in ["running", "finished"])
            if old == None or new["seen"] > old["seen"]:
                infoList.append(new)

    previoustime = time.time()
    delta = 1.0

    while backupThread.isAlive():
        time.sleep(0.01)
        newtime = time.time()
        if newtime > previoustime + delta:
            previoustime = newtime
            newProgressInfo = PITReplication.getProgressInfo(target)
            check_progress(self, progressInfo, newProgressInfo, infoList)
            progressInfo = newProgressInfo

    backupThread.join_with_exception()
    newProgressInfo = PITReplication.getProgressInfo(target)
    check_progress(self, progressInfo, newProgressInfo, infoList)
    self.assertNotEqual(
        newProgressInfo, None,
        "no progressinfo found after backup has successfully finished")
    self.assertEqual(newProgressInfo["status"], "finished")

    self.assertTrue(
        len(infoList) >= 1, "internal test error in backupWithMonitoring")

    return infoList
def backupWithMonitoring(self, source, target, *args, **kwargs):
    infoList = []

    PITReplication.removeProgressInfo(target)
    backupThread = ThreadWithExn(target=PITReplication.backup,
                                 args=((source, target) + args),
                                 kwargs=kwargs)
    backupThread.start()

    progressInfo = None

    def check_progress(self, old, new, infoList):
        # check monotonicity
        self.assertTrue(old == None or new != None)

        if old != None:
            self.assertEqual(new["total_size"], old["total_size"])
            self.assertTrue(new["seen"] >= old["seen"])
            self.assertTrue(new["sent_to_backend"] >= old["sent_to_backend"])

        if new != None:
            self.assertTrue(new["status"] in ["running", "finished"])
            if old == None or new["seen"] > old["seen"]:
                infoList.append(new)

    previoustime = time.time()
    delta = 1.0

    while backupThread.isAlive():
        time.sleep(0.01)
        newtime = time.time()
        if newtime > previoustime + delta:
            previoustime = newtime
            newProgressInfo = PITReplication.getProgressInfo(target)
            check_progress(self, progressInfo, newProgressInfo, infoList)
            progressInfo = newProgressInfo

    backupThread.join_with_exception()
    newProgressInfo = PITReplication.getProgressInfo(target)
    check_progress(self, progressInfo, newProgressInfo, infoList)
    self.assertNotEqual(
        newProgressInfo, None, "no progressinfo found after backup has successfully finished")
    self.assertEqual(newProgressInfo["status"], "finished")

    self.assertTrue(len(infoList) >= 1,
                    "internal test error in backupWithMonitoring")

    return infoList